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

威海城乡和住房建设局网站江门鹤山最新消息新闻

威海城乡和住房建设局网站,江门鹤山最新消息新闻,凡科建站收费,佛山市企业网站seo营销工具1. 话题通信的流程 话题通信主要涉及到三个对象 管理者发布者订阅者 其主要流程如下图 详细解释一下:1.发布者向管理者发送发布话题等相关信息,在管理者处注册 2.订阅者向管理者发布订阅话题等相关信息,在管理者处注册 (注意…

1. 话题通信的流程

话题通信主要涉及到三个对象

  • 管理者
  • 发布者
  • 订阅者

其主要流程如下图

详细解释一下:1.发布者向管理者发送发布话题等相关信息,在管理者处注册

2.订阅者向管理者发布订阅话题等相关信息,在管理者处注册

(注意1和2顺序可以相反)

3.管理者将订阅者和发布者进行配对

4.配对后发布者无需通过管理者发送信息直接和订阅者进行数据传输

1.1话题通信的实现(C++)

打开虚拟机选择一个文件夹输入如下命令新建一个名为topicComm的文件夹

mkdir -p topicComm/src

进入该文件夹

cd topicComm/

创建ros工作环境

catkin_make

如下图上述步骤如下图

再输入如下代码进入VScode 

code .

建立一个cpp文件请看该链接:编写第一个ros程序_visual studio code ros-CSDN博客

依据上述链接本次建立一个demo01_pub.cpp

1.1.1发布方的编写

1.首先需要导入所需包

主要用到如下两个包

#include "ros/ros.h"
#include "std_msgs/String.h" //文本类型

 2.创建发布者节点

int main(int argc, char *argv[])
{//2.创建发布者节点ros::init(argc,argv,"FaBuZhe");return 0;
}

3.创建句柄

    //3.创建句柄ros::NodeHandle node;

4.创建发布主题等相关信息与等待注册成功

     //4.创建发布主题等相关信息node.advertise<发送数据的范型>("发送主题",队列长度);ros::Publisher pub = node.advertise<std_msgs::String>("topic",10);//等待注册成功ros::Duration(1).sleep();//延时1s

5.编写发布数据与发布

    //5.编写发布数据std_msgs::String message;message.data = "hello";//6.设置发布频率ros::Rate rate(4);//4HZ每秒四次while (ros::ok())//ros::ok为只要节点存在则为真{//发布数据pub.publish(message);//依据频率延迟rate. Sleep();}

完整代码如下:

#include "ros/ros.h"
#include "std_msgs/String.h"//文本类型/*1.导入所需包2.创建发布者节点3.创建句柄4.创建发布主题等相关信息5.编写发布数据
*/int main(int argc, char *argv[])
{//2.创建发布者节点ros::init(argc,argv,"FaBuZhe");//3.创建句柄ros::NodeHandle node;//4.创建发布主题等相关信息node.advertise<发送数据的范型>("发送主题",队列长度);ros::Publisher pub = node.advertise<std_msgs::String>("topic",10);//等待注册成功ros::Duration(1).sleep();//延时1s//5.编写发布数据std_msgs::String message;message. Data = "hello";//6.设置发布频率ros::Rate rate(4);//4HZ每秒四次while (ros::ok())//ros::ok为只要节点存在则为真{//发布数据pub.publish(message);//依据频率延迟rate.sleep();}return 0;
}

然后打开下图所示文件

将下图所示取消注释

 并改为如下代码

add_executable(demo01_pub src/demo01_pub.cpp)target_link_libraries(demo01_pub${catkin_LIBRARIES}
)

然后按CTRL+shift+B,点击设置

将弹出的代码中的group改为如下代码

"group":{"kind": "build","isDefault": true},

 上述记得保存

后按CTRL+shift+B则会编译

若成功则如下图所示

打开终端1(注意终端路径)输入

roscore

打开终端2

输入如下指令

source ./devel/setup.bash
 rosrun topicComm demo01_pub

 打开终端3输入如下指令

rostopic echo topic

 如果你的编写没有问题你将在终端三看到下图

如果你想停止发送请在终端2和终端3中按下ctrl + c 

1.1.2订阅方的编写

0.建立一个cpp文件请看该链接:编写第一个ros程序_visual studio code ros-CSDN博客

依据上述链接本次建立一个demo02_sub.cpp

 1.首先需要导入所需包

主要用到如下两个包

#include "ros/ros.h"
#include "std_msgs/String.h" //文本类型

 2.创建订阅者节点

int main(int argc, char *argv[])
{//保证中文输出setlocale(LC_ALL,"");//2.创建订阅者节点ros::init(argc,argv,"DingYueZhe");return 0;
}

3.创建句柄

    //3.创建句柄ros::NodeHandle node;

4.创建订阅主题等相关信息

    //4.创建订阅主题等相关信息node.subscribe("订阅主题",队列长度,回调函数);ros::Subscriber sub = node.subscribe("topic",10,SubCallblack);

5.编写回调函数

注意此时回调函数中的必须用const常量且采用ConstPtr引用的方式定义传参

//5.创建回调函数
void SubCallblack(const std_msgs::String::ConstPtr& message)
{ROS_INFO("我是订阅方我收到如下消息%s",message->data.c_str());    
}

6.spin()重复回调

    //6.spin()重复回调ros::spin();

完整代码如下:

#include "ros/ros.h"
#include "std_msgs/String.h"//文本类型/*1.导入所需包2.创建订阅者节点3.创建句柄4.创建发布主题等相关信息5.创建回调函数6.spin()重复回调
*///5.创建回调函数
void SubCallblack(const std_msgs::String::ConstPtr& message)
{ROS_INFO("我是订阅方我收到如下消息%s",message->data.c_str());    
}int main(int argc, char *argv[])
{//保证中文输出setlocale(LC_ALL,"");//2.创建订阅者节点ros::init(argc,argv,"DingYueZhe");//3.创建句柄ros::NodeHandle node;//4.创建订阅主题等相关信息node.subscribe("订阅主题",队列长度,回调函数);ros::Subscriber sub = node.subscribe("topic",10,SubCallblack);//6.spin()重复回调ros::spin();return 0;
}

然后打开下图所示文件

打开CmakeLists.list 加上如下代码

add_executable(demo02_sub src/demo02_sub.cpp)target_link_libraries(demo02_sub${catkin_LIBRARIES}
)

完成后如下图

后按CTRL+shift+B则会编译

若成功则如下图所示

此时打开两个终端都输入

source ./devel/setup.bash

并在两个终端中分别输入

rosrun topicComm demo01_pub 

rosrun topicComm demo02_sub 

如下图

如果没有错误右边会打印相关信息如下图

2.python实现

话题通信之python实现-CSDN博客


文章转载自:

http://HtNAfDNu.sjftk.cn
http://Az5yWh13.sjftk.cn
http://bQs5vbNC.sjftk.cn
http://mRwM5iJj.sjftk.cn
http://UqCK3KGj.sjftk.cn
http://enxh9aw3.sjftk.cn
http://Std18A7b.sjftk.cn
http://8uV6AXr3.sjftk.cn
http://aSzXkdIe.sjftk.cn
http://qPdzDgV5.sjftk.cn
http://MXmlLFNf.sjftk.cn
http://J6D1LKK4.sjftk.cn
http://B0kbIY4l.sjftk.cn
http://ewqAJcUB.sjftk.cn
http://UxnKUnCv.sjftk.cn
http://ANgtmgUj.sjftk.cn
http://951bDtx0.sjftk.cn
http://DWQgpPpx.sjftk.cn
http://lAOCGMNQ.sjftk.cn
http://e7WXXVJu.sjftk.cn
http://3kFl3BJ0.sjftk.cn
http://HQQcPnAQ.sjftk.cn
http://Qzy7iUfc.sjftk.cn
http://yH2xv73P.sjftk.cn
http://xqsaJSSw.sjftk.cn
http://AfNHVZnT.sjftk.cn
http://4SjjbCIg.sjftk.cn
http://yCYt3ejY.sjftk.cn
http://j7zIDbQ7.sjftk.cn
http://tb3irewZ.sjftk.cn
http://www.dtcms.com/wzjs/604728.html

相关文章:

  • 高端网站服务范围微信获客crm平台
  • 国产做的视频网站wordpress 免费 博客主题
  • 学习网站制作汽车网站设计论文
  • 可以自己做网站网络产品及其推广方法
  • 免费下载软件的网站有哪些常州做网站麦策电商
  • 邢台建设专业网站万网科技
  • 深圳平台网站建设外包网站销售如何做业绩
  • 天津设计网站建设网站设计规划表答案
  • 网站建设上线多久个人网站代做
  • 国家建设部网站平台合肥市建设信息中心网站
  • 哪些网站是营销型网站安徽省高路建设有限公司网站
  • 代做cad平面图的网站网站建设350元
  • 下载官方网站appwordpress付费版
  • 做网站的公司深圳开源的低代码开发平台
  • 变化型网页网站有哪些中卫装修设计
  • 网站做wanzhihou品牌官方网站
  • 湖南房产网电商网站如何做seo
  • 做商贸网站怎么代理传奇手游
  • 坪山商城网站建设哪家便宜网页程序编写
  • 微商城网站建设怎么样网站建设第三方
  • 凡科建站官网免费注册大数据营销
  • 建设银行杭州分行网站上海城隍庙属于哪个区
  • 专业人士怎样建网站网站开发开票交税
  • 鞍山网站制作小程序室内设计效果图一套
  • 建网站 服务器需要安装 tomcatpython发布WordPress
  • 北京市朝阳区网站制作广西住房城乡建设厅网站
  • 美术馆网站页面设计中邮通建设咨询有限公司官方网站
  • 广州建设网站企业租服务器价格一览表
  • 专业建设专题网站邢台太行中学地址
  • 好的网站有哪些google浏览器入口