当前位置: 首页 > ai >正文

Ubuntu 20.04 安装 ROS 2 Foxy Fitzroy

目录

1,安装前须知

2,安装过程

2.1,设置语言环境

​2.2,设置源

​2.3,安装ROS 2软件包

2.4,​环境设置

​​2.5,测试

2‍.6,不想每次执行source

检验是否成功(另起一个终端)

2.7,​卸载 ROS


1,安装前须知

Ubuntu 发行顺序​​ 和 ​​ROS 发布时间​​ 版本对应关系表,包含主流 ROS 1 和 ROS 2 版本的兼容性及支持状态:

Ubuntu 版本Ubuntu 代号ROS 版本ROS 类型发布时间支持状态备注
​14.04 LTS​Trusty TahrIndigo IglooROS 12014-07EOL (2019-04)ROS 1 早期 LTS 版本,仅支持旧系统
​16.04 LTS​Xenial XerusKinetic KameROS 12016-05EOL (2021-04)ROS 1 首个支持 Python 3 的版本
Ardent ApaloneROS 22017-12EOL (2018-12)ROS 2 首个测试版本,非 LTS
​18.04 LTS​Bionic BeaverMelodic MoreniaROS 12018-05EOL (2023-05)ROS 1 最后一个广泛使用的 LTS 版本
Dashing DiademataROS 22019-05EOL (2021-05)ROS 2 首个 LTS 版本,支持 Ubuntu 18.04
​20.04 LTS​Focal FossaNoetic NinjemysROS 12020-05维护至 2025-05​ROS 1 最后一个 LTS 版本​​,完全支持 Python 3
Foxy FitzroyROS 22020-06EOL (2023-05)ROS 2 首个长期 LTS 版本
​22.04 LTS​Jammy JellyfishHumble HawksbillROS 22022-05维护至 2027-05​ROS 2 LTS 推荐版本​​,支持 Ubuntu 22.04 和 20.04
Iron IrwiniROS 22023-05EOL (2024-11)非 LTS 版本,适合短期项目
​24.04 LTS​Noble NumbatJazzy JaliscoROS 22024-05维护至 2029-05未来 LTS 版本,支持最新硬件和 Python 3.12

2,安装过程

2.1,设置语言环境

确保你有一个支持UTF-8​的语言环境。

如果你在一个最小的环境中(比如docker容器),语言环境可能是最小的,比如POSIX​。我们使用以下设置进行测试。

但是,如果你使用不同的UTF-8支持的语言环境,应该没问题。

locale  # check for UTF-8sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8locale  # verify settings

​2.2,设置源

​需要将ROS 2 apt存储库添加到系统中。

sudo apt install software-properties-common
sudo add-apt-repository universe

​添加带有apt的ROS 2 GPG密钥。

sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

​​

然后将存储库添加到您的源列表中。

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

​2.3,安装ROS 2软件包

设置存储库后更新您的apt存储库缓存。

sudo apt update

​​

ROS 2软件包建立在经常更新的Ubuntu系统之上。始终建议您在安装新软件包之前确保您的系统是最新的。

sudo apt upgrade

​桌面安装(推荐):ROS、RViz、演示、教程。

sudo apt install ros-foxy-desktop python3-argcomplete

ROS-Base Install(Bare Bones):通信库、消息包、命令行工具。没有GUI工具。

sudo apt install ros-foxy-ros-base python3-argcomplete

​​

开发工具:构建ROS包的编译器和其他工具

sudo apt install ros-dev-tools

2.4,​环境设置

通过获取以下文件来设置您的环境。

# Replace ".bash" with your shell if you're not using bash
# Possible values are: setup.bash, setup.sh, setup.zsh
source /opt/ros/foxy/setup.bash

​​2.5,测试

如果安装ros-foxy-desktop​,可以尝试一些例子。

在一个终端中,获取安装文件,然后运行C++ talker​:

source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_cpp talker

在另一个终端中获取安装文件,然后运行Python listener​:

source /opt/ros/foxy/setup.bash
ros2 run demo_nodes_py listener

