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

Action Server to move robotic arm

asked 2017-07-19 11:18:18 -0500

BourbonCreams gravatar image

Hi all,

I am trying to get my Arduino Braccio robotic arm to move with the trajectory planned by RViz. It seems like Actions provide support for this so I am trying to write an Action Server that would make my robot move smoothly along the path planned by Rviz. Can someone point me to how I can do that?

I have managed to get it to work without using Action Services but the robot is very clunky and needs a long time to reach its final position so I am looking for a way to make this a smooth movement.

Thank you

edit retag flag offensive close merge delete



Have you tried simulating it in Gazebo? If yes, can you share the damping, friction and inertia values for your robot model. My robot model does not stay still in Gazebo. Also, kindly help me out, how to specify a pick and place goal in MoveIt!

dpakshimpo gravatar image dpakshimpo  ( 2018-03-19 22:47:56 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2017-07-19 20:30:48 -0500

achille gravatar image

updated 2017-07-19 20:35:25 -0500


planned by RViz

I assume you mean MoveIt? RViz is a visualization tool, MoveIt can do motion planning. MoveIt acts as the client in an action specified in your controllers.yaml and a .action file and sends requests to an action server which you create. For your arm, you want to use a JointTrajectoryAction and for the gripper move_group you can use the GripperCommand message found in control_msgs. Your server listens for these action requests, executes them and sends feedback to MoveIt. The implementation depends on your setup and controllers. You can generate smooth trajectories by implementing cubic or quintic trajectories.

Take a look at existing examples to figure out how to make one on your own. I learned a lot from the from the dynamixel_motor package which I used for my arm, while I made a custom server for the gripper which instead of writing to the servos directly, publishes to /command topics. If you prefer C++, way more documentation is available online.

edit flag offensive delete link more


Thanks a lot for your reply. Yes I did mean MoveIt. I had a look at the script by dynamixel_motor, is it a general action server that can be implemented for any robot?

BourbonCreams gravatar image BourbonCreams  ( 2017-07-20 07:53:50 -0500 )edit

No, implementation depends on how you want to interface with your controllers. Can you make individual servos move using a rostopic pub /your_servo/command command or do you want to talk to the controllers directly? For some motors, these servers exist online.

achille gravatar image achille  ( 2017-07-20 11:30:29 -0500 )edit

Ok I have a basic action server running and I am now looking for a way to send the commands to the Arduino to make the arm move smoothly. I opened a new question here. Thank you

BourbonCreams gravatar image BourbonCreams  ( 2017-07-21 09:51:09 -0500 )edit

No need to open a new question if the answer is right here. The file I provided you with does just that.

achille gravatar image achille  ( 2017-07-21 10:35:58 -0500 )edit

I feel like that's very overcomplicated and for a ROS beginner there should be a more straightforward way to do that.

BourbonCreams gravatar image BourbonCreams  ( 2017-07-22 04:55:36 -0500 )edit

I'm afraid when you want smooth motions, you need to use complex trajectories like cubics and quintics so there's no way around that. However, if you have controllers in place already, you can greatly simplify this code by just publishing to the relevant topic.

achille gravatar image achille  ( 2017-07-22 12:47:27 -0500 )edit

Question Tools

1 follower


Asked: 2017-07-19 11:18:18 -0500

Seen: 2,373 times

Last updated: Jul 19 '17