feat: add SO101 support and reference pose visualizer#22
Open
johncaipa wants to merge 2 commits into
Open
Conversation
The SO101 URDF uses semantic joint names (shoulder_pan, shoulder_lift,
etc.) directly, while SO100 uses numeric names ("1"–"6"). This caused
all joints to fail mapping when switching to SO101.
Three changes in PyBulletVisualizer:
- _map_joints: add fallback to direct semantic name matching after the
numeric URDF_TO_INTERNAL_NAME_MAP lookup, so SO101 joints resolve
correctly without modifying config
- _find_end_effector: accept a list of candidate link names
(Fixed_Jaw_tip, gripper_frame_link, moving_jaw_so101_v1_link) instead
of a single hardcoded name, covering SO100 and SO101 end-effectors
- setup: detect SO101 by URDF filename and apply a +90° Z-rotation as
base orientation so arms face +Y, matching the SO100 visual layout
SO100 behaviour is unchanged (numeric mapping succeeds on first pass,
identity orientation applied, Fixed_Jaw_tip found as before).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
New standalone script to visually validate poses stored in reference_poses.json using the same PyBullet+URDF setup as production. Features: - Loads both left and right arm poses from the JSON file - Applies each pose to the corresponding robot instance in PyBullet GUI - Overlays arm name, pose index, and per-joint angles as debug text in the 3D window - Manual mode (default): press Enter to advance between poses - Auto mode (--auto): cycles automatically with configurable delay - --urdf flag to select any supported URDF (SO100 default, SO101 works with the base-orientation fix applied in the companion commit) - Loops continuously until Ctrl+C; disconnects PyBullet cleanly on exit Usage: python visualize_poses.py python visualize_poses.py --urdf URDF/SO101/so101_new_calib.urdf python visualize_poses.py --auto --delay 2.5 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
SO101 URDF support in PyBulletVisualizer
_map_joints(): fallback to direct semantic name matching whennumeric names ("1"–"6") are not found — allows SO101 URDFs which
already use
shoulder_pan,shoulder_lift, etc._find_end_effector(): checks a list of candidate link names(SO100:
Fixed_Jaw_tip, SO101:gripper_frame_link)setup(): auto-detects SO101 by filename and applies +90° Z-rotationso arms face +Y, matching the SO100 visual layout
New: visualize_poses.py
Standalone script to validate
reference_poses.jsonposes visuallyusing the same PyBullet+URDF setup as production.
Supports
--urdf,--auto,--delayflags. Works with SO100 and SO101.Tested with
URDF/SO100/so100.urdfandURDF/SO101/so101_new_calib.urdf.