轮式人形 W2 的 URDF / ros2_control 描述包。模型在 xacro/;底盘 / 躯干 / 头部在 fiveages_w2_common_description;双臂与末端复用 m6_ccs_description(M6_CCS 臂、eefs.xacro、共享 ros2_control 宏)。
cd ~/ros2_ws && colcon build --packages-up-to fiveages_w2_description --symlink-install
source install/setup.bash| 场景 | 入口 | 示例 |
|---|---|---|
| 全身 RViz | humanoid.launch.py |
… robot:=fiveages_w2 collider:=simple |
| 带末端 | 同上 + type:=<key> |
… type:=erg32(键名见 m6_ccs §2) |
| 左右不同末端 | left_type / right_type |
left_type:=rg75 right_type:=linkerhand_o7 |
| 部件调试 | component.launch.py |
… type:=lp02_336_camera |
| 全身 WBC(mock) | ocs2_arm_controller full_body.launch.py |
默认 hardware:=mock_components |
| 分体控制(mock) | split_body.launch.py |
腰 / 头 / 臂独立控制器 |
| 仅腰体 | basic_joint_controller demo.launch.py |
robot:=fiveages_w2 |
| Isaac | 上述 launch + hardware:=isaac |
Topic 桥接仿真 |
| 导航(仿真) | navigation_isaac_gt.launch.py |
见 §6 |
ros2 launch robot_common_launch humanoid.launch.py robot:=fiveages_w2 collider:=simple type:=erg32
ros2 launch robot_common_launch humanoid.launch.py robot:=fiveages_w2 collider:=simple type:=rg75
ros2 launch robot_common_launch humanoid.launch.py robot:=fiveages_w2 chassis:=linkhou_s2_v2 variant:=white
ros2 launch ocs2_arm_controller full_body.launch.py robot:=fiveages_w2 type:=erg32
ros2 launch ocs2_arm_controller split_body.launch.py robot:=fiveages_w2 type:=erg32
ros2 launch ocs2_arm_controller full_body.launch.py robot:=fiveages_w2 type:=linkerhand_o7type / left_type / right_type 与 m6_ccs 完全相同(解析:m6_ccs_description/xacro/eef_type_resolver.xacro)。
真机驱动方式、支持矩阵、CAN 限制等详见 m6_ccs README §2,此处不重复。
W2 特有:hardware:=real 时臂走 Marvin + juxie_body(腰头 CAN);外接 usb / usb_can 末端逻辑与 m6_ccs 共用 external_ee_systems。
DH-3-7 使用 type:=dh_3_7,或分别设置 left_type / right_type。真机末端仅支持 usb / usb_rs485,串口和从站号配置见 DH-3-7 配置说明。
| 层级 | 包 / xacro | 说明 |
|---|---|---|
| 底盘 | fiveages_w2_common linkhou_s2 |
launch:chassis:=linkhou_s2(默认)/ linkhou_s2_v2 / linkhou_s2_sinopec;chassis:=linkhou_s2_v2 variant:=white 用白色壳/电池 |
| 躯干 / 头 | fiveages_w2_common body.xacro / head.xacro |
OEM 外观:variant:=sinopec;白色:variant:=white |
| 双臂 | m6_ccs M6_CCS |
默认 skin:=fiveages_w2;variant:=white 时改用 M6-CCS 原色(skin:=default);碰撞与 m6 共用 link*.glb |
| 末端 | m6_ccs eefs.xacro |
与 m6_ccs 一致 |
规划 URDF 默认冻结底盘轮关节与末端主动关节(chassis_joints_movable:=false、eef_fixed_joints 由 launch 设置)。
真机拆为 两个 system;仿真合并为一个:
| 模式 | System | 硬件插件 |
|---|---|---|
| 真机 | M6_CCS_System |
marvin_ros2_control(双臂 + 夹爪/手) |
| 真机 | juxie_body |
juxie_ros2_control(body_joint1~4、head_joint1~2) |
| 真机 | 外接末端 *_system | modbus_ros2_control / can_ros2_control(按 drive type) |
| 仿真 | fiveages_w2_system |
mock / gz / isaac(robot_common_launch simulation_hardware) |
手臂侧宏均来自 m6_ccs §5:dual_arm_ee_block、marvin_hardware_block、external_ee_systems 等。本包 xacro/ros2_control/robot.xacro 仅为薄封装。
控制器配置:config/ros2_control/common.yaml(ocs2_wbc_controller 全身、ocs2_arm_controller 双臂、body_joint_controller / head_joint_controller 等)。
colcon build --packages-up-to marvin_ros2_control modbus_ros2_control can_ros2_control juxie_ros2_control --symlink-install
source install/setup.bash
# 仅腰体(无臂)
ros2 launch basic_joint_controller demo.launch.py robot:=fiveages_w2 hardware:=real enable_head:=false
# 全身真机 + 末端(示例:夹爪 / 外接手)
ros2 launch ocs2_arm_controller full_body.launch.py robot:=fiveages_w2 hardware:=real type:=ag2f90_c
ros2 launch ocs2_arm_controller full_body.launch.py robot:=fiveages_w2 hardware:=real type:=erg32
ros2 launch ocs2_arm_controller split_body.launch.py robot:=fiveages_w2 hardware:=real type:=linkerhand_o7 \
left_ee_drive_type:=usb right_ee_drive_type:=usb
ros2 launch ocs2_arm_controller split_body.launch.py robot:=fiveages_w2 hardware:=real type:=inspire_f2 \
left_ee_drive_type:=usb_can right_ee_drive_type:=usb_canrobot.local.yaml 片段(hardware: 在 hardware:=real 时注入 xacro):
defaults:
end_effectors:
type: ag2f90_c
ft:
left: kwr75_485
right: none
tcp_offset:
xyz: "0 0 0"
rpy: "0 0 0" # radians; e.g. "0 0 ${PI/2}"
hardware:
device_ip: 192.168.1.190
arm_ctrl_mode: position
max_joint_speed: 50
max_joint_acceleration: 30
body_can_interface: can0
usb_left_port: /dev/ttyUSB0
usb_right_port: /dev/ttyUSB2
left_ee_can_interface: can0
right_ee_can_interface: can1
left_read_tactile: "false"
right_read_tactile: "false"
left_ee_drive_type: marvin
right_ee_drive_type: marvinLaunch 可覆盖:ft:=…、tcp_offset_rpy:=…、hardware_device_ip:=…、hardware_max_joint_speed:=…、hardware_body_can_interface:=…、hardware_usb_left_port:=…、hardware_left_ee_can_interface:=…、hardware_left_read_tactile:=true、hardware_left_ee_drive_type:=usb_can 等(规则同 m6_ccs)。
# 头
ros2 topic pub /head_joint_controller/target_joint_position std_msgs/msg/Float64MultiArray "{data: [0.0, 0.5]}"
# 腰(仅 split_body)
ros2 topic pub /body_joint_controller/target_joint_position std_msgs/msg/Float64MultiArray \
"{data: [1.014, -2.249, -1.233, 0.0]}"
# 双臂(14 维)
ros2 topic pub /ocs2_arm_controller/target_joint_position std_msgs/msg/Float64MultiArray \
"{data: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}"
# HOME 关节软参考(加载 m6_ccs task.info;HOLD 预置,进 OCS2 生效)
ros2 param set /ocs2_arm_controller home_joint_reference_id 2点云话题:/fl_lidar/point_cloud、/rr_lidar/point_cloud(见 config/nav2/nav2_params_isaac_gt.yaml)。
本包 config/navigation.yaml 将地图 / Nav2 指向 fiveages_w2_common_description:
map_config_package: fiveages_w2_common_description
nav_config_package: fiveages_w2_common_descriptionros2 launch robot_common_launch navigation_isaac_gt.launch.py robot:=fiveages_w2
ros2 launch robot_common_launch navigation_isaac_gt.launch.py robot:=fiveages_w2 map:=siemens_task2
ros2 launch robot_common_launch navigation_isaac_gt.launch.py \
robot:=fiveages_w2 map:=warehouse_multiple_shelfs nav2_profile:=map_only地图与 Nav2 文件:fiveages_w2_common_description/config/maps/、config/nav2/。工作区 quick_start.sh 可扫描可用地图。详见 fa-w2-components README。
