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 == | ||

