This ROS package contains hardware interface to Kondo Kagaku's ICS motor system. ICS(Interactive Communication System) is a kind of serial bus to control RC servo motors. Basically it can control measure its position. It has additional features such as setting gain, getting current.
This package contains ics read/write code (ics.c, ics.h) from libkondo4 project.
Connect each servo and the adapter one to one. For setting servo ID, you can use ics_set_id.
$ rosrun ics_set_id <product_id> <id>
product_id is 6 for 'ICS USB adapter HS', 8 for 'dual ICS adapter HS'.
After setting each servo motor, you can connect your motors as you want.
Describe servo setting in yaml file. 'driver_sample.yaml' shows the example in which two motors (ID0,ID1) connected.
- Change product_id to your adapter.
- Change joint_0_driver and joint_1_driver field as your servo system.
Each field is;
- joint: Name of joint
- id: Servo's ICS id. It is set by utility.
- min_anlge: Minimum angle of servo [deg.]
- max_anlge: Maximum angle of servo [deg.]
- speed: speed paramter. See ICS manual.
- stretch: stretch parameter. See ICS manual.
The kondo_driver is fit for using ros_controllers. Check config/controller_sample.yaml for ros_control configuration. This example uses position_controllers/JointPositionController to control joint position and joint_state_controller/JointStateController to publish /joint_states.
The following sample bring up controllers.
$ roslaunch kondo_driver kondo_driver.launch
Check if you can command the sevo position. Publish /joint_0_controller/command (std_msgs/Float64) to control joint angle. Unit is in radian.
$ rostopic pub -1 /joint_0_controller/command std_msgs/Float64 "data: 0.0"