ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

How to use Moveit for planning circular path with a robotic arm

asked 2015-06-15 08:39:23 -0600

sansherlock gravatar image
I want to draw a circle or other geometric object with a robotic arm ,but MoveIt seems only supports the path constraints designed to  from point A to point B.
How to use MoveIt to solve it? Or is there any other package of ROS to solve this problom? 
Any advice?
edit retag flag offensive close merge delete

3 Answers

Sort by ยป oldest newest most voted

answered 2015-09-17 02:44:47 -0600

updated 2015-09-17 02:47:26 -0600

I think this should be possible using the available tools within move_group and using them in the appropriate order.

  • Compute a circular cartesian path as a vector of poses
  • Compute corresponding joint space cartesian path using the cartesian path service capability
  • Send the path off to MoveIt! to execute

It sounds like this might be problematic because of missing time parametrization of the trajectory.

As stated by @paul-jurczak, another option is looking at the Cartesian Path Planner Plug-In for MoveIt!

For DRC, we implemented our own pipeline for generating cartesian motion based on a Action request that specifies the rotation center pose and then rotates the given endeffector around it. Relevant pieces of code:

This likely is a bit heavyweight if you're just interested in doing a circular motion, but might serve for inspiration.

edit flag offensive delete link more


Update: The Pilz Industrial Motion Planner offers CIRC motions. It was added to MoveIt in 2020

fvd gravatar image fvd  ( 2022-08-13 22:50:31 -0600 )edit

answered 2022-04-22 03:26:15 -0600

odd-incubus gravatar image

Just solved this problem for the TIAGo robot and the panda robot.

I used ComputeCartesianPath() from the Moveit! API and created waypoints using components of the position of the end effector with respect to the centre:

for( theta in 0 to 90)
 target_pose.position. y = r*sin(theta)
 target_pose.position. x = r*cos(theta)

Then call the ComputeCartesianPath() using required syntax!

edit flag offensive delete link more

answered 2015-09-17 00:34:24 -0600

Paul Jurczak gravatar image

I was just searching for an answer to the same question. The solution seems to rely on a Cartesian path. Have a look at computeCartesianPath. There is more in Cartesian Path Planner Plug-In for MoveIt! blog post.

edit flag offensive delete link more



Thank you.After a long time using of Moveit,I feel that ROS does not do a lot of work for controlling a robot arm .Not enough funtions.

  • List item
sansherlock gravatar image sansherlock  ( 2015-09-17 01:26:54 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2015-06-15 08:39:23 -0600

Seen: 2,726 times

Last updated: Apr 22 '22