Ubuntu 的 ROS 2 操作系统安装与测试

引言

在这里插入图片描述


学习目标

在这里插入图片描述


学习内容

1 设置系统语言环境

ROS 2 Humble Hawksbill是ROS 2的稳定版本之一,支持Ubuntu Jammy (22.04)。安装此版本在最新的平台上使用ROS 2进行机器人开发。

确保系统支持UTF-8编码格式。对于Docker等最小化环境,执行以下命令:

locale  # 查看当前编码
sudo 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-8
locale  # 验证设置

2 设置软件源

在Ubuntu系统中添加ROS 2的APT软件源。

2.1 确保Ubuntu的universe仓库已启用
# 在Ubuntu系统中添加ROS 2APT软件源
sudo apt install software-properties-common
# 确保Ubuntu的universe仓库已启用
sudo add-apt-repository universe
2.2 添加ROS 2的GPG密钥
# 添加ROS 2GPG密钥
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
2.3 添加ROS 2的APT源到系统源列表
# 添加ROS 2APT源到系统源列表
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

3 安装ROS 2 Humble包

3.1 环境配置

更新APT缓存并确保系统已更新。

# 更新APT缓存并确保系统已更新
sudo apt update
# 更新系统以避免系统包冲突
sudo apt upgrade  
3.2 根据需求选择安装的ROS 2版本

3.2.1 桌面版安装(推荐):包括ROS、RViz、示例和教程,适合开发和仿真。

# 安装推荐的桌面版(包括ROS、RViz、示例、教程)
sudo apt install ros-humble-desktop

3.2.2 基础版安装(精简版):仅包含通信库、消息包和命令行工具,不包括GUI工具。

# 安装基础版(仅包含核心通信库和命令行工具)
sudo apt install ros-humble-ros-base

3.2.3 开发工具安装:提供编译器和其他构建ROS包的工具。

# 开发工具(编译器等)
sudo apt install ros-dev-tools

4 环境配置

4.1 环境配置

每次在终端中使用ROS 2时,都需要source环境配置文件:

# source环境配置文件
source /opt/ros/humble/setup.bash
4.2 简化操作

为了简化操作,可以将其添加到.bashrc文件中,使其在每次新终端启动时自动source:

# 在.bashrc中加入ROS的环境变量设置,使其每次启动终端时自动加载
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc# 更新.bashrc文件使其生效
source ~/.bashrc

5 验证安装

安装完成后,验证安装的ROS 2 Humble系统是否可以正常使用。

5.1 检查ROS 2版本
# 检查ROS 2版本
ros2 --version

输出安装的ROS 2版本,本文安装为 humble,如果输出正确版本说明ROS 2已经成功安装。

5.2 检查ROS 2环境
# 检查ROS 2环境
echo $ROS_DOMAIN_ID
  • 若显示出设定的ROS_DOMAIN_ID,则表明环境配置正确。
  • 如果没有输出,请重新执行source /opt/ros/humble/setup.bash,或将此命令添加至~/.bashrc文件中。
5.3 ROS 2核心
  • 在ROS 2中,不再需要像ROS 1那样手动启动roscore。
  • ROS 2的通信机制是基于DDS中间件,自动处理节点间的发现和通信。
5.4 运行ROS 2示例节点(验证ROS 2通信机制)

ROS 2提供了一些示例节点,可以用来验证安装:

# 发布消息
ros2 run demo_nodes_cpp talker

然后在另一个终端运行:

# 接收消息
ros2 run demo_nodes_py listener

若两个节点能够正常通信并在终端显示传输的消息,则说明ROS 2已经正确安装并配置完毕。


小结

  • 通过本次安装与配置,在Ubuntu系统上成功部署了ROS 2 Humble环境,并验证了其核心功能的运行情况。
  • 本文详细介绍了从设置系统语言、配置APT源,到安装ROS 2及其基本工具包的各个步骤,同时也展示了环境配置和通信测试的方法。完成这些步骤后,用户可以顺利使用ROS 2进行机器人应用的开发和实验,为后续的工作打下坚实基础。
  • ROS 2 Humble版本在通信机制、性能和灵活性上相较于ROS 1有显著提升,更适合复杂的机器人系统开发。未来,可以进一步学习ROS 2的开发工具和实际项目应用,实现机器人功能的扩展与优化。

欢迎大家评论留言!!!


友情提示:

  • 专栏:Turtlebot3 PC端ROS环境搭建与仿真
  • 下一节:Ubuntu 的 ROS 操作系统turtlebot3环境搭建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/11177.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

软件工程笔记一

目录 软件的概念、特性和分类 软件与程序 软件的特性 软件的分类 软件危机与软件工程 软件危机 如何摆脱软件危机? 软件工程概念的提出 什么是软件工程? 软件工程的若干定义 系统工程的目标 软件工程的基本原理 软件工程的目标 软件的质量特性 软件生存…

CEO代码 (CEO Code)

https://caseinterview.com/wp-content/uploads/2015/10/The-CEO-Code-Rules-by-Victor-Cheng.pdf 源自 Victor Cheng CEO们使用一种特殊的语言。这种语言不是英语、西班牙语、普通话或印地语,而是一种置于我们日常语言之上的元语言。 CEO们很快就能识别出谁能说这…

LVGL实现冒泡事件

在LVGL(LittlevGL)中,事件冒泡是一个重要的概念,它允许事件从一个对象传递到其父对象,直到找到一个能够处理该事件的对象或者达到顶层对象。以下是如何在LVGL中实现和使用事件冒泡的概述: 事件冒泡的理解 …

深入理解计算机系统-信息的表示和处理

