Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
tutorials:intermediate:collisions_and_constraints [2015/06/05 12:08] – [Using kinematic constraints during planning] mpomarlan | tutorials:intermediate:collisions_and_constraints [2015/06/18 06:25] (current) – [Allowed Collision Matrix] mpomarlan | ||
---|---|---|---|
Line 194: | Line 194: | ||
</ | </ | ||
- | A similar effect can be achieved by removing and readding the cube to the planning scene like so: | + | NOTE: MoveIt! will NOT remove entries |
- | + | ||
- | <code lisp> | + | |
- | (remove-collision-object " | + | |
- | (add-collision-object " | + | |
- | </ | + | |
- | + | ||
- | because | + | |
===== Constraint checking ===== | ===== Constraint checking ===== | ||
Line 265: | Line 258: | ||
From the previous part of the tutorial, we should have a running REPL with the cram moveit tutorial loaded and initialized, | From the previous part of the tutorial, we should have a running REPL with the cram moveit tutorial loaded and initialized, | ||
- | Let's try a simple motion plan request, in which we ask the robot to move from one pose around the cube to another: | + | cram-moveit also allows you to define path constraints for **compute-cartesian-path**, |
+ | |||
+ | Let' | ||
<code lisp> | <code lisp> | ||
Line 291: | Line 286: | ||
:w 1.0) | :w 1.0) | ||
: | : | ||
- | : | + | : |
- | : | + | : |
- | : | + | : |
: | : | ||
(plan-link-movement " | (plan-link-movement " | ||
Line 301: | Line 296: | ||
(We leave some tolerance in the axis to help the sampler; a too strict constraint may be impossible to satisfy anyway.) | (We leave some tolerance in the axis to help the sampler; a too strict constraint may be impossible to satisfy anyway.) | ||
- | Now look in the RViz window. You should | + | Unfortunately, |
+ | |||
+ | There is a solution however-- look below. | ||
+ | |||
+ | ==== A note about MoveIt!' | ||
+ | |||
+ | MoveIt! does not do continuous collision checking, which means, instead, that it chooses some points along a robot trajectory segment and does collision checking on them. Usually this won't affect you, unless you work with very narrow objects and/or constraints. | ||
+ | |||
+ | Narrow objects are a problem because the poses MoveIt! chooses to check along a trajectory segment may just miss the object, even if, in fact, the trajectory passes through | ||
+ | |||
+ | There is a tradeoff between increasing the resolution of the collision checks along a trajectory segment and planning time. Sadly, MoveIt! doesn' | ||
+ | |||
+ | For the example above to work, you will have to close move_group, go to pr2_moveit_config/ | ||
- | You can also define path constraints | + | From the REPL, rerun the lisp code we tried above, |
== Next == | == Next == |