Skip to main content

MoveIt 2

MoveIt 2 answers: given where the robot is, where the obstacles are, and a goal pose or joints, find a collision-free motion and play it on the controllers.

  • Planning scene: robot state + collision objects. Geometry for safety, not a product database.
  • Collision checking: would this joint configuration intersect anything? Sampled densely along candidate paths.
  • OMPL: sampling-based planners. combeanie uses RRTConnect. They explore configuration space until a valid path appears, then time-parameterize it into a trajectory.
  • Trajectory execution: send the timed joint path to FollowJointTrajectory and monitor progress.

Why it matters here​

Every restock segment (approach, grasp lift, transfer, insert) must clear shelf geometry, other products, and depth-derived obstacle boxes. combeanie projects world knowledge into MoveIt; it does not let MoveIt invent inventory. Baseline is OMPL-only (no CHOMP/Pilz in the default pipeline). Obstacles are boxes, not octomaps.

world state (+ obstacles)
│ projector + lease
▼
MoveIt planning scene ──OMPL──► trajectory ──► controllers

This project​

PiecePath
Config builderrestocker_moveit_config/…/configuration.py
OMPL…/config/ompl_planning.yaml (RRTConnect, TOTG)
Kinematics…/config/kinematics.yaml (KDL)
Controllers map…/config/moveit_controllers.yaml
SRDF…/config/restocker.srdf
Scene projectorrestocker_task_executor/src/planning_scene_projector_node.cpp
Motion port…/src/moveit_motion_port.cpp

Planning success ≠ execution success. The motion port classifies whether anything was commanded and whether the arm may have moved. That classification is required for fail-closed recovery.

References​