在NVIDIA Jetson TX2上安装Autoware,并实车测试激光SLAM建图

在NVIDIA Jetson TX2上安装Autoware,并实车测试激光SLAM建图

2019年01月15日 23:23:01 W_Tortoise 阅读数 2084更多

分类专栏: SLAM

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/learning_tortosie/article/details/86484505

Autoware是世界上第一款用于自动驾驶汽车的“一体化”开源软件,主要适用于城市,但也可以涵盖公路,高速公路等。
Autoware的代码库受BSD许可证保护。请自行决定使用它。
为了安全使用,Autoware为那些没有真正自动驾驶汽车的人提供基于ROSBAG的仿真环境。
如果计划将Autoware与真实的自动驾驶汽车一起使用,请在现场测试前制定安全措施和风险评估。

1 Autoware是什么?

Autoware提供丰富的自动驾驶模块,包括传感,计算和驱动功能。下图描述了这些功能。
关键词包括定位,建图,目标检测和跟踪,交通灯识别,任务和运动规划,轨迹生成,车道检测和选择,车辆控制,传感器融合,摄像机,激光雷达,雷达,深度学习,基于规则的系统,连接导航,日志,虚拟现实等。
用户手册:https://github.com/CPFL/Autoware-Manuals
在NVIDIA Jetson TX2上安装Autoware,并实车测试激光SLAM建图

2 推荐的系统配置

  • Number of CPU cores: 8
  • RAM size: 32GB
  • Storage size: 64GB+

注意:这里只是推荐的配置,如果能达到这个配置,就可以更好的运行Autoware,发挥其最大功能,但是配置低点也是能运行的,只是效果会有差距,比如,可以在NVIDIA Jetson TX2上安装并运行Autoware。

3 安装

是不是很炫酷?
等安装完成,你会发现还有精心设计UI界面,操作十分简单。
还等什么,赶紧开始吧!
安装方式分Docker源码两种方式,这里以源码方式为例。
在NVIDIA Jetson TX2上安装Autoware,并实车测试激光SLAM建图

3.1 要求

  • ROS indigo (Ubuntu 14.04) or ROS jade (Ubuntu 15.04) or ROS kinetic (Ubuntu 16.04)
  • OpenCV 2.4.10 or higher
  • Qt 5.2.1 or higher
  • CUDA (可选)
  • FlyCapture2 (可选,PointGrey相机SDK)
  • Armadillo (可选,Armadillo是一个用于C ++语言的高质量线性代数库,旨在实现速度和易用性之间的良好平衡)

注:我用的TX2,出厂预装的Ubuntu 16.04系统,没有刷机装一些库,只安装了ROS,然后安装Autoware时自动安装了OpenCV 2.4.9.1,有悖第二条要求,但是运行没有问题。

3.2 为Ubuntu 14.04 Indigo安装系统依赖项

sudo apt-get install -y  python-catkin-pkg python-rosdep python-wstool ros-$ROS_DISTRO-catkin
sudo add-apt-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
sudo apt-get install libmosquitto-dev
  • 1
  • 2
  • 3
  • 4

注意:请不要安装ros-indigo-velodyne-pointcloud软件包。如果已经安装,请卸载。

3.2 为Ubuntu 16.04 Kinetic安装系统依赖项

sudo apt-get update
sudo apt-get install -y python-catkin-pkg python-rosdep python-wstool ros-$ROS_DISTRO-catkin libmosquitto-dev gksu
  • 1
  • 2

注意:ROS Kinetic不支持以下软件包。

  • gazebo
  • orb slam
  • dpm ocv

3.3 编译

(1)克隆仓库

cd $HOME
git clone https://github.com/CPFL/Autoware.git --recurse-submodules
  • 1
  • 2

如果之前下载过旧版本,可运行git submodule update --init --recursive进行升级。
(2)初始化工作空间,让rosdep安装缺少的依赖项并编译

cd ~/Autoware/ros/src
catkin_init_workspace
cd ../
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
./catkin_make_release
  • 1
  • 2
  • 3
  • 4
  • 5

注意:如果想最简单地安装Autoware,只需要提前安装好ROS,这里会把缺少的依赖项一并安装。

3.4 基于DNN的节点

几个基于DNN的节点(如RCNN,SSD和Yolo)不会自动构建。

要构建这些节点,请遵循相应节点的README,SSD Darknet现已包含在Autoware的感知部分中。

3.5 启动

cd $HOME/Autoware/ros
./run
  • 1
  • 2

然后根据下面的教学视频学习使用方法。

4 教学视频

