ROS 2 Humble 在 Ubuntu 22.04 环境配置:3步完成基础安装与首个节点测试

发布时间:2026/10/10 9:11:29

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/10/9 19:15:50

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

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

2026/10/10 9:44:02

Ubuntu 安装CCSwitch

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

2026/10/8 16:35:29

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

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

2026/10/10 23:41:47

Python+OpenCV车道线检测实战:环境搭建、参数调优与GUI避坑指南

简介:这份资源面向正在做毕设、课程设计或期末大作业的学生,以及希望入门计算机视觉与图像处理方向的Python学习者,提供一套可直接运行的车道线检测完整项目。源码基于Python与OpenCV实现,覆盖图像加载、灰度化与高斯滤波预处理、…

2026/10/10 23:41:47

垃圾分类回收系统毕设全攻略:图像识别、硬件联调与论文答辩

简介:一份基于SpringBootVue的垃圾分类回收系统毕业论文文档,面向计算机专业毕业生与需要JavaWeb毕业设计参考的学习者。文档以垃圾分类回收系统的设计与实现为主线,完整覆盖课题背景与研究意义、开发环境与技术选型(Java、MySQL、…

2026/10/10 23:41:47

为Agent编译数据库知识包:从DDL到OKF的工程实践

第二次让 Agent 直接连数据库做查询,它把订单表和客户表的关联字段猜错了,当天晚上我收到一排告警。那一刻我才想明白:把一堆CREATE TABLE丢给 Agent,跟把一本没有目录、没有注释的字典丢给新来的实习生,本质没有区别。…

2026/10/10 23:41:47

Python练习总练废?分层练习+两个实战项目带你走出误区

1. 先聊聊“Python练习”这件事为什么容易练废我见过不少人学Python,开头那几天热情高涨,买了一堆书、收藏了一堆教程,结果练了不到两周就放弃了。回头一问,练的方式基本都是“跟着教程敲一遍”,敲完就忘,忘…

2026/10/10 23:41:47

WSL2 AI开发环境搭建:GPU直通与CUDA配置实战指南

1. 为什么要在 WSL2 里折腾 AI 开发环境1.1 一个真实的两难处境做 AI 开发的人大概率都遇到过这个场景:主力机是 Windows,平时写代码、跑实验、调模型都挺顺手,但一旦涉及某些深度学习框架的特定版本、CUDA 工具链、或者需要编译一些 Linux 专…

2026/10/10 7:31:36

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 0:04:53

从逻辑门到计算机:数字电路核心原理与全加器搭建实战

如果你拆过一台旧电脑的主板,盯着那些黑乎乎的小芯片看上一会儿,可能会冒出同一个疑问:这堆引脚密集的元件,到底是怎么“变”出那么复杂的应用的?答案并不在某个神秘的部件里,而是在所有芯片内部都在反复使…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