Skip to content

Feat/13338 space satellite pnp cal#769

Draft
danwahl wants to merge 4 commits into
mainfrom
feat/13338-space-satellite-pnp-cal
Draft

Feat/13338 space satellite pnp cal#769
danwahl wants to merge 4 commits into
mainfrom
feat/13338-space-satellite-pnp-cal

Conversation

@danwahl

@danwahl danwahl commented Jul 10, 2026

Copy link
Copy Markdown

danwahl added 4 commits July 8, 2026 23:05
…scene camera cal

Rewire the scene-camera calibration leaf to GetImage + GetCameraInfo +
CalibrateCameraPosePnp (single joint PnP over all tag corners), replacing the
DetectAprilTags + per-tag GetDetectionPose + CalibrateCameraPose path.

Replace the decorative calibration_tag_right/left/bottom links with TF-only
calibration_tag_0/1/2 frames that reproduce the MuJoCo-rendered AprilTag poses
exactly (via a calibration_tags_root matching MuJoCo's calibration_tool body),
so the behavior's per-id TF lookups resolve to what the camera actually sees.
…or PnP

Part B's tag frames added a spurious Rz(-90) parent rotation
(calibration_tags_root) that displaced the tag positions from where they
render in MuJoCo. CalibrateCameraPosePnp uses tag corners (orientation-
and position-sensitive), so this made it drift to a different phantom
camera pose at each waypoint, whereas the old center-only
CalibrateCameraPose tolerated it.

Parent calibration_tag_0/1/2 directly to calibration_tool_link at the
proven tag-center offsets (same values the original centers-based
calibration used); rpy="3.14159 0 0" keeps +Z out of the tag face for
the corner PnP solve. Verified in sim: recovered optical pose is now
consistent across all waypoints and the saved mount matches the URDF
scene camera mount within noise.
…PnP calibration

Add a "Calibrate Wrist Camera" objective that calibrates the wrist-mounted
camera against three static satellite AprilTags, reusing the same
CalibrateCameraPosePnp subtree as the scene-camera (eye-to-hand) calibration.
Only the frames, topics, tag prefix, and waypoints differ.

- Scene/URDF: three tag36h11 markers (ids 3/4/5, distinct from the tool plate
  0/1/2) as angled plates on the drum top, plus a wrist_camera_mount_link frame
  on the flange to receive the calibrated extrinsics.
- Objectives: thread tag_frame_prefix, mounting_pose_parent_frame, and
  waypoint_N_name through the shared subtrees (defaults preserve the scene-camera
  path unchanged); new thin calibrate_wrist_camera.xml wires the wrist ports.
- Per-waypoint fix: express each waypoint's optical pose in the mount-parent
  frame before averaging. For a moving (eye-in-hand) camera the optical pose in
  base_link differs per waypoint, so averaging it directly biased the result;
  the mount-parent frame is rigid to the camera, so the cross-waypoint average is
  unbiased. This is a no-op for the eye-to-hand case (parent == base_link).

Verified in sim: recovers the declared wrist mount [0, -0.056, -0.058] Ry180 to
sub-millimeter, with per-waypoint PnP reprojection RMS ~0.38 px.
…ags + diverse waypoints

Mount the three satellite AprilTags flat and coplanar on the servicer's front
(+x) gold face, on the arm-base side of the docking mechanism, replacing the
tilted drum-top placement (scene.xml geoms + matching sat_tag_* URDF frames;
Ry90 so +Z exits the tag face). Regenerate the four wrist-camera waypoints for
diverse, collision-free views that keep all three tags clear of the end
effector. Sim-verified: every waypoint detects all 3 tags and the recovered
wrist mount matches the URDF to ~0.6 mm / 0.02 deg.
@danwahl danwahl self-assigned this Jul 10, 2026
@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 7cef11d5-7ea4-4b66-aa8e-3475f2a13ada

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@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