Skip to content

fix(lunar_sim): anchor planning scene to odom - #1109

Merged
griswaldbrooks merged 1 commit into
v10.2from
fm/moveitpro-23786-lunar-planar-joint
Oct 17, 2026
Merged

griswaldbrooks merged 1 commit into
v10.2from
fm/moveitpro-23786-lunar-planar-joint

Conversation

@griswaldbrooks

@griswaldbrooks griswaldbrooks commented Oct 17, 2026 •

Copy link
Copy Markdown

Motivation

Keepout boxes created in lunar_sim's Planning Scene Editor moved with the rover because MoveIt's planning frame was the moving footprint link. World collision objects should retain their pose in odom while the rover moves.

Brief description

Add a planar SRDF virtual joint from odom to footprint. The existing state monitor reads the controller's TF to update the rover pose, and the planning scene stores world objects in odom.

The rover remains rooted at footprint in the URDF. The planar joint represents its moving root without freezing it or adding translation/yaw rail joints. No odometry bridge is needed: rc4's existing multi-DOF state monitor subscribes to TF and resolves the virtual joint's parent and child frames.

The four-wheel base group, controllers, and rover-relative Objective commands retain their existing behavior. Direct velocity teleoperation still does not perform collision avoidance. Document the planning-frame contract and correct the self-collision comment to distinguish internal wheel motion from root motion.

How it was tested

On MoveIt Pro 10.2.0-rc4 with an isolated lunar_sim instance:

  • The runtime planning-root assertion failed on the original SRDF (footprint) and passed with the planar joint (odom).
  • Created a box using the Desktop Planning Scene Editor and drove with Pose teleoperation. Before/after /get_planning_scene and TF checks confirmed 0.149744 m of rover motion, an exactly unchanged box pose/geometry in odom, and root-state/TF agreement within 5 micrometres. Before/after screenshots confirmed both rover and box render correctly.
  • The validation pipeline independently repeated the Desktop workflow over about 1 m of rover motion. The original SRDF made the box move with the rover; the fixed SRDF kept it in odom, with root state following TF.
  • The comparison checked the same unattached world object, including its frame, pose, orientation, dimensions, and identity. Its box dimensions were 0.05 × 0.5 × 0.5 m, with position (0, 0.5, 0.5) in odom. Both MoveIt root-state motion and fresh odometry TF were required; a stationary root would fail the check.
  • colcon build --packages-select lunar_sim succeeded. colcon test --packages-select lunar_sim and colcon test-result --test-result-base build/lunar_sim --verbose: 24 tests, zero errors, failures, or skips.
  • The geometry pytest suite passed all 11 tests. Dead Reckon Square and Reset MuJoCo Sim both completed successfully; Desktop teleoperation started and stopped successfully.

Fixed planning frame: before and after UI teleoperation

Before After
Rover beside the fixed keepout box Rover moved about 1 m while the keepout box stayed in odom

@coderabbitai

coderabbitai Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Team
  • Run ID: 659f2e69-e931-4889-b8b7-158af79d46b0
📥 Commits

Reviewing files that changed from the base of the PR and between ec801ab and 896e859.

📒 Files selected for processing: 2
  • src/lunar_sim/README.md
  • src/lunar_sim/config/moveit/husky_a300.srdf

Included review availability: This review used your included allowance. 3 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 4 reviews per hour.

📝 Summary

Summary by CodeRabbit

  • Documentation
    • Clarified that MoveIt planning and world objects use the odom frame, and explained how this relates to the rover’s footprint and motion.
    • Documented that direct /cmd_vel teleoperation does not check Planning Scene Editor objects for collisions.
    • Clarified the robot’s collision-checking behavior and which joints are included in its planning group.

The SRDF adds an odom-to-footprint planar virtual joint and updates a collision-checking comment. The README documents the planning frame, its TF update, Planning Scene Editor world objects, and the collision-checking scope of the base group and direct /cmd_vel teleoperation.

Changes: Planning frame configuration

Layer / File(s) Summary
Configure the planning frame and document collision scope
src/lunar_sim/config/moveit/husky_a300.srdf, src/lunar_sim/README.md
The SRDF connects odom to footprint with a planar virtual joint and updates the collision-checking comment. The README documents the frame, controller TF, world objects, and collision-checking scope.

Suggested reviewers: bkanator

Priority: ➖ Normal

Merge Risk: ⚪ Minimal · up to 896e8

The planning scene now uses odom while following the controller’s root transform. The available evidence shows no remaining issue that should block merging.

Pre-merge checks: Passed 4
Check name Status Explanation
Description check Passed The pull request description directly matches the changes. It explains the new odom-to-footprint planar virtual joint, SRDF comment update, README documentation, testing, and collision-object behavior…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Human Review Check Passed This PR is low-risk under the custom check. The authoritative diff changes only two lunar_sim files: a 4-line SRDF virtual-joint configuration update and a 7-line README addition. It does not change a…
Full details: Description check

Explanation

The pull request description directly matches the changes. It explains the new odom-to-footprint planar virtual joint, SRDF comment update, README documentation, testing, and collision-object behavior.

Full details: Human Review Check

Explanation

This PR is low-risk under the custom check. The authoritative diff changes only two lunar_sim files: a 4-line SRDF virtual-joint configuration update and a 7-line README addition. It does not change authentication, permissions, secrets, CI/CD, infrastructure, deployment, launch scripts, public APIs, moveit_pro_behavior_interface, or moveit_pro_behavior. It is not a large cross-cutting change or a significant public tutorial change.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

⚠️ This pull request shows signs of AI-generated slop (ai_padded_prose). It has been flagged by CodeRabbit slop detection and should be reviewed carefully.

Comment @coderabbitai help to get the list of available commands.

@griswaldbrooks griswaldbrooks added this to the 10.2.0 milestone Oct 17, 2026
@griswaldbrooks
griswaldbrooks merged commit a218201 into v10.2 Oct 17, 2026
19 checks passed
@griswaldbrooks
griswaldbrooks deleted the fm/moveitpro-23786-lunar-planar-joint branch October 17, 2026 17:26
@github-actions

Copy link
Copy Markdown

MoveIt Pro Example WS - Objectives Integration Test Report

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant