在Ubuntu 20.04上,用Autoware 1.14跑通第一个Demo(附避坑指南)
在Ubuntu 20.04上,用Autoware 1.14跑通第一个Demo(附避坑指南)
自动驾驶技术的快速发展让开源框架Autoware成为众多开发者和研究人员的首选工具。作为一款基于ROS的自动驾驶软件栈,Autoware 1.14版本虽然已经不再是最新版,但因其稳定性和丰富的功能模块,仍然是学习自动驾驶系统架构的理想起点。本文将带你从零开始,在Ubuntu 20.04系统上完成Autoware 1.14的安装配置,并成功运行官方提供的Moriyama Demo,同时分享我在实践过程中遇到的各种"坑"及其解决方案。
1. 环境准备与Autoware安装
在开始之前,确保你的系统满足以下基本要求:
- Ubuntu 20.04 LTS(推荐纯净安装)
- 至少8GB内存(16GB更佳)
- 50GB以上可用磁盘空间
- NVIDIA显卡(非必须但推荐)
1.1 安装ROS Noetic
Autoware 1.14需要ROS Noetic作为基础环境。执行以下命令安装:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update sudo apt install ros-noetic-desktop-full安装完成后,初始化rosdep并设置环境变量:
sudo rosdep init rosdep update echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc1.2 安装Autoware 1.14
推荐使用官方提供的Docker镜像进行安装,这能避免大量依赖冲突问题:
sudo apt install docker.io sudo systemctl enable --now docker sudo usermod -aG docker $USER newgrp docker docker pull autoware/autoware:1.14.0提示:执行完usermod命令后需要注销并重新登录,使docker组权限生效。
2. 获取并准备Demo数据
Autoware官方提供了Moriyama数据集作为演示用途,我们需要先下载这个数据包:
wget https://autoware-ai.s3.us-east-2.amazonaws.com/sample_moriyama_150324.tar.gz tar xvf sample_moriyama_150324.tar.gz这个数据包包含:
- 激光雷达点云数据(/points_raw)
- GNSS定位信息(/nmea_sentence)
- 车辆运动轨迹数据
注意:原始数据包较大(约3.5GB),解压后请确保有足够的磁盘空间。如果下载速度慢,可以尝试使用国内镜像源。
3. 启动Autoware Runtime Manager
Runtime Manager是Autoware的图形化控制中心,我们将通过它来管理整个Demo流程。
首先启动Docker容器:
docker run -it --rm -p 6080:6080 \ -v $HOME/autoware-data:/home/autoware/data \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e DISPLAY=$DISPLAY \ --device=/dev/dri:/dev/dri \ autoware/autoware:1.14.0容器启动后,在新的终端中执行:
docker exec -it <container_id> bash source /opt/ros/noetic/setup.bash roslaunch runtime_manager runtime_manager.launch此时应该能看到Runtime Manager的图形界面。界面主要分为几个区域:
- Setup:基础设置(TF、车辆模型等)
- Map:地图加载
- Simulation:仿真控制
- Computing:算法模块管理
- Visualization:可视化工具
4. 运行完整Demo流程
4.1 基础设置
在Setup选项卡中:
- 勾选
TF - 勾选
Vehicle Model - 点击
Vehicle Model右侧的app按钮,设置合适的车辆尺寸参数
- 勾选
在Map选项卡中:
- 点击
Point Cloud加载点云地图 - 选择我们下载的
sample_moriyama_data中的pointcloud_map.pcd文件
- 点击
4.2 启动感知模块
在Sensing选项卡中:
- 勾选
voxel_grid_filter(点云降采样) - 点击app按钮设置参数:
leaf_size: 0.2 0.2 0.2
- 勾选
在Computing选项卡中:
- 勾选
nmea2tfpose(GNSS定位) - 勾选
ndt_matching(点云匹配定位)
- 勾选
4.3 播放数据包
- 切换到Simulation选项卡
- 点击
Ref按钮选择我们下载的sample_moriyama_150324.bag - 点击
Play开始播放数据
此时你应该能在Rviz中看到:
- 点云地图显示
- 车辆模型随着数据包播放而移动
- 实时激光雷达扫描数据
5. 常见问题与解决方案
5.1 地图加载失败或显示异常
现象:点云地图无法加载,或显示为杂乱无章的点集。
解决方案:
- 检查地图文件路径是否正确
- 确保文件权限可读:
chmod +r pointcloud_map.pcd - 如果地图显示异常,尝试调整Rviz中的点云显示大小:
Style: Points Size (Pixels): 1
5.2 节点卡顿或处理延迟
现象:(Processed/Input)数值差距大,系统响应缓慢。
优化方案:
- 降低点云处理精度:
voxel_grid_filter: leaf_size: 0.5 0.5 0.5 - 关闭不必要的可视化工具
- 在Runtime Manager中限制处理频率:
ndt_matching: resolution: 2.0
5.3 TF坐标错误
现象:Rviz中显示No transform from [base_link] to [map]等TF错误。
解决方法:
- 检查
TF是否已勾选 - 确认
nmea2tfpose正常运行 - 手动检查TF树:
rosrun tf view_frames evince frames.pdf
5.4 数据包播放问题
现象:bag文件播放后无任何数据显示。
排查步骤:
- 检查话题列表:
rostopic list - 确认数据包信息:
rosbag info sample_moriyama_150324.bag - 尝试手动播放:
rosbag play --clock sample_moriyama_150324.bag
6. 高级调试技巧
当基础Demo运行稳定后,可以尝试更复杂的功能验证:
6.1 目标检测集成
虽然Autoware自带检测算法,但性能有限。可以集成YOLOv3实现更好的检测效果:
git clone https://github.com/leggedrobotics/darknet_ros.git cd darknet_ros && catkin_make -DCMAKE_BUILD_TYPE=Release在Runtime Manager中:
- 取消默认检测节点
- 添加darknet_ros启动文件
- 配置相机话题和检测参数
6.2 路径规划测试
- 在Computing中启动
waypoint_loader - 加载预存路径文件
- 依次启动:
astar_avoidvelocity_setpure_pursuit
- 在Rviz中观察规划结果
6.3 性能监控
使用rqt工具实时监控系统状态:
rqt_graph # 查看节点关系 rqt_top # 查看资源占用 rqt_plot # 绘制话题数据曲线对于长期运行的自动驾驶系统,建议将关键话题数据记录到新的bag文件中,便于后续分析:
rosbag record -O demo_log.bag /points_raw /detection /tf7. 实际项目中的经验分享
在工业级应用中,Autoware 1.14有几个需要特别注意的方面:
时钟同步:确保所有传感器数据有准确的时间戳,否则会导致融合算法失效。可以通过
message_filters实现精确同步:from message_filters import ApproximateTimeSynchronizer ts = ApproximateTimeSynchronizer([sub1, sub2], queue_size=10, slop=0.1) ts.registerCallback(callback)坐标统一:不同模块可能使用不同的坐标系约定,特别是在将Autoware与其他系统集成时。建议在项目初期就明确定义:
- 世界坐标系(map)
- 车辆坐标系(base_link)
- 传感器坐标系(velodyne, camera等)
参数调优:Autoware的默认参数往往不适合特定场景,需要根据实际环境调整:
- 点云匹配:
ndt_max_iterations,trans_epsilon - 路径规划:
waypoint_velocity,acceleration_limit - 控制参数:
lookahead_distance,minimum_lookahead_distance
- 点云匹配:
硬件加速:对于实时性要求高的场景,考虑:
- 使用CUDA加速的NDT匹配
- FPGA加速的点云处理
- 专用硬件运行深度学习模型
