当前位置: 首页 > article >正文

ROS2 Jazzy尝鲜指南:在Ubuntu 24.04上从安装到跑通第一个Demo(附常见错误修复)

ROS2 Jazzy尝鲜指南在Ubuntu 24.04上从安装到跑通第一个DemoUbuntu 24.04 LTS的发布带来了全新的ROS2 Jazzy版本这对机器人开发者来说无疑是一次令人兴奋的技术升级。作为长期支持版本Jazzy将在未来五年内获得官方维护这意味着开发者可以基于这个稳定平台构建长期项目。本文将带你从零开始在全新的Ubuntu 24.04系统上完成ROS2 Jazzy的安装、配置并最终运行一个简单的发布/订阅Demo。1. 系统准备与环境配置在开始安装ROS2之前我们需要确保Ubuntu 24.04系统已经做好充分准备。新版本的Ubuntu带来了一些底层库的变化这可能会影响到ROS2的安装过程。首先更新系统软件包sudo apt update sudo apt upgrade -yUbuntu 24.04默认使用Python 3.12这与之前的ROS2版本有所不同。我们需要确认系统中安装了必要的编译工具和依赖sudo apt install -y \ build-essential \ git \ python3-pip \ python3-venv \ python3-dev \ cmake \ curl \ gnupg \ lsb-release注意Ubuntu 24.04中某些系统库的版本较新可能会导致与ROS2包的兼容性问题。如果遇到依赖冲突可以考虑使用apt-cache policy命令检查具体版本。2. ROS2 Jazzy安装详解不同于一键安装脚本我们将采用官方推荐的分步安装方式这能帮助我们更好地理解安装过程并解决可能出现的问题。2.1 设置软件源首先添加ROS2的GPG密钥和APT源sudo mkdir -p /usr/share/keyrings curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | sudo gpg --dearmor -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 $(lsb_release -cs) main | sudo tee /etc/apt/sources.list.d/ros2.list /dev/null更新软件包列表sudo apt update2.2 安装ROS2桌面版ROS2 Jazzy提供了多个变体对于大多数开发者来说桌面完整版是最佳选择sudo apt install -y ros-jazzy-desktop安装完成后建议同时安装一些常用的开发工具sudo apt install -y \ python3-colcon-common-extensions \ ros-dev-tools \ python3-rosdep2.3 配置rosdeprosdep是ROS中用于管理系统依赖的工具正确配置它非常重要sudo rosdep init rosdep update如果在更新过程中遇到网络问题可以尝试使用国内镜像源export ROSDISTRO_INDEX_URLhttps://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml rosdep update3. 环境变量与工作区设置安装完成后需要设置环境变量才能使ROS2命令正常工作。将以下内容添加到~/.bashrc文件末尾source /opt/ros/jazzy/setup.bash然后重新加载bash配置source ~/.bashrc验证安装是否成功ros2 --help如果看到帮助信息输出说明ROS2已正确安装。接下来创建一个工作区mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build4. 创建并运行第一个ROS2节点让我们创建一个简单的发布/订阅Demo来验证ROS2是否正常工作。4.1 创建Python包在工作区的src目录下创建新包cd ~/ros2_ws/src ros2 pkg create --build-type ament_python my_first_package4.2 编写发布者节点编辑my_first_package/my_first_package/publisher.pyimport 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()4.3 编写订阅者节点编辑my_first_package/my_first_package/subscriber.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()4.4 修改package.xml和setup.py确保package.xml中包含以下依赖exec_dependrclpy/exec_depend exec_dependstd_msgs/exec_depend在setup.py中注册新节点entry_points{ console_scripts: [ publisher my_first_package.publisher:main, subscriber my_first_package.subscriber:main, ], },4.5 构建并运行构建包cd ~/ros2_ws colcon build --packages-select my_first_package source install/setup.bash在三个不同的终端中分别运行# 终端1 ros2 run my_first_package publisher # 终端2 ros2 run my_first_package subscriber # 终端3 ros2 topic list如果一切正常你应该能看到发布者和订阅者之间的消息传递。5. 常见问题与解决方案在Ubuntu 24.04上安装ROS2 Jazzy可能会遇到一些特有的问题以下是几个常见问题及其解决方法5.1 Python版本兼容性问题问题现象运行ROS2命令时出现Python导入错误解决方案sudo apt install python3-rosdep2 python3-rosinstall-generator python3-vcstool5.2 缺少系统依赖问题现象构建时报告缺少某些系统库解决方案rosdep install --from-paths src --ignore-src -y --skip-keys fastcdr rti-connext-dds-6.0.1 urdfdom_headers5.3 网络连接问题问题现象rosdep update失败解决方案export ROSDISTRO_INDEX_URLhttps://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml rosdep update5.4 权限问题问题现象运行时出现权限错误解决方案sudo usermod -aG dialout $USER newgrp dialout6. Jazzy新特性探索ROS2 Jazzy带来了一些值得关注的新特性改进的RMW实现默认的DDS中间件性能有所提升增强的Python支持更好地支持Python 3.12新的工具链包括改进的ros2cli和监控工具性能优化在消息传递和节点发现方面有显著改进可以通过以下命令查看ROS2版本信息ros2 version要体验这些新特性可以尝试运行一些更复杂的Demo如ros2 run demo_nodes_cpp talker ros2 run demo_nodes_cpp listener

