前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Jetson Orin Nano 在 Ubuntu 20.04 中编译安装 ROS2 Foxy

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

作者头像
桑榆肖物
发布2023-08-22 10:27:39
6080
发布2023-08-22 10:27:39
举报
文章被收录于专栏:桑榆肖物桑榆肖物

使用 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 软件仓库镜像使用帮助[1] 选择 20.04 LTS 根据帮助说明进行修改清华的仓库镜像。

2.1 基础源

修改 /etc/apt/sources.list

代码语言:javascript
复制
# 默认注释了源码镜像以提高 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

2.2 ROS2 源

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

下载 ROS 的 GPG Key:

代码语言:javascript
复制
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

添加仓库源:

代码语言:javascript
复制
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

注意:此时如果你不想折腾,走编译安装的坑,并且不在意安装的是否为最新版本,那么你可以直接使用下面的命令安装,并直接转到最后的安装验证一节。以下的安装命令适用于开发测试阶段:

代码语言:javascript
复制
sudo apt install ros-foxy-desktop python3-argcomplete ros-dev-tools

apt 安装

3. 编译安装

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

错误

3.1 安装开发工具和 ROS 工具

开发工具:

代码语言:javascript
复制
sudo apt update && sudo apt install -y \
  libbullet-dev \
  python3-pip \
  python3-pytest-cov \
  ros-dev-tools

安装用于测试等一些 Python 库

代码语言:javascript
复制
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

安装 Fast-RTPS Cyclone DDS 的依赖

代码语言:javascript
复制
sudo apt install --no-install-recommends -y \
  libasio-dev \
  libtinyxml2-dev \
  libcunit1-dev

3.2 获取 ROS2 代码

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

代码语言:javascript
复制
mkdir -p ~/ros2_foxy/src
cd ~/ros2_foxy
vcs import --input https://gitcode.net/marin1993/rosupdate/-/raw/master/foxy_ros2.repos src

仓库

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 后续处理

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

代码语言:javascript
复制
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"

成功

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

代码语言:javascript
复制
cd ~/ros2_foxy/
colcon build --symlink-install

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

编译完成

4. 安装验证

4.1 环境变量

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

代码语言:javascript
复制
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source ~/.bashrc

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

代码语言:javascript
复制
echo "source ~/ros2_foxy/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

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感兴趣,可以关注我的其他相关文章。

References

[1] Ubuntu Ports 软件仓库镜像使用帮助: https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu-ports/ [2] ROS2 软件仓库镜像使用帮助: https://mirrors.tuna.tsinghua.edu.cn/help/ros2/ [3] 官方的编译安装说明: https://docs.ros.org/en/foxy/Installation/Alternatives/Ubuntu-Development-Setup.html#id9

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 桑榆肖物 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2. 准备工作
    • 2.1 基础源
      • 2.2 ROS2 源
      • 3. 编译安装
        • 3.1 安装开发工具和 ROS 工具
          • 3.2 获取 ROS2 代码
            • 3.3 使用 rosdep 安装依赖项
              • 3.3.1 rosdep2
              • 3.3.2 rosdistro
              • 3.3.3 后续处理
          • 4. 安装验证
            • 4.1 环境变量
              • 4.2 简单测试
                • References
            • 5. 最后
            相关产品与服务
            腾讯云服务器利旧
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档