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

ClamArm using Dynamixel Motors: No Motors Found

asked 2013-09-03 14:00:01 -0500

llSourcell gravatar image

updated 2014-01-28 17:17:49 -0500

ngrennan gravatar image

For those of you who are brave enough to try to help me solve this problem, I will grant you 3 wishes. Here we go.

I'm using an arm called the ClamArm

Seen here

http://www.roadnarrows-store.com/clam-arm-servo-kit.html

I just got done building the arm. All motors are powered up. I plugged in both Dynamixel2USB cables from the arm into my computer's USB ports and I run the lowlevel launch file to connect to the arm. (7 motors on the arm total, 3 motors to 1 USB, 4 motors to the other).

Seen here (lowlevel.launch)

<!-- -*- mode: XML -*- -->
<launch>

  <!-- debug capability -->
  <arg name="debug" default="false" />
  <arg unless="$(arg debug)" name="launch_prefix" value="" />
  <arg if="$(arg debug)" name="launch_prefix" value="gdb --ex run --args" />

  <!-- chmod the usb ports -->
  <node name="change_usb_port_permissions" pkg="clam_bringup" type="change_usb_port_permissions.sh" />

  <!-- Startup the arm controller, dynamixel manager, hardware interface, etc -->
  <include file="$(find clam_controller)/launch/clam_controller.launch">
    <arg name="debug" value="$(arg debug)" />
  </include>

  <!-- Send robot XML description to param server -->
  <param name="robot_description" command="cat $(find clam_description)/urdf/clam.urdf" />

  <!-- Publish the robot state -->
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />

</launch>

I get this error. Apparently, no motors are found!

setting /run_id to 389151fa-13fb-11e3-ae2c-20c9d0bd73cd
process[rosout-1]: started with pid [4772]
started core service [/rosout]
process[change_usb_port_permissions-2]: started with pid [4784]
process[dynamixel_manager-3]: started with pid [4790]
[ INFO] [1378145546.539716442]: port_rs485: Pinging motor IDs 0 through 7...
[change_usb_port_permissions-2] process has finished cleanly
log file: /home/lucid/.ros/log/389151fa-13fb-11e3-ae2c-20c9d0bd73cd/change_usb_port_permissions-2*.log
process[clam_controller_spawner_ttl-4]: started with pid [4820]
process[clam_controller_spawner_rs485-5]: started with pid [4821]
process[arm_trajectory_controller_spawner-6]: started with pid [4824]
process[joint_state_aggregator-7]: started with pid [4827]
**[ WARN] [1378145546.941467380]: port_rs485: No motors found.**
process[clam_gripper_controller-8]: started with pid [4854]
[ INFO] [1378145547.037642567]: ClamGripperCommand action server ready
[dynamixel_manager-3] process has died [pid 4790, exit code -11, cmd /home/lucid/ros/clam/devel/lib/dynamixel_hardware_interface/controller_manager __name:=dynamixel_manager __log:=/home/lucid/.ros/log/389151fa-13fb-11e3-ae2c-20c9d0bd73cd/dynamixel_manager-3.log].
log file: /home/lucid/.ros/log/389151fa-13fb-11e3-ae2c-20c9d0bd73cd/dynamixel_manager-3*.log
[INFO] [WallTime: 1378145547.097725] clam_controller_spawner_ttl: waiting for controller_manager clam_controller_manager to startup in / namespace...
process[robot_state_publisher-9]: started with pid [4887]
[INFO] [WallTime: 1378145547.140146] clam_controller_spawner_rs485: waiting for controller_manager clam_controller_manager to startup in / namespace...
[INFO] [WallTime: 1378145547.173755] arm_trajectory_controller_spawner: waiting for controller_manager clam_controller_manager to startup in / namespace...

No Motors found on port_rs485. I look at the launch file and see that it has an embedded launch file called clam_controller.launch that is actually responsible for connecting to the motors.

Seen here (clam_controller.launch)

<!-- -*- mode: XML -*- -->

<launch>

  <!-- Debug Info -->
  <arg name="debug" default="false" />
  <arg unless="$(arg debug)" name="launch_prefix" value="" />
  <arg     if="$(arg debug)" name="launch_prefix" value="gdb --ex run --args" />

  <!-- Start the Dynamixel motor manager to control all clam servos -->
  <node name="dynamixel_manager" pkg="dynamixel_hardware_interface" type="controller_manager"
        launch-prefix="$(arg launch_prefix)" output="screen" >
    <!-- Load all the servo properties -->
    <rosparam file="$(find clam_controller)/config/dynamixel_ports.yaml" command="load"/>
  </node>

  <!-- Load joint controller configuration from YAML file to parameter server -->
  <rosparam file="$(find clam_controller)/config/clam_controller_configuration.yaml" command="load"/>

  <!-- Start all ClamArm ...
(more)
edit retag flag offensive close merge delete

Comments

1

Sorry for the off-topic comment but I'm building the clamarm and the road narrows kit doesn't exist anymore:

http://www.roadnarrows-store.com/clam...

I think I have found all the servos but am unsure on the brackets - if you have a chance could you let me know what you ordered?

dylanvaughn gravatar image dylanvaughn  ( 2014-12-31 17:48:02 -0500 )edit

Hey there, I'm the creator the ClamArm website. I don't have time to maintain the project anymore, but if any of you guys figured out problems or made improvements, I'd be happy to improve the documentation.

Dave Coleman gravatar image Dave Coleman  ( 2015-01-09 01:28:04 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted
1

answered 2013-09-03 15:06:39 -0500

Gav gravatar image

I've bought CLAM arm too, but you've gotten further along than me in assembly.

My understanding is that the motors don't have the ID numbers programmed in already, and you have to manually set them. There were a couple of scripts in ROS stacks for dynamixel maintenance, setting ID numbers, what's on the bus, etc. I believe it's a matter of plugging each motor in individually, setting its ID, then powering down and moving onto the next. https://github.com/arebgun/dynamixel_motor/tree/master/dynamixel_driver/scripts

Once all the motors are programmed, ROS might be able to see them.

Hope this helps, Gav

edit flag offensive delete link more

Comments

Thanks Gav! It seems all of those scripts change the Motor ID of the servo based on it's previous ID as a parameter. I don't know my motors IDs. Is there one that lets you set a motor ID?

llSourcell gravatar image llSourcell  ( 2013-09-03 17:45:03 -0500 )edit

I think the 'info_dump' script might be able to tell you something, but I haven't got that far myself. Although I quickly tried running the script and didn't get any info previously. At the time I figured that my motors weren't powered up right.

Gav gravatar image Gav  ( 2013-09-03 18:07:39 -0500 )edit
0

answered 2014-06-21 08:52:16 -0500

Juan gravatar image

@llSourcell, did you ever figure out your problem. Gav's answer does not help me. Please let me know.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2013-09-03 14:00:01 -0500

Seen: 1,408 times

Last updated: Jun 21 '14