7.1 环境配置
7.1.1 ROS2 SDK 构建
前提条件
- 确保正确的网络连接,参考快速操作。
构建步骤
1. 进入机器人 ROS2 容器
使用 SSH 登录到机器人:
ssh -p 2222 ubt@192.168.11.2 # 对于 x86 架构
ssh -p 2222 ubt@192.168.11.3 # 对于 ARM/Orin 架构
输入密码:Ubtubt@9880
2. 下载并构建 ROS2 Demo 程序
将 demo 程序复制到 /debug 目录下:
scp -P 2222 -r ubt_ros2_demo ubt@192.168.11.3:/debug/
进入目录并设置环境变量:
cd /debug/ubt_ros2_demo
source /opt/ros/humble/setup.bash
构建 ubt_ros2_demo 程序:
colcon build
项目结构说明:
example存储 SDK 的示例 demo 代码low_level为低层 SDK 调用common为相关通用接口(如音频播放等)
7.1.2 运行并测试
在完成上述代码构建后,输入以下命令设置环境变量:
source /debug/ubt_ros2_demo/install/setup.bash
在运控版(ubt@192.168.11.2 -p 2222)底层运行与电机控制以及状态订阅相关的程序,并通过 sudo -E su 进入 root 用户。
查看可用主题
您可以运行 demo 程序,也可以打开终端并输入以下命令查看可用的主题:
ros2 topic list
IMU 订阅示例
以 IMU 订阅 demo 为例,打开终端并输入:
ros2 run ubt_ros2_example imu_subscriber
7.1.3 环境依赖
系统环境配置
为了确保最佳的开发体验和兼容性,建议自建程序在机器人本体的 ROS2 容器内运行。当前暂不支持在 Mac 和 Windows 系统下开发。
| 平台 | 地址 | 系统版本 | ROS2 容器 |
|---|---|---|---|
| Walker S2 Orin | 192.168.11.2 | Ubuntu 22.04 (humble) | Walker S2 |
| Walker S2 x86 | 192.168.11.3 | Ubuntu 22.04 (humble) | Walker S2 |
7.1.4 全局值说明
完整版优必选 Walker S2 头部、臂部、腰部和腿部的电机命名 ID 定义如下:
// 主交换机和传感器
{
9001, "switchmain", "主交换机"
},
{
10000, "motion_imu", "运动IMU传感器"
},
// 左腿
{
2001, "left_hip_roll_motor", "左髋关节横滚电机"
},
{
2002, "left_hip_yaw_motor", "左髋关节偏航电机"
},
{
2003, "left_hip_pitch_motor", "左髋关节俯仰电机"
},
{
2004, "left_knee_driver_motor", "左膝关节驱动电机"
},
{
2006, "left_ankle_driver_inside_motor", "左踝关节内侧驱动电机"
},
{
2005, "left_ankle_driver_outside_motor", "左踝关节外侧驱动电机"
},
// 腰部
{
11001, "waist_pitch_motor", "腰部俯仰电机"
},
{
11002, "waist_yaw_motor", "腰部偏航电机"
},
// 右腿
{
3001, "right_hip_roll_motor", "右髋关节横滚电机"
},
{
3002, "right_hip_yaw_motor", "右髋关节偏航电机"
},
{
3003, "right_hip_pitch_motor", "右髋关节俯仰电机"
},
{
3004, "right_knee_driver_motor", "右膝关节驱动电机"
},
{
3006, "right_ankle_driver_inside_motor", "右踝关节内侧驱动电机"
},
{
3005, "right_ankle_driver_outside_motor", "右踝关节外侧驱动电机"
},
{
9002, "switchsub", "从交换机"
},
// 头部
{
1001, "head_yaw_motor", "头部偏航电机"
},
{
1002, "head_pitch_motor", "头部俯仰电机"
},
// 左臂
{
4001, "left_shoulder_pitch_motor", "左肩俯仰电机"
},
{
4002, "left_shoulder_roll_motor", "左肩横滚电机"
},
{
4003, "left_shoulder_yaw_motor", "左肩偏航电机"
},
{
4004, "left_elbow_roll_motor", "左肘横滚电机"
},
{
4005, "left_elbow_yaw_motor", "左肘偏航电机"
},
{
4006, "left_wrist_roll_motor", "左腕横滚电机"
},
{
4007, "left_wrist_pitch_motor", "左腕俯仰电机"
},
{
6001, "left_arm_ft", "左臂六维力传感器"
},
{
8001, "left_hand", "左手(可能未接灵巧手,实际为夹板)"
},
// 右臂
{
5001, "right_shoulder_pitch_motor", "右肩俯仰电机"
},
{
5002, "right_shoulder_roll_motor", "右肩横滚电机"
},
{
5003, "right_shoulder_yaw_motor", "右肩偏航电机"
},
{
5004, "right_elbow_roll_motor", "右肘横滚电机"
},
{
5005, "right_elbow_yaw_motor", "右肘偏航电机"
},
{
5006, "right_wrist_roll_motor", "右腕横滚电机"
},
{
5007, "right_wrist_pitch_motor", "右腕俯仰电机"
},
{
6002, "right_arm_ft", "右臂六维力传感器"
},
{
8002, "right_hand", "右手(可能未接灵巧手,实际为夹板)"
}