自动驾驶开源系统Autoware学习笔记
Development Environment
https://www.autoware.org/training
Autoware展示了一种现实与未来结合的愿景,你可以从图中看出这个系统现在具备的能力。
这里有一个demo视频(YouTube),你可以通过视频来了解Autoware具体是如何运作的。
这门课的视频讲座将会上传到Youtube,幻灯片及实验材料可以从课程的概览页面下载。
该课程是与Autoware基金会和ROS社区的成员合作举办的。他们都是在软件中间件、软件框架、自动驾驶汽车的算法和工具等领域的世界领先专家。在该课程中,你将学习如何实际建立一个工作的自动驾驶堆栈来执行自动代客泊车(AVP)。
在这门课程中我们使用 ADE. 因为我们想确保所有学生使用的都是一样的开发环境。
安装ADE需要安装Docker,具体的要求请查看这个链接: https://ade-cli.readthedocs.io/en/latest/install.html#requirements.
要在你的 Ubuntu 18.04 电脑上安装ADE,你可以按照下面的顺序或者 遵循ADE文档中的安装说明:
$ cd ${HOME}
$ mkdir adehome
$ cd adehome
$ wget https://gitlab.com/ApexAI/ade-cli/uploads/85a5af81339fe55555ee412f9a3a734b/ade+x86_64
$ mv ade+x86_64 ade
$ chmod +x ade
$ mv ade ~/.local/bin
$ which ade
# Update ade
$ ade update-cli
# Now setup ade
$ touch .adehome
$ git clone --recurse-submodules https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto.git
$ cd AutowareAuto/
$ ade start
# this will take awhile
$ ade enter
现在你应该在你的提示中看到以下内容
<your_username>@ade:~$
注意: 从现在开始,我们将在命令行指令前加上
$
或ade$
,以表明这些命令应该在普通终端或ADE环境中运行。
Autoware.Auto 使用 ROS 2 Dashing,他已经 安装 在ADE中了. 安装目录是 /opt/ros/dashing/
. 关于从头安装ROS 2的说明,请参考ROS 2 Dashing的ROS文档.
你可以通过执行下面的命令来判断安装是否正确。
ade$ ros2 -h
你也可以尝试使用两个独立的终端运行talker/listener的例子
ade$ ros2 run demo_nodes_cpp talker
ade$ ros2 run demo_nodes_cpp listener
如果你想在ADE内部安装额外的系统包,你可以使用apt
包管理工具。
ade$ sudo apt update
ade$ sudo apt install ros-dashing-turtlesim
ade$ sudo apt install ros-dashing-rqt-*
ade$ sudo apt install byobu
注意: 在
ade stop
和ade start
命令之间系统包的安装不会永久保存。任何有价值的东西都应该放在adehome
目录下,该目录存储在主机上并挂载在ADE环境中。
Autoware.Auto 已经安装在 ADE中了. 安装的路径是 /opt/AutowareAuto/
, 并且它作为一个 docker volume提供。
如果要 从源代码安装 你可以用之前克隆的版本,运行下面的命令:
ade$ cd AutowareAuto
ade$ colcon build
ade$ colcon test
ade$ colcon test-result
现在你已经准备好运行Autoware.Auto的典型应用之一,一个基于LiDAR的物体检测程序。
下载一个预先录制好的 pcap 文件 并且将其放置在 ${HOME}/adehome/data
.
克隆一个为这个课程特别制作的配置文件
ade$ git clone https://gitlab.com/ApexAI/autowareclass2020.git ~/autowareclass2020
执行下面的命令(每条命令需要新开一个ADE终端窗口)
注意 在执行以下每个命令之前,有必要对Autoware.Auto工作区进行source。你可以通过在ADE终端执行
source /opt/AutowareAuto/setup.bash
来完成。
ade$ udpreplay ~/data/route_small_loop_rw-127.0.0.1.pcap
ade$ rviz2 -d /home/${USER}/autowareclass2020/code/src/01_DevelopmentEnvironment/aw_class2020.rviz
ade$ ros2 run velodyne_node velodyne_cloud_node_exe __ns:=/lidar_front __params:=/home/${USER}/autowareclass2020/code/src/01_DevelopmentEnvironment/velodyne_node.param.yaml
ade$ ros2 run robot_state_publisher robot_state_publisher /opt/AutowareAuto/share/lexus_rx_450h_description/urdf/lexus_rx_450h.urdf
ade$ ros2 run point_cloud_filter_transform_nodes point_cloud_filter_transform_node_exe __ns:=/lidar_front __params:=/opt/AutowareAuto/share/point_cloud_filter_transform_nodes/param/vlp16_sim_lexus_filter_transform.param.yaml __node:=filter_transform_vlp16_front points_filtered:=/perception/points_in
ade$ ros2 run ray_ground_classifier_nodes ray_ground_classifier_cloud_node_exe __ns:=/perception __params:=/opt/AutowareAuto/share/autoware_auto_avp_demo/param/ray_ground_classifier.param.yaml
ade$ ros2 run euclidean_cluster_nodes euclidean_cluster_exe __ns:=/perception __params:=/opt/AutowareAuto/share/autoware_auto_avp_demo/param/euclidean_cluster.param.yaml
结果如下图:
现在我们将看看如何创建一个新的Autoware.Auto包,编辑它,并编译它。
ade$ cd ~/AutowareAuto/src
ade$ autoware_auto_create_pkg --destination . --pkg-name autoware_my_first_pkg --maintainer "Dejan Pangercic" --email [email protected] --description "My first Autoware pkg."
ade$ emacs -nw autoware_my_first_pkg/src/autoware_my_first_pkg_node.cpp
# Edit one Line
ade$ cd ..
ade$ colcon build --packages-select autoware_auto_autoware_my_first_pkg
ade$ source install/setup.bash
ade$ ros2 run autoware_auto_autoware_my_first_pkg autoware_my_first_pkg_exe
祝贺你! 现在你有了Autoware.Auto的白带。
在下一讲中,你将了解到汽车和机器人代码开发的理论以及用于开发Autoware.Auto的一些实践。