【SLAM】4.ROS——topic与message

前言

感谢B站up主"机器人工匠阿杰"的付出

 

一.topic

1.1什么是topic

topic是一种持续通信的方式,提供了一个通信域

包括:

(1)publisher发布者

(2)Subscriber订阅者

(3)message来往信息

1.2特征

ros环境中可以同时存在多个话题

一个话题可以有多个发布者(一般不会),也可以有多个订阅者

一个节点可以对多个话题进行订阅,也可以对多个话题进行发布

不同传感器通常有独立的话题

 

二.message

2.1构建消息

index.ros.org——》搜xxx_msgs——》website——》manual查看手册

 

三.构建publisher

include

ros::init

ros::nodehandler nh

ros::publisher pub = nh.advertise<msg_type>(topicName)

ros::rate控制循环间隔

while(ros::ok()){

  do_something//业务处理

  msg初始化//构造消息

  pub.publish(msg)//发送消息

  loopRate.sleep()//循环间隔

  }

 

四.构建Subscriber

include

define callBack

setlocale(LC_ALL,"")  //设置输出时的语言

ros::init

ros::nodeHandler nh

ros::subscriber sub = nh.subscribe(topicName,bufSize,callBack)

while(ros::ok()){

  ros::spinonce()  //瞅一眼有没有新消息进来

  loopRate.sleep()

  }

 

五.基本认知

topic属于ROS环境,不依附于publisher或subscriber

 roslaunch .launch文件  //.launch文件放在某个包的launch目录下,其中标注的包和节点,可以批量启动多个节点,而且可以自动启动roscore,

 

六.ROS小工具

rostopic list  //查看现存的ros topic

rostopic echo -e topicName  //打印话题中的消息

rostopic hz topicName  //查看话题中消息频率

rqt_graph  //图形化查看ROS系统中发布、订阅、话题之间的关系

posted @ 2023-03-17 19:49  啊原来是这样呀  阅读(181)  评论(0)    收藏  举报