Autoware安装 (踩坑指南)

由于工作需要需要学习一下autoware这个框架,但是在安装的时候遇到了数不进的坑,网上的教程基本都跑不起来。自己搞了好半天,终于跑起了个demo,记录一下踩坑的过程。

本次要安装的是Autoware.ai这个版本,他是基于ROS1 Melodic的,需要Ubuntu 18.04的环境,由于我的系统是Ubuntu 20.04,因此需要在Docker中运行ROS1 Melodic环境。

一、安装Docker

首先验证系统上没有安装旧版本或不兼容版本的Docker

sudo apt-get remove docker docker-engine docker.io

看到以下提示就没问题

继续安装一些依赖:

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

然后设置密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88

接下来设置软件源

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

接下来就可以安装Docker了

sudo apt-get install docker-ce

二、安装docker-nvidia

如果电脑没有英伟达独显则跳过这一步。有独显的话先确保已经安装了nvidia显卡驱动,输入nvidia-smi即可确定是否已经成功安装。

确保有nvidia驱动后,安装docker-nvidia,运行以下命令:

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get install -y nvidia-docker2 

三、安装Autoware Docker镜像

先git clone一下源码

git clone https://gitlab.com/autowarefoundation/autoware.ai/docker.git
cd docker/generic
sudo ./run.sh

如果没有独显没有装docker-nvidia 会显示以下报错:

使用如下命令关闭cuda的支持就可以了:

 sudo ./run.sh -c off

如果报以下错误“usermod: UID '0' already exists”则需要修改run.sh,加入以下语句

USER_ID="$(id -u)"
if [ USER_ID != 0 ]; then
USER_ID=1000;
else
USER_ID=${USER_ID};
fi

加入的位置如下图中的红色框所示

四、编译

在docker环境下输入以下指令:

cd /home/autoware/Autoware 
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

编译需要耐心等一段时间,视电脑性能而定。

五、下载rosbag数据集

编译完成后就可以运行官方的rosbag实例,先要下载稍后会用到的测试数据:

wget http://db3.ertl.jp/autoware/sample_data/sample_moriyama_data.tar.gz
wget http://db3.ertl.jp/autoware/sample_data/sample_moriyama_150324.tar.gz

如果无法科学上网下载太慢的话,可通过以下百度网盘下载

链接:https://pan.baidu.com/s/1lg0lnjVwmdOb8r9U_bEsXA
提取码:i0v5

我看网上其他教程都是下载完后用docker cp命令从主机拷贝到docker镜像中,然后在docker中解压,我一开始就是这样干的,但是后来再打开docker后发现拷贝过来解压的文件都不见了!后来才了解到Docker 的容器使用容器层文件系统,退出容器后文件层会被删除和清空,重启docker后,之前运行的容器都会退出,容器层文件系统被清空,docker cp 拷贝的文件就都丢失了。

其实运行run.sh后,安装完会在主机目录下生成shared_dir文件夹,方便传文件到docker,其实这是通过挂载宿主机目录的方式实现数据的永久保存。当然你也可以自己挂载一个目录,在run.sh脚本里找到这几行:

VOLUMES="--volume=$XSOCK:$XSOCK:rw
         --volume=$XAUTH:$XAUTH:rw
         --volume=$SHARED_HOST_DIR:$SHARED_DOCKER_DIR:rw

在其下面加入你要挂载的目录,前面是你主机文件夹的路径,冒号后面的是docker里的路径。

      -v /home/leo/autoware_rosbag:/home/autoware/rosbag" # 加入挂载数据目录

解压命令为:

tar zxfv sample_moriyama_150324.tar.gz
tar zxfv sample_moriyama_data.tar.gz

六、运行demo实例

在docker中进入Autoware文件夹下然后运行

source install/setup.bash
roslaunch runtime_manager runtime_manager.launch

运行后可显示出可视化配置界面

然后网上的教程都是直接加载bag与launch文件运行,但实际上遇到很多问题导致这样跑不起来。

于是在autoware项目issue里看到了一个正确的配置顺序。

注意Point Cloud与Vctor Map要鼠标左键拖住全选,这两个最好最后等rviz加载出来后再点击加载。

按顺序点击完后,再点击“Pause”继续播放rosbag包,一开始车辆会乱飘,这是ndt在匹配,等ndt点云匹配完车辆就会在道路上正常行驶

NDT点云匹配中
NDT匹配完成
如果觉得本文对您有所帮助,可以支持下博主,一分也是缘😊

评论

  1. justin
    Linux Chrome
    6 月前
    2024-6-28 18:50:15

    你好,没有什么办法能够让他运行之后不自动删除吗

    • 博主
      justin
      Windows Edge
      4 月前
      2024-8-10 10:00:37

      我文章i了应该有写,你找一下有没有shared_dir这个文件夹,放这个文件夹里就不会被删除了,或者你自己挂载一个目录

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