Unbuntu22.04基于ROS Humble源码安装autoware.universe

本文用于记录在Ubuntu22.04系统上,基于ROS Humble源码安装Autoware.universe,便于后续安装。

参考

Autoware.universe官网源码安装
https://blog.csdn.net/zardforever123/article/details/132029636
https://blog.csdn.net/lilin020401/article/details/126475351

安装git

sudo apt-get -y update
sudo apt-get -y install git

1、克隆Autoware程序到本地

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

注:Autoware官网会有自动安装依赖的命令:

cd autoware
./setup-dev-env.sh

但是一般不得行,因此按官网步骤安装
在这里插入图片描述

接下来安装官网教程逐步安装:

1.1 安装Ros Humble

通过鱼香Ros安装Ros Humble真的很香

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

在弹出来的页面依次选择:
[1]:一键安装:ROS(支持ROS和ROS2,树莓派Jetson)
[1]:更换系统源再继续安装
[2]:更换系统源并清理第三方源
[1]:Humble(Ros2)
[1]:Humble(Ros2)桌面版

注:从此处开始使用阿里的源(http://mirrors.aliyun.com/ubuntu)安装

1.2 安装Ros2 dev tools

sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  wget \
  ros-dev-tools \
  python3-pip \
  python3-rosdep \
  python3-setuptools \
  python3-vcstool \
  python3-testresources \
  python3-pytest \
  python3-pytest-cov \
  python3-pytest-repeat \
  python3-pytest-rerunfailures \
  python3-colcon-common-extensions \
  python3-flake8 \
  python3-flake8-docstrings \
  python3-flake8-blind-except \
  python3-flake8-builtins \
  python3-flake8-class-newline \
  python3-flake8-comprehensions \
  python3-flake8-deprecated \
  python3-flake8-import-order \
  python3-flake8-quotes \ 

然后:

sudo rosdep init
rosdep update

如sudo rosdep init报错:

ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

原因是GitHub的raw.githubusercontent.com无法连接,需要解决GitHub的raw.githubusercontent.com无法连接问题
通过https://www.ipaddress.com/首页,输入raw.githubusercontent.com查询到真实IP地址,修改hosts Ubuntu:

sudo gedit /etc/hosts

在最后添加:185.199.108.133 raw.githubusercontent.com 保存退出,然后:

sudo /etc/init.d/network-manager restart

后续找到一种更好的办法:

# 手动模拟 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

1.3 安装RMW_Implementation

cd autoware
source amd64.env
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

1.4 安装pacmod

cd autoware
source amd64.env
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

1.5 安装Autoware Core依赖

pip3 install gdown -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

1.6 安装Autoware Universe依赖

sudo apt install geographiclib-tools
##下一行命令时间有点长
sudo geographiclib-get-geoids egm2008-1

1.7 安装pre-commit依赖

clang_format_version=16.0.0
pip3 install pre-commit clang-format==${clang_format_version} -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
sudo apt install golang

1.8 安装Nvidia驱动

sudo apt update     #更新软件源
sudo add-apt-repository ppa:graphics-drivers      #添加ppa仓库
sudo apt update
sudo apt-cache search nvidia     #查看可安装的版本驱动

在安装驱动之前,如果已经安装过NVIDIA驱动,那么可使用以下命令卸载所有Nvidia驱动

sudo apt-get remove --purge nvidia*

确定要安装的驱动程序版本后,即可使用命令安装,我安装的是525

sudo apt-get install nvidia-driver-525

最后如果报以下错误;

update-initramfs: Generating /boot/initrd.img-6.2.0-32-generic
I: The initramfs will attempt to resume from /dev/nvme1n1p4
I: (UUID=2a9cda87-dea0-4c9d-8bae-4ce515c8d458)
I: Set the RESUME variable to override this.

请参考:解决办法,然后重启即可。

1.9 安装Cuda

Cuda官网下载对应版本的Cuda,Autoware文件中的amd64.env中写的Cuda版本为11.6,但是11.6是只支持18.04和20.04,因此我下载的是11.7:

#时间较长,可以吃个西瓜,哈哈
wget https://developer.download.nvidia.com/compute/cuda/11.7.0/local_installers/cuda_11.7.0_515.43.04_linux.run
sudo sh cuda_11.7.0_515.43.04_linux.run

在这里插入图片描述
在这里插入图片描述
然后敲回车取消安装显卡驱动
在这里插入图片描述
在这里插入图片描述
安装完成之后添加环境变量

echo 'export PATH=/usr/local/cuda-11.7/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc

刷新环境变量

source ~/.bashrc

最后查看Cuda版本验证是否安装成功

nvcc -V

1.10 安装Cudnn

Ubuntu22.04系统下,CUDA11.7对应的cuDNN v8.4.1.5版本,在Nvidia官网的Cudnn下载页面下载对应版本为cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar.xz
在这里插入图片描述
下载第二个,进行解压

tar -xvf cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive.tar.xz

然后使用以下命令将其复制到cuda文件夹下:

    sudo cp cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive/include/cudnn*.h /usr/local/cuda/include 
    sudo cp -P cudnn-linux-x86_64-8.4.1.50_cuda11.6-archive/lib/libcudnn* /usr/local/cuda/lib64
    sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

完成后使用命令查看版本信息

cat /usr/local/cuda-11.7/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

在这里插入图片描述

1.11 安装TensorRT

1、安装
安装版本为8.4.2.4版本,在Nvidia官网的TensorRT
下载页面
下载对应的TensorRT-8.4.2.4.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz
在这里插入图片描述下载第一个,进行解压

tar -xvf TensorRT-8.4.2.4.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz

我把解压后的文件放到了home下,sudo gedit ~/.bashrc 修改环境变量,在最后添加:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/TensorRT-8.4.2.4/lib

source ~/.bashrc 刷新一下
2、测试样例

cd TensorRT-8.4.2.4/samples/sampleMNIST
make -j16
cd ../../bin/
./sample_mnist

最后一步报错:

./sample_mnist: error while loading shared libraries: libnvinfer.so.8: cannot open shared object file: No such file or directory

通过 sudo gedit /etc/ld.so.conf 需要加入环境配置,添加 TensorRT lib 的路径

/home/TensorRT-8.4.2.4/lib

然后 sudo ldconfig
把TensorRT根目录中的/lib/下面的文件复制到 /usr/lib/下,把TensorRT根目录中的/include/下面的文件复制到 /usr/include/下

sudo cp -r TensorRT-8.4.2.4/lib/* /usr/lib
sudo cp -r TensorRT-8.4.2.4/include/* /usr/include

再执行测试样例即可
在这里插入图片描述
3、安装python包
进入TensorRT根目录下的python/目录下,可以看到多个版本的python包
在终端执行python3,查看自己的Python版本,可以看到我的是python3.10版,所以这里选择安装tensorrt-8.4.2.4-cp310-none-linux_x86_64.whl

执行安装命令:

pip install --force-reinstall tensorrt-8.4.2.4-cp310-none-linux_x86_64.whl

测试:

python3
import tensorrt
tensorrt.__version__

可以查看到tensorrt版本号

2、Autoware源码安装

2.1 下载Autoware.universe源码

进入autoware文件夹,打开autoware.repos文件,对文件中的每个网址前添加代理,加上https://ghproxy.com/,如下所示:

repositories:
  # core
  core/autoware_msgs:
    type: git
    url: https://ghproxy.com/https://github.com/autowarefoundation/autoware_msgs.git
    version: main
  core/autoware_adapi_msgs:
    type: git
    url: https://ghproxy.com/https://github.com/autowarefoundation/autoware_adapi_msgs.git
    version: main
  core/autoware_common:
    type: git
    url: https://ghproxy.com/https://github.com/autowarefoundation/autoware_common.git
    version: main

然后开始下载源码

cd autoware
mkdir src
vcs import src < autoware.repos

2.2 安装ROS依赖包

source /opt/ros/humble/setup.bash
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

2.3 编译

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

编译报错
trtexec_vendor包编译未通过导致编译失败,为trtexec_vendor包中git clone的依赖库下载失败(网络问题)
在autoware/src中找到对应程序包,将cmakelist中34行:

GIT_REPOSITORY https://github.com/NVIDIA/TensorRT

网址前添加代理https://ghproxy.com/,修改为:

GIT_REPOSITORY https://ghproxy.com/https://github.com/NVIDIA/TensorRT

保存后推出,删除编译文件 build、log和install/,重新编译即可

3 运行

cd autoware
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_kit

3.1 规划样例

下载demo地图数据包

gdown -O ~/autoware_map/ 'https://docs.google.com/uc?export=download&id=1499_nsbUbIeturZaDj7jhUownh5fvXHd'
unzip -d ~/autoware_map ~/autoware_map/sample-map-planning.zip

在home下创建autoware_map文件夹,将demo地图包放到autoware_map下

cd autoware
source ~/autoware/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_kit

在这里插入图片描述点击界面上方的2D Pose Estimate指定起点(demo地图数据包为日本录制,为右舵,国内为左舵),2D Goal Pose指定终点,路径规划成功后点击OperationMode中的Auto即可实现自动驾驶
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yz2630570484/article/details/132902294