Only released in EOL distros:  

dynamixel_motor: dynamixel_controllers | dynamixel_driver | dynamixel_msgs | dynamixel_tutorials

Package Summary

This package contains a configurable node, services and a spawner script to start, stop and restart one or more controller plugins. Reusable controller types are defined for common Dynamixel motor joints. Both speed and torque can be set for each joint. This python package can be used by more specific robot controllers and all configurable parameters can be loaded via a yaml file.

dynamixel_motor: dynamixel_controllers | dynamixel_driver | dynamixel_msgs | dynamixel_tutorials

Package Summary

This package contains a configurable node, services and a spawner script to start, stop and restart one or more controller plugins. Reusable controller types are defined for common Dynamixel motor joints. Both speed and torque can be set for each joint. This python package can be used by more specific robot controllers and all configurable parameters can be loaded via a yaml file.

dynamixel_motor: dynamixel_controllers | dynamixel_driver | dynamixel_msgs | dynamixel_tutorials

Package Summary

This package contains a configurable node, services and a spawner script to start, stop and restart one or more controller plugins. Reusable controller types are defined for common Dynamixel motor joints. Both speed and torque can be set for each joint. This python package can be used by more specific robot controllers and all configurable parameters can be loaded via a yaml file.

dynamixel_motor: dynamixel_controllers | dynamixel_driver | dynamixel_msgs | dynamixel_tutorials

Package Summary

This package contains a configurable node, services and a spawner script to start, stop and restart one or more controller plugins. Reusable controller types are defined for common Dynamixel motor joints. Both speed and torque can be set for each joint. This python package can be used by more specific robot controllers and all configurable parameters can be loaded via a yaml file.

dynamixel_motor: dynamixel_controllers | dynamixel_driver | dynamixel_msgs | dynamixel_tutorials

Package Summary

This package contains a configurable node, services and a spawner script to start, stop and restart one or more controller plugins. Reusable controller types are defined for common Dynamixel motor joints. Both speed and torque can be set for each joint. This python package can be used by more specific robot controllers and all configurable parameters can be loaded via a yaml file.

dynamixel_motor: dynamixel_controllers | dynamixel_driver | dynamixel_msgs | dynamixel_tutorials

Package Summary

This package contains a configurable node, services and a spawner script to start, stop and restart one or more controller plugins. Reusable controller types are defined for common Dynamixel motor joints. Both speed and torque can be set for each joint. This python package can be used by more specific robot controllers and all configurable parameters can be loaded via a yaml file.

dynamixel_motor: dynamixel_controllers | dynamixel_driver | dynamixel_msgs | dynamixel_tutorials

Package Summary

This package contains a configurable node, services and a spawner script to start, stop and restart one or more controller plugins. Reusable controller types are defined for common Dynamixel motor joints. Both speed and torque can be set for each joint. This python package can be used by more specific robot controllers and all configurable parameters can be loaded via a yaml file.

dynamixel_motor: dynamixel_controllers | dynamixel_driver | dynamixel_msgs | dynamixel_tutorials

Package Summary

This package contains a configurable node, services and a spawner script to start, stop and restart one or more controller plugins. Reusable controller types are defined for common Dynamixel motor joints. Both speed and torque can be set for each joint. This python package can be used by more specific robot controllers and all configurable parameters can be loaded via a yaml file.

Available Joint Controllers

ROS API

API Stability

  • ROS API is UNREVIEWED but UNSTABLE
  • Python API is UNREVIEWED and UNSTABLE

controller_manager.py

Manages a single serial connection to Dynamixel servo network. This node provides services to start, stop and restart joint controllers. There can be several instances of controller_manager running at the same time, managing multiple serial connections.

Services

start_controller/serial_port_name (dynamixel_controllers/StartController)
  • Start stopped joint controller managed by this controller manager.
stop_controller/serial_port_name (dynamixel_controllers/StopController)
  • Stop running joint controller managed by this controller manager.
restart_controller/serial_port_name (dynamixel_controllers/RestartController)
  • Restart running joint controller managed by this controller manager (a shortcut to running Stop and then Start).

Parameters

~port_name (str, default: /dev/ttyUSB0)
  • Path to serial port that the Dynamixel motors are connected to.
~baud_rate (int, default: 1000000)
  • Baud rate to use (make sure that the motors are set to the same baud rate, otherwise the controller_manager node will not be able to find any motors).
~min_motor_id (int, default: 1)
  • The valid motor id range is 1 - 253. Setting min_motor_id to your actual range of motor ids will cut node startup time.
~max_motor_id (int, default: 25)
  • The valid motor id range is 1 - 253. Setting max_motor_id to your actual range of motor ids will cut node startup time.
