Initial import of FaRui Campus ADS v3.2

This commit is contained in:
li-shihao-code
2026-06-05 14:20:30 +08:00
commit 2839d34fdb
6548 changed files with 1335203 additions and 0 deletions
+253
View File
@@ -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` 中的硬编码路径。