Initial import of FaRui Campus ADS v3.2
This commit is contained in:
@@ -0,0 +1,253 @@
|
||||
# FaRui Autoware Dual-Orin Stack
|
||||
|
||||
`FaRui Autoware Dual-Orin Stack` 是一个面向实车部署的 ROS 2 /
|
||||
Autoware 工作空间。当前代码按双 Orin 主从域控架构组织:主控板负责上层
|
||||
Autoware 算法和任务工具,从控板负责车辆接口、CAN、控制和安全反馈。
|
||||
|
||||
## 项目标识
|
||||
|
||||
| 项 | 值 |
|
||||
| --- | --- |
|
||||
| 正式名称 | FaRui Autoware Dual-Orin Stack |
|
||||
| 简称 | FaRui Stack |
|
||||
| 工作空间 ID | `farui_autoware_dual_orin` |
|
||||
| 主 launch 包 | `farui_launch` |
|
||||
| 车辆入口前缀 | `ecar_*` |
|
||||
| 默认车型 | `ecar_vehicle` |
|
||||
|
||||
工作空间名称用于文档、交付和仓库识别;ROS 包名仍保持现状。除非计划做完整
|
||||
迁移,不建议直接重命名 `farui_launch`、`ecar_vehicle_description`、
|
||||
`ecar_can_driver` 等包。
|
||||
|
||||
## 架构概览
|
||||
|
||||
系统分为 `master/` 和 `slave/` 两个可独立编译、独立启动的 ROS 2 工作空间。
|
||||
两端通过 ROS 2 DDS 通信,主从板通常使用 CycloneDDS 和固定 `ROS_DOMAIN_ID`
|
||||
进行发现。
|
||||
|
||||
| 模块 | Master Orin | Slave Orin |
|
||||
| --- | --- | --- |
|
||||
| 地图、感知、定位、规划 | 是 | 否 |
|
||||
| 传感器驱动、点云容器 | 是 | 否 |
|
||||
| Autoware API、RViz、任务路线工具 | 是 | 否 |
|
||||
| Control 控制模块 | 否 | 是 |
|
||||
| SocketCAN、ECAR CAN 驱动 | 否 | 是 |
|
||||
| 车辆状态、速度转换、system 反馈 | 否 | 是 |
|
||||
| 心跳监控、MRM 相关安全反馈 | 否 | 是 |
|
||||
|
||||
主要跨板话题包括:
|
||||
|
||||
| 话题 | 方向 | 用途 |
|
||||
| --- | --- | --- |
|
||||
| `/planning/scenario_planning/trajectory` | Master -> Slave | 规划轨迹输入控制 |
|
||||
| `/localization/kinematic_state` | Master -> Slave | 定位状态同步 |
|
||||
| `/sensing/vehicle_velocity_converter/twist_with_covariance` | Slave -> Master | 车速反馈给定位链路 |
|
||||
| `/system/operation_mode/state` | Slave -> Master | 运行模式状态反馈 |
|
||||
| `/vehicle/status/*` | Slave -> Master | 车辆底盘状态反馈 |
|
||||
| `/control/command/control_cmd` | Slave 内部 | 控制模块到车辆接口 |
|
||||
|
||||
## 目录结构
|
||||
|
||||
```text
|
||||
.
|
||||
├── master/ # 主控板工作空间
|
||||
│ ├── src/ # Autoware、驱动、UI、地图、规划等 ROS 包
|
||||
│ ├── debug/ # 主控板调试脚本
|
||||
│ ├── build.sh # 主控板编译入口
|
||||
│ ├── run_ecar_master_debug.sh
|
||||
│ └── run_preset_route_real_vehicle.sh
|
||||
├── slave/ # 从控板工作空间
|
||||
│ ├── src/ # 控制、车辆接口、CAN、system 等 ROS 包
|
||||
│ ├── debug/ # 从控板诊断脚本
|
||||
│ ├── build.sh # 从控板编译入口
|
||||
│ └── run_slave_real_vehicle.sh
|
||||
└── README.md
|
||||
```
|
||||
|
||||
核心 launch 包位于:
|
||||
|
||||
- `master/src/Launcher/farui_launch`
|
||||
- `slave/src/Launcher/farui_launch`
|
||||
|
||||
主从实车启动文件为:
|
||||
|
||||
- `master/src/Launcher/farui_launch/launch/ecar_master.launch.xml`
|
||||
- `slave/src/Launcher/farui_launch/launch/ecar_slave.launch.xml`
|
||||
|
||||
## 编译
|
||||
|
||||
分别在主控板和从控板进入对应工作空间执行编译脚本。脚本内部使用
|
||||
`colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release`,并设置
|
||||
`AUTOWARE_COMPILE_WITH_CUDA=1`。
|
||||
|
||||
主控板:
|
||||
|
||||
```bash
|
||||
cd /home/nvidia/FaRui/v3.2/master
|
||||
./build.sh
|
||||
```
|
||||
|
||||
从控板:
|
||||
|
||||
```bash
|
||||
cd /home/nvidia/FaRui/v3.2/slave
|
||||
./build.sh
|
||||
```
|
||||
|
||||
如果只想编译部分包,可以按脚本内注释打开 `--packages-select`。
|
||||
|
||||
## 实车启动
|
||||
|
||||
建议先启动从控板,再启动主控板。这样车辆接口、CAN、控制和 system 状态先就绪,
|
||||
主控板启动规划和任务工具后可以直接收到车辆反馈。
|
||||
|
||||
### 1. 启动从控板
|
||||
|
||||
```bash
|
||||
cd /home/nvidia/FaRui/v3.2/slave
|
||||
./run_slave_real_vehicle.sh
|
||||
```
|
||||
|
||||
可选位置参数:
|
||||
|
||||
```bash
|
||||
./run_slave_real_vehicle.sh [车型] [CAN接口] [CAN波特率]
|
||||
```
|
||||
|
||||
常用环境变量:
|
||||
|
||||
| 变量 | 默认值 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `SLAVE_VEHICLE_MODEL` | `ecar_vehicle` | 车型 |
|
||||
| `SLAVE_CAN_INTERFACE` | `can1` | CAN 接口 |
|
||||
| `SLAVE_CAN_BITRATE` | `500000` | CAN 波特率 |
|
||||
| `SLAVE_CONFIGURE_CAN` | `false` | 是否由脚本执行 `sudo ip link` 配置 CAN |
|
||||
| `SLAVE_LAUNCH_HEARTBEAT` | `true` | 是否启动主控板心跳监控 |
|
||||
| `SLAVE_LAUNCH_SYSTEM` | `true` | 是否启动 system 反馈栈 |
|
||||
|
||||
### 2. 启动主控板调试栈
|
||||
|
||||
只启动主控板 Autoware,不启动预设路线 UI:
|
||||
|
||||
```bash
|
||||
cd /home/nvidia/FaRui/v3.2/master
|
||||
./run_ecar_master_debug.sh
|
||||
```
|
||||
|
||||
可选位置参数:
|
||||
|
||||
```bash
|
||||
./run_ecar_master_debug.sh [地图目录] [是否启动RViz] [车型]
|
||||
```
|
||||
|
||||
默认地图目录为 `/home/nvidia/FaRui-test/map/School06`,默认 RViz 为 `true`。
|
||||
|
||||
### 3. 启动主控板和预设路线工具
|
||||
|
||||
```bash
|
||||
cd /home/nvidia/FaRui/v3.2/master
|
||||
./run_preset_route_real_vehicle.sh
|
||||
```
|
||||
|
||||
默认模式是 `ui-only`,只打开预设路线 UI,不启动主板 Autoware 栈。完整参数为:
|
||||
|
||||
```bash
|
||||
./run_preset_route_real_vehicle.sh [模式] [站点文件] [是否启动RViz] [地图目录] [车型]
|
||||
```
|
||||
|
||||
支持模式:
|
||||
|
||||
| 模式 | 说明 |
|
||||
| --- | --- |
|
||||
| `ui-only` | 只启动预设路线 UI |
|
||||
| `none` | 启动主板 Autoware,不启动额外路线工具 |
|
||||
| `record` | 启动站点记录工具 |
|
||||
| `replay` | 启动预设路线发送工具 |
|
||||
| `mission` | 启动站点任务管理器 |
|
||||
|
||||
示例:
|
||||
|
||||
```bash
|
||||
# 只启动主板 Autoware,不启动路线工具
|
||||
./run_preset_route_real_vehicle.sh none
|
||||
|
||||
# 启动主板 Autoware + 站点任务管理器
|
||||
./run_preset_route_real_vehicle.sh mission
|
||||
|
||||
# 指定地图并关闭 RViz
|
||||
./run_preset_route_real_vehicle.sh mission "" false /home/nvidia/FaRui-test/map/School06
|
||||
```
|
||||
|
||||
## 双 Orin 网络与 DDS
|
||||
|
||||
双 Orin 配置文件在两端都有副本:
|
||||
|
||||
- `master/env_config/dual_orin`
|
||||
- `slave/env_config/dual_orin`
|
||||
|
||||
主要内容:
|
||||
|
||||
| 路径 | 作用 |
|
||||
| --- | --- |
|
||||
| `dds/cyclonedds_dual_orin.xml` | CycloneDDS 配置 |
|
||||
| `netplan/master-netplan.yaml` | 主控板静态 IP 示例 |
|
||||
| `netplan/slave-netplan.yaml` | 从控板静态 IP 示例 |
|
||||
| `netplan/hosts` | `/etc/hosts` 示例 |
|
||||
| `scripts/setup_master.sh` | 主控板一键配置脚本 |
|
||||
| `scripts/setup_slave.sh` | 从控板一键配置脚本 |
|
||||
| `scripts/setup_dds.sh` | DDS 配置辅助脚本 |
|
||||
| `scripts/test_connection.sh` | 网络连通性测试 |
|
||||
| `scripts/heartbeat_monitor.sh` | 从控板心跳监控 |
|
||||
|
||||
典型环境变量:
|
||||
|
||||
```bash
|
||||
export ROS_DOMAIN_ID=42
|
||||
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
|
||||
export CYCLONEDDS_URI=file:///opt/cyclonedds.xml
|
||||
export VEHICLE_ID=ecar_001
|
||||
```
|
||||
|
||||
## 开机配置
|
||||
|
||||
`master/env_config` 和 `slave/env_config` 提供 systemd 开机配置模板,主要用于:
|
||||
|
||||
- 配置 CAN 接口
|
||||
- 配置串口权限
|
||||
- 按顺序执行 `startup.d/` 下的启动脚本
|
||||
- 记录 `startup.log`
|
||||
|
||||
安装服务前先检查 `env_config/config.sh` 中的路径是否指向当前工作空间。
|
||||
|
||||
## 调试与检查
|
||||
|
||||
常用诊断入口:
|
||||
|
||||
```bash
|
||||
# 主控板规划链路检查
|
||||
cd /home/nvidia/FaRui/v3.2/master
|
||||
./debug/check_planning_pipeline.sh
|
||||
|
||||
# 从控板 control、system、CAN 链路检查
|
||||
cd /home/nvidia/FaRui/v3.2/slave
|
||||
./debug/check_system_driver_pipeline.sh
|
||||
```
|
||||
|
||||
常用 ROS 检查命令:
|
||||
|
||||
```bash
|
||||
ros2 node list
|
||||
ros2 topic list
|
||||
ros2 topic echo /planning/scenario_planning/trajectory
|
||||
ros2 topic echo /system/operation_mode/state
|
||||
ros2 topic echo /vehicle/status/velocity_status
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
- `master/` 和 `slave/` 是两个独立 ROS 2 工作空间,编译和启动时应分别进入对应目录。
|
||||
- 主从板必须使用一致的 `ROS_DOMAIN_ID`、RMW 实现和 DDS 配置。
|
||||
- 实车启动前确认地图目录、车型配置、CAN 接口、车辆标定文件均存在。
|
||||
- 从控板默认不自动配置 CAN。需要脚本配置 CAN 时设置 `SLAVE_CONFIGURE_CAN=true`。
|
||||
- 当前工作空间路径为 `/home/nvidia/FaRui/v3.2`;如果复制到其他路径,需要同步检查脚本和
|
||||
`env_config/config.sh` 中的硬编码路径。
|
||||
Reference in New Issue
Block a user