发布时间:2026/8/26 11:29:13
ROS 2 Humble 在 Ubuntu 22.04 环境配置:3步完成基础安装与首个节点测试 ROS 2 Humble 极速上手指南Ubuntu 22.04 环境配置与首个节点实战当现代机器人技术遇上分布式计算框架ROS 2正在重新定义智能设备的开发范式。作为机器人开发领域的瑞士军刀Humble Hawksbill版本以其卓越的稳定性和对Ubuntu 22.04的原生支持成为2023年最值得投入学习的机器人操作系统。本文将带您跳过繁琐的理论讲解直接进入实战环节——从零开始搭建开发环境到运行第一个通信节点整个过程仅需30分钟。1. 环境准备系统配置与依赖安装在开始ROS 2 Humble的安装之前我们需要确保Ubuntu 22.04系统处于最佳状态。建议使用全新安装的Jammy Jellyfish版本避免与其他软件包产生冲突。打开终端CtrlAltT依次执行以下命令更新系统sudo apt update sudo apt upgrade -y sudo apt install curl gnupg2 lsb-releaseROS 2 Humble需要UTF-8编码环境通过以下命令设置区域配置sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALLen_US.UTF-8 LANGen_US.UTF-8 export LANGen_US.UTF-8接下来添加ROS 2 apt仓库到系统源列表。请注意以下命令中的architecture需要替换为您的CPU架构通常amd64或arm64sudo 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 $(source /etc/os-release echo $UBUNTU_CODENAME) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null安装基础开发工具和ROS 2核心组件sudo apt update sudo apt install -y ros-humble-desktop python3-argcomplete提示如果网络连接不稳定可以考虑使用国内镜像源。将上述URL中的packages.ros.org替换为mirrors.tuna.tsinghua.edu.cn/ros2可显著提升下载速度。验证安装是否成功的最快方法是检查ROS 2环境变量是否已配置source /opt/ros/humble/setup.bash printenv | grep ROS正常情况应该显示如下环境变量ROS_VERSION2ROS_PYTHON_VERSION3ROS_DISTROhumble2. 创建工作空间与示例程序ROS 2采用colcon作为构建工具比传统catkin更高效。首先安装必要的构建工具sudo apt install python3-colcon-common-extensions创建并初始化工作空间mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build让我们创建一个简单的发布者(Publisher)和订阅者(Subscriber)示例。在src目录下新建功能包ros2 pkg create --build-type ament_python py_pubsub --dependencies rclpy std_msgs编辑~/ros2_ws/src/py_pubsub/py_pubsub/publisher_member_function.py文件输入以下内容import rclpy from rclpy.node import Node from std_msgs.msg import String class MinimalPublisher(Node): def __init__(self): super().__init__(minimal_publisher) self.publisher_ self.create_publisher(String, topic, 10) timer_period 0.5 self.timer self.create_timer(timer_period, self.timer_callback) self.i 0 def timer_callback(self): msg String() msg.data Hello World: %d % self.i self.publisher_.publish(msg) self.get_logger().info(Publishing: %s % msg.data) self.i 1 def main(argsNone): rclpy.init(argsargs) minimal_publisher MinimalPublisher() rclpy.spin(minimal_publisher) minimal_publisher.destroy_node() rclpy.shutdown() if __name__ __main__: main()同样地创建订阅者脚本subscriber_member_function.pyimport rclpy from rclpy.node import Node from std_msgs.msg import String class MinimalSubscriber(Node): def __init__(self): super().__init__(minimal_subscriber) self.subscription self.create_subscription( String, topic, self.listener_callback, 10) self.subscription def listener_callback(self, msg): self.get_logger().info(I heard: %s % msg.data) def main(argsNone): rclpy.init(argsargs) minimal_subscriber MinimalSubscriber() rclpy.spin(minimal_subscriber) minimal_subscriber.destroy_node() rclpy.shutdown() if __name__ __main__: main()修改setup.py文件确保入口点配置正确entry_points{ console_scripts: [ talker py_pubsub.publisher_member_function:main, listener py_pubsub.subscriber_member_function:main, ], }3. 构建与运行测试现在可以构建我们的功能包了。在workspace根目录执行colcon build --packages-select py_pubsub构建完成后需要source安装空间的环境配置source install/setup.bash启动发布者节点ros2 run py_pubsub talker在另一个终端中启动订阅者节点source ~/ros2_ws/install/setup.bash ros2 run py_pubsub listener如果一切正常您将在发布者终端看到类似以下输出[INFO] [minimal_publisher]: Publishing: Hello World: 0 [INFO] [minimal_publisher]: Publishing: Hello World: 1同时在订阅者终端看到对应的接收消息[INFO] [minimal_subscriber]: I heard: Hello World: 0 [INFO] [minimal_subscriber]: I heard: Hello World: 14. 进阶调试与工具链ROS 2提供了一系列强大的调试工具。要查看当前活动的节点列表ros2 node list查看节点间的通信拓扑ros2 topic list ros2 topic echo /topic对于更复杂的系统监控可以使用rqt工具sudo apt install ros-humble-rqt rqt在rqt界面中通过Plugins Introspection Node Graph可以可视化节点间的通信关系。以下是一个常用工具对比表工具名称安装命令主要功能rqt_graph内置工具可视化节点通信拓扑ros2bagros-humble-ros2bag消息记录与回放rviz2ros-humble-rviz23D可视化与传感器数据显示turtlesimros-humble-turtlesim基础教学模拟环境当需要调试复杂系统时可以考虑使用launch文件。创建一个新的launch文件~/ros2_ws/src/py_pubsub/launch/pubsub_launch.pyfrom launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description(): return LaunchDescription([ Node( packagepy_pubsub, executabletalker, namedemo_publisher ), Node( packagepy_pubsub, executablelistener, namedemo_subscriber ) ])运行launch文件ros2 launch py_pubsub pubsub_launch.py

