Autoware.universe 高效学习第二章 -- 在 ubuntu22.04 + ros2 humble 安装 autoware.universe

1 前言和资料

上一篇博客 Autoware.universe 高效学习第一章 – 鸟瞰 autoware,我们对 autoware 进行了系统梳理,了解了 autoware 的昨天今天和明天。本文我们将安装 autoware.universe ,并实际运行下 autoware.universe 的样例,为后面的深入学习准备开发环境。
本文参考资料如下:
(1)autoware source install
(2)autoware planning simulation
(3)Autoware.universe部署01:Ubuntu20.04安装Autoware.universe并与Awsim联调

2 正文

2.1 基础环境和安装方式选择

(1)本人的基础环境:
硬件:本文选择一台 Thinkpad T14 i7 + Nvidia MX450。
操作系统:物理机安装 ubuntu22.04 ,不搞虚拟机,不搞双系统,运行效率最高。
ros2 版本:ros2 humble 。
英伟达显卡驱动版本:535.183.01 。
英伟达 cuda 编译器 nvcc 版本:V12.3.107
补充1:推荐读者使用 fishros 的脚本在 ubuntu22.04 一键安装 ros2 humble:

wget http://fishros.com/install -O fishros && . fishros
# 测试安装结果
printenv |grep ros

补充2:查看显卡驱动版本:

nvidia-smi

在这里插入图片描述
补充3:编译 autoware.universe 时,需要 nvcc 编译器,安装命令:

sudo apt install nvidia-cuda-toolkit
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
source ~/.bashrc
# 检查版本
nvcc -V

在这里插入图片描述

(2)安装方式选择:autoware 官方安装文档 给出了两种安装方式,一是 docker 安装,二是源码安装。通常来说采用 docker 安装最省劲,但是 docker 安装无法直接利用本人笔记本已经配置成熟的开发环境,对我而言上手成本比较高,因此选择了源码安装。而源码安装本质就是 ros2 开发那一套,即创造工作空间,拉取代码,编译运行,非常适合个人研究。

2.2 autoware 源码安装

(1)配置 ssh key 到 github,否则无法拉取和提交代码:请参考 Github配置ssh key的步骤(大白话+包含原理解释),这里不再赘述。
(2)Fork 一份 autoware 的入口仓库:访问 autoware,点击右上角 Fork 按钮,fork 一份 autoware 到自己的空间,方便修改和保存自己的代码。本人 fork 的仓库路径为:jieshoudaxue,autoware
补充:autoware 项目本身有很多个子仓库,见 autoware.repos,最典型的就是 autoware.core ,autoware.universe。这些仓库必须一块编译,系统才能运行,因此 autoware 提供了一个入口仓库,称之为 Meta-repository ,统一管理这些资源。
(3)使用 ssh 的方式,拉取自己空间内的 autoware 仓库:

cd ~
git clone git@github.com:Jieshoudaxue/autoware.git
cd autoware

(4)安装依赖:autoware 仓库内提供了一个脚本 setup-dev-env.sh,用来统一安装各种依赖,但实测发现,基本不可能成功!因此,请参考 autoware source install 中的提示,逐个安装依赖:
在这里插入图片描述
补充1:由于本人的环境已经安装了 ros2 humble 和 cuda,因此这两项的安装我就可以省略了。
补充2:由于本人预装的 cuda 版本为12.2,不同于原来仓库配置的 12.3 ,因此安装其他依赖前,我进行了版本调整:modify cuda version
(5)利用 autoware 作为工作空间,在其内部创建 src 目录,并拉取各个仓库源代码,为编译做准备:

cd ~/autoware
mkdir src
vcs import src < autoware.repos

踩坑1:autoware.repos 中,最大的就是 autoware.universe 仓库,里面有大文件,我使用 https 方式拉取总是失败,改为 ssh 方式后拉取成功:up autoware.universe link。拉取失败错误信息如下:

=== src/universe/autoware.universe (git) ===
Could not clone repository 'https://github.com/autowarefoundation/autoware.universe.git': Cloning into '.'...
error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8)
error: 4519 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

(6)编译整个 autoware :如果一切顺利的话,最后将在 autoware 内生成 build,install,log 三个目录,可执行程序就在 install 目录内

cd ~/autoware
colcon build
# 如果更改了某个 package ,如 tensorrt_yolox,可以使用如下命令单独编译
colcon build  --packages-select tensorrt_yolox

在这里插入图片描述

2.3 运行样例,测试安装是否成功

(1)下载高精地图到 ~/autoware_map

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

(2)启动 autoware

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

在这里插入图片描述
几种常用操作:
第一,按住鼠标左键并移动,可以旋转地图;
第二,按住 shift 键 + 鼠标左键并移动,可以拖动地图;
第三,滚动鼠标滚轮可以放大和缩小地图;
(3)行车样例
第一,按一下 P 键,然后鼠标在任一车道中间找一个点作为起点,点击左键并按住不放,移动鼠标,将箭头(车头)与车道平行,并确保方向符合车道要求,此时会出现一个小车。
第二,按一下 G 键,然后鼠标在车辆行进前方的车道中间找一个点作为终点,点击左键并按住不放,移动鼠标,将箭头(车头)与车道平行,并确保方向符合车道要求。此时,autoware 就会出规划线。
第三,点击 AutowareStatePanel 中的 Auto 按钮,车辆就会动起来,从起点运动到终点。
在这里插入图片描述
(4)泊车样例:操作方式基本同行车样例,区别在于需要把终点定位在停车位上
在这里插入图片描述

总结

很多人的学习都是被安装环境劝退的,但是没有太好的办法,只能广搜资料,持续试错,逐步积累经验。当该踩的坑踩完以后,基本就能成功了。

相关推荐

  1. ROS 2 Humble (Ubuntu Jammy)安装配置

    2024-07-11 17:44:06       63 阅读
  2. ROS2-humble学习

    2024-07-11 17:44:06       21 阅读
  3. 树莓派 ubuntu22.04 meta安装 ros2-humble

    2024-07-11 17:44:06       28 阅读
  4. ubuntu-meta-22.04桌面版+ros2-humble 镜像

    2024-07-11 17:44:06       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 17:44:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 17:44:06       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 17:44:06       58 阅读
  4. Python语言-面向对象

    2024-07-11 17:44:06       69 阅读

热门阅读

  1. ubuntu 上配置开机自动启动ssh

    2024-07-11 17:44:06       17 阅读
  2. 无线电术语

    2024-07-11 17:44:06       24 阅读
  3. RDD 专项练习

    2024-07-11 17:44:06       22 阅读
  4. 何为vue脚手架?

    2024-07-11 17:44:06       25 阅读
  5. 桥接模式案例

    2024-07-11 17:44:06       23 阅读
  6. C++八股(一)

    2024-07-11 17:44:06       21 阅读
  7. springmvc前端jsp与html

    2024-07-11 17:44:06       19 阅读
  8. 前端不同年限的差异不同开发经验的差异

    2024-07-11 17:44:06       21 阅读
  9. 锂电池容量低,原因何在?

    2024-07-11 17:44:06       19 阅读
  10. IEC62056标准体系简介-5.低层通信协议

    2024-07-11 17:44:06       21 阅读
  11. (补充)IDEA项目结构

    2024-07-11 17:44:06       20 阅读
  12. nest通过装饰器获取jwt有效负载数据

    2024-07-11 17:44:06       24 阅读
  13. 物联网设计竞赛_10_Jetson Nano中文转汉语语音

    2024-07-11 17:44:06       19 阅读