| sim_models: introduce scene compiler and pick_banana Gazebo scene
Add sim_models as an ament Python package providing scene assets and a
scene compiler API for simulation backends.
scene_compiler.py exposes 4 public functions:
- get_scene_file(name, platform): return template file path
- get_gazebo_world_path(name): generate /tmp/ world with absolute mesh URIs
- get_mujoco_scene_path(name, robot_xml_path): generate /tmp/ MJCF for MuJoCo
- get_scene_layout(name): return parsed layout.yaml dict
pick_banana scene includes bluetable, plate, banana and green curtain with 6
OBJ mesh assets reused from mujoco_ros2_control_so101. Coordinate system is
aligned with MuJoCo: ground_plane at z=-0.274 (visible floor), invisible
table_surface_collision plane at z=0 so dynamic objects settle on the table.
layout.yaml carries a robot_spawn field so the scene (not the robot config)
owns the per-scene spawn Z offset. GazeboAdapter.start_backend() reads
simulation.scene from the robot YAML, calls get_gazebo_world_path() to
obtain the resolved world file, and applies robot_spawn.{x,y,z} to
override initial_pose values before spawning the robot entity.
Enable pick_banana in so101_single_arm.yaml (previously null).
Signed-off-by: grangerxsp <xingshiping@huawei.com>
| 2 个月前 |
| sim_models: introduce scene compiler and pick_banana Gazebo scene
Add sim_models as an ament Python package providing scene assets and a
scene compiler API for simulation backends.
scene_compiler.py exposes 4 public functions:
- get_scene_file(name, platform): return template file path
- get_gazebo_world_path(name): generate /tmp/ world with absolute mesh URIs
- get_mujoco_scene_path(name, robot_xml_path): generate /tmp/ MJCF for MuJoCo
- get_scene_layout(name): return parsed layout.yaml dict
pick_banana scene includes bluetable, plate, banana and green curtain with 6
OBJ mesh assets reused from mujoco_ros2_control_so101. Coordinate system is
aligned with MuJoCo: ground_plane at z=-0.274 (visible floor), invisible
table_surface_collision plane at z=0 so dynamic objects settle on the table.
layout.yaml carries a robot_spawn field so the scene (not the robot config)
owns the per-scene spawn Z offset. GazeboAdapter.start_backend() reads
simulation.scene from the robot YAML, calls get_gazebo_world_path() to
obtain the resolved world file, and applies robot_spawn.{x,y,z} to
override initial_pose values before spawning the robot entity.
Enable pick_banana in so101_single_arm.yaml (previously null).
Signed-off-by: grangerxsp <xingshiping@huawei.com>
| 2 个月前 |
| feat: camera calibration system for Gazebo and MuJoCo
Add sim-aware camera alignment and Gazebo proxy adjustment.
Add MuJoCo calibration support via isolated Gazebo.
Keep overrides and robot spawn owned by robot_config.
| 12 小时前 |
| review(sim): address PR #193 code review feedback
- scene_compiler: wrap mujoco compile pipeline in try/except, fallback
to .xml on any compile error; add logging.warning for diagnostics
- pick_banana.world.template: add comment explaining STL over OBJ for
Gazebo visual mesh (avoids OGRE2 GL3Plus buffer double-lock assertion)
- setup.py: add per-type comments explaining role of each mesh glob
- material.mtl: add missing trailing newline (POSIX compliance)
- so101.xml.template: add comments on joints 1-4 explaining intentional
removal of collision box proxies
- requirements: delete dead setup-constraints.txt; move mujoco==3.4.0
pin with rationale comment to requirements/ubuntu-22.04.txt where
python_venv.sh actually consumes it on ubuntu-22.04
| 2 天前 |
| feat: camera calibration system for Gazebo and MuJoCo
Add sim-aware camera alignment and Gazebo proxy adjustment.
Add MuJoCo calibration support via isolated Gazebo.
Keep overrides and robot spawn owned by robot_config.
| 12 小时前 |