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

ROS中的自定义消息

在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

生成自定义消息

1.创建 qq_msgs 软件包,并添加依赖相 message_generation message_runtime

在这里插入图片描述

2.软件包添加msg目录,新建自定义消息文件,以 .msg 结尾 (文件夹的名称只能是msg,消息文件一定以大写开头)

在这里插入图片描述

在这里插入图片描述

3.在CMakeLists.txt中,检查message_generation message_runtime 是否存在

在这里插入图片描述

4.在CMakeLists.txt中,将新建的.msg 文件加入add_message_files()

在这里插入图片描述

5.在CMakeLists.txt中,去掉generation_message()注释符号,将依赖的其他消息包的名称添加进去

在这里插入图片描述

6.在CMakeLists.txt中,将 message_runtime 加入 catkin_package() 的CATKIN_DEPENDS

在这里插入图片描述

7.在package.xml中,将message_generation 、message_runtime加入<build_depend>和<exec_depend>

在这里插入图片描述

8.编译软件包,生成新的消息类型,并使用 rosmsg show 软件包/消息文件

在这里插入图片描述

使用自定义类型

1.在节点代码中,先include新消息类型的头文件

2.在发布或者订阅话题的时候,将话题中的消息类型设置为新的消息类型

3.按照新的消息结构,对消息包进行赋值发送或读取解析

发布者

#include <ros/ros.h>
#include <std_msgs/String.h>
#include <qq_msgs/Carry.h>int main(int argc, char *argv[])
{ros::init(argc,argv,"wave_node"); //初始化printf("Hello World\n");//创建节点句柄ros::NodeHandle nh;ros::Publisher pub = nh.advertise<qq_msgs::Carry>("xiao_qiao_dai_fei_qun",10);//生成频率对象,可以控制话题发布的频率ros::Rate rate(10);  //一秒发布10次while(ros::ok()){printf("我要开始刷屏了!\n");//生成一个消息包qq_msgs::Carry msgs;msgs.grade = "王者";msgs.star = 50;msgs.data = "大刘求带飞";//发布消息pub.publish (msgs);//进行短时间的阻塞rate.sleep();}return 0;
}

订阅者

#include <ros/ros.h>
#include <std_msgs/String.h>
#include <qq_msgs/Carry.h>//回调函数
void qiao_callback(qq_msgs::Carry msg)
{/*printf(msg.data.c_str());printf("\n");*///能够显示接受信息时间的函数ROS_WARN(msg.grade.c_str());ROS_WARN("%d 星",msg.star);ROS_INFO(msg.data.c_str());}void yao_callback(std_msgs::String msg)
{//将消息打印成黄色ROS_WARN(msg.data.c_str());  
}int main(int argc, char *argv[])
{setlocale(LC_ALL,"");ros::init(argc,argv,"qioa_node");ros::NodeHandle handle;ros::Subscriber sub = handle.subscribe("xiao_qiao_dai_fei_qun",10,qiao_callback);ros::Subscriber sub2 = handle.subscribe("fu_zhu_qiu_dai_qun",10,yao_callback);while (ros::ok){ros::spinOnce();}return 0;
}

4.在CMakeList.txt文件的find_package()中,添加新消息包名称作为依赖项

在这里插入图片描述

5.在节点的编译规则中,添加一条add_dependencies(),将 新消息软件包名称_generate_message_cpp

在这里插入图片描述

6.在package.xml中,将新消息包添加到<build_depend>和<exec_depend>中去

在这里插入图片描述

7.订阅者和发布者一样

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/345178.html

相关文章:

  • Windows 11 安装 Miniforge,配置国内源
  • 基层医疗遇到了什么问题?
  • 【spring security】权限管理组件执行流程详解
  • centos7安装oracle19c流程(自用)
  • Highcharts 推出适用于 Svelte 的官方集成库
  • 【软考架构】关系数据库
  • 无人机电机与螺旋桨的匹配原理及方法(一)
  • 随机森林--集成学习
  • 华为网路设备学习-29(BGP协议 四)路由策略-实验
  • 虚拟线程(高版本JDK)
  • 在 SymPy 中代入抽象函数的数值和导数值
  • JSP入门详解
  • Leetcode—1148. 文章浏览 I【简单】
  • AI重构消费决策:从AI试衣间降退货率到预判式复购,购物效率提升新逻辑
  • FROM Buggy_Code SELECT Liability_Causes # 民法典之故障代码责任溯源
  • Prompt工程完全指南:从基础结构到AI时代的上下文革命
  • 意识上传与智能增强:脑机接口与AI共塑的人类未来图景
  • 如何用批量钱包实现链上“身份伪装”?
  • PADS Logic软件及相关工具
  • s3cmd使用方法
  • 常见整流电路总结
  • 当我们想用GPU(nlp模型篇)
  • MySQL诊断系列(6/6):系统监控——实时掌握数据库“生命体征”
  • 【jar包启动,每天生成一个日志文件】
  • 本地 Graph-RAG(图 + RAG) 部署与使用落地方案
  • Unreal Engine AActor
  • 机器学习--线性回归
  • K8S - NetworkPolicy的使用
  • Spring发布订阅模式详解
  • 国产CANFD芯片技术特性与应用前景综述:以ASM1042系列为例