~update_rate (int, default: 5)
  • The rate (in Hz) at which motors will publish their status (current position, velocity, temperature, load, etc.) Setting this to 0 will turn off the feedback.

controller_spawner.py

Parameters

joint_controller_name/controller/package (str)
  • ROS package name that contains the controller code.
joint_controller_name/controller/module (str)
  • Specific file (python module) within a package that contains the controller code.
joint_controller_name/controller/type (str)

Common Joint Controller Interface

Subscribed Topics

joint_controller_name/command (std_msgs/Float64)
  • Listens for a joint angle (in radians) to be sent to the controller.
motor_states/serial_port_name (dynamixel_msgs/MotorStateList)
  • Listens for motor status feedback published by low level driver.

Published Topics

joint_controller_name/state (dynamixel_msgs/JointState)
  • Provides current joint status information (current goal, position, velocity, load, etc.)

Services

joint_controller_name/set_speed (dynamixel_controllers/SetSpeed)
  • Change the current velocity of the joint (specified in radians per second).
joint_controller_name/torque_enable (dynamixel_controllers/TorqueEnable)
  • Turn joint torque on or off.
joint_controller_name/set_compliance_slope (dynamixel_controllers/SetComplianceSlope) joint_controller_name/set_compliance_margin (dynamixel_controllers/SetComplianceMargin) joint_controller_name/set_compliance_punch (dynamixel_controllers/SetCompliancePunch) joint_controller_name/set_torque_limit (dynamixel_controllers/SetTorqueLimit)

Parameters

joint_controller_name/joint_name (str)
  • Name of the joint this controller is responsible for.
joint_controller_name/joint_max_speed (float, default: depends on the motor model and supplied voltage)
  • Maximum joint velocity (specified in radians per second).
joint_controller_name/joint_speed (float, default: 1.0)
  • Default joint velocity (specified in radians per second).
joint_controller_name/joint_compliance_slope (int, default: None)
  • Dynamixel motor compliance slope (acceptable values are 0 - 254).
joint_controller_name/joint_compliance_margin (int, default: None)
  • Dynamixel motor compliance margin (acceptable values are 0 - 255).
joint_controller_name/joint_compliance_punch (int, default: None)
  • Dynamixel motor punch (acceptable values are 0 - 255).
joint_controller_name/joint_torque_limit (float, default: None)
  • Dynamixel motor maximum torque (acceptable values are 0.0 - 1.0, with 0 meaning no torque and 1 meaning maximum torque).

Additional Controller Configuration

Every joint controller can add additional configuration parameters (e.g. dual motor controllers need to know the low level configuration of both motors). See joint controllers page for a list of controllers included in the dynamixel_controllers package and their configuration parameters.

Example Controller Configuration

Could not fetch external code from 'http://ua-ros-pkg.googlecode.com/svn/stacks/dynamixel_motor/tags/diamondback/dynamixel_tutorials/config/dynamixel_joint_controllers.yaml': HTTP Error 404: Not Found

Example Application

Below is an example of dynamixel_motor stack in use on the Wubble robot. dynamixel_motor stack controls the head pan and tilt, the tilt of the laser and every joint in the 7-DOF arm.

ROS API

API Stability

  • ROS API is UNREVIEWED but UNSTABLE
  • Python API is UNREVIEWED and UNSTABLE

controller_manager.py

Manages a set of serial connections to Dynamixel servo networks. This node provides services to start, stop and restart joint controllers. There can be several instances of controller_manager running at the same time, managing different sets of serial connections.

Services

<manager_namespace>/<port_namespace>/start_controller (dynamixel_controllers/StartController)
  • Start stopped joint controller connected to port_namespace serial port managed by manager_namespace controller manager.
<manager_namespace>/<port_namespace>/stop_controller (dynamixel_controllers/StopController)
  • Stop running joint controller connected to port_namespace serial port managed by manager_namespace controller manager.
<manager_namespace>/<port_namespace>/restart_controller (dynamixel_controllers/RestartController)
  • Restart running joint controller connected to port_namespace serial port managed by manager_namespace controller manager (a shortcut to running Stop and then Start).

Parameters

~namespace (str) ~diagnostics_rate (float, default: 1)
  • Diagnostics information will be published at this rate (in Hz).
~serial_ports (map)
  • Each entry in the map specifies serial port connection information, where map key is port namespace or nickname (has to be a valid ROS graph resource name).
~serial_ports/<port_namespace>/port_name (str, default: /dev/ttyUSB0)
  • Path to serial port that the Dynamixel motors are connected to.
~serial_ports/<port_namespace>/baud_rate (int, default: 1000000)
  • Baud rate to use (make sure that the motors are set to the same baud rate, otherwise the controller manager node will not be able to find any motors).
