十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ROS2 Jazzy Jalisco 安装与配置指南:Ubuntu 24.04 环境搭建

ROS2 Jazzy Jalisco 安装与配置指南:Ubuntu 24.04 环境搭建 1. 从零开始的Jazzy Jalisco为什么选择它作为你的ROS2起点如果你正在机器人领域摸索尤其是从ROS1过渡过来或者想直接上手最新的ROS2那么“Jazzy Jalisco”这个名字最近一定频繁出现在你的视野里。作为ROS2的长期版本Jazzy版本号ROS 2 Jazzy Jalisco在2024年5月发布它带来的不仅仅是又一个字母“J”开头的代号。对于初学者和寻求稳定性的开发者而言Jazzy提供了一个在当前时间点2024-2025年非常理想的平衡点它基于Ubuntu 24.04Noble Numbat构建这意味着你能获得一个相对较新且支持周期长的底层操作系统同时它又不像一些滚动发布的版本那样充满不确定性其“长期支持”的定位意味着在未来几年内你都能获得安全更新和错误修复这对于需要长期维护的机器人项目至关重要。很多新手在入门时容易陷入一个误区盲目追求最新、最炫的版本。但机器人开发尤其是涉及到硬件和复杂系统集成时稳定性往往比前沿性更重要。Jazzy恰好卡在了一个成熟与前瞻的节点上。它继承了前一个LTS版本Humble的稳定基础又引入了一些必要的更新和改进比如对更新的DDS中间件实现如Cyclone DDS更好的支持以及一些工具链的优化。因此将Jazzy作为你的第一个ROS2学习环境可以让你在接触现代ROS2生态的同时避免被一些尚不稳定的实验性功能所困扰把精力集中在核心概念和技能的学习上。2. 安装前的关键决策系统环境与安装方式详解在真正敲下安装命令之前有几个关键决策点直接决定了后续安装的顺利程度和使用体验。这一步走对了后面能省去大量排查环境问题的时间。2.1 操作系统选择Ubuntu 24.04是唯一官方推荐ROS2 Jazzy Jalisco的官方二进制安装包仅针对Ubuntu 24.0464位提供。这是你必须遵守的硬性条件。尝试在其他Linux发行版如Debian、Fedora或旧版本的Ubuntu如22.04、20.04上安装预编译的Jazzy包几乎注定会失败因为存在库依赖和系统版本的严格匹配要求。注意如果你必须使用其他操作系统唯一的途径是通过源码编译但那是一个复杂得多的过程会引入大量额外的依赖和配置问题绝对不推荐给初学者。对于学习目的强烈建议在物理机或虚拟机中安装纯净的Ubuntu 24.04 Desktop。关于虚拟机如VMware、VirtualBox与物理机的选择我的建议是如果你的电脑性能尚可尤其是内存建议分配8GB以上给虚拟机优先使用虚拟机。虚拟机提供了完美的环境隔离和快照功能。你可以在安装过程中任意创建快照一旦把系统搞乱了一键就能恢复到干净状态这对于反复试验和学习ROS的各种操作包括可能会损坏系统的操作来说是无价之宝。物理机安装虽然性能无损但一旦环境污染恢复起来非常麻烦。2.2 安装源配置设置正确的软件仓库这是安装流程中的核心步骤目的是告诉你的Ubuntu系统去哪里下载ROS2的软件包。ROS2的软件包存放在特定的APT仓库中。我们需要将ROS2的仓库源添加到系统的软件源列表里。打开终端依次执行以下命令。每一行命令都有其明确意图我建议你不要一次性复制粘贴所有命令而是逐行执行并观察输出这能帮你更好地理解过程。首先确保你的Ubuntu系统可以访问universe仓库这里包含了许多社区维护的免费开源软件ROS的一些依赖可能在这里。sudo apt install software-properties-common sudo add-apt-repository universe接下来添加ROS2的GPG密钥。GPG密钥是一种数字签名用于验证从仓库下载的软件包是否来自合法的ROS官方没有被篡改。这一步是安全性的保障。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然后将ROS2 Jazzy的仓库源添加到系统。这里我们使用echo命令将仓库信息写入到/etc/apt/sources.list.d/ros2.list这个文件中。注意我们使用了[signed-by]选项来指定刚才导入的密钥环文件这是一种更现代的、安全的源配置方式。echo deb [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命令中的$(lsb_release -cs)会自动获取你当前系统的Ubuntu版本代号对于Ubuntu 24.04它就是noble。这确保了无论你将来在哪个版本上操作这条命令它都能指向对应版本的仓库。2.3 安装类型选择Desktop版 vs. Base版更新软件包索引后你将面临一个选择安装哪个版本的ROS2 Jazzy主要有两种ros-jazzy-desktop(推荐)这是“桌面完整版”。它包含了ROS2的核心库、通信中间件、基础工具如RViz2可视化工具、RQt图形化工具套件以及一系列常用的功能包如TF2、导航栈的仿真包等。对于绝大多数学习和开发场景这是最佳选择。你安装后就可以直接运行大部分教程和演示无需再额外安装一堆包。ros-jazzy-ros-base这是“基础版”。仅包含ROS2的核心通信库RCL, RCLCPP等、命令行工具和最小化的功能包。它体积更小适合在资源受限的嵌入式设备或只想测试核心通信功能的场景。对于初学者如果只安装这个你会发现很多教程里的命令尤其是需要GUI工具的都无法运行。因此除非你有明确的限制否则请毫不犹豫地选择桌面完整版。执行以下命令进行安装sudo apt update sudo apt install ros-jazzy-desktop这个安装过程会持续一段时间取决于你的网速它会自动解决并安装大量的依赖包。期间终端会显示进度你需要确认一次磁盘空间的使用按Y然后回车即可。3. 环境配置与“工作空间”概念初探安装完成并不代表你可以直接使用ros2命令。你需要告诉系统ROS2的库和可执行文件在哪里。这就是环境配置Sourcing的作用。3.1 如何让系统认识ROS2命令ROS2将其核心环境变量设置在一个名为setup.bash或setup.zsh取决于你的shell的脚本文件中。每次打开新的终端你都需要“获取”source这个脚本。对于默认的Bash shell执行source /opt/ros/jazzy/setup.bash执行后你再输入ros2并按回车应该就能看到ROS2命令的帮助信息了而不是“命令未找到”。但是每次新开终端都要手动source一次非常麻烦。一个一劳永逸的方法是将这行命令添加到你的shell启动文件~/.bashrc的末尾。这样每次启动终端时系统都会自动为你配置好ROS2环境。echo source /opt/ros/jazzy/setup.bash ~/.bashrc source ~/.bashrc第二行命令是立即生效让你在当前终端就能用。之后新开的所有终端都会自动配置好。提示如果你使用的是ZshOh My Zsh等对应的启动文件是~/.zshrc命令也需改为source /opt/ros/jazzy/setup.zsh。3.2 理解ROS2工作空间Workspace这是ROS2开发中最核心的概念之一必须从一开始就建立正确的认知。工作空间是你存放自己编写的ROS2代码功能包的专属目录。系统安装的ROS2包在/opt/ros/jazzy下是只读的你不能也不应该在那里修改或添加代码。一个典型的工作空间结构如下~/ros2_ws/ # 工作空间根目录名字可自定如my_robot_ws src/ # 源代码空间 (Source Space)存放所有功能包源码的地方 build/ # 编译空间 (Build Space)CMake/Make编译过程中的中间文件 install/ # 安装空间 (Install Space)编译后生成的可执行文件和库 log/ # 日志空间 (Log Space)编译和运行时的日志src目录是你唯一需要手动创建和管理的。build,install,log目录会在你编译工作空间时由构建工具colcon自动创建。为什么需要这么复杂这源于ROS2的构建系统设计。它允许你将多个独立的功能包放在同一个src下然后一次性编译所有包并处理它们之间的依赖关系。编译后的产物可执行文件、库、消息定义等被集中安装到install目录。当你想要使用这个工作空间里的功能包时你需要source的不是ROS2系统的setup.bash而是你工作空间install目录下的local_setup.bash或setup.bash。后者会“叠加”在系统环境之上使你自定义的包优先级更高。现在让我们创建第一个工作空间并体验一下编译过程mkdir -p ~/ros2_ws/src # 创建带src子目录的工作空间 cd ~/ros2_ws此时你的src目录是空的。我们可以从ROS2的示例库中拉取一些示例代码来测试。git clone https://github.com/ros2/examples src/examples -b jazzy这个命令从ROS2的示例仓库中克隆了jazzy分支的代码到src/examples目录下。4. 第一次构建使用Colcon编译工作空间ROS2使用colcon作为其构建工具。它可能已经在安装桌面版时作为依赖被安装了。你可以通过colcon --help来检查。如果没有可以通过sudo apt install python3-colcon-common-extensions安装。进入工作空间根目录执行构建cd ~/ros2_ws colcon build这是你第一次运行colcon build可能会花上几分钟。colcon会做以下几件事递归查找src目录下的所有功能包通过查找package.xml文件。为每个包配置构建环境调用CMake。编译所有包。将编译产物可执行文件、库等“安装”到install目录下。编译成功后你会在终端看到总结信息并且工作空间内会生成build、install、log三个新目录。4.1 使用你刚刚编译的包要运行你刚刚编译的示例程序你需要source你工作空间的安装文件。注意这里source的是你工作空间install目录下的文件而不是系统的。source ~/ros2_ws/install/local_setup.bash现在环境已经设置好了。让我们运行一个经典的“发布者-订阅者”示例。打开两个终端。在第一个终端运行一个发布者节点它每秒发布一条“Hello World”消息到/topic话题ros2 run examples_rclcpp_minimal_publisher publisher_member_function在第二个终端同样需要先source工作空间环境或者确保.bashrc已配置系统环境运行一个订阅者节点监听/topic话题ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function如果一切正常你将在订阅者终端看到不断打印出的“Hello World: X”消息而发布者终端则显示“Publishing: Hello World: X”。恭喜你你已经成功运行了第一个ROS2通信程序这证明了你的ROS2安装、环境配置、工作空间构建和基本运行都是完全正确的。5. 基础工具链验证与常用命令速览安装并成功运行示例后我们还需要验证几个关键工具并熟悉几个最常用的命令这是后续所有开发的基础。5.1 验证核心工具RViz2与RQtROS2的桌面完整版包含了强大的可视化工具。让我们快速验证它们是否能正常工作。RViz2这是ROS和ROS2中最重要的3D可视化工具。它可以显示机器人模型、传感器数据如激光雷达点云、摄像头图像、坐标系变换TF、路径规划结果等。在终端输入rviz2一个空白的RViz2窗口应该会弹出。你可以通过点击左侧的“Add”按钮来添加各种显示插件。如果窗口成功打开说明GUI相关的依赖安装无误。RQt这是一个基于Qt的图形化工具框架里面集成了许多实用的小工具例如话题查看器rqt_graph、节点图rqt_graph、话题发布器、参数动态重配置器等。运行一个最常用的——节点图工具它可以可视化当前系统中所有节点、话题、服务之间的连接关系。rqt_graph在运行之前的发布者-订阅者例子的同时打开rqt_graph你应该能看到一个包含/publisher_member_function节点、/subscriber_member_function节点以及连接它们的话题/topic的图形。这是一个极其有用的调试工具。5.2 必须掌握的ROS2命令行工具ROS2提供了丰富的命令行工具以下是最常用、必须掌握的几个ros2 node list列出当前系统中所有正在运行的节点。ros2 topic list列出当前系统中所有活跃的话题。ros2 topic echo topic_name实时打印指定话题上流动的消息内容。这是调试时查看数据最直接的方式。ros2 topic info topic_name查看某个话题的详细信息包括消息类型、发布者和订阅者的数量。ros2 interface show msg_type查看某个消息类型如std_msgs/msg/String的具体数据结构。ros2 run package_name executable_name运行指定功能包中的可执行节点。我们刚才已经用过了。ros2 launch package_name launch_file_name启动一个launch文件用于一次性启动多个节点和配置参数。这是启动复杂机器人系统的主要方式。你可以尝试在运行示例的同时打开另一个终端输入ros2 node list和ros2 topic list来查看效果。6. 安装后的必要优化与问题排查指南即使安装成功为了获得更好的开发体验还有一些优化步骤值得一做。同时了解常见问题的排查思路也至关重要。6.1 自动补全与命令行工具增强ROS2的命令行工具支持自动补全按Tab键但这需要额外的包来启用。安装它会让你的操作效率大幅提升。sudo apt install ros-jazzy-ros2cli安装后关闭终端重新打开再输入ros2后按两下Tab键你会看到所有可用的子命令列表。6.2 网络代理与软件源更新问题在国内网络环境下从packages.ros.org下载软件包可能会非常慢甚至失败。一个有效的解决方案是使用国内镜像源。你可以修改之前添加的/etc/apt/sources.list.d/ros2.list文件将URL替换为国内镜像例如中国科学技术大学USTC的镜像sudo sed -i s|http://packages.ros.org/ros2/ubuntu|https://mirrors.ustc.edu.cn/ros2/ubuntu|g /etc/apt/sources.list.d/ros2.list sudo apt update替换后再次执行sudo apt update下载速度通常会有显著改善。6.3 经典问题“Command ‘ros2‘ not found”这是新手遇到最多的问题根本原因就是没有正确source环境。请按以下步骤排查检查是否source在新终端中是否执行了source /opt/ros/jazzy/setup.bash或将其添加到了~/.bashrc可以用echo $ROS_DISTRO命令测试如果输出jazzy则说明环境已加载。检查shell类型如果你使用了Zsh确保source的是setup.zsh并且命令添加到了~/.zshrc。检查路径极少数情况下安装可能不完整。确认/opt/ros/jazzy/bin目录是否存在且包含ros2可执行文件。6.4 编译错误缺失依赖包在编译自己的或从GitHub克隆的第三方功能包时常会遇到编译错误提示找不到某个头文件或库。这通常是因为缺少对应的ROS2依赖包。每个ROS2功能包都在其package.xml文件中声明了依赖。你可以使用rosdep工具来自动安装这些依赖。首先确保rosdep已初始化并更新sudo rosdep init rosdep update然后在你的工作空间src目录下运行以下命令来安装所有缺失的依赖rosdep install -i --from-path src --rosdistro jazzy -yrosdep会解析src下所有包的package.xml并尝试通过系统的包管理器apt安装列出的依赖。这是解决编译依赖问题的标准做法。7. 下一步行动从安装到真正入门至此一个完整、可用的ROS2 Jazzy开发环境已经搭建完毕。但安装只是万里长征的第一步。为了真正“入门”我建议你立即开始以下实践将环境用起来完成官方教程访问ROS2官方文档docs.ros.org找到“Jazzy”版本的教程从“Beginner: CLI Tools”开始系统地学习节点、话题、服务、参数、动作等核心概念。务必动手敲一遍命令。创建你的第一个功能包不要只停留在运行示例。在工作空间src目录下使用ros2 pkg create命令创建一个属于自己的功能包尝试编写一个简单的发布者或订阅者。哪怕只是修改示例中的消息内容这个过程会让你理解包的结构。学习使用Launch文件机器人系统通常由多个节点组成。学习编写.launch.py文件来一次性启动它们并学习如何在launch文件中设置参数。探索仿真安装ros-jazzy-turtlebot3-*包或ros-jazzy-gazebo-*包尝试在Gazebo仿真环境中驱动一个虚拟机器人。这是学习机器人导航、SLAM等高级功能的安全且低成本的方式。记住ROS2是一个工具核心在于理解其基于节点的分布式通信思想。安装环境是赋予你使用这个工具的能力而持续的项目实践和概念学习才是让你从“安装成功”走向“运用自如”的关键。这个基于Ubuntu 24.04和Jazzy的稳定环境将成为你未来很长一段时间内探索机器人世界的可靠基地。
返回列表