【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系统中发布、订阅、话题之间的关系

浙公网安备 33010602011771号