ROS--订阅者程序

一、编写回调函数

订阅者节点无法知道消息什么时候到达,为了解决这个问题,必须把响应收到消息事件的代码放到回调函数中,ros每接受一个新的消息将调用一次这个函数。

void function_name(const package_name::type_name &msg)
{
...
}

package_name::type_name和发布消息时的相同,指明了想要订阅话题的消息类。回调函数的主体有权限访问接收到消息的所有域,并以她认为合适的方式存储、使用或丢弃接受到的数据。(必须包含定义该类的头文件

二、创建订阅者对象

为订阅话题,需创建ros::Subscriber对象

ros::Subscriber sub = node_handle.subscribe(topic_name, queue_size, pointer_to_callback_function);

pointer_to_callback_function:指向回调函数的指针,当有函数到达时,通过指针找到回调函数。注意:不能在函数名后添加括号。在C++中,&运算符可选,许多程序会忽略,编译器会分辨出需要的时一个函数指针而不是函数运行的返回值,因为函数名后面没有括号。建议包含,因为会使读者明显的看出使用指针。

三、给ROS控制权

ros::spinOnce();

要求ros执行所有挂起的回调函数,然后将控制权返回给我们

ros::spin();

要求ros等待并且执行回调函数,直达这个节点关机。大体等于下列循环:

while(ros::ok())
{
    ros::spinOnce();
}

四、编译和运行程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值