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.

问题直接原因应为/swap分区的UUID被修改后而没有加入RESUME file

解决办法

首先使用如下命令打印/swap分区的UUID号,比对一下确认和上面的系统打印输出一致,锁定为该问题

blkid | awk -F\" '/swap/ {print $2}'

然后使用如下命令写入/swap分区的UUID号

printf "RESUME=UUID=$(blkid | awk -F\" '/swap/ {print $2}')\n" | sudo tee /etc/initramfs-tools/conf.d/resume

更新内核文件

sudo update-initramfs -u

最后重启即可

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即可实现自动驾驶
在这里插入图片描述

<think>好的,我现在需要回答用户关于Ubuntu 22.04适用的ROS版本的问题。根据提供的引用资料,首先需要确认ROS1和ROS2的对应情况。 引用[1]提到,Ubuntu 22.04对应的ROS2版本是Humble Hawksbill,并且每个ROS版本都有对应的Ubuntu版本,不可随意安装。这点非常重要,直接回答了用户的问题。 接下来,引用[2]指出ROS1的Noetic Ninjemys是最后一个支持Ubuntu 20.04的版本,官方不再支持之后的Ubuntu版本。但用户询问的是Ubuntu 22.04,所以ROS1可能不被官方支持。不过可能有社区或非官方的方法,但需要谨慎处理。 引用[3]和[4]提供了安装ROS2 Humble的步骤和常见问题解决方法,进一步确认HumbleUbuntu 22.04的官方支持版本。因此,综合所有引用信息,可以明确告诉用户,官方推荐的是ROS2 Humble。对于ROS1,虽然可能有非官方途径,但存在兼容性问题,不建议新手使用。 最后,生成相关问题时,需要考虑用户可能的后续疑问,例如安装步骤、ROS1的替代方案等,确保覆盖常见问题。</think>根据ROS版本与Ubuntu系统的对应关系,**适用于Ubuntu 22.04的官方支持ROS版本为ROS2 Humble Hawksbill**[^1][^3][^4]。这是专为Ubuntu 22.04设计的长期支持(LTS)版本,兼容性经过官方验证。 ### 详细说明 1. **ROS2版本选择** - ROS2 Humble Hawksbill是专为Ubuntu 22.04设计的版本,支持至2027年 - 可通过官方命令安装: ```bash sudo apt install ros-humble-desktop ``` - 安装后可使用`ros2 run demo_nodes_cpp listener`测试环境 2. **ROS1的兼容性** - ROS1的最后一个版本Noetic Ninjemys仅支持到Ubuntu 20.04,官方未提供对Ubuntu 22.04的支持[^2] - 若需在Ubuntu 22.04使用ROS1,需通过第三方适配或源码编译,但存在稳定性风险
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值