Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

I think the key problem is that the example of rrbot uses a hardware interface of joint effort. If you want to implement MoveIt to it, you need to build a joint trajectory controller.

  • Add a trajectory controller to your robot:


type: effort_controllers/JointTrajectoryController
   - joint1
   - joint2
    goal_time: 0.0
    stopped_velocity_tolerance: 0.01
    joint1: {trajectory: 0.01, goal: 0.01}
    joint2: {trajectory: 0.01, goal: 0.01}
   joint1: {p: 100.0, d: 75.0, i: 0.0, i_clamp: 0.0}
   joint2: {p: 100.0, d: 25.0, i: 0.0, i_clamp: 0.0}
state_publish_rate:  100
action_monitor_rate: 100
stop_trajectory_duration: 0.0

notice that you should maunally setup these parameters to have a good performance, especially pid.

  • Remap the controller topic to MoveIt topic


    <remap from="/rrbot/arm_controller/follow_joint_trajectory" to="/joint_trajectory_action"/> <remap from="/rrbot/arm_controller/state" to="/feedback_states"/> <remap from="/rrbot/arm_controller/command" to="/joint_path_command"/>

If you just want to learn how to set-up MoveIt with a simple robot, I suggest you change the hardware interface to joint position interface. It's at the bottom of the description of rrbot. Tag hardwareInterface of joint and actuator both should be PositionJointInterface. And then in the joint trajectory controller, you don't have to tune pid any more.

Hope this would help.