3. Autoware基础环境搭建

行为与运动规划模块是 Autoware 中最依赖中间件、消息类型与仿真闭环的部分。若基础环境没有搭稳,后续在规划节点中遇到的“话题收不到”“TF 缺失”“地图不匹配”等问题会大量消耗调试时间。本节围绕 ROS 2、Autoware Universe、仿真工具与开发环境配置,梳理一条可复现的搭建路径,并重点说明规划模块的编译与运行方法。

一、核心原理:三层环境与规划模块的依赖链

Autoware 的运行环境可以理解为三层:底层是 ROS 2 提供的通信、参数、生命周期与 TF 机制;中层是 Autoware Universe 提供的感知、定位、地图、规划、控制等功能包;上层是仿真与开发工具,包括 CARLA、AWSIM、RViz2、ros2 bag 与 colcon 构建系统。规划模块位于中层,但它同时向下依赖地图与定位,向上输出轨迹给控制,因此环境搭建必须保证整条链路可用。

规划模块的核心输入包括:矢量地图(Lanelet2)、高精地图点云、车辆状态、定位位姿、障碍物信息与路由目标;核心输出是 autoware_planning_msgs/msg/Trajectory。这些消息类型由 Autoware Universe 的接口包定义,因此编译规划模块前必须确保接口包已正确构建并 source 环境。

Autoware 规划模块环境依赖链 ROS 2 基础层 DDS 通信 / QoS TF2 坐标变换 参数与生命周期 ros2 bag 录制 colcon 构建 Autoware Universe 功能层 地图 / Lanelet2 定位 / NDT 感知 / 障碍物 规划 Planning 控制 Control 接口包:autoware_planning_msgs / autoware_map_msgs / autoware_vehicle_msgs 仿真与开发工具层 AWSIM / CARLA RViz2 可视化 ros2 bag 回放 Docker 镜像 VS Code / 调试器 轨迹输出用于仿真验证 规划模块编译前必须 source ROS 2 与 Autoware 接口包环境,否则消息类型无法解析

二、方法流程:从零到规划节点运行

推荐使用官方 Docker 镜像或源码编译两种方式。若以学习规划算法为主,优先使用 Docker 镜像,可跳过大量依赖问题;若需要修改规划源码,则采用源码编译。以下以源码编译为例说明关键步骤。

# 1. 安装 ROS 2(以 Humble 为例)
sudo apt update
sudo apt install ros-humble-desktop
source /opt/ros/humble/setup.bash

# 2. 创建工作空间并拉取 Autoware Universe
mkdir -p ~/autoware_ws/src
cd ~/autoware_ws/src
git clone https://github.com/autowarefoundation/autoware.git
cd autoware
./setup-dev-env.sh

# 3. 使用 colcon 编译规划相关包
cd ~/autoware_ws
colcon build --symlink-install \
  --packages-up-to autoware_planning \
  --cmake-args -DCMAKE_BUILD_TYPE=Release

# 4. source 环境
source ~/autoware_ws/install/setup.bash

编译时建议使用 --packages-up-to 只构建规划模块及其依赖,避免全量编译耗时过长。若出现消息类型找不到的错误,通常是接口包未编译或未 source,应先构建 autoware_planning_msgs 等接口包。

三、仿真场景:用 AWSIM 验证规划输出

AWSIM 是 Autoware 官方推荐的轻量仿真器,支持 Lanelet2 地图与车辆动力学。启动顺序应为:先启动仿真器,再启动 Autoware 的定位、感知与规划栈,最后通过 RViz2 观察轨迹。典型启动命令如下:

# 终端 1:启动 AWSIM
./awsim.x86_64

# 终端 2:启动 Autoware 规划栈
ros2 launch autoware_launch planning_simulator.launch.xml \
  map_path:=$HOME/autoware_map/sample-map-planning \
  vehicle_model:=sample_vehicle \
  sensor_model:=sample_sensor_kit

# 终端 3:检查规划话题
ros2 topic echo /planning/scenario_planning/trajectory --once
ros2 topic hz /planning/scenario_planning/trajectory

若 RViz2 中能看到车辆位姿与地图,但轨迹不显示,应依次检查:定位话题是否发布、Lanelet2 地图是否加载、路由目标是否设置、规划节点是否处于 Active 状态。

四、常见误区与复盘清单

现象 可能原因 排查方法
规划节点启动即退出 接口包未 source 或版本不匹配 检查 ros2 pkg list | grep planning
轨迹话题无输出 未设置路由目标或地图未加载 在 RViz2 中使用 2D Goal Pose 设置目标
TF 报错 map 到 base_link 缺失 定位模块未启动或未收敛 检查 ros2 run tf2_tools view_frames
编译内存不足 并行编译任务过多 使用 --parallel-workers 2 限制并发
仿真中车辆不动 控制模块未订阅轨迹或车辆模型不匹配 检查 /control/command/control_cmd 话题
建议在首次搭建完成后,用 ros2 bag record 录制一段包含定位、感知与规划话题的数据包,后续调试规划算法时可直接回放,避免每次依赖仿真器实时运行。
不要跳过 source install/setup.bash 这一步。Autoware 的消息类型与插件大量依赖环境变量,未 source 时即使编译成功,运行阶段也会出现找不到类型或插件的错误。