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

【ROS2】自定义消息接口的创建和使用

写在前面

参考了小鱼的ROS2教程(但遇到了报错),根据自己的思路重新整理一下,方便下次开发直接用

注意,文中所使用的xxx并不指代特定内容,也不表示他们是相同的内容,仅说明这里可以自定义,一切按照个人项目为准

package.xml的各种标签介绍

  • <buildtool_depend>
    指定构建工具本身的依赖项,通常是构建系统(如 ament_cmake)所需的工具链依赖。

  • <depend>
    声明运行时依赖项 (同时隐含编译时依赖),即该功能包在运行或编译时直接需要的其他功能包

  • <test_depend>
    声明测试相关的依赖项,仅在运行测试时需要

  • <build_depend>
    仅在编译阶段需要的依赖(如头文件、编译工具)

  • <exec_depend>
    仅在运行阶段需要的依赖(如动态链接库)

  • <member_of_group>rosidl_interface_packages</member_of_group>
    标记当前功能包为包含ROS IDL接口(如 .msg、.srv)的功能包,确保生成的接口代码被正确安装到工作空间

总而言之,各种depend定义了在程序编译运行的不同阶段所用到的依赖

具体实现

  1. 进入或创建一个工作空间
    记住ROS2的所有功能包都是放在工作空间的src目录下的
  2. 在xxx_ws/src/目录下创建功能包
    在xxx_ws路径下运行:
    ros2 pkg create test_interfaces --build-type ament_cmake --dependencies rclcpp --destination-directory src
    
    意思是在当前路径下的src文件夹中,创建名为test_interfaces的功能包,并添加rclcpp依赖,使用ament_cmake方式构建
  3. 在xxx_ws/src/test_interfaces/路径下(和CMakeListstxt, package.xml同级),创建文件夹msg和srv,分别用于存放消息接口msg和服务接口srv(如果还有动作接口,就创建action文件夹)
  4. 在每个文件夹中放入对应的接口文件,并填入对应的接口定义,比如:
    在服务接口MoveRobot.srv写入:
    # 前进后退的距离
    float32 distance
    ---
    # 当前的位置
    float32 pose
    
    在话题接口RobotStatus.msg写入:
    uint32 STATUS_MOVEING = 1
    uint32 STATUS_STOP = 1
    uint32  status
    float32 pose
    
    目录结构如下:
    在这里插入图片描述
http://www.lryc.cn/news/587067.html

相关文章:

  • # 通过wifi共享打印机只有手动翻页正反打印没有自动翻页正反打印,而通过网线连接的主机电脑可以自动翻页正反打印
  • 信息收集(外围打点)
  • 在上海开发小程序,怎么做出“高级感”?
  • sql:sql在office中的应用有哪些?
  • 机器学习sklearn入门:使用KNN模型分类鸢尾花和简单调参
  • Matplotlib(一)- 数据可视化与Matplotlib
  • 前端性能优化利器:懒加载技术原理与最佳实践
  • ADRC自抗扰控制—深度解析与实战指南2
  • 适配器模式:兼容不兼容接口
  • 《[系统底层攻坚] 张冬〈大话存储终极版〉精读计划启动——存储架构原理深度拆解之旅》-系统性学习笔记(适合小白与IT工作人员)
  • Redis数据类型之zset
  • 补:《每日AI-人工智能-编程日报》--2025年7月12日
  • Vue单文件组件与脚手架工程化开发
  • 小白学Python,操作文件和文件夹
  • 【王树森推荐系统】重排04:DPP 多样性算法(上)
  • leetGPU解题笔记(2)
  • CSAPP_第一章:计算机系统漫游读书笔记
  • 从文本中 “提取” 商业洞察“DatawhaleAI夏令营”
  • 通信子网 V
  • Java 内部类详解:从基础到实战,掌握嵌套类、匿名类与局部类的使用技巧
  • 一天速通TypeScript入门基础知识
  • Java反射机制深度解析
  • VsCode的LivePreview插件应用
  • 20250713-day14
  • UNet改进(22):融合CNN与Transformer的医学图像分割新架构
  • 板凳-------Mysql cookbook学习 (十一--------9)
  • ALB、NLB、CLB 负载均衡深度剖析
  • spring cloud负载均衡分析之FeignBlockingLoadBalancerClient、BlockingLoadBalancerClient
  • 【Complete Search】-基础完全搜索-Basic Complete Search
  • 小车避障功能的实现(第八天)