最好的方法就是跟着教学视频操作了。
地址:https://github.com/CPFL/Autoware/wiki/videos (需要*)
包括以下内容:

  • 快速开始
  • 建图
  • 加载地图
  • 使用GNSS进行定位
  • 没有GNSS的定位
  • 使用SSD进行目标检测
  • 使用Yolo2进行目标检测
  • 使用Yolo3进行目标检测
  • 使用DPM进行目标检测
  • 欧几里德聚类检测
  • 交通灯识别
  • 使用ROSBAG进行规划
  • 使用wf_simulator进行规划
  • 使用混合状态A*进行规划
  • 标定工具包
  • bag文件的数据处理器
  • Ftrace

5 现场测试

Autoware的一个显著优势是,一旦3D LiDAR传感器安装在车辆上,就可以在一天内开始对自动驾驶车辆进行现场测试。
可以使用Autoware构建3D地图,制作路线并自动跟踪它。
另外,还需要相机和带有全套Autoware模块的专业3D地图。
但是,第一次进行现场测试时,可以从以下简单测试开始。

5.1 构建点云图

Autoware提供基于同时定位与建图(SLAM)的3D建图模块。它在手动驾驶车辆时构建局部坐标点云地图。应该注意回环检测的约束。如果距离原点太远,则生成的点云地图可能与实际地理要素不对齐,除非使用Graph SLAM方法。也就是说,Autoware单独构建的点云地图不应该是大规模的。

5.2 在点云地图中制作路线

一旦点云地图创建完成,就可以创建一个你想要自主跟随的路线。
制定路线最直接的方法是在路线上手动驾驶一次并记录车辆位置。这些车辆位置的轨迹可以保存为路径点(waypoints)。
你所要做的就是跟随这些路径点,也就是寻迹。
另一方面,更智能的方法是使用VectorMapper将道路特征添加到点云地图中,并跟随包含路线车道中心线的路点;然而,这是一项耗时的任务。

5.3 跟随路线上的路径点

一旦制作了一个带有路径点的路线,你所要做的就是跟随这些路径点,根据定位和检测结果控制速度/油门和角度/转向。
在公共道路上,需要激活更多模块,例如目标跟踪器,交通灯识别器和决策器。
实际上,还可以假设路径点是由一些高精度导航服务生成的,Autoware.AI将支持这些服务。路径点准备就绪后,在此尝试的练习将适用于任何测试领域。

6 实车测试

1.硬件

  • 自动驾驶汽车
  • TX2
  • 速腾聚创16线激光雷达

2.软件

  • Autoware
  • ROS Kinetic
  • Ubuntu 16.04

3.步骤

  • 在TX2上配置好Autoware(很顺利,没遇到问题)
  • 人工驾驶装有激光雷达的汽车采集bag数据
  • 根据教学视频的建图部分操作

4.测试结果
部分俯视图如下图所示,是不是看着还不错?
在NVIDIA Jetson TX2上安装Autoware,并实车测试激光SLAM建图
再看看这个侧视图,垂直方向明显存在很大的误差,这就有点尴尬了哦。
在NVIDIA Jetson TX2上安装Autoware,并实车测试激光SLAM建图
5.分析

  • Autoware的SLAM没有类似视觉中消除累计误差的回环检测模块,因此不适合大场景,那到底多大的场景算大?
  • TX2性能不足,因此我尝试在性能更好的计算平台上安装Autoware,但是遇到一些问题,待更新。
  • 数据问题,采集数据时车速过快,转弯时也较快。

6.注意事项

  • 现在的方案是提前录制好bag,然后播放bag进行建图。如果不提前录制bag,而是直接启动激光雷达驱动,那么将无法建图,就算静止时也会发飘,呈半圆弧状无限旋转运动。具体原因是什么,我还不清楚。
  • Autoware的Lidar topic为points_raw,而Velodyne、镭神智能、速腾聚创等激光雷达发布的topic均不是这个,因此需要修改。一种方法是修改驱动,将发布的topic改为points_raw;另一种方法是录制bag,然后在播放时将驱动默认的topic改为points_raw。以速腾聚创激光雷达为例:rosbag play *.bag /rslidar_points:=/points_raw

7. TO DO

  • 重新采集数据,放慢车速,以及转弯速度
  • 在性能更好的计算平台上安装Autoware,然后建张好图并保存
  • 加载地图进行定位
  • 记录轨迹
  • 寻迹

7 总结

Autoware是一个围绕完整无人驾驶打造的系统,与Apollo类似,有必要深入学习一下。
也可以根据某部分需求,去扒一扒Autoware是如何实现的,然后借鉴过来。
比如,如果只需要激光SLAM建图和导航这部分功能,就要将其剥离出来。

上一篇:无人驾驶--实时定位与地图构建(SLAM)仿真与实战 (转载)


下一篇:常见SLAM框架简介总结