standard_robot_pp_ros2 是配合 StandardRobot++ 下位机控制使用的机器人驱动,提供了机器人的控制接口、数据接口。
本项目获取下位机的 packet 并发布为 topic,并将下位机处理后的动态关节信息数据发布到 joint_states 话题,通过 joint_state_publisher 和 robot_state_publisher 建立整车 TF 树(包含 static 和 dynamic)。
- Ubuntu 22.04
- ROS: Humble
sudo pip install vcstool2
pip install xmacromkdir -p ~/ros_ws
cd ~/ros_wsgit clone https://github.com/SMBU-PolarBear-Robotics-Team/standard_robot_pp_ros2.git src/standard_robot_pp_ros2vcs import src < src/standard_robot_pp_ros2/dependencies.repos
vcs import src < src/pb2025_robot_description/dependencies.reposrosdep install -r --from-paths src --ignore-src --rosdistro $ROS_DISTRO -ycolcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release-
配置 udev,用来定向下位机 RoboMaster C 型开发板串口硬件并给予串口权限
本命令在一台主机中只需要运行一次,无需重复运行。
./script/create_udev_rules.sh
-
构建程序
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=release
-
运行上下位机通讯
Tips: 如需开启 RViz 可视化,请添加
use_rviz:=True参数。ros2 launch standard_robot_pp_ros2 standard_robot_pp_ros2.launch.py
| 参数 | 描述 | 类型 | 默认值 |
|---|---|---|---|
namespace |
顶级命名空间 | string | "" |
params_file |
用于所有启动节点的 ROS2 参数文件的完整路径 | string | vision_params.yaml |
robot_name |
要使用的机器人 xmacro 文件名 | string | "pb2025_sentry_robot" |
use_rviz |
是否启动 RViz | bool | True |
use_respawn |
如果节点崩溃,是否重新启动。本参数仅 use_composition:=False 时有效 |
bool | False |
log_level |
日志级别 | string | "info" |
| 字段 | 长度 (Byte) | 备注 |
|---|---|---|
| frame_header | 4 | 帧头 |
| time_stamp | 4 | 时间戳(基于下位机运行时间) |
| data | n | 数据段 |
| checksum | 2 | 校验码 |
| 字段 | 长度 (Byte) | 备注 |
|---|---|---|
| sof | 1 | 数据帧起始字节,固定值为 0x5A |
| len | 1 | 数据段长度 |
| id | 1 | 数据段id |
| crc | 1 | 数据帧头的 CRC8 校验 |
详见飞书文档 上下位机串口通信数据包
串口通信部分参考了 rm_vision - serial_driver,通信协议参考 DJI 裁判系统通信协议。

