sweeper_200/README.md
2025-10-30 11:10:23 +08:00

149 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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