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

Using Moveit to control 6 dof manipulator

asked 2015-12-11 11:18:12 -0500

Chickenman gravatar image

Hi guys. I created a controller for 6 dof manipulator in ROS. There are six nodes 4 comute messages for comunication one is servise server which actually communicates with the robot and sends request messages and feedback response messages.One is main_control which gives basic commands. It sends commands for unbrake or motion or controlls the position and speed. One node publish all joints positions in frequency 50 hz and I can tell to every single joint to move on position in his scale. For example joint 5 has scale -135° 135° and I can tell him to go on -70° and he moves there with accurancy 0.1°

I want to implement some IK kinematics to the model using moveit. I am still reading something about joint followtrajectory actions and I already created urdf file and use it in move it launch. But I dont know how to connect this two thing and actually control the robot from moveit. I did not start nothing special and come here for advice because i dont want to do something wrong.

I have one more question is a good idea to rewrite my controller nodes to actionlib server and clients. Does it help to communicate with moveIt o I can easily communicate with moveit witout any action server.

Sorry for my english I would be gratefull for any advice

edit retag flag offensive close merge delete


I tried this tutorial but half link are not working for example in part 3.

Chickenman gravatar image Chickenman  ( 2015-12-12 02:59:32 -0500 )edit

I've created an issue for the dead lines (here). The MoveIt domains/hosting/doc has changed quite a bit lately, and that tutorial hasn't been updated yet. Hence the dead links.

gvdhoorn gravatar image gvdhoorn  ( 2015-12-12 03:59:43 -0500 )edit

Thank you for your time. Is there a real chance that I can find solution for this problem because aplication of ROS control and kinematic to a robotic manipulator is main point of my Bachelor thesis and I really want to use moveIT. Or can you recommend me any other solutions?

Chickenman gravatar image Chickenman  ( 2015-12-13 12:18:09 -0500 )edit

In a nutshell: write a ros_control interface for your hardware, configure ros_control to run a JointTrajectoryAction server on top of that and then make MoveIt use that server. Apart from the hardware_interface, this is all configuration work, no coding required.

gvdhoorn gravatar image gvdhoorn  ( 2015-12-14 10:58:12 -0500 )edit

Ok thank you for your time. I will try to do as you say. First I will start with this tutorial. and I will see

Chickenman gravatar image Chickenman  ( 2015-12-14 11:31:09 -0500 )edit

Hi, I meet the same problem as you. I kown they communicate with the FollowJointTrajectoryAction. And I have built a simple action client to send position message and a simple action server to receive it to manipulator. And it moves successfully! But I still dont kown

Alix gravatar image Alix  ( 2017-06-18 03:37:34 -0500 )edit

But I still dont kown how to use moveit to control my manipulator. Do you solve it? I also do it for my Bachelor thesis.

Alix gravatar image Alix  ( 2017-06-18 03:40:11 -0500 )edit

1 Answer

Sort by » oldest newest most voted

answered 2018-10-17 15:18:50 -0500

Strongly agree with the answer of gvdhoorn, too bad it was posted as a comment and not as the answer for the question.

Complementing his answer I would like to provide with a weblink of a 2 DOF arm that serves as a minimal example in simulation with gazebo about how to setup a manipulator with moveit see acrobat robot here.

So in steps:

  1. Create URDF model, this tutorial helps if you don't have any URDF experience

  2. Create controllers for each of your arm joints: e.g. position, velocity, effort, strongly recommend to use ros control for that

  3. Create a joint trajectory controller (actionlib)

Notice so far no moveit has come into the picture yet. However your arm is ready to accept trajectory msgs (and therefore able to follow parameterized paths, which are called trajectories, that include "waypoints" with position, velocity and acceleration information for each point).

Moveit then is the "glue" or "integrator" between URDF, OMPL, FCL, robot state (compute FK from sensors, aka transform enconder data into TF data using the robot_state_publisher).

  1. Run moveit setup assistant and generate a moveit config pkg

  2. launch move_group.launch

  3. Now how to use moveit to move the arm, well there are many ways, here I leave some ideas:

a) record arm configurations, save them in my_moveit_config_pkg/config/my_robot_name.srdf file and using moveit commander rosrun moveit_commander , then use my_arm_group_name, then go my_arm_pose

b) use moveit api to create a client node that communicates with move_group "server" to move the arm in a similar way from point a, but from code instead of terminal, check some examples here

c) use rviz moveit plugin!, open rviz, select "add topic" button, then add a MotionPlanning topic type. It will open an Embedded window that you can use to move your robot with few button clicks

Hope it helps.

edit flag offensive delete link more

Question Tools



Asked: 2015-12-11 11:18:12 -0500

Seen: 2,517 times

Last updated: Oct 17 '18