最近心血来潮,准备研究下Autoware,主要是基于ROS2的Autoware.auto,这里记录下第一波折腾的笔记 —— 安装、配置、测试。
首先说明我使用的软件环境:
系统:Ubuntu 20.04
ROS:ROS2 Foxy
接下来就开始啦。
一、安装Docker
如果之前安装过docker,需要先删除旧版本docker:
$ sudo apt-get remove docker docker-engine docker.io containerd runc
如果看到下图的提示,就没问题啦。
继续安装一些软件依赖:
$ sudo apt-get update
$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
设置秘钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
设置软件源:
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$ (lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
现在就可以安装docker引擎了:
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
验证docker是否安装成功:
$ sudo docker run hello-world
此时可能出现如下提示:Unable to find image ‘hello-world:latest’locally,并且等待一段时间后,也无法继续运行镜像。
这是因为docker在本地没有找到hello-world镜像,也没有办法从docker仓库中拉取镜像,这是因为docker服务器在国外,网络原因导致拉取失败,此时我们可以为docker设置国内阿里云的镜像加速器,创建一个配置文件/etc/docker/daemon.json,添加如下内容:
{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}
然后保存并退出,并且重启docker服务
$ systemctl restart docker
再次运行Hello world的镜像:
$ sudo docker run hello-world
一开始还是会提示本地没有,不过稍等片刻,就可以拉取成功了,运行画面如下,说明docker安装成功啦:
接下来将当前用户加入docker用户组:
# 将当前用户加入docker用户组,$USER改为自己的用户名
$ sudo usermod -aG docker $USER
# 重启电脑或者重启docker服务
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
二、Autoware.auto容器安装
继续安装Autoware.auto,需要用到一个官方提供的配置工具——ADE。
ADE的安装步骤:
$ mkdir ~/adehome
$ cd ~/adehome
$ wget https://gitlab.com/ApexAI/ade-cli/-/jobs/1341322851/artifacts/raw/dist/ade+x86_64
$ mv ade+x86_64 ade
$ chmod +x ade
$ ./ade --version
4.3.0
$ sudo mv ade /usr/local/bin
$ which ade
/usr/local/bin/ade
此时就说明ADE安装成功啦。
继续安装Autoware容器:
$ touch .adehome
$ git clone --recurse-submodules https://gitlab.com/autowarefoundation/autoware.auto/AutowareAuto.git
$ cd AutowareAuto/
$ sudo ade start
接下来的过程会拉取镜像,消耗的时间稍长,耐心等待一下。
过程中可能会出现如下错误,提示:user ‘root’already exists:
此时可以按照以下指令解决:
# $USER改为自己的用户名
$ sudo usermod -aG docker $USER
$ sudo chmod 666 /var/run/docker.sock
$ ade start --update --enter
很快就可以进入镜像啦:
继续切换目录,下载Autoware.auto的一些代码:
ade$ cd AutowareAuto
ade$ vcs import < autoware.auto.$ROS_DISTRO.repos
此时大概率会出现github连接失败的报错:
这是因为网络连接不成功,可以更换网络多试试,我大概试了5次,才成功。
接下来就是编译代码了,使用ROS2的编译指令:
ade$ colcon build
编译的时间较长,将近1个小时,耐心等待了。。。
继续编译测试案例,也需要一个多小时,继续耐心等待。。。
ade$ colcon test
想要查看测试用例结果的话,可以这样:
ade$ colcon test-result
我这里有几个测试用例运行失败了,先不管了。
三、运行测试案例
这里使用一个车道线检测的案例作为测试,需要用到一个测试的视频。
测试用例与视频准备:
$ cd ~/adehome/AutowareAuto/
$ ade start
$ ade enter
$ git clone https://gitee.com/knowmefly/camera-hands-on-ws.git
下载视频文件:
链接:https://pan.baidu.com/s/1-PLjNF3fjMkpzF8o7ZnKdw
提取码:jjbw
然后编译这个例程:
$ ade enter
$ cd camera-hands-on-ws/
$ colcon build
很快就可以编译完成:
编译完成后就可以运行例程啦:
打开第一个终端,运行视频加载节点:
$ ade enter
$ cd camera-hands-on-ws/
$ source install/setup.bash
$ ros2 run lane_detection_data_loader lane_detection_data_loader_node
打开第二个终端,运行图像处理节点:
$ ade enter
$ cd camera-hands-on-ws/
$ source install/setup.bash
$ ros2 run lane_detection_projection lane_detection_projection_node
打开第三个节点。运行可视化节点:
$ ade enter
$ cd camera-hands-on-ws/
$ source install/setup.bash
$ ros2 run lane_detection_visualization lane_detection_visualization_node
打开第四个终端,运行Rviz可视化显示:
$ ade enter
$ rviz2
在Rviz2中,添加必要的显示内容,就可以看到车道线检测的效果啦
好啦,至此我们就完成了Autoware.auto docker版本的安装、配置和测试,步骤不少,中间编译的时间也很长,中间出现什么问题基本都可以Google找到答案。
以上所有操作均参考自以下链接:
https://docs.docker.com/engine/install/ubuntu/
https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/docker-installation
https://gitlab.com/autowarefoundation/autoware.ai/autoware/-/wikis/Generic-x86-Docker
https://blog.csdn.net/baiyefenglin/article/details/122921360
https://blog.csdn.net/jiluonian/article/details/120267789
https://blog.csdn.net/leoFY123/article/details/122184651
评论(10)
您还未登录,请登录后发表或查看评论