# ============================================================================= # devices/sim/gazebo/manifest.yaml # # Gazebo 仿真平台清单。 # # 进度(截至 P5c-2,如实记录,不要凭印象改): # ✔ 环境 独立 conda 环境 ros_gz_sim(Gazebo Fortress + ROS 2 Humble) # 安装见 scripts/install_sim_env.sh,激活见 scripts/sim_env.sh # ✔ 世界文件 worlds/assembly.world(sdformat 校验通过) # ✔ 机器人描述 urdf/(复用官方 flexiv_description,已通过 sdformat 校验) # ✔ 控制器 config/controllers.yaml(控制器名与真机一致) # ✔ 描述归一化 arm_sim_gazebo 包的 urdf_normalize(16 项单测) # ✘ 启动器 driver.executable 声明的 gazebo_sim_launcher 尚未实现 # ✘ 场景模型 models/ 还是空的(工件/通止规模型未做) # ✘ 触觉插件 sensor_plugins/ 还是空的(Orisys 三向力插件未做) # ✘ 相机出图 D405 已建模,但话题出图未联调验证 # # 所以:现在**还不能**靠 run_sim.sh 跑起完整仿真,run_sim.sh 走的仍是 # arm_bringup 的 mock 驱动(假数据)。接线步骤见本目录 README.md。 # # 一个重要结论(接线过程中实测得出,值得记住): # 官方 flexiv_description 直接喂 Gazebo 会被 sdformat 拒掉,有两处不兼容 # (7 轴本体缺 包裹;夹爪有零质量 link 导致惯性叠加出 NaN)。 # 两者都只有 Gazebo 会暴露,RViz/MoveIt 完全正常,所以此前从未被发现。 # 解决方式是在启动时归一化,见 arm_sim_gazebo/urdf_normalize.py 的长注释。 # ============================================================================= id: gazebo label: Gazebo 仿真 kind: sim vendor: openrobotics # 实测版本。注意:Humble 配的是 Fortress(ignition-gazebo6),不是现代 gz-sim —— # 后者要 libprotobuf>=6.31,与 RoboStack 给 Humble 钉的 5.29.3 解不开依赖。 version: "Fortress 6.16 (ignition-gazebo6, ros_gz + gz_ros2_control 0.7.15)" description: > 物理仿真平台。环境已装好、世界与机器人描述已就绪并通过 sdformat 校验; 启动器、场景模型(工件/通止规)与 Orisys 触觉插件尚未实现, 因此仿真目前还不能替代 run_sim.sh 的 mock 路径。 注意:Orisys 视触觉没有现成 Gazebo 插件,自定义插件做出来之前, 仿真里无法验证通止规装配的 S07 接触与 S08 拧紧力判据。 # --- 物料放置要求 ---------------------------------------------------------- assets: - path: worlds required: false what: Gazebo 世界文件(.world / .sdf) format: Gazebo 原生格式 naming: 场景名.world,如 assembly.world where_used: 由 site.yaml 的 sim.world 指向 - path: models required: false what: 工件 / 夹具 / 通止规模型 format: 每个模型一个子目录,内含 <模型名>.sdf 与 meshes/ naming: > 模型名必须与推理用的类别名一致(如 workpiece),否则仿真里算出的坐标 与推理结果对不上。网格单位必须是米,用毫米建模的必须先缩放。 where_used: Gazebo 场景加载 - path: urdf required: false what: 仿真版机器人描述 format: .urdf / .xacro,需含 gazebo 与 ros2_control 标签 naming: 关节前缀必须以 sim_ 开头,与真实臂(Rizon4-xxxxxx_)区分 where_used: 仿真机器人加载 - path: sensor_plugins required: false what: 传感器插件(含 Orisys 触觉自定义插件) format: 插件源码 + CMakeLists.txt naming: 插件类名以 Orisys 开头 where_used: 仿真传感器数据发布 # --- 适配器 ---------------------------------------------------------------- driver: package: arm_sim_gazebo executable: gazebo_sim_launcher build: colcon notes: > 包已建(含经单测的 URDF 归一化),但 gazebo_sim_launcher 本身**尚未实现**, 因此 setup.py 里暂未注册这个入口点 —— 注册了模块不存在,构建能过、 一运行就 ImportError。P5c-3 补上实现后再注册。 在它可用之前,run_sim.sh 仍走 arm_bringup 的 mock 驱动路径。 # --- 配置项声明 ------------------------------------------------------------ # 设计约束:仿真与真机共用同一套 site.yaml 参数(servo.* / hole_detect.stage2.*), # 避免「仿真调好的值搬到真机不生效」。只有物理引擎自身的参数放在 sim.* 下。 config_schema: - key: world site_path: sim.world type: str required: false default: "" doc: > 仿真世界文件路径。留空表示使用 Gazebo 默认空场景。 Gazebo 接线完成后填真实路径,如 devices/sim/gazebo/worlds/assembly.world。 - key: physics_enable site_path: sim.physics_enable type: bool required: false default: true doc: 是否启用物理引擎。关闭可用于纯运动学验证。 - key: joint_prefix site_path: sim.joint_prefix type: str required: false default: sim_ doc: > 仿真关节名前缀。必须与真实臂的前缀(Rizon4-xxxxxx_)不同, 否则仿真与真机的 TF 会互相污染。