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_launchecar_vehicle_descriptionecar_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 内部 控制模块到车辆接口

目录结构

.
├── 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

主控板:

cd /home/nvidia/FaRui/v3.2/master
./build.sh

从控板:

cd /home/nvidia/FaRui/v3.2/slave
./build.sh

如果只想编译部分包,可以按脚本内注释打开 --packages-select

实车启动

建议先启动从控板,再启动主控板。这样车辆接口、CAN、控制和 system 状态先就绪, 主控板启动规划和任务工具后可以直接收到车辆反馈。

1. 启动从控板

cd /home/nvidia/FaRui/v3.2/slave
./run_slave_real_vehicle.sh

可选位置参数:

./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

cd /home/nvidia/FaRui/v3.2/master
./run_ecar_master_debug.sh

可选位置参数:

./run_ecar_master_debug.sh [地图目录] [是否启动RViz] [车型]

默认地图目录为 /home/nvidia/FaRui-test/map/School06,默认 RViz 为 true

3. 启动主控板和预设路线工具

cd /home/nvidia/FaRui/v3.2/master
./run_preset_route_real_vehicle.sh

默认模式是 ui-only,只打开预设路线 UI,不启动主板 Autoware 栈。完整参数为:

./run_preset_route_real_vehicle.sh [模式] [站点文件] [是否启动RViz] [地图目录] [车型]

支持模式:

模式 说明
ui-only 只启动预设路线 UI
none 启动主板 Autoware,不启动额外路线工具
record 启动站点记录工具
replay 启动预设路线发送工具
mission 启动站点任务管理器

示例:

# 只启动主板 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 从控板心跳监控

典型环境变量:

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_configslave/env_config 提供 systemd 开机配置模板,主要用于:

  • 配置 CAN 接口
  • 配置串口权限
  • 按顺序执行 startup.d/ 下的启动脚本
  • 记录 startup.log

安装服务前先检查 env_config/config.sh 中的路径是否指向当前工作空间。

调试与检查

常用诊断入口:

# 主控板规划链路检查
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 检查命令:

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 中的硬编码路径。
S
Description
No description provided
Readme
578 MiB
Languages
C++ 93.7%
Python 3.5%
CMake 1.7%
Shell 0.5%
Cuda 0.3%
Other 0.3%