【安装教程】ubuntu20.04/22.04从零开始搭建autoware.universe

目录

1. 基本配置情况

2. ROS2 Humble和git安装 

2.1 ros2 humble安装(对应ubuntu22.04,仅源码安装需要)

2.2 git安装 

3. 克隆autoware代码

 4.自动安装依赖项(推荐)

5. 手动安装依赖项(在一键配置失效下使用,这里仅列出docker安装中需要的依赖)

 5.1 cuda安装

 5.2 docker engine安装

5.3  NVIDIA Container Toolkit安装

5.4 rocker安装

 6. 创建工作空间(docker安装所需的额外步骤标红)


1. 基本配置情况

ubuntu 版本:22.04 

autoware版本:autoware.universe  (ubuntu20.04建议docker安装/ubuntu22.04建议源码安装)

 参考教程:Docker installation - Autoware Documentation (autowarefoundation.github.io)  (建议在本文的基础上参考官网安装教程,本文会指出所有安装过程中遇到的问题,但是根据电脑硬件和网络情况,还是会存在不同的问题)

注:鉴于水平有限,仅是根据官方文档总结的安装步骤以及一些报错的解决思路。因为之前在ubuntu18.04和ubuntu20.04分别安装了ai和universe版本,中间踩了比较多的坑,所以留个记录。这次在ubuntu22.04中安装明显感觉报错会少很多,因此推荐有开发和使用意向的安装最新版的ubuntu,功能确实更加全面,也是autoware官方推荐的版本。

2. ROS2 Humble和git安装 

2.1 ros2 humble安装(对应ubuntu22.04,仅源码安装需要)

