使用 Jetson Orin Nano 在 Ubuntu 20.04 中编译安装 ROS2 Foxy

简介: 本文详细介绍了在 Jetson Orin Nano 类似的 ARM 设备上编译安装 ROS2 的 Foxy 分支的过程,包括从源代码编译、安装依赖库、设置环境变量等方面。同时,针对安装过程中可能遇到的问题,提供了相应的解决方案,以帮助读者顺利完成 ROS2 的安装。

1. 背景

Jetson 边缘计算设备之前的 Ubuntu 版本为18.04,在出了 Orin 系列后,Ubuntu 版本可以安装 20.04 的,对于直接安装 ROS2 不使用容器化时,可以直接安装 foxy 分支版本。但是,因为 Jetson 设备是 ARM 架构的,若从源码构建我们并不能使用官方在 Github 提供的预编译版本,所以需要走通过源码自行编译这条路。

2. 准备工作

为了保证在国内快速拉取依赖包,首先需要通过 Ubuntu 的包管理 GUI 界面将软件源更换为国内,你也可以直接前往 Ubuntu Ports 软件仓库镜像使用帮助 选择 20.04 LTS 根据帮助说明进行修改清华的仓库镜像。

2.1 基础源

修改 /etc/apt/sources.list

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse

deb http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse
# deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
AI 代码解读

2.2 ROS2 源

同时,把ROS的软件源也按照说明进行处理:ROS2 软件仓库镜像使用帮助

下载 ROS 的 GPG Key:

sudo apt install curl gnupg2
sudo curl -sSL https://gitcode.net/marin1993/rosupdate/-/raw/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg
AI 代码解读

添加仓库源:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

sudo apt update
AI 代码解读
注意:此时如果你不想折腾,走编译安装的坑,并且不在意安装的是否为最新版本,那么你可以直接使用下面的命令安装,并直接转到最后的安装验证一节。以下的安装命令适用于开发测试阶段:
sudo apt install ros-foxy-desktop python3-argcomplete ros-dev-tools
AI 代码解读

apt 安装

3. 编译安装

接下来参考官方的编译安装说明往下走即可,出现的问题主要就是国内的网络问题。

错误

3.1 安装开发工具和 ROS 工具

开发工具:

sudo apt update && sudo apt install -y \
  libbullet-dev \
  python3-pip \
  python3-pytest-cov \
  ros-dev-tools
AI 代码解读

安装用于测试等一些 Python 库

python3 -m pip install -U \
  argcomplete \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  pytest-repeat \
  pytest-rerunfailures \
  pytest
AI 代码解读

安装 Fast-RTPS Cyclone DDS 的依赖

sudo apt install --no-install-recommends -y \
  libasio-dev \
  libtinyxml2-dev \
  libcunit1-dev
AI 代码解读

3.2 获取 ROS2 代码

创建工作区并克隆所有存储库,注意给git使用代理,不然拉不下来,或者使用镜像仓库。使用下面的命令即可使用镜像的仓库进行下载。

mkdir -p ~/ros2_foxy/src
cd ~/ros2_foxy
vcs import --input https://gitcode.net/marin1993/rosupdate/-/raw/master/foxy_ros2.repos src
AI 代码解读

仓库

3.3 使用 rosdep 安装依赖项

其实最主要的问题是 rosdep 这一块的处理,不像 git 那么好操作,代理使用起来也是很容易丢包失败,我们可以体验到各种的 ERROR 和 Failed 的,这些是 Github 访问不畅造成的。

我们可以将资源改为国内的,这里主要使用 gitcode 和 ghproxy 代理站点。

在开始安装依赖前,需要修改 rosdep2 的一些源码中的仓库参数,修改后的文件可以在这个仓库找到,如果版本还一致,可以直接替换: https://gitcode.net/marin1993/rosupdate

对于文件的修改内容,主要是将 github 资源的前缀改为为此前缀 https://gitcode.net/mirrors/ros/rosdistro/-/raw/master/ 。以下是详细修改内容:

3.3.1 rosdep2

risdep2 版本 0.22.2,修改此目录下文件 /usr/lib/python3/dist-packages/rosdep2

  • sources_list.py 第64行:`

DEFAULT_SOURCES_LIST_URL = 'https://gitcode.net/marin1993/rosupdate/-/raw/master/20-default.list'`

  • rep3.py 第36行:REP3_TARGETS_URL = 'https://gitcode.net/mirrors/ros/rosdistro/-/raw/master/releases/targets.yaml'
  • gbpdistro_support.py 第34行:`FUERTE_GBPDISTRO_URL = 'https://gitcode.net/mirrors/ros/rosdistro/-/raw/' \
    'master/releases/fuerte.yaml'

`

3.3.2 rosdistro

rosdistro 版本 0.9.0,修改 /usr/lib/python3/dist-packages/rosdistro/__init__.py

第68行:DEFAULT_INDEX_URL = 'https://gitcode.net/mirrors/ros/rosdistro/-/raw/master/index-v4.yaml'

