ROS的学习(二十)rosserial中的Publisher和Subscriber中的编程步骤
来源:互联网 发布:多媒体教学软件破解版 编辑:程序博客网 时间:2024/04/30 12:29
1.在一个话题上发布消息。
可以使用ros::Publisher类创建一个句柄来在一个话题上发布消息,应该首先创建一个publisher将要使用的消息,然后在setup函数中调用advertise。整个程序的结构如下:
#include <ros.h>ros::NodeHandle nh;// before your setup() functionstd_msgs::String str_msg;ros::Publisher pub("foo", &str_msg);void setup(){ ... nh.advertise(pub); ...}
然后就可以发布一个消息了:
void loop(){ pub.publish( &str_msg ); nh.spinOnce();}
2.订阅一个话题
订阅一个话题的第一步是包括头文件,并且创建一个回调函数。所有的rosserial消息存在于ros_lib文件夹下的package_name/msg_name。例如包括消息std_mgs/Float64时使用#include <std_msgs/Float64.h>。
回调函数必须满足函数返回值为空且使用一个常引用作为函数的参数。
#include <std_msgs/Float64.h>void messageCb(const std_msgs::Float64& msg) if(msg.data > 1.0) digitalWrite(13, HIGH-digitalRead(13)); // blink the led}
为了建立实际的连接,我们必须静态的分配一个ros::Subscriber对象,它规定了你所使用的消息类型,并且在setup函数中调用NodeHandle::subscribe函数。
#include <ros.h>ros::NodeHandle nh;void messageCb(const std_msgs::Float64& msg) if(msg.data > 1.0) digitalWrite(13, HIGH-digitalRead(13)); // blink the led}ros::Subscriber<std_msgs::Float64> sub("your_topic", &messageCb);void setup(){ ... nh.subscribe(sub); ...}
保证你的subscriber不要超出程序的订阅周期是非常重要的,rosserial依赖于像Subscriber一样的全局对象来避免我们的目标系统的内存限制。如果超出了这个范围,当下一条消息到来的时候,你的程序将会崩溃。
- ROS的学习(二十)rosserial中的Publisher和Subscriber中的编程步骤
- rosserial中的Publisher和Subscriber中的编程步骤
- ROS的学习 验证publisher和subscriber
- ROS的学习(十五)验证publisher和subscriber
- ROS学习第六弹 (Publisher和Subscriber的运行)
- ROS的学习(十九)用rosserial创建一个subscriber
- ROS的学习(十八)使用rosserial创建一个publisher
- ROS 学习 (1):publisher和subscriber消息 python
- ROS 学习 (1):publisher和subscriber消息 C++1
- (十)解释创建的简单publisher和subscriber
- ROS学习手记 - 8 编写ROS的Publisher and Subscriber
- ROS(二)自己动手写一个简单的发布(Publisher)、订阅(Subscriber)程序
- ROS学习第五弹(发布和订阅 Python写 Publisher and Subscriber)
- ROS中编写Publisher和Subscriber的方法(Python版)
- ROS中编写Publisher和Subscriber的方法(C++版)
- ROS 进阶学习笔记(13) - Combine Subscriber and Publisher in Python, ROS
- ROS的初步学习(五)--自己写一个简单的发布(Publisher)、订阅(Subscriber)程序
- 8、ROS使用C++编写一个简单的Publisher和Subscriber
- python实现下载pop3邮件保存到本地
- shell编程简介
- Android新闻客户端开发3--显示新闻详细内容UI设计
- 面向对象的白话理解-拍面人
- dos 下执行jar 包 解决依赖的jar 包问题
- ROS的学习(二十)rosserial中的Publisher和Subscriber中的编程步骤
- 拷贝构造函数与赋值函数;深拷贝,浅拷贝
- (九)Struts2中手工验证
- nullFilter
- SVN分支与合并透析
- 利用VBS实现 显示服务列表
- 基于axis的Webservice开发流程
- 拷贝构造函数的参数为什么必须使用引用类型
- 利用gdb在汇编指令级调试C程序