赞
踩
使用docker手动安装autoware环境,参考文章,中间踩过很多坑,特此记录一下。我电脑配置如下,有同样配置的小伙伴可以参考安装:
推荐使用鱼香ros一键安装,方便快捷。我之前主机上安装的是foxy版本,但是在后面配置autoware环境时发现好像ros2要求的是humble版,建议还没安装ros2的,直接按照命令安装humble版的。
wget http://fishros.com/install -O fishros && . fishros
sudo apt-get -y update
sudo apt-get install git
官方链接: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}
这里提供两种方法,第一种就是最开始我参考的文章中所说的:
# 移除旧版本 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.
第二种方式,是我之前安装的方法,使用鱼香ros一键安装,选择docker安装即可。
wget http://fishros.com/install -O fishros && . fishros
官方链接: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
官方链接:autoware/ansible/roles/rocker at main · autowarefoundation/autoware · GitHub
# 在系统中加入ros2依赖
sudo apt update && sudo apt install curl gnupg lsb-release
# 报错(Failed to connect to raw.githubusercontent.com port 443: Connection refused),见下面解决方法
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
针对上述报错,在/etc/hosts文件中添加一行:
sudo vim /etc/hosts
# 进入hosts后
# 添加一行,参考:https://blog.csdn.net/qq_43531694/article/details/106862753
199.232.28.133 raw.githubusercontent.com
# 从github中克隆代码
git clone https://github.com/autowarefoundation/autoware.git
# 进入文件夹
cd autoware
mkdir ~/autoware_map
docker pull ghcr.io/autowarefoundation/autoware-universe:latest-cuda
# 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
在执行上述命令启动镜像时报错:“docker could not select device driver”,根据文章,发现是我之前没有安装NVIDIA Container Toolkit才报的错,故根据最开始的参考文章中5.3安装nvidia-docker2后报错消失。
cd autoware
最开始我是根据博主提供的百度云链接下载的src文件夹,直接将其放到autoware目录下。继续往下执行时在:
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
出现错误:
错误表示rosdep安装依赖时定位不到文件,经find查找发现,上面定位不到的文件全是src/文件夹下的,例如:
首先我本机的ros2版本是foxy的,但我看教程说的ros2安装版本是humble。其次,src/文件夹是我在百度网络直接下载别人的,可能这里有问题,于是,我将原本的src文件夹删除,重新根据下列命令加载src文件夹:
mkdir src
# 第一次报错>timeout,再次执行成功加载
vcs import src < autoware.repos
我估计还在是直接将src文件夹放进来,缺少一些依赖,或者我本机ros2是foxy版本,而autoware要求的是humble。因为在src文件夹加载完成后,查看ros路径,发现,docker下ros版本由foxy变为humble。
# 更新一下
source /opt/ros/humble/setup.bash
sudo apt update
rosdep update # 报错
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
在执行rosdep update时报错:
更新超出时间限制,参考文章,将update时间设置的久一些。首先定位到rosdep2的文件路径,然后修改 sources_list.py 、 gbpdistro_support.py 、 rep3.py三个文件中DOWNLOAD_TIMEOUT的值,默认情况下DOWNLOAD_TIMEOUT = 15.0,此处设定如下 DOWNLOAD_TIMEOUT = 10000.0
sudo find / -name rosdep2
# sources_list.py
sudo gedit /usr/lib/python3/dist-packages/rosdep2sources_list.py
# gbpdistro_support.py
sudo gedit /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
# rep3.py
sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。