~serial_ports/<port_namespace>/min_motor_id (int, default: 1)
  • The valid motor id range is 1 - 253. Setting min_motor_id to your actual range of motor ids will lessen node startup time.
~serial_ports/<port_namespace>/max_motor_id (int, default: 25)
  • The valid motor id range is 1 - 253. Setting max_motor_id to your actual range of motor ids will lessen node startup time.
~serial_ports/<port_namespace>/update_rate (int, default: 5)
  • The rate (in Hz) at which motors will publish their status (current position, velocity, temperature, load, etc.) Setting this to 0 will turn off the feedback.
~serial_ports/<port_namespace>/diagnostics/error_level_temp (int, default: 75)
  • Temperature in Celsius that will trigger ERROR message in diagnostics reports (e.g. robot_monitor).
~serial_ports/<port_namespace>/diagnostics/warn_level_temp (int, default: 70)
  • Temperature in Celsius that will trigger WARNING message in diagnostics reports (e.g. robot_monitor).

controller_spawner.py

controller_spawner.py script allows managing joint controllers from command line. The ability to start any number of joint controllers on multiple ports is the most used feature of this script.

Parameters

joint_controller_name/controller/package (str)
  • ROS package name that contains the controller code.
joint_controller_name/controller/module (str)
  • Specific file (python module) within a package that contains the controller code.
joint_controller_name/controller/type (str)

Common Joint Controller Interface

Subscribed Topics

<joint_controller_name>/command (std_msgs/Float64)
  • Listens for a joint angle (in radians) to be sent to the controller.
motor_states/<serial_port_name> (dynamixel_msgs/MotorStateList)
  • Listens for motor status feedback published by low level driver.

Published Topics

<joint_controller_name>/state (dynamixel_msgs/JointState)
  • Provides current joint status information (current goal, position, velocity, load, etc.)

Services

<joint_controller_name>/set_speed (dynamixel_controllers/SetSpeed)
  • Change the current velocity of the joint (specified in radians per second).
<joint_controller_name>/torque_enable (dynamixel_controllers/TorqueEnable)
  • Turn joint torque on or off.
<joint_controller_name>/set_compliance_slope (dynamixel_controllers/SetComplianceSlope) <joint_controller_name>/set_compliance_margin (dynamixel_controllers/SetComplianceMargin) <joint_controller_name>/set_compliance_punch (dynamixel_controllers/SetCompliancePunch) <joint_controller_name>/set_torque_limit (dynamixel_controllers/SetTorqueLimit)

Parameters

~<joint_controller_name>/joint_name (str)
  • Name of the joint this controller is responsible for.
~<joint_controller_name>/joint_max_speed (float, default: depends on the motor model and supplied voltage)
  • Maximum joint velocity (specified in radians per second).
~<joint_controller_name>/joint_speed (float, default: 1.0)
  • Default joint velocity (specified in radians per second).
~<joint_controller_name>/joint_compliance_slope (int, default: None)
  • Dynamixel motor compliance slope (acceptable values are 0 - 254).
~<joint_controller_name>/joint_compliance_margin (int, default: None)
  • Dynamixel motor compliance margin (acceptable values are 0 - 255).
~<joint_controller_name>/joint_compliance_punch (int, default: None)
  • Dynamixel motor punch (acceptable values are 0 - 255).
~<joint_controller_name>/joint_torque_limit (float, default: None)
  • Dynamixel motor maximum torque (acceptable values are 0.0 - 1.0, with 0 meaning no torque and 1 meaning maximum torque).

Additional Controller Configuration

Every joint controller can add additional configuration parameters (e.g. dual motor controllers need to know the low level configuration of both motors). See joint controllers page for a list of controllers included in the dynamixel_controllers package and their configuration parameters.

Example Controller Configuration

Could not fetch external code from 'http://ua-ros-pkg.googlecode.com/svn/stacks/dynamixel_motor/tags/electric/dynamixel_tutorials/config/dynamixel_joint_controllers.yaml': HTTP Error 404: Not Found

Example Controller Manager and Spawner Launch Files

Could not fetch external code from 'http://ua-ros-pkg.googlecode.com/svn/stacks/dynamixel_motor/tags/electric/dynamixel_tutorials/launch/controller_manager.launch': HTTP Error 404: Not Found

Could not fetch external code from 'http://ua-ros-pkg.googlecode.com/svn/stacks/dynamixel_motor/tags/electric/dynamixel_tutorials/launch/controller_spawner.launch': HTTP Error 404: Not Found

Example Application

Below is an example of dynamixel_motor stack in use on the Wubble robot. dynamixel_motor stack controls the head pan and tilt, the tilt of the laser and every joint in the 7-DOF arm.

Wiki: dynamixel_controllers (last edited 2014-11-04 20:04:21 by AustinHendrix)