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

news2024/11/24 21:06:19

常见的消息包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
消息包定义一般如下👇
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(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 second
    while(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;
    //建立订阅者1
    ros::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.coloradmin.cn/o/849893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS软件包管理rpm、yum

一、软件包概述 Linux常见软件包分为两种&#xff0c;分别是源代码包、二进制文件包。源代码包是没有经过编译的包&#xff0c;需要经过GCC、C编译器编译才能运行&#xff0c;文件内容包含源代码文件&#xff0c;通常以.tar.gz、.zip、.rar结尾&#xff1b;二进制包无需编译&am…

尚硅谷大数据项目《在线教育之采集系统》笔记003

视频地址&#xff1a;尚硅谷大数据项目《在线教育之采集系统》_哔哩哔哩_bilibili 目录 P036 P037 P038 P039 P041 P042 P043 P044 P045 P046 P036 先启动zookeeper&#xff0c;在启动kafka&#xff0c;启动hadoop中的hdfs node003启动flume&#xff0c;node001启动f…

用户稳定增长,拆解美团立足于“吃”的刚需价值

近期&#xff0c;QuestMobile发布了《中国移动互联网2023年上半年大报告》。报告显示&#xff0c;上半年&#xff0c;我国移动互联网月人均单日使用时长同比增长7.7%至7.2小时&#xff0c;移动互联网月活用户增长至12.13亿。 尽管在几年前&#xff0c;互联网流量触顶就已经成为…

re学习(30)攻防世界-hackme(代码复原2)

思路&#xff1a; 1.输出成功&#xff0c;v26不为0,说明关系式&#xff1a;v21((unsigned __int8)v24 ^ v20) →2.在汇编代码第37行&#xff0c;输入v16v20&#xff0c;所以求的值为v20 →3.根据关系式&#xff0c;求的值v20v21^v24 →4.v21在第汇编代码第36行也可以提取出来…

springboot人事管理系统设计与实现

126springboot人事管理系统java web员工信息管理系统 人事管理系统&#xff0c;属于ERP的一个部分。它单指汇集成功企业先进的人力资源管理理念、人力资源管理实践、人力资源信息化系统建设的经验&#xff0c;以信息技术实现对企业人力资源信息的高度集成化管理&#xff0c;为…

dijkstra算法相关(使用邻接表和优先队列两种方法)力扣题:743. 网络延迟时间(有向图);1334. 阈值距离内邻居最少的城市(无向图)

具体dijkstra算法就不展开说了&#xff0c;因为太多帖子来解释了&#xff0c;并且这也只是我的个人总结/记录&#xff0c;我会把自己的思考过程写在代码的注释中。 743. 网络延迟时间&#xff08;有向图&#xff09; 有 n 个网络节点&#xff0c;标记为 1 到 n。 给你一个列…

ArduPilot开源飞控之MAVProxy简介

ArduPilot开源飞控之MAVProxy简介 1. 源由2. 特点3. 安装 & 更新3.1 安装Step 1: 烧录raspberryPi镜像Step 2&#xff1a;apt软件包更新Step 3&#xff1a;Raspian系统更新Step 4&#xff1a;安装依赖环境Step 5&#xff1a;安装mavproxyStep 6&#xff1a;配置bash环境 3.…

HttpRunner自动化测试之脚手架工具使用(一键搭建)

脚手架工具使用&#xff1a; 每一个成熟的系统工具&#xff0c;都会有对应的脚手架工具&#xff0c;它可以快速构建项目的必要目录&#xff0c;不必自己一个一个的配置与搭建&#xff0c;只需要执行一些命令即可。 httprunner也提供了脚手架工具&#xff0c;使用步骤如下&…

Python接口自动化-requests模块之post请求

一、源码解析 def post(url, dataNone, jsonNone, **kwargs):r"""Sends a POST request.:param url: URL for the new :class:Request object.:param data: (optional) Dictionary, list of tuples, bytes, or file-likeobject to send in the body of the :cla…

微服务——ES实现自动补全

效果展示 在搜索框根据拼音首字母进行提示 拼音分词器 和IK中文分词器一样的用法&#xff0c;按照下面的顺序执行。 # 进入容器内部 docker exec -it elasticsearch /bin/bash# 在线下载并安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch…

迭代器模式-遍历聚合对象中的元素

在开发中&#xff0c;我们经常使用到Iterator这个接口&#xff0c;我们很疑惑于这个接口的作用&#xff0c;认为集合已经实现了数据访问的方法&#xff0c;增加Iterator的意义在哪。本文我们将学习迭代器模式&#xff0c;用以探讨Iterator的作用。 1.1 迭代器模式概述 提供一…

地图 SDK gitlab 测试代码环境配置

文章目录 1、Gradle 插件版本和 Gradle 版本2、NDK 路径3、JDK 版本4、修改变量5、重新 BuildQ&A&#xff1a; test 用例启动之后问题问题描述 拉下项目的 dev 分支&#xff0c;然后依赖的 mapsdk-base 也完成下载 &#xff0c;之后就是Android Studio 配置环境 1、Gradle …

【Git】保姆级详解:Git配置SSH Key(密钥和公钥)到github

博主简介&#xff1a;22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a;是瑶瑶子啦每日一言&#x1f33c;: “当人们做不到一些事情的时候&#xff0c;他们会对你说你也同样不能。”——《当幸福来敲门》 克里斯加德纳 Git配置SSH Key 一、什么是Git?二、什么…

如何给Google Chrome增加proxy

1. 先打开https://github.com/KaranGauswami/socks-to-http-proxy/releases 我的电脑是Liunx系统所以下载第一个 2. 下载完之后把这个文件变成可执行文件&#xff0c;可以是用这个命令 chmod x 文件名 3. 然后执行这个命令&#xff1a; ./sthp-linux -p 8080 -s 127.0.0.1:…

Jwt(Json web token)——使用token的权限验证方法 用户+角色+权限表设计 SpringBoot项目应用

目录 引出使用token的权限验证方法流程 用户、角色、权限表设计权限表角色表角色-权限关联表用户表查询用户的权限&#xff08;四表联查&#xff09;数据库的视图 项目中的应用自定义注解拦截器controller层DTO返回给前端枚举类型的json化日期json问题 实体类-DAO 总结 引出 1.…

学习pytorch

学习pytorch 1. 环境安装配置镜像源conda命令记录遇到的问题1. torch.cuda.is_available() False 1. 环境安装 B站小土堆视频 配置镜像源 conda config --show channels conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/mainhttp://www.m…

leetcode 图算法小结

文章目录 1 DFS和BFS797. 所有可能的路径200. 岛屿数量 1 DFS和BFS 深度优先遍历一般采用回溯算法进行解决。回溯算法&#xff0c;其实就是dfs的过程。 void dfs(参数) {处理节点dfs(图&#xff0c;选择的节点); // 递归回溯&#xff0c;撤销处理结果 }广度优先搜索理解为层次…

Java-数据类型

数据类型 数据类型基本数据类型整形浮点字符型布尔类字节 引用数据类型类型转换显式转换隐式转换注意事项 整型提升 作为学习Java的入门知识,在刚开始面试的几场,表现不太好的时候,就有几个面试官会问这个问题,估计此时此刻我在他们的心目中也就是这个问题的层次了吧…当然,当时…

Linux网络服务之自动装机(PXE+KICKSTART)详解

自动装机 一、启动操作系统的方式1.1 系统装机的三种引导方式1.2 系统安装过程1.3 三大文件1.4 如何实现自动装机&#xff1f; 二、PXE2.1 PXE的简介和优点2.2 实现PXE的前提条件2.3 PXE实现过程2.5 要安装的服务2.6 实现PXE2.6.1 前置准备2.6.2 安装并配置DHCP2.6.3 安装并配置…

Nginx负载均衡搭建

目录 1、准备一台装有nginx服务的主机 2、所需模块说明&#xff1a; 3、两台Web服务器主机 4、 修改nginx的配置文件 5、查看结果&#xff1a; 1、准备一台装有nginx服务的主机 LVS—DR集群的搭建_.98℃的博客-CSDN博客 2、所需模块说明&#xff1a; Nginx http 功能模…