文章目录
- 引言
- 一、安装依赖
- 1.1 安装git
- 1.2 克隆Autoware到本地
- 1.3 自动安装相关依赖
- 1.4 安装显卡驱动
- 1.5 安装ROS2 Galactic
- 1.6 安装ros2_dev_tools
- 1.7 安装rmw_implementation
- 1.8 安装pacmod
- 1.9 安装autoware_core
- 1.10 安装autoware universe dependencies
- 1.11 安装pre_commit
- 1.12 安装CUDA
- 1.13 安装cuDNN and TensorRT
- 二、编译源码
- 2.1 下载Universe代码库
- 2.2 安装 Autoware ROS依赖包
- 2.3 编译工作空间
- 三、安装Awsim
- 四、Autoware与Awsim联调
引言
本文介绍Autoware.universe在Ubuntu20.04中的详细安装步骤,基于ROS2 Galactic,其官方网站:Autoware Documentation
注意
:左上角选择Galactic
版本
最终运行效果:
一、安装依赖
在第3步自动安装依赖时,可以将ROS2 Galactic一并安装,也可以提前自己手动安装。
1.1 安装git
sudo apt-get -y update
sudo apt-get -y install git
1.2 克隆Autoware到本地
mkdir autoware_universe
cd autoware_universe/
git clone https://github.com/autowarefoundation/autoware.git -b galactic
1.3 自动安装相关依赖
cd autoware
./setup-dev-env.sh
试了一下这个不太行,接下来再全部手动安装,按照官方给定的每一步骤链接进入获得安装命令(注意
:进入之后要选择Galactic版本
,如下图左上角,但是官方给的实际上有一点点问题,可以参考我下面的步骤):
1.4 安装显卡驱动
查看推荐显卡
ubuntu-drivers devices
安装recommend推荐显卡版本,这里推荐的是535版本
sudo apt-get install nvidia-driver-535
要选择版本不然会自动更新内核。 但是我安装535会黑屏,只能安装了510,由于是刚安装的系统,更新了内核也没太大的影响,另外安装版本太低的话也不行,因为下面安装CUDA要求最小版本
1.5 安装ROS2 Galactic
鱼香ros一键安装:
wget http://fishros.com/install -O fishros && . fishros
- 选择[1]:一键安装:ROS(支持ROS和ROS2,树莓派Jetson)
- 选择[1]:更换系统源再继续安装,若是已经换过源可以选择[2]不更换源
- 选择[2]:更换系统源并清理第三方源
- 选择[3]:galactic(ROS2)
- 选择[1]:galactic(ROS2)桌面版
1.6 安装ros2_dev_tools
sudo apt update && sudo apt install -y \
build-essential \
cmake \
git \
python3-colcon-common-extensions \
python3-flake8 \
python3-pip \
python3-pytest-cov \
python3-rosdep \
python3-setuptools \
python3-vcstool \
wget
python3 -m pip install -U \
flake8-blind-except \
flake8-builtins \
flake8-class-newline \
flake8-comprehensions \
flake8-deprecated \
flake8-docstrings \
flake8-import-order \
flake8-quotes \
pytest-repeat \
pytest-rerunfailures \
pytest \
setuptools
如果报以上的错误,就安装依赖:
sudo apt install python3-testresources
下面命令若是遇到问题可以参考文章:Ubuntu20.04同时安装ROS1和ROS2共存,或者使用鱼香ROS rosdepc
sudo rosdep init
rosdep update
1.7 安装rmw_implementation
# wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/main/amd64.env && source /tmp/amd64.env
# 注意官网给的是mian,humble的,需要改成galactic
wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/galactic/amd64.env && source /tmp/amd64.env
如果第一句报以下问题:拒绝连接,有两种解决办法(推荐第二种
)
(1)科学上网
(2)amd64.env是一些软件对应版本的环境变量,我们其实在1.2节已经下载了,source一下就好了
cd autoware_universe/
source amd64.env
# For details: https://docs.ros.org/en/galactic/How-To-Guides/Working-with-multiple-RMW-implementations.html
sudo apt update
rmw_implementation_dashed=$(eval sed -e "s/_/-/g" <<< "${rmw_implementation}")
sudo apt install ros-${rosdistro}-${rmw_implementation_dashed}
# (Optional) You set the default RMW implementation in the ~/.bashrc file.
echo '' >> ~/.bashrc && echo "export RMW_IMPLEMENTATION=${rmw_implementation}" >> ~/.bashrc
下面这句报以下错误,将ROS版本变量改成galactic(报这个错是因为下载了main-对应humble的amd.env,上面改成galactic版本理论上就不会报这个错)
1.8 安装pacmod
# wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/galactic/amd64.env && source /tmp/amd64.env
cd autoware_universe/
source amd64.env
# Taken from https://github.com/astuff/pacmod3#installation
sudo apt install apt-transport-https
sudo sh -c 'echo "deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/autonomoustuff-public.list'
sudo apt update
sudo apt install ros-${rosdistro}-pacmod3
wget上面已经处理过一次了,这里可以只source(找不到就再复制一次)
1.9 安装autoware_core
pip3 install gdown
1.10 安装autoware universe dependencies
sudo apt install geographiclib-tools
# Add EGM2008 geoid grid to geographiclib
# 下面过程很慢,耐心等待
sudo geographiclib-get-geoids egm2008-1
1.11 安装pre_commit
clang_format_version=14.0.6
pip3 install pre-commit clang-format==${clang_format_version}
# Install Golang (Add Go PPA for shfmt)
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt install golang
1.12 安装CUDA
# wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/galactic/amd64.env && source /tmp/amd64.env
cd autoware_universe/
source amd64.env
# Modified from:
# https://developer.nvidia.com/cuda-11-4-4-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_network
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
sudo apt-get update
cuda_version_dashed=$(eval sed -e "s/[.]/-/g" <<< "${cuda_version}")
sudo apt install cuda-${cuda_version_dashed} --no-install-recommends
一般来说以上过程会安装成功,但是安装最后一步的时候可能报下面的错,有以下两种解决办法(推荐第二种):
(1)使用aptitude能调整依赖版本(慎用,建议
用第二种方法)
sudo apt-get install aptitude
sudo aptitude install cuda-${cuda_version_dashed}
--no-install-recommends
参数是用于在安装软件包时禁止安装推荐的附加软件包,只安装 CUDA 11.6 的核心组件,可以帮助减少安装的软件包数量,节省磁盘空间并降低系统中的冗余,不需要可以取消。
选择Y会重装显卡驱动(我的会重装535,但是会黑屏,因此没有用这个办法)
(2)使用手动安装方法:
nvidia-smi
查看显卡驱动支持最高CUDA版本是12.1, 到cuda-toolkit-archive,选择需要的CUDA(最好是env中写的11.6.2)版本下载,如下图,选择runfile(local),并使用生成的指令进行下载和安装
回车取消安装显卡驱动,然后选择最后的安装:
安装成功之后环境配置,在.bashrc文件末尾添加环境变量:
sudo gedit ~/.bashrc
# 添加以下内容:
export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
或者终端输入以下命令添加:
# Taken from: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#post-installation-actions
echo 'export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
验证是否安装成功
nvcc -V
1.13 安装cuDNN and TensorRT
# wget -O /tmp/amd64.env https://raw.githubusercontent.com/autowarefoundation/autoware/galactic/amd64.env && source /tmp/amd64.env
cd autoware_universe/
source amd64.env
# Taken from: https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing
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
二、编译源码
2.1 下载Universe代码库
(1)创建 src 文件夹
cd autoware_universe/
mkdir src
(2)修改 autoware.repos 文件
sudo gedit autoware.repos
在autoware.repos 文件中,28行位置加入以下内容
universe/external/open_planner:
type: git
url: https://github.com/ZATiTech/open_planner.git
version: main
(3)下载代码库到本地
vcs import src < autoware.repos
2.2 安装 Autoware ROS依赖包
(1)安装rosdep
wget http://fishros.com/install -O fishros && . fishros
# 选择[3]:一键配置:rosdep(小鱼的rosdepc,又快又好用)
rosdep update --include-eol-distros # 科学上网或者多试几次
(2)安装ROS依赖
source /opt/ros/galactic/setup.bash
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
安装ROS依赖时报错:
/usr/bin/pip3:6: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
from pkg_resources import load_entry_point
参考https://blog.csdn.net/yuteng12138/article/details/130123995:
pip install --upgrade --user setuptools==58.3.0
安装时依赖版本太高:
ros-galactic-tvm-vendor : Depends: ocl-icd-opencl-dev but it is not going to be installed
使用aptitude可以对依赖降级,:保持原状N,接下来全输入y
sudo aptitude install ros-galactic-tvm-vendor
安装ROS依赖时,安装open3d速度慢,报错问题可以参考:https://blog.csdn.net/yuteng12138/article/details/130123620
pip install open3d
2.3 编译工作空间
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
在编译过程中卡死或者崩溃,或者其他问题,可以多试几次或者参考官方:build-issues
简单运行Universe,$HOME/autoware_map/sample-map-planning为从官方下载的地图:
source install/setup.bash
ros2 launch autoware_launch planning_simulator.launch.xml map_path:=$HOME/autoware_map/sample-map-planning vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kitre_launch/launch/autoware.launch.xml map_path:=/home/universe/autoware_universe/op_carla/Town01 vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit
三、安装Awsim
参考官方教程AWSIM v1.0.1,安装依赖:
sudo apt update
sudo apt install libvulkan1
下载Awsim二进制文件:AWSIM_v1.0.1.zip,解压之后运行:
./<path to AWSIM folder>/AWSIM.x86_64
目前官方的模拟器功能还比较少,只有下方进度条可以调节渲染频率
开启后可以看到模拟器输出的传感器消息以及接收的底盘控制消息:
ros2 topic list
四、Autoware与Awsim联调
首先下载模拟器地图:nishishinjuku_autoware_map.zip,包括高精地图以及点云地图。
同时启动Awsim和Autoware,注意更换为你下载的地图地址
./<path to AWSIM folder>/AWSIM.x86_64
# 新开一个终端
cd autoware_universe
source install/setup.bash
ros2 launch autoware_launch e2e_simulator.launch.xml vehicle_model:=sample_vehicle sensor_model:=awsim_sensor_kit map_path:=<your mapfile location>
利用RViz手动设置2D Pose Estimate
,使用RViz手动设置2D Goal Pose,设置2d Checkpoint Pose
(可选),路径生成。
新启动一个终端,发布以下消息(或者点击RVIZ中的Engage),开启自动驾驶:
ros2 topic pub /autoware/engage autoware_auto_vehicle_msgs/msg/Engage '{engage: True}' -1