安装Autoware.Auto
简介
谈到无人驾驶系统,比较出名的就是APOLLO和AUTOWARE
APOLLO 是百度的自动驾驶开源框架,中间件采用百度自己的CyberRT,用“协程”解决了ROS1的调度问题
Autoware 是世界上第一个用于自动驾驶技术的“All-in-One”开源软件,目前有两个大版本
Autoware.AI是基于ROS1,目前已经很久没维护了;Autoware.Auto是基于ROS2的,会是未来的趋势
由于ROS资源比较丰富,而且我个人对ROS比较熟悉,所以选择Autoware.Auto作为第一个学习方向。
安装前准备
安装ROS2
Autoware.Auto是基于ROS2的,后续也会用到ROS2的命令编译,故先安装ROS2
博客:https://www.bonbonn.shop/2022/08/17/install-ROS2/
安装docker
Autoware.Auto推荐使用ADE安装,而ADE是一个基于Docker的工具,故先安装docker
ADE可确保项目中的所有开发人员都有一个共同的,一致的开发环境
博客:https://www.bonbonn.shop/2022/08/17/install-docker-on-ubuntu/
安装
官方文档:https://autowarefoundation.gitlab.io/autoware.auto/AutowareAuto/installation-ade.html
安装ADE
选择将ade安装在/usr/local/bin
下
cd /usr/local/bin #切换路径
sudo wget https://gitlab.com/ApexAI/ade-cli/-/jobs/1341322851/artifacts/raw/dist/ade+x86_64 #下载
sudo mv ade+x86_64 ade #改名
sudo chmod +x ade #给权限
sudo ./ade --version #看版本 用 ade --version 也可以
sudo ./ade update-cli #更新 用 ade update-cli 也可以
sudo ./ade --version #看版本
官方文档:https://ade-cli.readthedocs.io/en/latest/install.html
设置ADE home
ADE需要一个带.adehome
文件的文件夹作为home,如果多项目用ADE建议就是多个文件夹管理
mkdir -p ~/adehome
cd ~/adehome
touch .adehome
git clone https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto.git
共享环境变量
做法是将.bashrc
备份,然后移到adehome内,然后在原处创建软链接
cd ~
cp ~/.bashrc ~/.bashrc.bak #备份
mv ~/.bashrc ~/adehome/.bashrc #移动
ln -s ~/adehome/.bashrc #软链接
进入开发环境
cd ~/adehome/AutowareAuto/
ls -l .aderc* #查看可选环境
ade --rc .aderc-amd64-foxy start --update --enter #启动 aderc-amd64-foxy
会提示要需要gitlab令牌,登录gitlab,在设置中的Access Tokens中添加令牌即可
进入$ade
就算成功了
编译源码
官方文档到上述过程就结束了,参照其他博客,编译源码
cd AutowareAuto
vcs import < autoware.auto.$ROS_DISTRO.repos #vcs下载
colcon build #编译源码 1.5左右
colcon test #编译测试样例 1.5小时左右
colcon test-result #测试
编译过程会有一些package报错,先不管
测试
测试案例参考博客,修改路径为自己的即可:https://blog.csdn.net/stevephone/article/details/124856093
# 如果ade还没开启的话 需要进入adehome/AutowareAuto start一下
# source ~/AutowareAuto/install/setup.bash 这一句每个终端都要进行一遍
# 由于进入ade会导致路径的改变 所以也无法写入.bashrc
# 1
ade enter
source ~/AutowareAuto/install/setup.bash
udpreplay ~/data/route_small_loop_rw-127.0.0.1.pcap -r -1
# 2
ade enter
source ~/AutowareAuto/install/setup.bash
rviz2 -d ~/autowareclass2020/code/src/01_DevelopmentEnvironment/aw_class2020.rviz
# 3 把参数文件的points_xyzi改成了points_in
ade enter
source ~/AutowareAuto/install/setup.bash
ros2 run velodyne_nodes velodyne_cloud_node_exe --model vlp16 --ros-args --remap __ns:=/lidar_front --params-file ~/AutowareAuto/src/drivers/velodyne_nodes/param/vlp16_test.param.yaml
# 4
ade enter
source ~/AutowareAuto/install/setup.bash
ros2 run robot_state_publisher robot_state_publisher ~/AutowareAuto/src/urdf/lexus_rx_450h_description/urdf/lexus_rx_450h.urdf
# 5
ade enter
source ~/AutowareAuto/install/setup.bash
ros2 run point_cloud_filter_transform_nodes point_cloud_filter_transform_node_exe --ros-args --remap __ns:=/lidar_front --params-file ~/AutowareAuto/src/perception/filters/point_cloud_filter_transform_nodes/param/vlp16_sim_lexus_filter_transform.param.yaml --remap __node:=filter_transform_vlp16_front --remap points_filtered:=/perception/points_in
# 6
ade enter
source ~/AutowareAuto/install/setup.bash
ros2 run ray_ground_classifier_nodes ray_ground_classifier_cloud_node_exe --model --ros-args --remap __ns:=/perception --params-file ~/AutowareAuto/src/launch/autoware_auto_launch/param/ray_ground_classifier.param.yaml
# 7
ade enter
source ~/AutowareAuto/install/setup.bash
ros2 run euclidean_cluster_nodes euclidean_cluster_node_exe --ros-args --remap __ns:=/perception --params-file ~/AutowareAuto/src/launch/autoware_auto_launch/param/euclidean_cluster.param.yaml
可以不执行第七个,看名字应该是集群的功能
执行后我猜测他的功能就是把集群点用长方体在rviz里框出来
不执行的话效果会好很多,我跑后其中其中一帧如下