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

ros_control behaves differently for continuous joint robot between hydro and indigo

asked 2015-03-13 12:17:49 -0600

mklingen gravatar image

I am trying to upgrade from ros hydro to ros indigo; and everything has been going fine aside from ros_control. It seems there has been some change that breaks the velocity trajectory controller for my continuous joint robot. The velocity controller seems to go the wrong direction when trying to execute a simple trajectory. I have verified that the problem does not exist in hydro by setting my ros master to an external machine that is running ros_control in hydro, and sending the command from my indigo machine.

Here's a screenshot of the joint errors reported by the joint_trajectory_controller shooting off. For joint 3, you see desired and actual starting out the same, then a small control error of ~0.3 is applied to make it follow a trajectory. The controller just shoots off to infinity. Note the same controller works in hydro, but not in indigo.

image description

And here's the state of the controller manager:

image description

I tried downgrading my ros_control, and ros_controllers to the versions found in the ros-hydro-ros-control debian, but this did not fix the issue. I had to build these from source, and it required changing the urdfdom version referenced by ros_control to the one locally installed by indigo (which could be a clue).

Here are the contents of my URDF.

Has anything changed in the parsing of URDF files, or in joint_trajectory_controller that might have caused this issue?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2015-03-13 21:54:11 -0600

rnunziata gravatar image

check the usage for the transmission elements in Indigo I had to make changes to something like the following when I went to Indigo.

 <transmission name="tran2">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="joint2">
      <hardwareInterface>EffortJointInterface</hardwareInterface>
    </joint>
    <actuator name="motor2">
      <mechanicalReduction>1</mechanicalReduction>   
      <motorTorqueConstant>10</motorTorqueConstant>
    </actuator>
  </transmission>
edit flag offensive delete link more

Comments

Are transmissions now required? As in, you added a transmission interface where there wasn't one before?

mklingen gravatar image mklingen  ( 2015-03-16 09:08:02 -0600 )edit

no....the format changed. The hardwareInterface is now directly under the joint element. But please validate this with the documentation. http://wiki.ros.org/urdf/XML/Transmis... . I am also running in simulation on Gazebo. This may or may not solve your problem...good luck.

rnunziata gravatar image rnunziata  ( 2015-03-16 10:50:14 -0600 )edit

Thank you. I updated my URDF to contain this, but unfortunately it did not help. The issue appears to be something along the lines of, the robot will oscillate around the target, the oscillations get bigger and bigger, rather than smaller and smaller. It's almost like the goal conditions are wrong.

mklingen gravatar image mklingen  ( 2015-03-16 11:46:39 -0600 )edit

What are you setting for trajectory planner

  # Goal tolerance parameters in meters (lower means closer and harder/slower to achieve)
  # Check: stay outside footprint
  yaw_goal_tolerance: 0.3
  xy_goal_tolerance:  0.4
  latch_xy_goal_tolerance: false  # do not rotate on finding goal
rnunziata gravatar image rnunziata  ( 2015-03-16 11:58:32 -0600 )edit

I am not using MoveIt to construct trajectories. I am sending a hard-coded trajectory message. The problem isn't in trajectory construction but in controlling the robot.

mklingen gravatar image mklingen  ( 2015-03-16 13:05:21 -0600 )edit

Question Tools

Stats

Asked: 2015-03-13 12:17:49 -0600

Seen: 619 times

Last updated: Mar 13 '15