Expand description
Quasi-static planar pushing (pusher-slider) with contact modes and MPPI.
A pure-Rust reproduction slice for contact-rich planar manipulation in the spirit of “Push Anything”: a point pusher that may contact any of the slider’s four faces shoves a rigid square slider across a table to a goal pose. The slider obeys the classic quasi-static ellipsoidal limit-surface model (Goyal/Howe/Mason; Lynch; Hogan-Rodriguez): motion is determined by the contact, not by inertia, and the contact can stick or slide depending on whether the required tangential force stays inside the pusher friction cone.
PusherSliderParamsholds the slider half-extent, the limit-surface characteristic length, and the pusher friction coefficient.PusherCommandis a body-frame pusher motion on a chosen face: the face index, a contact offset along it, a normal push speed, and a tangential slip speed.PusherSliderParams::stepadvances the slider one quasi-static step and reports the realizedContactMode.PusherSliderMppiControllerruns MPPI per face and executes the command from the lowest-cost face, so it can switch faces to reach goals (such as a pure rotation) that a single face cannot;simulate_pushruns the closed loop and returns aPushReport.simulate_multi_pusharranges several sliders into goal slots one at a time, treating the other objects as keep-out discs so the active slider routes around them.PusherSliderParams::two_contact_twist/two_contact_stepsolve two simultaneous contacts contact-implicitly (per-contact stick/slide mode enumeration with a 4x4 force solve), so a couple can spin the slider in place — motion a single contact cannot produce.
The model is exact for the single-contact stick/slide regimes; the two-contact solver resolves the rigid-redundant (both-stick) case onto a cone edge, and a contact-implicit controller over the contacts is left as an extension.
Structs§
- Multi
Push Report - Metrics for a multi-object push.
- Push
Report - Metrics for a closed-loop push.
- Pusher
Command - Body-frame pusher command on one of the slider’s four faces.
- Pusher
Mppi Config - Configuration for the sampling-based pushing controller.
- Pusher
Mppi Plan - Result of one
plancall. - Pusher
Slider Mppi Controller - Deterministic, seeded sampling controller for planar pushing.
- Pusher
Slider Params - Quasi-static pusher-slider parameters.
- Slider
State - Planar pose
[x, y, theta]of the slider in the world frame.
Enums§
- Contact
Mode - The realized contact regime for a step.
Functions§
- simulate_
multi_ push - Push several sliders to their goals one at a time, treating the other objects (at their current poses) as keep-out obstacles for the active one.
- simulate_
push - Drive the pushing controller toward a goal pose and report the result.
- simulate_
push_ with_ obstacles - Like
simulate_pushbut the controller keeps the slider clear of the given obstacle centers (keep-out discs ofconfig.obstacle_radius).