Autoware作为开源的自动驾驶软件,受网络限制和技术复杂性影响,安装有一定困难,本文目的在于总结并简化工作,提升效率。
-
准备工作和相关知识
ROS1版本 | Ubuntu版本 | ROS2版本 | Ubuntu版本 |
Kinetic | Ubuntu 16.04 | Foxy | Ubuntu 20.04 |
Melodic | Ubuntu 18.04 | Galactic | Ubuntu 20.04 |
Noetic | Ubuntu 20.04 | Humble | Ubuntu 22.04 |
Autoware基于ROS(Robot Operation System机器人操作系统)开发,早期ROS1基于Ubuntu操作系统,虽然ROS2支持苹果和Windows操作系统,但应用最广泛还是Ubuntu,它们的版本对应关系如下表所示:
安装过程并不复杂,主要参考官网链接,并在网上搜索资源,一并致谢:
https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/
多数问题在于网络不稳定和部分网站如raw.githubusercontent.com访问失败,需要修改文件和从其他渠道下载
相关准备工作:
- HTTP服务器,如电脑管家自带的HFS HTTP server,用于离线下载文件传到系统。
-
安装autoware
参考Windows安装Ubuntu双系统(Win11+最新Ubuntu22.04.1LTS)_syluxhch的博客-CSDN博客,需要通过BIOS修改,安装Windows和ubuntu的双系统。最新的版本为Ubuntu 22.04,对于ROS为Humble。
- 工作空间的建立
- mkdir autoware
- sudo apt-get -y update
- sudo apt-get -y install git #安装git配置管理工具
- git clone https://github.com/autowarefoundation/autoware.git
这里遇到的第一个问题就是github网站访问速度非常慢,所以建议直接修改为国内的镜像网站kgithub.com,修改命令为:
- git clone https://kgithub.com/autowarefoundation/autoware.git
- cd autoware
- 安装ROS
wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env
这里就会遇到raw.githubusercontent.com超时无法连接的问题,问题根源在于DNS错误,所以需要修改系统的host文件,表明该域名对应的IP地址,由于地址动态可变,建议用https://tool.lu/ip/查找最新地址,增加一行:
- 185.199.110.133 raw.githubusercontent.com
如果遇到权限问题,需要增加权限修改。
- sudo chown 用户 -R /etc/hosts
其他命令执行应该顺利:
- apt-cache policy | grep universe
- sudo apt install software-properties-common
- sudo add-apt-repository universe
- sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
- 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
- installation_type=desktop
- sudo apt install ros-${rosdistro}-${installation_type}
- echo '' >> ~/.bashrc && echo "source /opt/ros/${rosdistro}/setup.bash" >> ~/.bashrc
在执行sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg,如果遇到问题,可以通过网站访问,本地建立http服务器,重新执行如下:
- curl -sSL http://172.16.17.20/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
- 安装ROS 2 Dev Tools
- apt update
- apt install -y python3-flake8-docstrings python3-pip python3-pytest-cov ros-dev-tools
- apt install -y python3-flake8-blind-except python3-flake8-builtins python3-flake8-class-newline python3-flake8-comprehensions python3-flake8-deprecated python3-flake8-import-order python3-flake8-quotes python3-pytest-repeat python3-pytest-rerunfailures
- sudo rosdep init
- rosdep update
这里遇到的问题主要是rosdep update:同样是访问raw.githubusercontent.com问题,参考https://blog.csdn.net/weixin_43311920/article/details/114796748?utm_source=app&app_version=4.5.4,处理方法如下:
- cd autoware
- git clone https://kgithub.com/ros/rosdistro.git
- vi /autoware/rosdistro/rosdep/sources.list.d/20-default.list #将里面所有的 raw.githubusercontent.com替换为file:///autoware/
然后分别修改以下文件:
- vi /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support.py
- #修改:FUERTE_GBPDISTRO_URL = 'file:///autoware/rosdistro/releases/fuerte.yaml'
- vi /usr/lib/python3/dist-packages/rosdep2/rep3.py
- #修改: REP3_TARGETS_URL = 'file:///autoware/rosdistro/releases/targets.yaml'
- vi /usr/lib/python3/dist-packages/rosdep2/sources_list.py
- #修改:DEFAULT_SOURCES_LIST_URL = 'file:///autoware/rosdistro/rosdep/sources.list.d/20-default.list'
- vi /usr/lib/python3/dist-packages/rosdistro/__init__.py
- 修改:DEFAULT_INDEX_URL = 'file:///autoware/rosdistro/index-v4.yaml'
- mkdir -p /etc/ros/rosdep/sources.list.d
- vi /etc/ros/rosdep/sources.list.d/20-default.list
- yaml file:///autoware/rosdistro/rosdep/osx-homebrew.yaml osx
- yaml file:///autoware/rosdistro/rosdep/base.yaml
- yaml file:///autoware/rosdistro/rosdep/python.yaml
- yaml file:///autoware/rosdistro/rosdep/ruby.yaml
- gbpdistro file:///autoware/rosdistro/releases/fuerte.yaml fuerte
- RMW Implementation
安装RMW没有问题,注意rosdistro是大写,有些系统区分大小写。如果执行不正确就加上环境变量:rosdistro=humble
- sudo apt update
- rmw_implementation_dashed=$(eval sed -e "s/_/-/g" <<< "${rmw_implementation}")
- sudo apt install ros-${rosdistro}-${rmw_implementation_dashed}
- echo '' >> ~/.bashrc && echo "export RMW_IMPLEMENTATION=${rmw_implementation}" >> ~/.bashrc
- RMW Implementation
- sudo apt update
- rmw_implementation_dashed=$(eval sed -e "s/_/-/g" <<< "${rmw_implementation}")
- sudo apt install ros-${rosdistro}-${rmw_implementation_dashed}
- echo '' >> ~/.bashrc && echo "export RMW_IMPLEMENTATION=${rmw_implementation}" >> ~/.bashrc
- pacmod安装
- apt install apt-transport-https
- sh -c 'echo "deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/autonomoustuff-public.list'
- apt update
- apt install ros-${rosdistro}-pacmod3
- Autoware Core dependencies安装
- pip3 install gdown
- autoware_universe安装
- sudo apt install geographiclib-tools
- sudo geographiclib-get-geoids egm2008-1
- pre-commit dependencies安装
- clang_format_version=16.0.0
- pip3 install pre-commit clang-format==${clang_format_version}
- sudo apt install golang
- cuda安装
- 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
- 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}
- echo 'export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}' >> ~/.bashrc
- echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
- tensorrt安装
- sudo apt-get install libcudnn8=${cudnn_version} libcudnn8-dev=${cudnn_version}
- sudo apt-mark hold libcudnn8 libcudnn8-dev
- sudo apt-get install libnvinfer8=${tensorrt_version} libnvonnxparsers8=${tensorrt_version} libnvparsers8=${tensorrt_version} libnvinfer-plugin8=${tensorrt_version} libnvinfer-dev=${tensorrt_version} libnvonnxparsers-dev=${tensorrt_version} libnvparsers-dev=${tensorrt_version} libnvinfer-plugin-dev=${tensorrt_version}
- sudo apt-mark hold libnvinfer8 libnvonnxparsers8 libnvparsers8 libnvinfer-plugin8 libnvinfer-dev libnvonnxparsers-dev libnvparsers-dev libnvinfer-plugin-dev
-
运行autoware
-
下载源码
由于源码服务器位于github.com, 用vi autoware.repos 将所有github.com 修改为镜像网站kgithub.com,否则下不下来。
-
- cd autoware
- mkdir src
- vcs import src < autoware.repos
-
安装ROS
-
- source /opt/ros/humble/setup.bash
- rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
-
构建工作空间
- colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
如果不出意外,Autoware就安装成功了,现在可以运行演示程序了。