ros节点通信
利用ros节点将所需要的数据发送出去
先创建publisher和subscriber
在其中一个文件中创建对象为
1 | ros::Publisher chatter_pub = n.advertise<std_msgs::UInt8MultiArray>("chatter_mpu,1000); |
- 在另一个文件中创建
1 | ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter_pc", 1000); |
- 对于以上代码说明
一个publisher对应一个advertiser,其话题的名字应该一样
第二个参数是有关发送频率的,单位为赫兹
subscriber的最后一个参数表示接收回调函数的名字,类似于中断回调
可以利用std_msgs修改发送的相关数据格式,比如chatter_mpu话题下采用8位数组(字符数组)作为发送格式,chatter_pc话题则为字符串
- chatter_mpu的接收回调,回收16进制数据的前两个
1 | void chatterMPUCallback(const std_msgs::UInt8MultiArray::ConstPtr& msg) |
- chatter_pc的接收回调,回收字符串
1 | void chatterCallback(const std_msgs::String::ConstPtr& msg) |
- 发送端数据格式
1 | int count = 0; |
- 一个重要的函数是spinOnce(),类似于一种发送阻塞,它还有一个姊妹就是ros::spin(),只有调用了这个函数才可以发出来,两个函数的区别是,spin会直接卡在发送位置终止程序,而spinonce发送完会取消阻塞,继续进行程序。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yoghurtcc's Blog!