MoveIt motion planning: how it works and where it fails
Post384 words
MoveIt turns a target pose into collision-free joint trajectories via sampling-based planning. Cites BMW Regensburg (80ms average planning) and notes weak spots: dynamic environments, contact-rich tasks and sub-second cycles.
Key claims
Success on YCB: 89% in clutter, 98% for isolated objects
BMW Regensburg planning 80ms average, 180ms p99
Fits 2-10 second cycle times
๐ ๐ผ๐๐ถ๐ผ๐ป ๐ฝ๐น๐ฎ๐ป๐ป๐ถ๐ป๐ด ๐น๐ถ๐ฏ๐ฟ๐ฎ๐ฟ๐ถ๐ฒ๐ ๐น๐ถ๐ธ๐ฒ ๐ ๐ผ๐๐ฒ๐๐ (๐บ๐ฎ๐ป๐ถ๐ฝ๐๐น๐ฎ๐๐ผ๐ฟ๐) ๐ณ๐ผ๐ฟ ๐ฟ๐ผ๐ฏ๐ผ๐๐ถ๐ฐ๐
The robot arm needs to move from point A to point B without hitting itself, the table, or anything else in the workspace - motion planning solves this problem.
Sounds simple. Gets complex fast when you have 6-7 joints, dynamic obstacles, and need solutions in <100ms for real-time operation.
For such cases we have libraries like Movelt. It takes target pose (position + orientation) as input. Returns joint trajectories that get you there safely. Handles:
โคCollision checking (10,000+ checks per planning attempt)
โคInverse kinematics (convert XYZ coordinates to joint angles)
โคTrajectory optimization (smooth the path, minimize jerk)
โคConstraint satisfaction (keep tool vertical while moving, stay within workspace bounds)
To make any action Movelt launches the planning pipeline:
1. Scene representation: build 3D octree of workspace (typical resolution: 1cm voxels)
2. Sample configurations: generate random valid joint states
3. Connect samples: try to link valid states without collisions
4. Extract path: find shortest route through the graph
5. Smooth trajectory: convert waypoints into continuous motion with velocity/acceleration profiles
This runs 20-50 times to find multiple solutions, then picks best by time or smoothness metric.
BMW Regensburg plant uses MoveIt to control 200+ robot arms for door assembly. Planning takes 80ms average, 99th percentile at 180ms. Switched from proprietary ABB planner because MoveIt handled tool changes without reprogramming (saved 4 weeks per production line reconfiguration).
Fetch Robotics warehouse robots use MoveIt to plan arm motions for bin picking. Processes 450 picks/hour with 97% success rate. Failure cases: mostly perception errors, not planning failures.
NASA Robonaut 2 (ISS) uses MoveIt to plan manipulation tasks in microgravity. Had to modify collision checking to account for floating objects - standard MoveIt assumes static obstacles.
MoveIt planning success rate on YCB object dataset (standard manipulation benchmark): 89% for clutter scenes, 98% for isolated objects.
But like any other tech, there are cases where MoveIt struggles:
โค Dynamic environments - replanning takes too long when obstacles move unpredictably. Fails for catching thrown objects or fast-moving conveyors.
โค Contact-rich tasks - pushing doors, wiping tables, anything requiring force control. Need hybrid approaches (MoveIt for free-space, impedance control for contact).
โคHigh-speed applications - planning overhead limits cycle time. Assembly lines running <1 second cycles use pre-taught trajectories instead. MoveIt fits 2-10 second cycle time applications.
1 image on X