小马的世界

【Autoware.ai学习笔记】第一课-1 开发环境介绍

【Autoware.ai学习笔记】第一课-1 开发环境介绍

自动驾驶开源系统Autoware学习笔记
Development Environment
https://www.autoware.org/training

简介

Autoware展示了一种现实与未来结合的愿景,你可以从图中看出这个系统现在具备的能力。

  • 车辆本身所处的位置
  • 针对车辆所处环境的定位(使用LiDAR 数据和GPS数据)
  • 全景(包括2D或者3D的交通中其他参与者的情况,还可以分析他们分类,是车辆还是行人等,并且能判断他们的移动速度,并且预测他们的移动路径)
  • 计算车辆运动开始和停止的时机
  • 以静态语义地图的形式展示环境信息(车道信息,交通信号灯信息等)

这里有一个demo视频(YouTube),你可以通过视频来了解Autoware具体是如何运作的。

为什么有这个课程

  1. 自主驾驶(AD)是一个巨大的趋势。在过去5年中,仅自动驾驶软件的平均投资就达到了23亿美元。
  2. 开发自动驾驶应用的主要推动力之一ROS已经成熟,ROS 2现在可以产品化了。
  3. 同样,Autoware也已经完成研究和原型设计阶段,下一个版本Autoware.Auto正在以更严格的方式开发,将会以在商业应用中使用作为明确的目标。
  4. 从零开发一个自动驾驶系统是相当困难的,需要大量的资金和人力。有了本课所介绍的技术(ROS 2和Autoware.Auto),用户可以专注于实际的自主驾驶应用,如无人出租车、高速公路自动驾驶、自主代客停车等。
  5. ROS 2和Autoware.Auto是新技术。本课程提供了快速并且高质量的捷径来掌握它们。

课程组织

预备知识

  1. 熟悉ROS1(或者其他机器人框架)和中等水平的C++
  2. 具有线性代数、高等数学、统计学相关的知识。一个理想的学生应该对感知、定位、规划、控制、状态估计、决策理论比较熟悉。
  3. 硬件:唯一的性能限制来源于基于Unity的模拟器。关于它对硬件的需求,请查看模拟器的文档。
  4. 软件:Ubuntu 18.04

学习材料

这门课的视频讲座将会上传到Youtube,幻灯片及实验材料可以从课程的概览页面下载。

这门课程提供了什么

该课程是与Autoware基金会和ROS社区的成员合作举办的。他们都是在软件中间件、软件框架、自动驾驶汽车的算法和工具等领域的世界领先专家。在该课程中,你将学习如何实际建立一个工作的自动驾驶堆栈来执行自动代客泊车(AVP)。

开发环境

安装 ADE (Awesome Development Environment)

在这门课程中我们使用 ADE. 因为我们想确保所有学生使用的都是一样的开发环境。

ADE

Docker

安装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环境中运行。

安装 ROS 2

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 stopade start命令之间系统包的安装不会永久保存。任何有价值的东西都应该放在adehome目录下,该目录存储在主机上并挂载在ADE环境中。

安装 Autoware.Auto

二进制版本

Autoware.Auto 已经安装在 ADE中了. 安装的路径是 /opt/AutowareAuto/, 并且它作为一个 docker volume提供。

源代码版本

如果要 从源代码安装 你可以用之前克隆的版本,运行下面的命令:

ade$ cd AutowareAuto
ade$ colcon build
ade$ colcon test
ade$ colcon test-result

运行一个物体检测的命令

现在你已经准备好运行Autoware.Auto的典型应用之一,一个基于LiDAR的物体检测程序。

事前准备

  1. 下载一个预先录制好的 pcap 文件 并且将其放置在 ${HOME}/adehome/data.

  2. 克隆一个为这个课程特别制作的配置文件

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

结果如下图:

object_detection

编辑并且编译你的代码

现在我们将看看如何创建一个新的Autoware.Auto包,编辑它,并编译它。

  1. 创建一个新的包
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."

  1. 编辑文件
ade$ emacs -nw autoware_my_first_pkg/src/autoware_my_first_pkg_node.cpp
# Edit one Line
  1. 重新编译并执行
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的一些实践。