跳到主要内容

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 Orin192.168.11.2Ubuntu 22.04 (humble)Walker S2
Walker S2 x86192.168.11.3Ubuntu 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", "右手(可能未接灵巧手,实际为夹板)"
}