# 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. 设计说明 目录结构用于表达系统的架构边界, 而不仅是代码整理。 当无法判断一个节点应放入哪个目录时, 通常意味着该节点职责需要重新拆分或澄清。