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

发布时间:2026/7/9 3:14:50

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

相关新闻

Windows 11/10 dir 命令与 PowerShell Get-ChildItem 对比:5 个场景性能与功能实测

Windows 11/10 dir 命令与 PowerShell Get-ChildItem 对比:5 个场景性能与功能实测

2026/7/7 23:37:12

Windows 11/10 文件管理终极对决:CMD dir 与 PowerShell Get-ChildItem 深度测评在Windows系统管理的日常工作中,文件目录操作是最基础却至关重要的技能。传统CMD中的dir命令伴随我们走过了DOS时代,而PowerShell的Get-ChildItem(别…

突破二进制障碍:Jsxer工具如何重构可读代码

突破二进制障碍:Jsxer工具如何重构可读代码

2026/7/7 23:37:12

突破二进制障碍:Jsxer工具如何重构可读代码 【免费下载链接】jsxer A fast and accurate JSXBIN decompiler. 项目地址: https://gitcode.com/gh_mirrors/js/jsxer 当Adobe创意套件中的JSXBIN二进制脚本文件成为无法逾越的技术壁垒时,开发者们面临…

BurpBounty自定义扫描规则:从原理到实战,提升Burp Suite漏洞检测精准度

BurpBounty自定义扫描规则:从原理到实战,提升Burp Suite漏洞检测精准度

2026/7/7 23:37:12

1. 项目概述:BurpBounty是什么,以及它为何值得你投入时间 如果你是一名渗透测试工程师或者安全研究员,并且日常工作中重度依赖Burp Suite,那么你很可能已经对内置的主动和被动扫描器又爱又恨。爱的是它开箱即用,恨的是…

openEuler/python-multi_key_dict核心功能解析:从基础操作到高级迭代技巧

openEuler/python-multi_key_dict核心功能解析:从基础操作到高级迭代技巧

2026/7/9 3:09:35

openEuler/python-multi_key_dict核心功能解析:从基础操作到高级迭代技巧 【免费下载链接】python-multi_key_dict Multi key dictionary implementation 项目地址: https://gitcode.com/openeuler/python-multi_key_dict 前往项目官网免费下载:h…

Linux talk 命令详解:经典终端实时聊天工具,无需图形界面即可对话

Linux talk 命令详解:经典终端实时聊天工具,无需图形界面即可对话

2026/7/9 3:09:34

1. 命令简介 talk 命令是一个基于文本的实时聊天工具,允许同一台或多台 Unix/Linux 主机上的两个已登录用户进行交互式对话。它是早期 Unix 系统网络通信的经典工具之一,通过 talk 守护进程(talkd)在用户间建立连接,实…

mba论文开题报告模板范文

mba论文开题报告模板范文

2026/7/9 3:09:34

mba论文开题报告模板范文 深夜,你对着电脑屏幕,导师那句“研究问题不聚焦,回去重写”还在耳边回响。开题报告卡住了你MBA论文的咽喉,文献综述像一团乱麻,研究框架怎么搭都感觉摇摇欲坠。你需要的不是一篇空洞的“范文…

Python基础知识(一)

Python基础知识(一)

2026/7/9 3:09:34

一、Python的基本数据类型二、Python整数进制转换三、Python数据类型转换函数一、Python的基本数据类型Python包含了很多种的数据类型,以下仅列举出几种常见并且非常基础的数据类型。1、整数型(int):支持正负整数,无大…

2026大庆黄金回收白银回收铂金回收市民首选无隐形扣费正规备案回收门店联系方式推荐

2026大庆黄金回收白银回收铂金回收市民首选无隐形扣费正规备案回收门店联系方式推荐

2026/7/9 3:09:34

大庆黄金白银铂金回收2026实测榜单|公安备案中检认证无折旧费门店推荐 大庆本地贵金属回收店铺遍地丛生,行业套路层出不穷,不少市民变现遭遇虚高报价、克扣损耗、未经同意熔金压价等问题。为帮助本地居民规避消费陷阱,小编实地走…

dp 与 hdmi

dp 与 hdmi

2026/7/9 2:59:34

1. 带宽与分辨率上限(核心差异)(DisplayPort)HDMI 2.1:带宽最高达 48Gbps,支持4K 120Hz、8K 60Hz。DP 1.4/2.0:DP 1.4带宽为 32.4Gbps(但实际可用略低),而D…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/8 0:44:47

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/8 6:29:42

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/8 14:04:34

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

平价正宗重庆火锅实测|理性避坑选型指南

平价正宗重庆火锅实测|理性避坑选型指南

2026/7/9 0:09:12

一、引言:重庆火锅消费现存痛点当下大众平价川渝火锅赛道竞争白热化,普通消费者就餐普遍面临三大选型难题:一是口味同质化严重,大量门店采用预制锅底、半成品食材,打着重庆老火锅旗号弱化牛油本味,麻辣口感…

AcFunDown:打破A站视频离线观看壁垒的终极解决方案

AcFunDown:打破A站视频离线观看壁垒的终极解决方案

2026/7/9 0:09:12

AcFunDown:打破A站视频离线观看壁垒的终极解决方案 【免费下载链接】AcFunDown 包含PC端UI界面的A站 视频下载器。支持收藏夹、UP主视频批量下载 😳仅供交流学习使用喔 项目地址: https://gitcode.com/gh_mirrors/ac/AcFunDown 想象一下这样的场景…

【复现】面向新能源消纳能力评估的年负荷序列建模及场景生成方法(Matlab代码实现)

【复现】面向新能源消纳能力评估的年负荷序列建模及场景生成方法(Matlab代码实现)

2026/7/9 0:09:12

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…