Cartesian path planning with orientation constraint

1,697 views
Skip to first unread message

joshuama...@u.northwestern.edu

unread,
Feb 9, 2017, 10:42:58 AM2/9/17
to MoveIt! Users
Hello,

I have an orientation constraint added to my planning group using group.setPathConstraints(path_constraint). When I move to a position target using group.setPositionTarget(x,y,z), the orientation constraint is satisfied.

I next tried using group.computeCartesianPath() after setting group.setPathConstraints(path_constraint). The waypoint used was the same as in group.setPositionTarget(x,y,z) - which is only a few mm away from the current position. I was not sure what to set for waypoint.pose.orientation, so I set waypoint.pose.orientation.w = 1. The Cartesian path for this waypoint failed with a 0.00% following percentage.

What is the correct way to specify a waypoint for computeCartesianPath() when I only want to provide an (x,y,z) position and have the orientation enforced by the orientation constraint?

Thanks,
Josh

Steffen P

unread,
Feb 9, 2017, 2:46:40 PM2/9/17
to MoveIt! Users
Hey,

this is not possible. As far as I know ComputeCartesianPath() does not take the path constraints set by setPathConstraints(path_constraint) into account . You can just set specific poses for the waypoints.

Regards,
Steffen

v4hn

unread,
Feb 9, 2017, 2:58:21 PM2/9/17
to moveit...@googlegroups.com
On Thu, Feb 09, 2017 at 11:46:40AM -0800, Steffen P wrote:
> this is not possible. As far as I know ComputeCartesianPath() does not take
> the path constraints set by setPathConstraints(path_constraint) into
> account .

I thought so too, but it turns out it *does* care about them:
https://github.com/ros-planning/moveit/blob/kinetic-devel/moveit_ros/planning_interface/move_group_interface/src/move_group_interface.cpp#L942
https://github.com/ros-planning/moveit/blob/kinetic-devel/moveit_ros/move_group/src/default_capabilities/cartesian_path_service_capability.cpp#L130

> You can just set specific poses for the waypoints.

This is true though. If you specify an orientation of (x=0,y=0,z=0,w=1), then it will use it.
If you have underconstrained waypoints, you should look at the decartes project.
(Although this will hopefully become part of MoveIt in the future).
I'm not sure how easy it is to get this to work for your use-case though.


v4hn
signature.asc

joshuama...@u.northwestern.edu

unread,
Feb 14, 2017, 5:13:56 PM2/14/17
to MoveIt! Users
I tried getting the constraints to work in cartesian_path_service_capability by installing moveit from source for ros-jade. The package ros-jade-moveit-core did not have access to this function. Still was not able to figure out how to specify the waypoint orientations w/o it using it instead of the orientation constraint provided.

I did have better luck with the descartes project. Still figuring out how to adapt it for my needs, but did get a basic trajectory to work for my robot. 

One question, if anyone knows, how should I time the descartes trajectory? In the provided example on the descartes wiki tutorial, when creating the RobotTrajectory() they are only providing the positions[] and time_from_start (1 second between each waypoint), ignoring the velocities[] and accelerations[]. This is not time efficient or taking advantage of the joint velocities/accelerations. Is there an easy method to time the trajectory that takes advantage of the max_velocity and max_acceleration in the joint_limits.yaml file?

Shaun Edwards

unread,
Feb 15, 2017, 11:50:40 AM2/15/17
to joshuama...@u.northwestern.edu, MoveIt! Users
In Descartes you can set the timing as part of the initial Cartesian trajectory if that matters to you.  For example, processes like painting, have hard requirements on path timing.  Descartes will take that timing into consideration when planning (i.e. if the motion is too fast for the robot, the plan will fail).  If you only care about executing the motion as fast as the robot can, then you can use the MoveIt time parameterization (it's mostly optimal, but could be better).

--
You received this message because you are subscribed to the Google Groups "MoveIt! Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to moveit-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/moveit-users/3fbafbb3-6520-49f4-b2db-12a788596d3a%40googlegroups.com.
--
Shaun Edwards

G.A. vd. Hoorn - 3ME

unread,
Feb 15, 2017, 11:53:24 AM2/15/17
to moveit...@googlegroups.com
On 15-2-2017 17:50, Shaun Edwards wrote:
[..]
> If you only care about executing the motion as
> fast as the robot can, then you can use the MoveIt time parameterization
> (it's mostly optimal, but could be better).
[..]

It would seem it's going to get a bit more optimal.

See [1].


Gijs

[1] https://github.com/ros-planning/moveit/pull/441

joshuama...@u.northwestern.edu

unread,
Feb 16, 2017, 5:21:59 PM2/16/17
to MoveIt! Users, joshuama...@u.northwestern.edu
Hi Shaun,

I tried looking into setting the timing for Descartes, but could not find any mention about it. Could you point out to me where I can find it?


On Wednesday, February 15, 2017 at 11:50:40 AM UTC-5, Shaun Edwards wrote:
In Descartes you can set the timing as part of the initial Cartesian trajectory if that matters to you.  For example, processes like painting, have hard requirements on path timing.  Descartes will take that timing into consideration when planning (i.e. if the motion is too fast for the robot, the plan will fail).

Also taking a look into the MoveIt time parameterization. 

Thanks,
Josh

Shaun Edwards

unread,
Feb 17, 2017, 4:06:22 PM2/17/17
to joshuama...@u.northwestern.edu, MoveIt! Users
Josh,

The timing constraint isn't well documented.  The point constructors can be used with a timing object: http://docs.ros.org/indigo/api/descartes_trajectory/html/classdescartes__trajectory_1_1CartTrajectoryPt.html 


Be default the timing object is unspecified and ignored during planning.

-Shaun



--
You received this message because you are subscribed to the Google Groups "MoveIt! Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to moveit-users...@googlegroups.com.
--
Shaun Edwards

joshuama...@u.northwestern.edu

unread,
Feb 20, 2017, 2:18:53 PM2/20/17
to MoveIt! Users
The MoveIt time parameterization worked perfectly by just providing the series of joint positions. 
Reply all
Reply to author
Forward
0 new messages