相关新闻

2026/8/25 16:14:34

R语言数据排序实战:dplyr、base R与data.table选型指南

1. 项目概述:R语言数据排序不是“点一下就完事”,而是数据清洗的临门一脚在R语言的实际工作流里,排序从来不是孤立的操作——它几乎总是紧跟着数据导入、缺失值处理之后,又直接服务于后续的分组汇总、可视化排版或模型特征工程。我…

2026/8/25 20:39:19

Ubuntu 安装CCSwitch

到这里 https://github.com/farion1231/cc-switch/releases 下载 网站中贴心的提示 如何安装 注意好像要root用户安装 我是用 claude code CLI 让他用魔法安装魔法 ,提示词 帮我执行 apt install ./CC-Switch-*.deb root用户安装后,任何一个普通…

2026/8/26 5:19:38

Git user.name 配置原理与多身份管理实战指南

1. 项目概述:为什么一个“名字”能毁掉你三年的协作信任? 你刚提交完一个修复线上 Bug 的紧急 PR,团队 Slack 里弹出一条消息:“unknown 这个 commit 是谁?能确认下是不是你改的吗?”——你盯着屏幕愣了两秒…

2026/8/26 11:27:16

onenav 4.0510自建导航站全攻略:部署、主题定制与数据迁移

简介:在书签数量激增、跨设备访问需求强烈的背景下,自建导航站成为个人和团队高效管理网址入口的常用方案。基于PHP开发的开源导航程序,通过数据库存储与模板引擎渲染,能在轻量服务器上快速部署,并提供分类、搜索、用户…

2026/8/26 11:27:16

Linux游戏逆向实战:使用PINCE进行内存修改与动态调试

1. 项目概述:为什么要在Linux上折腾游戏逆向?如果你是一个游戏爱好者,同时又对Linux情有独钟,那么“在Linux上玩游戏”和“在Linux上研究游戏”可能是两种截然不同的体验。前者随着Steam Proton、Wine等兼容层技术的成熟&#xff…

2026/8/26 11:27:16

2026年软件测试面试指南:趋势与实战解析

1. 项目概述 2026年的软件测试面试题总结,是面向即将进入测试行业或准备跳槽的从业者的一份实战指南。这份总结不同于传统的面试题库,它更聚焦于未来三年测试行业的技术演变趋势和人才需求变化。 我在过去半年面试了超过50位测试工程师,从应…

2026/8/26 11:27:16

OneNav 4.0.510导航主题部署与定制实战:打造私人书签导航站

简介:自托管导航站是解决个人书签分散问题的有效方案,其核心在于将散落于浏览器、备忘录中的链接统一收纳。基于PHP的服务端渲染架构,导航站通过分类、标签、全文搜索和API接口实现高效索引。自托管方式带来的技术价值包括数据自主可控、界面…

2026/8/26 11:22:14

Unity打包APK到手机:完整流程与踩坑实战

直接跑通:Unity 快速打包 APK 到手机的完整流程与踩坑记录 做 Unity 开发的人,大概都有过这种经历:改了一版 UI、调了几个参数、修了一个 Bug,想掏出手机立刻看看效果。结果一打包,少则五分钟,多则十几分钟…

2026/8/26 9:13:28

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 11:48:27

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 16:56:43

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 0:04:32

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 1:19:35

JSON总结

JSON概念 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,主要用于跟服务器进行交换数据。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C、C#、Java、JavaScr…

2026/8/26 1:19:35

保存连接sse 是什么原理,为什么不会一直请求

“保持连接”用的是 SSE(Server-Sent Events),本质是一个没有马上结束的 HTTP 请求。 过程是: 拷贝机发送一次请求: GET /api/code-sync/events服务器返回: Content-Type: text/event-stream但不关闭响应&…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/24 18:13:48

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/25 1:08:14

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…