139 lines
2.3 KiB
Markdown
139 lines
2.3 KiB
Markdown
|
|
# sweeper_200 src 目录结构说明
|
|||
|
|
|
|||
|
|
## 1. 总体说明
|
|||
|
|
|
|||
|
|
sweeper_200 是一个基于 ROS2 的多节点系统,
|
|||
|
|
用于清扫车的感知、定位、控制、作业与平台通信。
|
|||
|
|
|
|||
|
|
src 目录按功能域(functional domain)对 ROS2 节点进行分组,
|
|||
|
|
用于明确节点职责边界,降低系统复杂度,
|
|||
|
|
并作为系统架构约束的一部分。
|
|||
|
|
|
|||
|
|
新增节点或调整现有节点时,应优先考虑其所属功能域。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. 目录分层说明
|
|||
|
|
|
|||
|
|
### base/
|
|||
|
|
底层硬件与接口抽象。
|
|||
|
|
|
|||
|
|
用于放置直接与硬件交互,
|
|||
|
|
或对硬件能力进行抽象的节点与接口包。
|
|||
|
|
|
|||
|
|
职责包括:
|
|||
|
|
- CAN、串口、设备接口
|
|||
|
|
- 底层控制与状态采集
|
|||
|
|
- 硬件能力封装
|
|||
|
|
|
|||
|
|
示例包:
|
|||
|
|
- sweeper_interfaces
|
|||
|
|
- mc
|
|||
|
|
- fu
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### control/
|
|||
|
|
控制输入与仲裁。
|
|||
|
|
|
|||
|
|
用于放置产生控制意图的节点,
|
|||
|
|
以及多控制源的仲裁逻辑。
|
|||
|
|
|
|||
|
|
职责包括:
|
|||
|
|
- 遥控、远控输入
|
|||
|
|
- 控制权仲裁
|
|||
|
|
- 控制指令标准化
|
|||
|
|
|
|||
|
|
示例包:
|
|||
|
|
- radio_ctrl
|
|||
|
|
- remote_ctrl
|
|||
|
|
- ctrl_arbiter
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### communication/
|
|||
|
|
平台与外部通信。
|
|||
|
|
|
|||
|
|
用于放置系统与外部平台
|
|||
|
|
(云端、设备服务等)进行通信的节点。
|
|||
|
|
|
|||
|
|
职责包括:
|
|||
|
|
- 设备身份获取与管理
|
|||
|
|
- MQTT、HTTP 通信
|
|||
|
|
- 云端任务同步
|
|||
|
|
|
|||
|
|
示例包:
|
|||
|
|
- identity
|
|||
|
|
- mqtt_report
|
|||
|
|
- task_manager
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### perception/
|
|||
|
|
感知与定位。
|
|||
|
|
|
|||
|
|
用于放置传感器处理、定位、
|
|||
|
|
环境感知相关节点。
|
|||
|
|
|
|||
|
|
职责包括:
|
|||
|
|
- 雷达、GPS、RTK
|
|||
|
|
- 传感器融合
|
|||
|
|
- 感知数据预处理
|
|||
|
|
|
|||
|
|
示例包:
|
|||
|
|
- rslidar_pointcloud_merger
|
|||
|
|
- rtk
|
|||
|
|
- sub
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### autonomy/
|
|||
|
|
自动驾驶与作业逻辑。
|
|||
|
|
|
|||
|
|
用于放置路径规划、
|
|||
|
|
作业流程等高层逻辑节点。
|
|||
|
|
|
|||
|
|
职责包括:
|
|||
|
|
- 路径规划
|
|||
|
|
- 作业状态机
|
|||
|
|
- 自动驾驶决策
|
|||
|
|
|
|||
|
|
示例包:
|
|||
|
|
- route
|
|||
|
|
- pl
|
|||
|
|
- airy
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### execution/
|
|||
|
|
执行与状态发布。
|
|||
|
|
|
|||
|
|
用于向系统外部或平台
|
|||
|
|
发布执行结果与状态信息。
|
|||
|
|
|
|||
|
|
示例包:
|
|||
|
|
- pub_gps
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### tools/
|
|||
|
|
工具与调试节点(可选)。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 使用原则
|
|||
|
|
|
|||
|
|
- 新增包必须明确所属目录
|
|||
|
|
- 禁止跨层直接依赖
|
|||
|
|
- 系统级通信(HTTP、MQTT)只允许存在于 communication 目录
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 设计说明
|
|||
|
|
|
|||
|
|
目录结构用于表达系统的架构边界,
|
|||
|
|
而不仅是代码整理。
|
|||
|
|
|
|||
|
|
当无法判断一个节点应放入哪个目录时,
|
|||
|
|
通常意味着该节点职责需要重新拆分或澄清。
|