[Documentation] [TitleIndex] [WordIndex

carl_bot: carl_bringup | carl_description | carl_dynamixel | carl_interactive_manipulation | carl_phidgets | carl_teleop | carl_tools

Package Summary

Configuration for CARLS's Head Dynamixel Servo

Newly proposed, mistyped, or obsolete package. Could not find package "carl_dynamixel" in rosdoc: /home/rosbot/docs/api/carl_dynamixel/manifest.yaml


The carl_dynamixel package is a package which launches the correct nodes and controllers from the 'dynamixel_motors' package. It also has a sensor_msgs/JointState publisher.



back_joint_node will take the position information and publish it as a 'sensor_msgs/JointState'

Subscribed Topics

motor_states/back_port ('dynamixel_msgs/MotorStateList')

Published Topics

dynamixel_back ('sensor_msgs/JointState')


back_servos/num_servos (int) back_servos/1/id (int) back_servos/1/link_name (string)


front_joint_node will take the position information and publish it as a 'sensor_msgs/JointState'

Subscribed Topics

motor_states/front_port ('dynamixel_msgs/MotorStateList')

Published Topics

dynamixel_front ('sensor_msgs/JointState')


front_servos/num_servos (int) front_servos/1/id (int) front_servos/1/link_name (string)


servo_pan_tilt allows velocity-based panning and tilting for the servos.

Subscribed Topics

asus_controller/tilt ('std_msgs/Float64') creative_controller/pan ('std_msgs/Float64') dynamixel_back ('sensor_msgs/JointState') dynamixel_front ('sensor_msgs/JointState')

Published Topics

asus_controller/command ('std_msgs/Float64') creative_controller/command ('std_msgs/Float64')


asus_controller/look_at_point (carl_dynamixel/LookAtPoint) asus_controller/look_at_frame (carl_dynamixel/LookAtFrame)



To install from source, execute the following:

Ubuntu Package

To install the Ubuntu package, execute the following:


The carl_dynamixel package contains a carl_servos.launch This file launches an instance of the dynamixel_manager and tilt_controller_spawner nodes from the 'dynamixel_motor' metapackage. It also launches the 'back_joints_node' and front_joints_node, as well as the servo_pan_tilt node for velocity commands. To launch these nodes, the following command can be used:

Once this launches the following topics becomes available:

Available Topics

the topics to which the launch files publishes and subscribes.

Subscribed Topics

asus_controller/command ('std_msgs/Float64') creative_controller/command ('std_msgs/Float64') asus_controller/tilt (invalid message type for MsgLink(msg/type)) creative_controller/pan (invalid message type for MsgLink(msg/type))

Published Topics

motor_states/back_port ('dynamixel_msgs/MotorStateList') motor_states/front_port ('dynamixel_msgs/MotorStateList') asus_controller/state ('dynamixel_msgs/JointState') creative_controller/state ('dynamixel_msgs/JointState')


This package can support up to 5 servos per USB device.


To add a servo to the USB device simply attach the 3-pin wire, on the right connector of the servo, to an open connector on the power distribution board.


To make sure the newly attached servo has its 'sensor_msgs/JointState' published and that it can be controlled a controller and the joint state information needs to be added.


Just by attaching the servo, some information will automatically be published to the 'motor_states/<port>' topic, where the port is the specific USBDynamixel it is plugged into. To make sure the servo can be moved a YAML file needs to be made. Copy and paste the following code into carl_dynamixel/config/example.yaml

        package: dynamixel_controllers
        module: joint_position_controller
        type: JointPositionController
    joint_name: example_joint
    joint_speed: 0.5
        id: 1
        init: 512
        min: 0
        max: 1023

The id for the servo can be found from the 'motor_states/<port>' topic

Now add to the launch file:

<!-- Start example joint controller -->
    <rosparam file="$(find carl_dynamixel)/config/example.yaml" command="load"/>
    <node name="example_controller_spawner" pkg="dynamixel_controllers" type="controller_spawner.py"
                --port back_port

Now launch the file and the new servo should have specific joint information published on the 'example_controller/state' topic and publishing a Float64 to the 'example_controller/command' will move the servo to that position.

Joint State

Joint state publishers are already set up, however, to add a new servo the following lines need to be added to either back_servos.yaml or front_servos.yaml depending on which USB port they are plugged into.

    id: 2
    link_name: joint_2

Also the variable num_servos should be changed to match the number of servos.

The following is an example of the modified back_servos.yaml file.

   num_servos: 3
    id: 1
    link_name: asus_servo_asus_servo_arm_joint 
    id: 2
    link_name: joint_2
    id: 12
    link_name: joint_3 


Please send bug reports to the GitHub Issue Tracker. Feel free to contact me at any point with questions and comments.

2019-08-24 12:38