相关文章:

ROS2 Jazzy尝鲜指南:在Ubuntu 24.04上从安装到跑通第一个Demo(附常见错误修复)

ROS2 Jazzy尝鲜指南:在Ubuntu 24.04上从安装到跑通第一个Demo Ubuntu 24.04 LTS的发布带来了全新的ROS2 Jazzy版本,这对机器人开发者来说无疑是一次令人兴奋的技术升级。作为长期支持版本,Jazzy将在未来五年内获得官方维护,这意味…...

AceMenu:嵌入式轻量级菜单框架设计与实践

1. AceMenu 库概述:面向嵌入式人机交互的轻量级菜单框架AceMenu 是一个专为资源受限嵌入式系统设计的轻量级、可移植菜单管理库。其核心设计哲学是“以最少的硬件资源开销,实现最直观的用户导航体验”。不同于通用 GUI 框架(如 LVGL 或 Touch…...

基于Matlab的11种图像清晰度评价指标:直接可运行,联系我

基于matlab图像清晰度评价指标。 一共11种。 程序已调通,可直接运行。 需要直接联系。 基于matlab图像清晰度评价指标。 一共11种。 程序已调通,可直接运行。 需要直接联系。 图像剃度的清晰度评价(EOG, Roberts, Tenengrad, Brenner,Variance, Laplace,…...

OpenClaw负载均衡:多Qwen3-VL:30B实例轮询策略

OpenClaw负载均衡:多Qwen3-VL:30B实例轮询策略 1. 为什么需要多模型实例负载均衡 上周我遇到一个棘手问题:用OpenClaw处理批量图片分析任务时,单个Qwen3-VL:30B实例频繁触发速率限制,导致任务队列堆积。更糟的是,有次…...

运维提效实战:用 Ansible+Cron 搞定日志自动清理,再也不用半夜爬起来删日志了

前言 作为常年和服务器打交道的运维人,估计没人没经历过半夜被磁盘爆满告警吵醒的崩溃 —— 远程登服务器、挨个找日志文件、手动删旧日志,一套操作下来人彻底清醒,回头还得担心误删关键文件。 其实这类重复又机械的运维活儿,完全…...

Qt 5.12.8在Linux下编译qtvirtualkeyboard模块,我踩过的那些坑(附完整解决方案)

Qt 5.12.8在Linux下编译qtvirtualkeyboard模块的深度实践指南 当你在嵌入式或跨平台开发中突然发现系统自带的Qt缺少虚拟键盘模块时,那种感觉就像在沙漠里找到一瓶水却发现没带开瓶器。本文将带你深入探索在aarch64架构的Linux系统中,如何为预装的Qt 5.1…...

在单细胞测序数据分析中,barcodes、features和matrix是三个最核心的基础文件,它们共同构成了所有分析的基石。

在GEO(Gene Expression Omnibus)数据库中下载单细胞数据时,最常见的数据存储和提供形式主要有以下四种类型:10x Genomics 标准格式(最主流)在GEO的数据集中,我们通常会找到一个包含以下三个核心…...

百川2-13B-4bits量化版对比测试:OpenClaw日常任务执行效率报告

百川2-13B-4bits量化版对比测试:OpenClaw日常任务执行效率报告 1. 测试背景与动机 最近在折腾OpenClaw自动化工作流时,发现一个棘手问题:当任务链条较长时,本地部署的大模型显存占用会飙升到16GB以上,导致我的RTX 30…...

MySQL技巧(八) :死锁解决与实战案例

在数据库高并发场景下,死锁是一个绕不开的经典难题。两个或多个事务相互持有对方需要的锁,导致都无法继续执行,就像两辆车在狭窄路口互不相让。本文将带你从原理到实战,掌握死锁的排查、解决和预防全流程。一、死锁快速定位当应用…...

3个高效能的核心功能:League-Toolkit开源工具效率提升指南

3个高效能的核心功能:League-Toolkit开源工具效率提升指南 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Too…...

域环境基础知识

Active Directory(AD) 域控制器功能: 集中管理所有域用户统一身份认证组策略分发资源访问控制 Windows Server域环境搭建 推荐版本: Windows Server 2003Windows Server 2008Windows Server 2012 域环境组成: 域控制器…...

基于2026校招数据分析:拥有这几张AI证书的学生,起薪普遍高30%

2026年校招季已近尾声,随着DeepSeek等大模型技术的持续突破与“人工智能”向千行百业的深度渗透,AI人才市场的竞争呈现白热化态势。前程无忧51job发布的《2026届校招市场AI人才需求报告》显示,AI相关岗位校招薪酬中位数已突破2万元/月&#x…...

双模型灾备方案:OpenClaw同时配置百川2-13B-4bits与Llama3应对服务中断

双模型灾备方案:OpenClaw同时配置百川2-13B-4bits与Llama3应对服务中断 1. 为什么需要双模型灾备 去年冬天的一个深夜,我正在用OpenClaw自动处理一批技术文档的翻译任务。突然收到一连串报警通知——原本稳定运行的Qwen模型服务因为网络波动彻底失联。…...

GPT-5-Codex CLI实战:如何用UIUIApi中转服务稳定获取API Key(避坑指南)

GPT-5-Codex CLI高效实践:国内开发者API接入全流程解析 最近在技术社区里,关于GPT-5-Codex的讨论热度持续攀升。作为一名长期关注AI编程工具的开发者,我发现很多同行在尝试接入这项服务时遇到了各种技术障碍。本文将分享一套经过实战验证的完…...

5分钟搞定ollama+qwen2.5模型配置:从下载到对话测试全流程指南

5分钟极速部署ollama与qwen2.5:零基础打造本地AI对话系统 在AI技术平民化的今天,拥有一个本地运行的对话模型不再是专业开发者的专利。本文将带您用最短时间完成ollama服务部署与qwen2.5模型配置,无需复杂环境搭建,从零开始构建属…...

Windows上搭建PostgreSQL监控神器:Grafana+Prometheus+Postgres_Exporter保姆级干货教程

❓想要实时掌握 PostgreSQL 数据库的运行状态? 👀想知道复制延迟、锁等待这些核心指标? 🆒这里是Moshow的「CSDN https://zhengkai.blog.csdn.net/」 🚀这篇文章带你从零开始,在 Windows 上搭建一套企业…...

Petalinux-build --sdk卡在assimp?手动下载源码并集成到Yocto构建系统的完整指南

解决Petalinux构建SDK时assimp源码下载失败的深度实践指南 当你在Ubuntu 18.04环境下使用Vivado 2021.2进行Petalinux开发时,执行petalinux-build --sdk命令可能会意外卡在assimp组件上。这种问题通常源于网络连接不稳定导致构建系统无法自动下载第三方依赖库。本文…...

2021年中国村级行政区划边界矢量数据|行政村 + 社区|全国60万+单元|SHP格式、WGS84坐标

🔍 数据简介 本数据集 2021年左右的中国村级行政区划边界矢量数据。 总计 超60万个村级单元,是目前公开可获取的最精细、最权威的全国村级边界数据之一,适用于乡村振兴、基层治理、人口空间化、公共服务设施布局、学术研究等高精度需求场景。…...

避坑指南:用ESP32驱动LD2420毫米波雷达时,串口数据丢失和自动开机卡死的那些事儿

ESP32与LD2420毫米波雷达深度避坑实战:从数据丢失到系统卡死的全链路解决方案 当你在凌晨三点盯着逻辑分析仪上那些残缺的串口波形时,就会明白为什么LD2420毫米波雷达被称为"最熟悉的陌生人"。这个能穿透墙壁感知呼吸的24GHz传感器&#xff0c…...

1949–2024年中国县级行政区划(逐年)|全国范围、75年连续、SHP格式

🔍 数据简介 本数据集完整覆盖 1949年至2024年 共 76个年份 的中国县级行政区划边界,是目前公开可获取的时间跨度最长、更新粒度最细的全国县级历史区划产品。 每一年份均提供独立、闭合、无重叠的面状矢量边界,属性表包含标准名称、行政区划…...

手把手教你用kafka-storage.sh重新格式化Kafka KRaft集群数据目录(解决No meta.properties报错)

深入解析Kafka KRaft模式下数据目录重构与集群恢复实战指南 当你在深夜收到Kafka集群告警,发现所有节点因No meta.properties报错而集体罢工时,那种头皮发麻的感觉我太熟悉了。去年双十一大促前夜,我们因为临时调整存储路径而遭遇类似问题&am…...

机器视觉C# 调用相机:从 USB 摄像头到海康工业相机(WinForms WPF)

🎥 机器视觉C# 调用相机:从 USB 摄像头到海康工业相机(WinForms & WPF) 📝 前言 在工业自动化、医疗影像或简单软件开发中,调用摄像头是一个绕不开的话题。在项目中同时遇到了两种需求: …...

OpenClaw内存优化:GLM-4.7-Flash大任务处理的资源调配技巧

OpenClaw内存优化:GLM-4.7-Flash大任务处理的资源调配技巧 1. 当OpenClaw遇上大任务:我的内存崩溃现场 那是个周五的深夜,我正尝试用OpenClaw自动处理一批技术文档的归档和摘要生成。任务看似简单:读取200多个Markdown文件&…...

OpenClaw配置优化:GLM-4.7-Flash模型响应速度提升

OpenClaw配置优化:GLM-4.7-Flash模型响应速度提升 1. 为什么需要优化GLM-4.7-Flash的响应速度 第一次用OpenClaw对接GLM-4.7-Flash模型时,我遇到了典型的"等待焦虑"——一个简单的文件整理任务竟然花了3分钟才返回结果。通过日志分析发现&am…...

3步攻克科研数据提取难关:WebPlotDigitizer开源工具实战指南

3步攻克科研数据提取难关:WebPlotDigitizer开源工具实战指南 【免费下载链接】WebPlotDigitizer WebPlotDigitizer: 一个基于 Web 的工具,用于从图形图像中提取数值数据,支持 XY、极地、三角图和地图。 项目地址: https://gitcode.com/gh_m…...

字节开源AI神器DeerFlow,4.1万星标刷屏,普通人免费就能用

文章目录这玩意儿不是ChatGPT那种"嘴炮型"选手35k星标怎么来的?字节这次把"龙虾"养明白了多智能体协作:不是一个人在战斗沙箱执行:让AI真的"动手"干活对比OpenAI:免费、本地、可控普通人怎么上手&a…...

从零到一:基于LLaMA-Factory的微调实战与核心参数精讲

1. 环境准备与LLaMA-Factory初探 第一次接触LLaMA-Factory时,我对着官方文档发呆了半小时——这个工具链实在太强大了,但新手很容易被各种依赖项劝退。这里分享我的踩坑经验:不要一上来就追求最新版本。去年12月我在RTX 3090上折腾v0.4.0时&a…...

编写程序实现智能鱼竿鱼线拉力检测,拉力超标提示“小心断线”。

🎣 项目实战:基于应变片的智能鱼竿拉力监测系统一、实际应用场景描述 (Scenario)在海钓或路亚钓法中,鱼竿的调性(Action)和钓线的磅数(LB)至关重要。新手往往凭感觉遛鱼,当大鱼突然发…...

编写程序让智能洗手液机检测手部靠近,自动出液,无需按压。

🧼 项目实战:基于红外测距的智能洗手液机控制系统一、实际应用场景描述 (Scenario)在机场、医院、办公楼等公共场所,传统的按压式洗手液机存在卫生隐患——每个人都需要接触同一个泵头,容易造成细菌交叉感染。目标:通过…...

如何彻底告别微软Edge浏览器:EdgeRemover专业卸载工具完全指南

如何彻底告别微软Edge浏览器:EdgeRemover专业卸载工具完全指南 【免费下载链接】EdgeRemover PowerShell script to remove Microsoft Edge in a non-forceful manner. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover 你是否曾经尝试卸载Microsof…...