2.1 信息存储 大多数计算机使用8位的块,或者字节,作为最小的可寻址的内存单位,而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组,称为虚拟内存。 内存的每个字节都由一个唯一的数字来表示,称为它的…

JAVA-顺序表ArrayList(实现ArrayList)

1.线性表 线性表 ( linear list ) 是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列... 线性表在逻辑上是线性结构,也就说是连续的一条直线。…

DCN DCWS-6028神州数码 AC 设备配置笔记

DCN DCWS-6028神州数码 AC 设备配置笔记 一、前期准备 PC 电脑网络配置 目的:使 PC 能够访问 AC 的 web 管理控制台。配置详情:web 管理控制台地址为 192.168.1.10,将 PC 电脑 IP 地址配置在 192.168.1.1 - 192.168.1.254 网段内,如 192.168.1.110,子网掩码 255.255.255.…

树概念及结构

树概念及结构 6.1 树概念及结构6.1.1 树的概念6.1.2 树的术语解读6.1.3 树的表示 6.1 树概念及结构 6.1.1 树的概念 类似八股文一样的东西,需要记一下。 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系…

MySQL主从复制原理

MySQL主从复制是一种异步、基于日志的、单向的数据库复制技术,它通过在主服务器上启用二进制日志(binlog)并将其发送给一个或多个从服务器,实现了从服务器与主服务器之间的数据同步。以下是MySQL主从复制原理的详细解释&#xff1…

AMD-OLMo:在 AMD Instinct MI250 GPU 上训练的新一代大型语言模型。

AMD-OLMo是一系列10亿参数语言模型,由AMD公司在AMD Instinct MI250 GPU上进行训练,AMD Instinct MI250 GPU是一个功能强大的图形处理器集群,它利用了OLMo这一公司开发的尖端语言模型。AMD 创建 OLMo 是为了突出其 Instinct GPU 在运行 “具有…

Spring Boot框架:构建符合工程认证的计算机课程

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

实现链式结构二叉树

目录 需要实现的操作 链式结构二叉树实现 结点的创建 前序遍历 中序遍历 后序遍历 计算结点个数 计算二叉树的叶子结点个数 计算二叉树第k层结点个数 计算二叉树的深度 查找值为x的结点 销毁 层序遍历 判断是否为完全二叉树 总结 需要实现的操作 //前序遍历 void …

DU模拟器(S5040A Open RAN Studio Player and Capture Appliance)

下行测试过程,由是德科技(https://www.keysight.com/cn/zh/home.html)的DU模拟器(S5040A Open RAN Studio Player and Capture Appliance)产生标准5G NR下行测试信号,经前传接口发送到小站进行基带处理、中射频、变频后从相控阵天…

工程认证标准下的Spring Boot计算机课程管理策略

5系统详细实现 5.1 管理员模块的实现 5.1.1 教师信息管理 基于工程教育认证的计算机课程管理平台的系统管理员可以管理教师,可以对教师信息修改删除以及查询操作。具体界面的展示如图5.1所示。 图5.1 教师信息管理界面 5.1.2 通知公告管理 系统管理员可以对通知公…

GeoHash处理经纬度,降维,空间填充曲线

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 参考 https://segmentfault.com/a/1190000042971576 GeoHash原理以及代码实现_geohash编码-CSDN博客…

游戏引擎学习第三天

视频参考:https://www.bilibili.com/video/BV1XTmqYSEtm/ 之前的程序不能退出,下面写关闭窗体的操作 PostQuitMessage 是 Windows API 中的一个函数,用于向当前线程的消息队列发送一个退出消息。其作用是请求应用程序退出消息循环,通常用于处…

CSS中常见文本居中技巧详解

在网页设计中,文本居中是非常常见且重要的布局需求之一。无论是为了美观还是为了更好地传达信息,掌握文本居中的方法对于前端开发者来说都是必不可少的技能。本文将详细介绍几种常用的CSS文本居中方法,帮助读者解决实际开发中的问题。 默认情…

Java基础教程(001):Java基础概念:注释、关键字、字面量

文章目录 1、Java基础概念1.1 注释1.2 关键字1.3 字面量1.4 制表符 1、Java基础概念 1.1 注释 【1】注释概念 注释是在程序指定位置添加的说明性信息。 简单理解,就是对代码的一种解释。 【2】注释分类 单行注释:// 注释信息多行注释:/…

SIwave:释放 SIwizard 求解器的强大功能

SIwave 是一种电源完整性和信号完整性工具。SIwizard 是 SIwave 中 SI 分析的主要工具,也是本博客的主题。 SIwizard 用于研究 RF、clock 和 control traces 的信号完整性。该工具允许用户进行瞬态分析、眼图分析和 BER 计算。用户可以将 IBIS 和 IBIS-AMI 模型添加…

Windows10 下通过 Visual Studio2022 编译 openssl 3.4

Windows10 下通过 Visual Studio2022 编译 openssl 3.4 1 准备环境1.2 perl1.2.1 ActiveState Perl 和 Strawberry Perl 的区别1.2.2 perl 下载1.2.3 验证安装1.2 NASM1.2.1 Windows 安装 NASM1.2.2 解压1.2.3 配置 NASM 的环境变量1.3 VS 配置1.3.1 配置 VS nmake 的环境变量1…

了解Hadoop:大数据处理的核心框架

在当今数据爆炸的时代,海量数据的存储和处理已成为一个巨大的挑战。传统数据库和计算模型难以应对如此庞大的数据规模。为了解决这一问题,Apache Hadoop应运而生,它是一种分布式存储和处理框架,能够高效地处理海量数据。本文将详细…