3.3.3 后续处理

接下来的操作就回归正常了:

sudo apt upgrade
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-5.3.1 urdfdom_headers"
AI 代码解读

成功

当看到 All required rosdeps installed successfully 就代表依赖安装成功了,接下来就是编译了。

cd ~/ros2_foxy/
colcon build --symlink-install
AI 代码解读

此时只需要等待即可,这边在Jetson Orin Nano设备上用了一个小时多的时间,ros2 就编译完成了。

编译完成

4. 安装验证

4.1 环境变量

首先我们需要将 ros 加入环境变量,对于使用 apt 方式安装的用户,使用下面的命令添加:

echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source ~/.bashrc
AI 代码解读

对于编译安装,因为路径不同,则应使用下面这个命令:

echo "source ~/ros2_foxy/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
AI 代码解读

4.2 简单测试

处理好环境变量我们就可以简单测试安装好的 ROS2 了,使用 talker 和 listener 节点可以在控制台中进行简单的测试。只需在两个不同的控制台分别执行以下命令: ros2 run demo_nodes_cpp talkerros2 run demo_nodes_py listener

5. 最后

在本文中,我们详细介绍了如何在 Jetson Orin Nano 设备上编译安装 ROS2 的 Foxy 分支版本的过程,并提供了相应的解决方案以帮助读者顺利完成 ROS2 的安装。如果在使用过程中遇到任何问题可以参考查阅 ROS2 官方文档。如果你对ROS感兴趣,可以关注我的其他相关文章。

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
目录
打赏
0
0
0
0
43
分享
相关文章
源码编译安装ROCm以运行tensorflow-rocm(适用于Ubuntu 23.04)
总结一番,完成这趟奇妙的技术之旅后,乐趣多多,还能享受 tensorflow-rocm 带来的便利和速度。这趟旅程需要耐心,勇气,以及对技术的热爱。朋友,做好准备,让你的Ubuntu系统展翅高飞吧!
70 9
ADE下载问题解决:编译OpenCV于Ubuntu 18.04
如果显示了OpenCV的版本号,那恭喜你,一道编译大餐现已酣畅淋漓,色香味俱佳,等你品尝。
57 8
Ubuntu环境下以源码编译方式安装Vim的步骤介绍
以上就是在Ubuntu环境下以源码编译方式安装Vim的全部步骤。就像煮一杯咖啡,虽然过程中需要耐心和一些技巧,但等到你熟悉之后,你会发现,不仅可以定制自己喜欢的口味,过程中的乐趣也是不能忽视的。希望你在编译安装Vim的过程中,能体验到这份乐趣。
133 21
在Jetson TX2的Ubuntu18.04系统中安装ROS的教程
所有这些步骤并不复杂,但确实需要仔细一点。如果遇到问题,不要灰心,问题是解决问题的开始。保持耐心,细心阅读错误信息,通常情况下,问题的答案就藏在其中。祝ROS旅程顺利!
96 18
|
3月前
|
Ubuntu下使用apt为Apache2编译PHP7.1
以上就是在Ubuntu系统下,使用apt为Apache2编译PHP7.1的过程。希望这个过程对你有所帮助,如果你在执行过程中遇到任何问题,都可以在网上找到相关的解决方案。
68 25
|
3月前
|
在Ubuntu系统中为apt的apache2编译PHP 7.1的方法
以上就是在Ubuntu系统中为apt的apache2编译PHP 7.1的方法。希望这个指南能帮助你成功编译PHP 7.1,并在你的Apache服务器上运行PHP应用。
104 28
Ubuntu环境下的Samba源码编译
以上就是在Ubuntu环境下编译Samba源码的步骤。希望这个指南能帮助你成功地从源码编译Samba。如果你在编译过程中遇到任何问题,你可以查阅Samba的官方文档,或者在网上搜索相关的教程和解决方案。
107 23
基于Ubuntu Server的YTM32 SDK工程编译
希望这个“烹饪”比喻能帮助你理解SDK工程编译的过程。记住,编程就像烹饪一样,需要耐心,实践,和不断的学习。祝你烹饪愉快!
70 21
【VTK】ubuntu手动编译VTK9.3 Generating qmltypes file 失败
通过以上步骤,您可以成功解决在Ubuntu上编译VTK 9.3时遇到的 `Generating qmltypes file`失败的问题。关键在于确保系统正确安装了所需的Qt库,并通过CMake配置正确的路径。编译完成后,您将拥有一个功能完备的VTK库,可以用于各种可视化任务。
87 14
Windows11 WSL2 Ubuntu编译安装perf工具
通过以上步骤,你已经在Windows 11的WSL2中成功编译并安装了 `perf`工具。尽管在WSL2中可能会遇到一些限制,但大部分基本性能分析功能应当可以正常使用。使用 `perf`进行性能分析,可以帮助你更好地理解和优化系统及应用程序的性能。
265 14
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问