文件最后提交记录最后更新时间
docs: add sim calibration docs and ArUco A4 assets Document camera alignment usage and sim calibration boundaries. Document override loading and add ArUco A4 assets. 9 小时前
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 个月前
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. 9 小时前
docs: add sim calibration docs and ArUco A4 assets Document camera alignment usage and sim calibration boundaries. Document override loading and add ArUco A4 assets. 9 小时前
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. 9 小时前
README.md

sim_models

IB-Robot 仿真相关的场景资产、场景编译器和开发者标定辅助工具。

当前职责

在范围内 不在范围内
Gazebo / MuJoCo 场景模板与道具资产 机器人本体 SSOT 配置
场景编译与运行时装配 业务控制逻辑
开发者用仿真标定辅助工具 真机相机标定

相机标定相关入口

ros2 run sim_models sim_camera_adjuster

交互式 Gazebo 代理相机调参工具,支持:

  • 实时调节 xyz / rpy / fovy
  • 读取已有 override 作为初值
  • 保存到 ~/.ros/ibrobot/sim_camera_overrides/<camera>.yaml
  • MuJoCo 目标下自动拉起一个 headless Gazebo 做位姿采集

常见调用方式:

ros2 run sim_models sim_camera_adjuster \
    --camera /camera/top/image_raw \
    --robot-config so101_single_arm

sim_models.aruco_spawner

Python API,用于在仿真里动态插入和清理 ArUco A4 标定板:

from sim_models.aruco_spawner import (
    spawn_aruco_gazebo,
    despawn_aruco_gazebo,
    verify_mujoco_model,
)

dataset_tools.camera_alignment 在仿真路径下会调用这组接口。

与其他包的关系

dataset_tools.camera_alignment
    ├─► sim_models.aruco_spawner
    └─► ~/.ros/ibrobot/sim_camera_overrides/<camera>.yaml
                                 │
                                 ▼
robot_config.launch_builders.sim_backend.camera_presets

~/.ros/ibrobot/sim_camera_overrides/ 是开发者标定侧的 opt-in 旁路,不是新的配置单一数据源。