2025-09-02 17:16:28 +08:00
|
|
|
|
# 清扫车 ROS2 控制与定位消息接口
|
|
|
|
|
|
|
|
|
|
|
|
## 1. 文档概述
|
|
|
|
|
|
|
|
|
|
|
|
清扫车 ROS2 控制与定位消息接口
|
|
|
|
|
|
|
|
|
|
|
|
## 2. 依赖环境
|
|
|
|
|
|
|
2025-09-16 11:28:24 +08:00
|
|
|
|
### 2.1 系统环境
|
2025-09-02 17:16:28 +08:00
|
|
|
|
|
2025-09-29 09:25:34 +08:00
|
|
|
|
* **ROS2 版本**:Foxy
|
|
|
|
|
|
* **Ubuntu 版本**:20.04
|
2025-09-02 17:16:28 +08:00
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
### 2.2 .deb 的安装、启动与卸载
|
2025-09-16 11:28:24 +08:00
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
在目标机器上执行安装:
|
2025-09-16 11:28:24 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo dpkg -i controller_XXXX_arm64.deb
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
安装完成后主要文件路径:
|
2025-09-16 11:28:24 +08:00
|
|
|
|
|
|
|
|
|
|
工作空间:/opt/controller/
|
|
|
|
|
|
|
|
|
|
|
|
启动脚本:/opt/controller/start_all.sh
|
|
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
CAN 配置脚本:/opt/controller/can.sh
|
2025-09-16 11:28:24 +08:00
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
日志文件:/var/log/controller/controller.log
|
2025-09-16 11:28:24 +08:00
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
systemd 服务:
|
|
|
|
|
|
|
|
|
|
|
|
CAN 配置服务:/etc/systemd/system/controller-can.service
|
|
|
|
|
|
|
|
|
|
|
|
ROS2 节点服务:/etc/systemd/system/controller.service
|
|
|
|
|
|
|
|
|
|
|
|
安装后,CAN 配置服务会先运行,确保 can0 接口可用,然后 ROS2 节点服务会启动。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
手动启动 ROS2 节点:
|
2025-09-16 11:28:24 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
sudo systemctl start controller.service
|
2025-09-23 14:16:33 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
重启服务:
|
|
|
|
|
|
```bash
|
2025-09-16 11:28:24 +08:00
|
|
|
|
sudo systemctl restart controller.service
|
|
|
|
|
|
```
|
2025-09-02 17:16:28 +08:00
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
启动 CAN 配置服务(通常自动执行,不需要手动):
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo systemctl start controller-can.service
|
|
|
|
|
|
```
|
2025-09-16 11:28:24 +08:00
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
查看运行状态
|
2025-09-16 11:28:24 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
sudo systemctl status controller.service
|
2025-09-23 14:16:33 +08:00
|
|
|
|
sudo systemctl status controller-can.service
|
2025-09-16 11:28:24 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
实时查看最新日志:
|
|
|
|
|
|
```bash
|
|
|
|
|
|
tail -f /var/log/controller/controller.log
|
|
|
|
|
|
```
|
2025-09-16 11:28:24 +08:00
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
也可以使用 journalctl 查看 systemd 输出:
|
2025-09-16 11:28:24 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
sudo journalctl -u controller.service -f
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
旧日志会自动轮转,由 logrotate 管理,每天生成一个历史日志,历史日志会压缩 .gz,默认保留最近 14 天日志
|
2025-09-16 11:28:24 +08:00
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
轮转后的文件示例:
|
2025-09-16 11:28:24 +08:00
|
|
|
|
```bash
|
2025-09-23 14:16:33 +08:00
|
|
|
|
/var/log/controller/controller.log # 当天日志
|
|
|
|
|
|
/var/log/controller/controller.log-20250923.gz # 历史压缩日志
|
2025-09-16 11:28:24 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
停止服务
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo systemctl stop controller.service
|
|
|
|
|
|
sudo systemctl stop controller-can.service
|
|
|
|
|
|
```
|
2025-09-16 11:28:24 +08:00
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
禁用开机自启
|
2025-09-16 11:28:24 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
sudo systemctl disable controller.service
|
2025-09-23 14:16:33 +08:00
|
|
|
|
sudo systemctl disable controller-can.service
|
2025-09-16 11:28:24 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
卸载 deb 包
|
2025-09-16 11:28:24 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
sudo dpkg -r controller
|
|
|
|
|
|
```
|
2025-09-02 17:16:28 +08:00
|
|
|
|
|
2025-09-23 14:16:33 +08:00
|
|
|
|
卸载包后 日志文件会保留,便于调试。
|
|
|
|
|
|
|
2025-09-02 17:16:28 +08:00
|
|
|
|
## 3. 消息(msg)文件详情
|
|
|
|
|
|
|
|
|
|
|
|
### 3.1 McCtrl.msg(车辆控制指令消息)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 字段定义
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段类型 | 字段名称 | 取值范围 / 说明 | 功能描述 |
|
|
|
|
|
|
| -------- | ------------------------------- | ----------------------------------------------- | ------------------------------------------------------------ |
|
2025-09-16 13:16:03 +08:00
|
|
|
|
| uint8 | brake | 0(不刹)、1(刹) | 电磁刹控制:0 表示解除电磁刹,1 表示激活电磁刹 |
|
2025-09-16 11:28:24 +08:00
|
|
|
|
| uint8 | gear | 0(空挡)、1(后退)、2(前进)、3(保留) | 车辆挡位控制,3 为预留挡位暂未使用 |
|
2025-09-16 13:16:03 +08:00
|
|
|
|
| uint8 | rpm | 0-4000 | 电机转速指令,数值直接对应实际电机转速(rpm) |
|
|
|
|
|
|
| float32 | angle | \[-40.0, 40.0] | 轮端转向角度控制,单位为度(°),[-左、+右] |
|
2025-09-02 17:16:28 +08:00
|
|
|
|
| uint16 | angle\_speed | 120-1500 | 转向角速度控制,单位为 rpm |
|
2025-09-16 13:16:03 +08:00
|
|
|
|
| bool | sweep | true(清扫)、false(不清扫) | 清扫 |
|
2025-09-16 11:28:24 +08:00
|
|
|
|
|
2025-09-02 17:16:28 +08:00
|
|
|
|
|
|
|
|
|
|
#### 对应 Topic
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* **Topic**:`/auto_mc_ctrl`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 3.2 Rtk.msg(RTK 定位信息消息)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 字段定义
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 字段类型 | 字段名称 | 取值范围 / 说明 | 功能描述 |
|
|
|
|
|
|
| -------- | ---------- | ----------------------------------------- | ------------------------------------------------------------ |
|
|
|
|
|
|
| float64 | lat | 无固定范围(符合 WGS84 坐标系经纬度格式) | 车辆所在位置的纬度 |
|
|
|
|
|
|
| float64 | lon | 无固定范围(符合 WGS84 坐标系经纬度格式) | 车辆所在位置的经度 |
|
|
|
|
|
|
| float32 | head | 0-360 | 车辆航向角(单位:度),0° 表示正北方向,顺时针递增 |
|
|
|
|
|
|
| float32 | speed | | |
|
2025-09-08 15:16:01 +08:00
|
|
|
|
| int32 | p\_quality | 0-9 | 定位解状态<br /> 0初始化, 1单点定位, 2码差分, 3无效PPS, 4固定解, 5浮点解, 6正在估算, 7,人工输入固定值, 8模拟模式, 9WAAS差分;<br /> 固定解是最优解 |
|
|
|
|
|
|
| int32 | h\_quality | 0-9 | 定向解状态<br /> 0初始化, 1单点定位, 2码差分, 3无效PPS, 4固定解, 5浮点解, 6正在估算, 7,人工输入固定值, 8模拟模式, 9WAAS差分;<br /> 固定解是最优解 |
|
2025-09-02 17:16:28 +08:00
|
|
|
|
|
|
|
|
|
|
#### 对应 Topic
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* **Topic**:`/rtk_message`
|
|
|
|
|
|
|
|
|
|
|
|
|