ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

arbotix-m with dynamixel tutorial / example / doc?

asked 2014-07-29 02:18:29 -0600

d gravatar image

updated 2014-07-29 09:52:50 -0600

does anyone know an example / tutorial / doc that shows how to use arbotix-m with dynamixel?

i got the dynamixel_motor package working with dynamixel servos (via usb2dynamixel).

but i couldn't get any where with arbotix working with dynamixel via their arbotix-m board. i couldn't find much documentation on ros wiki either. it seems like the docs are really outdated too.

i can run "arbotix_terminal", see all the servos, and control all of them just fine via command line. but i coulnd't control them in ros. i'm not sure which nodes / topics / params should be used.

i'd like to compare usb2dynamixel vs. arbotix-m as far as how they work with dynamixel servos.

any point of reference is much appreciated.


edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2014-07-29 08:49:41 -0600

jorge gravatar image

updated 2014-07-29 11:16:18 -0600

Sorry if I'm misunderstanding your question, but why you cannot use the rest of the arbotix stack? Afaik, it contains all you need to operate dynamixel motors (at least the AX-12 i have) and is updated to indigo. You just need to flash the arbotix_firmware and run the arbotix_driver to get full access to your servos with the ControllerGUI or MoveIt.

That said, I must mention that I us the arbotix stack with a different board (Robotis OpenCM9.04), but using an arbotix-m should be much easier.


arbotix_driver listen for joint positions on <servo>/command topics (std_msgs/Float64), and provides current joint positions on /joint_state topic, as explained here. But much easier is to run the arbotix_gui so you can move the servos with sliders.

If properly configured, arbotix_driver also provides you with controller interfaces, that high level tools like Moveit can use. For example, for a turtlebot arm, the joints (that is, servos) are:

joints: {
  arm_shoulder_pan_joint: {id: 1, neutral: 205, max_angle: 240, min_angle: -60, max_speed: 180},
  arm_shoulder_lift_joint: {id: 2, max_angle: 125, min_angle: -125, max_speed: 180},
  arm_elbow_flex_joint: {id: 3, max_angle: 150, min_angle: -150, max_speed: 180},
  arm_wrist_flex_joint: {id: 4, max_angle: 100, min_angle: -100, max_speed: 180},
  gripper_joint: {id: 5, max_speed: 90},

and the controllers

controllers: {
  arm_controller: {
    type: follow_controller,
    joints: [arm_shoulder_pan_joint, arm_shoulder_lift_joint, arm_elbow_flex_joint, arm_wrist_flex_joint],
    action_name: arm_controller/follow_joint_trajectory,
    onboard: false
edit flag offensive delete link more


thansk jorge! i got the firmware flashed on arbotix-m. through "arbotix_terminal" i can see all the servos and control all of them through the terminals. my question is how to control these in ros. after running arbotix_driver, what nodes, topics, params, etc do you use to control the servos?

d gravatar image d  ( 2014-07-29 09:49:59 -0600 )edit

Answer updated. Hope I'm clearer now ^_^ !

jorge gravatar image jorge  ( 2014-07-29 10:26:55 -0600 )edit

thanks again jorge. i did run arbotix_driver (connected successfully).. then i ran "rostopic list" on command line, but i didn't see any "<servo>/command" as a topic? what do you see when you do a "rostopic list" on your end? ps: i also don't see any of the services and params listed either.

d gravatar image d  ( 2014-07-29 10:42:32 -0600 )edit

i can control these servos fine with dynamixel_motor package (via usb2dynamixel). i just don't understand how arbotix_ros package works (via arbotix-m board), especially how to send commands to a servo. i don't see these topics after running arbotix_driver; i do see the servos in arbotix_terminal

d gravatar image d  ( 2014-07-29 10:48:20 -0600 )edit

You need to configure arbotix_driver so he knows the servos you have, I put an example in the answer. Forget the controllers by now.

jorge gravatar image jorge  ( 2014-07-29 11:14:52 -0600 )edit

yep, i sure did. here is my .yaml file, loaded in my launch file. port: /dev/ttyUSB0 rate: 15 test: { head_pan_joint: {id: 1, invert: true}, head_tilt_joint: {id: 2, max_angle: 100, min_angle: -100} } i published to /test/head_pan_joint/command std_msgs/Float64 but nothing happened...

d gravatar image d  ( 2014-07-29 11:36:51 -0600 )edit

i got it working finally. i'm not sure exactly how/why i did it. i'm guessing that the problem was the baud rate. it was at 1000000 (i was using usb2dynamixel) while arbotix default rate is at 115200. after i set the servos baud rate to 115200, arbotix picked up and i now can control the servos.

d gravatar image d  ( 2014-07-29 14:02:34 -0600 )edit

great! tell me if you need additional support. I have recently followed the way you are now on! I said nothing about connection parameters because I'm actually using a different board, and normally default parameters "should" work.

jorge gravatar image jorge  ( 2014-07-29 17:04:33 -0600 )edit

answered 2015-12-07 04:48:13 -0600

doisyg gravatar image

I am also interested in possible tutorial on how to use properly the arbotix-m under ROS with dynamixel servos (mx-64 in my case). I cannot find a way of doing speed control efficiently.

edit flag offensive delete link more


I think this guy is asking also for speed control, but I have no idea about how to do it.

jorge gravatar image jorge  ( 2016-01-21 12:18:32 -0600 )edit

This+this is the closest to a ROS-arbotix-dynamixel tutorial I know about.

jorge gravatar image jorge  ( 2016-01-21 12:20:13 -0600 )edit

I have problem with detecting my servos, I spend four days to solve it, but I dont't know what should I do, please check it out here I would be grateful for any help ??

Abdu gravatar image Abdu  ( 2017-09-27 07:39:39 -0600 )edit

Question Tools



Asked: 2014-07-29 02:18:29 -0600

Seen: 1,990 times

Last updated: Jul 29 '14