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

news2025/4/8 23:00:35

引言

在这里插入图片描述


学习目标

在这里插入图片描述


学习内容

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.coloradmin.cn/o/2241044.html

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

相关文章

SQL面试题——奔驰SQL面试题 车辆在不同驾驶模式下的时间

SQL面试题——奔驰SQL面试题 我们的表大致如下 CREATE TABLE signal_log( vin STRING COMMENTvehicle frame id, signal_name STRING COMMENTfunction name, signal_value STRING COMMENT signal value , ts BIGINT COMMENTevent timestamp, dt STRING COMMENTformat yyyy-mm…

pytest执行用例时从conftest.py抛出ModuleNotFoundError:No module named ‘XXX‘异常的解决办法

网上各种各样的:1、关于_pycache_影响conftest的;2、目录路径的;3、配置环境的; 4、发现自己是powershell后,设置环境: $env:environment"local" 仍然报错的:5、最后发现是自己的 …

JAVA:探索 EasyExcel 的技术指南

1、简述 在 Java 开发中,Excel 文件的读写操作是一项常见的需求。阿里巴巴开源的 EasyExcel 提供了一种高效、简洁的解决方案,特别是在处理大规模数据时表现尤为突出。本文将详细介绍 EasyExcel 的优缺点、应用场景,并通过实例展示其基本用法…

Python自动化小技巧24——实现自动化输出模板表格报告

背景 很多人拿到数据excel文件,然后要写报告,做表格,要各种计算,各种排序,分组聚合,数据透视,然后合并单元格,添加边框,加粗,添加显示规则,添加数…

C# 通俗易懂的介绍基础知识(七)——栈Stack(从日常生活开始讲解)

目录 一、前言 二、栈是排列方式 三、栈的单词 四、程序中的栈 五、栈的方法 1.声明并初始化栈 2.往栈里放东西(学名:入栈) 3.从栈往外拿东西 (学名:出栈) 4.清空栈 5.遍历 Stack 6.获取Stack的长…

Vue全栈开发旅游网项目(10)-用户管理后端接口开发

1.异步用户登录\登出接口开发 1.设计公共响应数据类型 文件地址:utils/response404.py from django.http import JsonResponseclass BadRequestJsonResponse(JsonResponse):status_code 400def __init__(self, err_list, *args, **kwargs):data {"error_c…

PostgreSQL中如果有Left Join的时候索引怎么加

在PostgreSQL中,当你的查询包含多个LEFT JOIN和WHERE条件时,合理地添加索引可以显著提高查询性能。以下是一些具体的优化步骤和建议: 1. 分析查询 使用 EXPLAIN ANALYZE 命令分析你的查询,了解查询的执行计划,识别出连…

A027-基于Spring Boot的农事管理系统

🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…

Vue的基础使用

一、为什么要学习Vue 1.前端必备技能 2.岗位多,绝大互联网公司都在使用Vue 3.提高开发效率 4.高薪必备技能(Vue2Vue3) 二、什么是Vue 概念:Vue (读音 /vjuː/,类似于 view) 是一套 构建用户界面 的 渐进式 框架…

Innovus Flexible H-tree and Multi-tap Clock Flow Lab实操系列教程(Day1)

我们都知道时钟树综合在数字IC后端实现中的重要性。做clock tree主要有传统clock tree做法,H tree,Flexible H-tree,fishbone等做法。接下去小编将拿cadence官方的这份Innovus Flexible H-tree and Multi-Tap Clock Flow和对应的lab data来做…

【MySQL】MySQL数据库安装以及报错处理技巧

前言: 本节内容讲述在Ubuntu环境下怎么进行MySQL的安装。 以及一些安装过程中遇到的报错如何处理的问题。 ps:注意, 本篇文章不是图形化界面的MySQL安装教程哦。想要安装图形化界面的MySQL的友友们可以另寻资源了。 目录 更新软件包列表 安装M…

ISP——你可以从这里起步(二)

接上一篇,上一篇是原理篇,这一篇是实战篇,为了实现下面框图中的不完美ISP。 第一章 做一张RAW图自己用 不是所有的人都能获得raw图,即使获得了raw图也需要对应的sensor参数才能把它用起来,所以我找了一条野路子可以把…

CTF攻防世界小白刷题自学笔记14

fileclude,难度:1,方向:Web 题目来源:CTF 题目描述:好多file呀! 给一下题目链接:攻防世界Web方向新手模式第17题。 打开一看,这熟悉的味道,跟上一篇文章基本一摸一样的&#xff…

CTFHub每日练习

文章目录 技能树CTF Web信息泄露目录遍历PHPINFO备份文件下载网站源码bak文件vim缓存.DS_Store Git泄露Logstash index方法一方法二 密码口令弱口令 技能树 CTF Web 信息泄露 目录遍历 PHPINFO 备份文件下载 网站源码 当开发人员在线上环境中对源代码进行了备份操作&#x…

使用CNN进行验证码识别:深度学习与图像预处理教程

验证码(CAPTCHA)广泛用于区分人类和自动化程序(如机器人),通常由扭曲的字母、数字或符号组成。为了实现验证码的自动识别,深度学习尤其是卷积神经网络(CNN)非常有效。本文将带你一起…

Springboot采用jasypt加密配置

目录 前言 一、Jasypt简介 二、运用场景 三、整合Jasypt 2.1.环境配置 2.2.添加依赖 2.3.添加Jasypt配置 2.4.编写加/解密工具类 2.5.自定义加密属性前缀和后缀 2.6.防止密码泄露措施 2.61.自定义加密器 2.6.2通过环境变量指定加密盐值 总结 前言 在以往的多数项目中&#xff0…

讯飞、阿里云、腾讯云:Android 语音合成服务对比选择

在 移动端 接入语音合成方面,讯飞和腾讯云等都是优秀的选择,但各有其特点和优势。咱们的需求是需要支持普通话/英语/法语三种语言,以下是对各个平台的详细比较: 一、讯飞语音合成介绍 与语音听写相反,语音合成是将一段…

python爬虫获得店铺的所有商品

在编写Python爬虫以获取店铺的所有商品信息时,通常涉及到发送HTTP请求、解析响应内容以及处理API返回的数据。以下是一个详细的Python爬虫示例,用于获取店铺的商品信息。这个示例假设API返回的是JSON格式的数据,并且需要API密钥进行认证。 步…

java程序打包及执行 jar命令及运行jar文件

java程序打包及执行 jar命令及运行jar文件 打包命令: 安装完成jdk之后采用 jar命令进行打包 jar -cvfe ddd.jar -C bin/ddd.java 打包 ddd.java 文件 jar -cvfe dddd.jar -C . 注意 -C 后面的点. 表示当前目录下所有 如图: 运行jar 文件 java -class…

计算机视觉空域处理完整版——超详细图文解

空域处理 图像空域处理 a.线性滤波b.非线性滤波c.二值图像处理方法 数学形态学连通成分标记 “点运算”是在不改变图像大小、几何形状以及局部结构的情况下,对像素值进行修改,新图像的像素值只与 原图像同一位置的像素值有关。 灰度级变换(线性变换,非…