​​应该看到talker​说它正在Publishing​消息,listener​说I heard​这些消息。这验证了C++和Python API都正常工作。

2‍.6,不想每次执行source

root@ubuntu:~# sudo vim /etc/profile.d/ros_foxy.sh
#!/bin/sh
source /opt/ros/foxy/setup.bash
root@ubuntu:~# source /etc/profile

仍有问题切换root 时,未生效

解决方法:

1,编辑 root 用户的 .bashrc​:
vim /root/.bashrc
2,在文件末尾添加:
source /opt/ros/foxy/setup.bash

检验是否成功(另起一个终端)

检查是否有ROS DISTRO和ROS VERSION之类的变量

ROS VERSION=2
ROS_PYTHON_VERSION=3
ROS_DISTRO=foxy
$ printenv |grep -i ROS
ROS_VERSION=2
ROS_PYTHON_VERSION=3
PWD=/home/xxx/userxx/ros
AMENT_PREFIX_PATH=/opt/ros/foxy
PYTHONPATH=/opt/ros/foxy/lib/python3.8/site-packages
LD_LIBRARY_PATH=/opt/ros/foxy/opt/yaml_cpp_vendor/lib:/opt/ros/foxy/opt/rviz_ogre_vendor/lib:/opt/ros/foxy/lib/x86_64-linux-gnu:/opt/ros/foxy/lib
ROS_LOCALHOST_ONLY=0
PATH=/opt/ros/foxy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ROS_DISTRO=foxy

2.7,​卸载 ROS

如果您已经从二进制文件安装后需要卸载ROS 2或切换到基于源代码的安装,请运行以下命令:

sudo apt remove ~nros-foxy-* && sudo apt autoremove

您可能还想删除存储库:

sudo rm /etc/apt/sources.list.d/ros2.list
sudo apt update
sudo apt autoremove
# Consider upgrading for packages previously shadowed.
sudo apt upgrade

http://www.xdnf.cn/news/2812.html

相关文章:

  • xilinx的XCI文件设定输出目录
  • MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep 是怎样练成的?
  • [AI]browser-use + web-ui 大模型实现自动操作浏览器
  • 元宇宙2.0:当区块链成为数字世界的宪法
  • 【C++初阶】--- 模板进阶
  • (三十二)Android开发中AppCompatActivity和Activity之间的详细区别
  • 01_微服务常见问题
  • 如何利用Rust提升Linux服务器效率(详细操作指南)
  • dma_request_slave_channel_compat 与 dma_request_channel 的区别
  • 【C语言操作符详解(二)】--结构成员访问操作符,操作符的属性,表达式求值
  • springboot中有关数据库信息转换的处理
  • __VUE_PROD_HYDRAION_MISMATCH_DETAILS__在vue.config.js怎么配置
  • 外部存储器接口:EMIF总线
  • Jetson Xavier NX EMMC版本刷机
  • 机器人--相机
  • 【MCP Node.js SDK 全栈进阶指南】高级篇(4):自定义传输层开发
  • 前端在平常的开发中高度还原ui图的思考规范
  • 阿里开源Qwen3:大语言模型的新突破
  • AI驱动软件工程:SoftEngine 方法论与 Lynx 平台实践分析
  • 「Mac畅玩AIGC与多模态08」开发篇04 - 基于 OpenAPI Schema 开发专用 Agent 插件
  • MySQL 8.4.4 安全升级指南:从漏洞修复到版本升级全流程解析
  • Spring MVC中自定义日期类型格式转换器
  • 单片机-89C51部分:8、定时器
  • 6.3 数据分析与决策支持:数据洞察生成与决策辅助系统
  • 机器学习实操 第一部分 机器学习基础 第6章 决策树
  • jmeter-Beashell获取http请求体json
  • 在K8S迁移节点kubelet数据存储目录
  • 道德经解读分析
  • Android 进阶开发:深入掌握 ProgressBar 的使用与高级技巧
  • 文献阅读(三)基于干旱强度和恢复时间的生态系统恢复力评估|《Agricultural and Forest Meteorology》