这里推荐鱼香ros一键安装(小鱼的一键安装系列 | 鱼香ROS (fishros.org.cn)

wget http://fishros.com/install -O fishros && . fishros

2.2 git安装 

sudo apt-get -y update

sudo apt-get -y install git

3. 克隆autoware代码

# 从github中克隆代码

git clone https://github.com/autowarefoundation/autoware.git

# 进入文件夹

cd autoware

 4.自动安装依赖项(推荐)

1.源码安装

./setup-dev-env.sh

 2.docker安装

./setup-dev-env.sh docker

5. 手动安装依赖项(在一键配置失效下使用,这里仅列出docker安装中需要的依赖)

本文按照官网的Docker installation for development安装教程进行安装,主要有以下四个依赖:

 5.1 cuda安装

官方链接:autoware/ansible/roles/cuda at main · autowarefoundation/autoware · GitHub

# 执行拉取命令

wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env

# Ubuntu20.04和Ubuntu22.04都可以使用以下代码

if [[ "$(uname -m)" == "x86_64" ]]; then
  liburcu6_url=http://archive.ubuntu.com/ubuntu
else
  liburcu6_url=http://ports.ubuntu.com/ubuntu-ports
fi
sudo echo "deb $liburcu6_url focal main restricted" > /etc/apt/sources.list.d/focal.list

# Ubuntu20.04和Ubuntu22.04都可以使用以下代码
os=ubuntu2004
wget https://developer.download.nvidia.com/compute/cuda/repos/$os/$(uname -m)/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo apt-get update
cuda_version_dashed=$(eval sed -e "s/[.]/-/g" <<< "${cuda_version}")
sudo apt-get -y install cuda-${cuda_version_dashed}

 5.2 docker engine安装

官方链接:Docker installation for quick start - Autoware Documentation

# 移除旧版本

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

# 添加密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 安装依赖
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 验证是否安装成功
sudo docker run hello-world
# Note: This command downloads a test image and runs it in a container. When the container runs, it prints a message and exits.

5.3  NVIDIA Container Toolkit安装

官方链接:autoware/ansible/roles/nvidia_docker at main · autowarefoundation/autoware · GitHub

# 安装功能包依赖和GPG密钥
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add - \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 更新软件源并安装nvidia-docker2 软件包
sudo apt-get update
sudo apt-get install -y nvidia-docker2

# 设置运行时间并重启docker

sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

5.4 rocker安装

官方链接:autoware/ansible/roles/rocker at main · autowarefoundation/autoware · GitHub

# 在系统中加入ros2依赖(出现报错,见下文解决方法)

sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

# 在sourse list中加入依赖
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

# 更新并安装

sudo apt update
sudo apt-get install python3-rocker

出错指令: 

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

这一步出现报错 Failed to connect to raw.githubusercontent.com port 443: Connection refused

原因是被墙了,解决方法如下:

# 进入目标文件并给权限(如果不熟悉vim操作可以直接手动进入,之后在目标文件夹执行chmod 777 hosts命令就可以了)

sudo vim /etc/hosts

# 在文本中加上一行
199.232.28.133 raw.githubusercontent.com

 报错成功解决。

 6. 创建工作空间(docker安装所需的额外步骤标红)

  1. 创建 autoware_map 文件夹

    mkdir ~/autoware_map
    
  2. 拉取Docker(速度很慢,且有报错,见下文解决方法)

    docker pull ghcr.io/autowarefoundation/autoware-universe:latest-cuda
    
  3. 启动docker

    • amd64构架的电脑配备NVIDIA GPU:

      rocker --nvidia --x11 --user --volume $HOME/autoware --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda
      
    • 非NVIDIA GPU或者非amd64构架:

      rocker -e LIBGL_ALWAYS_SOFTWARE=1 --x11 --user --volume $HOME/autoware --volume $HOME/autoware_map -- ghcr.io/autowarefoundation/autoware-universe:latest-cuda
      

    进入autoware文件夹:

    cd autoware
    
  4. 创建src目录并克隆依赖项(src中的文件需要梯子下载,链接文末提供)

    mkdir src
    vcs import src < autoware.repos
    
  5. 更新依赖(存在报错,见下文)

    sudo apt update
    rosdep update
    rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
    
  6. 编译(如果某个安装包出错可以在csdn中单独检索并编译)

    colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
    

出错指令 1:

docker pull ghcr.io/autowarefoundation/autoware-universe:latest-cuda

这一步出现报错 permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=ghcr.io%2Fautowarefoundation%2Fautoware-universe&tag=latest-cuda": dial unix /var/run/docker.sock: connect: permission denied,解决方法如下(Docker指令报错的解决方法:Got permission denied while trying to connect to the Docker daemon socket at unix:/_术业还未专攻的博客-CSDN博客):

第一步:sudo gpasswd -a username docker  #将普通用户username加入到docker组中,username这个字段也可以直接换成$USER。

第二步:newgrp docker  #更新docker组

第三步:再执行你报错的命令,此时就不会报错了。

注意,这一步执行非常耗时,有一个8.xGB的文件需要下载。之前在别的电脑安装时采取过换源、换手机热点等操作,速度有一定提升,感兴趣的可以查找相关教程,这里分享一个后台执行命令,确保命令执行期间不会中断。

 # 安装screen工具箱,执行后台命令

sudo apt get install screen

# 创建后台端口

screen -S autoware

# 查看后台端口

screen -ls

出错指令 2:

rosdep update

这一步会出现不同类型的报错,总的来说还是网络的问题,导致无法更新,常用的解决方法在ubuntu20.04和ubuntu22.04上都失效了,最后在清华源的官网上找到一个解决方法

错误: ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/ma

解决方法1(可以做尝试,但是包括这个方法在内的很多方法笔者都试过了,全部失效)

Ubuntu20.04 rosdep update失败解决方法 - 知乎

解决方法2(成功)

 rosdistro | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

# 手动模拟 rosdep init
sudo mkdir -p /etc/ros/rosdep/sources.list.d/
sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
# 为 rosdep update 换源
export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
rosdep update

# 每次 rosdep update 之前,均需要增加该环境变量
# 为了持久化该设定,可以将其写入 .bashrc 中,例如
echo 'export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc

至此,autoware.universe成功安装,后续的demo运行及相关功能的调试可继续关注后续文章。

所需的一些文档和src文件:链接:链接:  https://pan.baidu.com/s/1chKVBHtdsQEeiO-BdWR9Xw?pwd=1234 提取码: 1234
--来自百度网盘超级会员v4的分享

  • 12
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值