news 2026/10/8 6:50:15

WSL2 Ubuntu 24.04 ROS 2 Jazzy 自定义 srv 服务通信全链路实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WSL2 Ubuntu 24.04 ROS 2 Jazzy 自定义 srv 服务通信全链路实战指南

摘要:本文基于 WSL2 Ubuntu 24.04 真机环境,完整演示 ROS 2 Jazzy 下自定义 srv 服务接口的全链路搭建与通信流程。内容涵盖:自定义接口包与纯 Python 业务包的创建、package.xml 与 CMakeLists.txt 的关键避坑配置、setup.cfg 与 setup.py 的适配补丁,以及编译、环境刷新、服务端/客户端启动与验证的完整命令。全程零冗余,照着操作即可一次跑通从接口定义到双向服务通信的全过程。

关键词:ROS 2 自定义服务接口、WSL2 ROS 2 开发、Python 服务通信实战

一、前置环境 - WSL2 Ubuntu 24.04 LTS 纯净环境

  • ROS 2 Jazzy 桌面完整版
  • 工作区路径:/home/zz/ros2_ws

二、为什么选 srv 做服务通信

  1. 什么是 ROS2 的 srv

    ROS 2 里的 srv 是专门定义一问一答服务通信的接口协议文件,你可以把它理解成节点之间的专属「通话约定」:客户端发起请求,服务端处理完必须返回明确的响应结果,是和 topic 发布订阅完全不同的另一套通信范式。

  2. srv 和 topic 的对比

    对比维度topic(发布订阅)srv(服务通信)
    通信模式单向广播,发布者发完就不管双向同步,严格的请求→应答一对一
    数据流向1 对多、多对多无状态广播点对点,单次请求对应单次返回
    核心适用场景高频持续上报数据,比如摄像头图像、雷达点云单次指令类操作,比如调用导航、触发拍照、电机启停
  3. 相比 topic 单向广播,自定义 srv 有三个难以替代的核心优势:

    • 天然带执行反馈:发完请求立刻就能拿到服务端的执行结果,不会像 topic 那样发完指令完全不知道对方有没有收到、有没有执行成功
    • 双向数据独立定义:一份 srv 文件里可以分开写请求段和响应段,入参和返回值的数据结构完全独立,不用像 topic 那样额外拆两个消息包来回发
    • 编译期强类型校验:两端的请求响应字段定义不匹配直接编译报错,从根源上避免运行时传错字段、数据错位的隐性 Bug,工业级控制场景几乎 100% 用 srv 做核心交互

三、全量文件目录总览

先展示最终的完整目录结构,所有文件位置一目了然,不会放错:

~/ros2_ws/src/ ├── my_first_interfaces/ # 自定义接口包 │ ├── CMakeLists.txt │ ├── package.xml │ └── srv/ │ └── AddTwoInts.srv └── my_first_pkg/ # Python 业务包 ├── setup.cfg ├── setup.py ├── package.xml ├── resource/ │ └── my_first_pkg └── my_first_pkg/ ├── add_two_ints_server.py └── add_two_ints_client.py

四、创建自定义接口包

这一步最容易触发 Jazzy 专属强制校验报错,直接按下面配置编写即可一次通过。先创建接口包,再依次配置 srv 文件、package.xml 和 CMakeLists.txt:

  1. 进入工作区 src 目录创建接口包
cd~/ros2_ws/src ros2 pkg create my_first_interfaces --build-type ament_cmake
  1. 新建 srv 目录,编写 AddTwoInts.srv 文件
int64 a int64 b --- int64 sum
  1. 替换 package.xml,关键避坑:<member_of_group>必须放在根节点下,不要放在<export>里
<?xml version="1.0"?><packageformat="3"><name>my_first_interfaces</name><version>0.0.0</version><license>Apache-2.0</license><buildtool_depend>ament_cmake</buildtool_depend><build_depend>rosidl_default_generators</build_depend><
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/8 6:50:13

真实使用感受|Okbiye 科研绘图,零基础也能搞定论文里的学术图表

写论文的同学大概都懂这种无奈&#xff1a;研究数据整理好了&#xff0c;结果卡在绘图环节。想学 Origin、Visio&#xff0c;教程一大堆&#xff0c;上手却特别难&#xff0c;光是调试坐标轴、字体、配色就要耗费大半天。网上找的模板大多不符合学术规范&#xff0c;自己手绘流…

作者头像 李华
网站建设 2026/10/8 6:49:35

多点数智Dmall OS零售系统AI能力在胖东来落地执行情况技术分析

胖东来这种把服务做到极致的零售企业&#xff0c;为什么会选择和一家科技公司深度绑定&#xff1f;更让人意外的是&#xff0c;双方合作的成果里&#xff0c;有一组数据常被提起&#xff1a;13 家实体门店曾在一晚完成系统切换&#xff0c;2026 年前 8 个月 14 家门店做出 195 …

作者头像 李华
网站建设 2026/10/8 6:49:34

Windows 10虚拟内存设置不生效解决方案

Windows 10虚拟内存设置不生效解决方案 之前早在虚拟内存设置中把 C 盘设为“无分页文件”&#xff0c;并将分页文件配置在 D 盘。但排查后发现&#xff0c;设置界面显示的目标盘与系统实际使用的位置并不一致&#xff1a;分页文件仍然位于 C:\Windows\D&#xff0c;占用约 14…

作者头像 李华
网站建设 2026/10/8 6:48:46

趣博思 AI|开题报告不是形式主义,它藏着论文成败的 “总开关“

很多同学对开题报告有一个根深蒂固的误解&#xff0c;觉得它不过是毕业流程里走过场的一环&#xff0c;随便填几张表格就能交差。直到真正动笔写论文&#xff0c;才发现前期开题草率留下的隐患&#xff0c;会在后面几万字里不断反噬&#xff1a;选题边界模糊&#xff0c;写着写…

作者头像 李华
网站建设 2026/10/8 6:47:35

ponytail插件实战:JSON可视化查看与接口联调提效指南

很多人第一次看到“ponytail”这个词&#xff0c;第一反应是马尾辫。我当时也差不多&#xff0c;直到同事把接口返回的一团乱麻JSON丢到我面前&#xff0c;又打开一个叫ponytail的插件把数据结构变成表格视图之后&#xff0c;我才反应过来——这玩意儿不是扎头发的&#xff0c;…

作者头像 李华