Skip to content

Add Intrinsic MoveIt grasp planning demo (Docker + Foxglove) - #43

Draft
msadowski wants to merge 5 commits into
mainfrom
cursor/intrinsic-moveit-foxglove-demo-4d9b
Draft

msadowski wants to merge 5 commits into
mainfrom
cursor/intrinsic-moveit-foxglove-demo-4d9b

Conversation

@msadowski

@msadowski msadowski commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Adds integrations/ros2/intrinsic_moveit/, a containerized demo of Intrinsic's open-source MoveIt Task Constructor grasp planner (intrinsic-moveit, part of the Intrinsic Core release). It runs the planner for the OMTS machine-tending cell (UR5e, Robotiq Hand-E, Orbbec wrist camera) on mock hardware and shows it live in Foxglove.

Why this example: Intrinsic Core itself needs a k3s cluster, a ~50-minute Bazel build and a GPU. intrinsic-moveit's documented standalone mock-hardware mode is the only existing example that fits in one container.

What's reused from upstream: the grasp pipeline sources, robot description, MoveIt config, PlanGrasps.srv and service.launch.py are compiled or launched unmodified from pinned commit c5e3290. A thin standalone node replaces moveit_planning_node.cpp, so the heavy sdk-ros underlay (gRPC, OR-Tools, Bazel SDK) isn't needed.

Demo loop: a driver repeats the OMTS pick/place cycle.

  • Spawns the OMTS 2x3x5 billet and calls /grasp_planning/plan_grasps.
  • Draws the grasp candidates, then picks the IK solution closest to the current joints.
  • Moves with Pilz PTP transits and Cartesian approach/retreat.
  • Places the billet at a random pose in the OMTS return window.

Foxglove: foxglove_bridge on port 8765 serves package:// meshes. There are live and playback layouts, and rosbag2 records MCAP to ./recordings/. The playback layout uses a URDF whose mesh links point at GitHub, so recordings show meshes in the web app too.

Reproducibility: the base image digest and the ROS apt snapshot (snapshots.ros.org/jazzy/2026-09-11) are pinned. The image is 3.06 GB.

To run it:

cd integrations/ros2/intrinsic_moveit
docker compose up --build   # then connect Foxglove to ws://localhost:8765 and import the layout

Verification (in a VM with Docker)

  • A no-cache build works against the pinned snapshot, and the container reports healthy.
  • check_foxglove_ws.py: the bridge serves the robot meshes.
  • check_plan_grasps.py: SUCCESS with 10 grasps.
  • check_motion.py: joints move and stay within travel limits. The base spans about 0.32 rad and the wrist-flip joint (wrist_2) doesn't move.
  • Runs of 3 to 26 cycles finished with no recoveries.
  • docker compose stop exits 0, and the MCAP is finalized with all topics.
  • Known upstream issue: move_group segfaults on shutdown. It reproduces with the stock launch file alone, and the recording is already saved when it happens. This is documented in the README.

The Foxglove layout wasn't checked visually because app.foxglove.dev requires sign-in. It was checked against the live topics and recordings.

Open in Web Open in Cursor 

cursoragent and others added 5 commits September 28, 2026 21:34
Co-authored-by: Mateusz Sadowski <msadowski@users.noreply.github.com>
…shutdown, layout and README polish

Co-authored-by: Mateusz Sadowski <msadowski@users.noreply.github.com>
Co-authored-by: Mateusz Sadowski <msadowski@users.noreply.github.com>
… into recovery

Co-authored-by: Mateusz Sadowski <msadowski@users.noreply.github.com>
… crash

Co-authored-by: Mateusz Sadowski <msadowski@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants