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

ROS实现自定义信息以及使用

常见的消息包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
消息包定义一般如下👇
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(1)创建包和依赖项
在这里插入图片描述
在这里插入图片描述

(2)在新建的qq_msgs的包新建msgs的文件夹,在该文件夹里面新建Carry.msg类型的文件。
在这里插入图片描述

  其实,Carry.msg就是你自己定义的消息类型,属于qq_msgs包下面的。
(3)在对应CMakeList.txt文件下查看如下信息

  • 查看依赖项是否都满足

在这里插入图片描述

  • (4)选中如下文件
    在这里插入图片描述
  • 取消注释
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    因为我们只需要使用string 还有int64类型的数据组成我们的新的消息包,所以就只需要包括标准消息包就可以了。

在这里插入图片描述
保存即可
(5)打开package.xml文件
在这里插入图片描述
在这里插入图片描述
(6)保存 编译
在这里插入图片描述

使用新的消息包
chao_node节点文件如下

#include<ros/ros.h>
#include<std_msgs/String.h>#include<qq_msgs/Carry.h>  //引进我们自己的消息包int main(int argc, char  *argv[])
{ros::init(argc,  argv,  "chao_node");printf("小马同学,hello welcome coming Ros world!  \n ");// 建立节点句柄ros::NodeHandle nh;//建立发布者ros::Publisher pub=nh.advertise<qq_msgs::Carry>("play_game_topic",10);//控制循环次数,ros系统给我自带了控制语句,不用我们自己写睡眠函数ros::Rate loop_rate(10); // publish 10 times of per secondwhile(ros::ok()){printf("xiaoma will carry  !\n");//开始定义标准消息包、qq_msgs::Carry msg;msg.grade = "hornor";msg.star=30;msg.data="please  come on!\n";//给发布者发布pub.publish(msg);loop_rate.sleep();//调用loop_rate的sleep函数,让其产生短暂的阻塞}return 0;
}

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

在这里插入图片描述
ma_node的代码

#include<ros/ros.h>
#include<std_msgs/String.h>
#include<qq_msgs/Carry.h>   //引进我们自己的消息包
void xiaoli_callback(qq_msgs::Carry msg)
{ROS_INFO(msg.grade.c_str());ROS_INFO("%lld", msg.star);ROS_INFO(msg.data.c_str());}void play_game_callback(qq_msgs::Carry msg)
{ROS_WARN(msg.data.c_str());//这个输出语句只是把输出内容变成还黄色
}int main(int argc, char  *argv[])
{ros::init(argc,  argv,  "ma_node");printf("马同学,我将接受发布者的消息! \n ");// 建立节点句柄ros::NodeHandle nh;//建立订阅者1ros::Subscriber sub=nh.subscribe("xiang_he_xiao_ma_wan_you_xi",10,xiaoli_callback);//建立订阅者2不能和第一个名字一样ros::Subscriber sub2=nh.subscribe("play_game_topic",10,play_game_callback);while(ros::ok()){ros::spinOnce();}return 0;
}

他的配置文件格式与chao_node一样,分别是CMakeList.txt文件和package.xml文件。
在这里插入图片描述
运行结果:
在这里插入图片描述

http://www.lryc.cn/news/119573.html

相关文章:

  • 初始C语言——详细讲解操作符以及操作符的易错点
  • 论文写作常用词句积累
  • 伺服系统::编码器
  • 计算机网络 数据链路层 虚拟局域网 VLAN
  • Git全栈体系(五)
  • spring-boot webservice的例子
  • 第八章 SpringBoot @ConfigurationProperties配置绑定
  • 【SpringBoot】88、SpringBoot中使用Undertow替代Tomcat容器
  • java8 求和
  • 手眼标定眼在手上
  • 【数据结构】初始二叉树
  • 创建和使用角色(RHCE)
  • Leetcode 583 两个字符串的删除操作(经典)
  • c#实现工厂模式
  • c#在设计时调试自定义 Windows 窗体控件
  • Ajax 笔记(二)—— Ajax 案例
  • 微信小程序隐私协议模板
  • Three.js WebXR沉浸式渲染简明教程
  • flask使用cookie (设置cookie与查看cookie内容)
  • 信息学奥赛一本通——1281:最长上升子序列
  • vue3+antv x6自定义节点样式
  • Arcgis中直接通过sde更新sqlserver空间数据库失败
  • 使用gewe框架进行微信群组管理(一)
  • 【Linux】UDP协议——传输层
  • 【Linux进阶之路】进程(上)
  • 爬虫018_urllib库_cookie反爬_post请求百度翻译获取百分翻译内容_以及详细翻译内容---python工作笔记037
  • 【Nginx】Nginx网站服务
  • go语言从0基础到安全项目开发实战
  • Kubernetes Service 工作原理
  • 面部表情识别4:C++实现表情识别(含源码,可实时检测)