diff --git a/bioloid_apps/launch/ceabot/ceabot_base.launch b/bioloid_apps/launch/ceabot/ceabot_base.launch index 7b7006a9a917047469bad69e7704479201cdf818..066615b6768aed1b2cebe13ed0334e757669d91b 100644 --- a/bioloid_apps/launch/ceabot/ceabot_base.launch +++ b/bioloid_apps/launch/ceabot/ceabot_base.launch @@ -24,5 +24,16 @@ <node name="rqt_reconfigure" pkg="rqt_reconfigure" type="rqt_reconfigure" respawn="false" output="screen"/> + <node name="gazebo_image_to_video_dev" + pkg="gazebo_image_to_video_dev" + type="gazebo_image_to_video_dev" + output="screen"> + <remap from="~/camera_in/image_raw" + to="/bioloid/camera/image_raw"/> + <remap from="~/camera_in/camera_info" + to="/bioloid/camera/camera_info"/> + <param name="video_dev" value="/dev/video0"/> + </node> + </launch> diff --git a/bioloid_control/config/bioloid_ceabot.yaml b/bioloid_control/config/bioloid_ceabot.yaml index abfe8b697ee5ff6f8003cf56a6f12a829039803b..3dd9fb51c94595a36f568e6603ababbf7e0ec4ef 100644 --- a/bioloid_control/config/bioloid_ceabot.yaml +++ b/bioloid_control/config/bioloid_ceabot.yaml @@ -18,7 +18,7 @@ bioloid: exp_gpio3_frame: right_front_fwd_ir_link exp_gpio4_frame: right_front_dwn_ir_link exp_gpio5_frame: right_lateral_dwn_ir_link - serial_console_device: /dev/ttyS100 + serial_console_device: /dev/pts/18 joints: - j_shoulder_r - j_shoulder_l diff --git a/bioloid_control/config/bioloid_ceabot_pan_tilt.yaml b/bioloid_control/config/bioloid_ceabot_pan_tilt.yaml index 7be26e0a916c3601b55750d5ea516dc62a2f6911..c69bdd309482667419835c6e6fe225e060964333 100644 --- a/bioloid_control/config/bioloid_ceabot_pan_tilt.yaml +++ b/bioloid_control/config/bioloid_ceabot_pan_tilt.yaml @@ -20,7 +20,7 @@ bioloid: exp_gpio5_frame: right_lateral_dwn_ir_link pan_servo_id: 19 tilt_servo_id: 20 - serial_console_device: /dev/pts/19 + serial_console_device: /dev/pts/18 joints: - j_shoulder_r - j_shoulder_l diff --git a/bioloid_controller_cm510/CMakeLists.txt b/bioloid_controller_cm510/CMakeLists.txt index 9f5b8f8a3911d7b0ad501054ea55f3e96922a29d..a4289ee1cb8b90b7a4c68d67cd21d289c31d9170 100644 --- a/bioloid_controller_cm510/CMakeLists.txt +++ b/bioloid_controller_cm510/CMakeLists.txt @@ -92,7 +92,7 @@ catkin_package( ########### SET(BIOLOID_FW_PATH ~/humanoids/cm510_controller_fw) -SET(ProjectPath ~/humanoids/cm510_controller_fw/examples/pan_tilt) +SET(ProjectPath ~/humanoids/cm510_controller_fw/examples/vision) ## Specify additional locations of header files ## Your package locations should be listed before other locations @@ -130,7 +130,7 @@ add_library(${PROJECT_NAME} src/bioloid_controller_cm510.cpp # communications modules ${BIOLOID_FW_PATH}/communications/src/dynamixel.c # main application module - ${ProjectPath}/pan_tilt.c + ${ProjectPath}/cm510_vision.c # AVR simulation modules src/sim/avr_delay.c src/sim/avr_registers.c diff --git a/bioloid_controller_cm510/src/sim/serial_console.cpp b/bioloid_controller_cm510/src/sim/serial_console.cpp index c3ba420ba9b392107407ce04279fcf90739beac5..676bae7394fa7263708b0ecbe65c5742b2e20e12 100644 --- a/bioloid_controller_cm510/src/sim/serial_console.cpp +++ b/bioloid_controller_cm510/src/sim/serial_console.cpp @@ -6,8 +6,11 @@ #include "rs232.h" extern "C" int vsprintf (char * s, const char * format, va_list arg ); -extern "C" int vfprintf ( FILE * stream, const char * format, va_list arg ); +extern "C" int vfprintf (FILE * stream, const char * format, va_list arg ); +extern "C" int vsscanf (const char * s, const char * format, va_list arg ); +extern "C" int vfscanf ( FILE * stream, const char * format, va_list arg ); extern FILE *stdout; +extern FILE *stdin; // private variables CRS232 serial_console("bioloid_serial_port"); @@ -39,12 +42,11 @@ int serial_console_getchar(FILE *dev) return byte; } -/*int printf(const char *fmt, ...) +int cm510_printf(const char *fmt, ...) { va_list ap; int i; - std::cout << "printf" << std::endl; if(rs232_enabled) { char out_buff[256]; @@ -60,7 +62,44 @@ int serial_console_getchar(FILE *dev) va_end(ap); } return i; -}*/ +} + +int cm510_scanf(const char *fmt, ...) +{ + va_list ap; + int done,num;; + + if(rs232_enabled) + { + char *out_buff=NULL; + CEventServer *event_server=CEventServer::instance(); + std::list<std::string> events; + + try{ + events.push_back(serial_console.get_rx_event_id()); + event_server->wait_first(events,1000); + num=serial_console.get_num_data(); + out_buff=new char[num]; + serial_console.read((unsigned char *)out_buff,num); + va_start(ap,fmt); + done=vsscanf(out_buff,fmt,ap); + va_end(ap); + delete[] out_buff; + }catch(CException &e){ + std::cout << e.what() << std::endl; + if(out_buff!=NULL) + delete[] out_buff; + } + } + else + { + va_start (ap, fmt); + done = vfscanf (stdin, fmt, ap); + va_end (ap); + } + return done; + +} /* pubic functions */ void serial_console_init(uint32_t baudrate) @@ -80,3 +119,13 @@ void serial_console_init(uint32_t baudrate) rs232_enabled=false; } } + +uint8_t serial_console_get_num_data(void) +{ + if(rs232_enabled) + return serial_console.get_num_data(); + else + { + return 0; + } +}