当前位置:   article > 正文

Ros message_filters (消息滤波器)介绍与使用-待完善_message filters ros wiki

message filters ros wiki

     本文对ros message_filters 滤波器进行了基本介绍,包括message_filters包的功能,通用使用方法,以及Subscriber 滤波的使用方法。

1.Ros  message_filters 总览:

     message filters 即包含一系列滤波器,这些滤波器只有在输入数据满足一定条件才进行输出。如:当从不同传感器获取数据时,使用时间同步滤波器,可以获得不同传感器数据在同一时间戳下的数据。

2.Filter Pattern(滤波方法)

     在message filters 中所有的滤波算法都采用同样的方式对输入、输出进行连接。滤波器输入可以通过滤波器构造函数或者通过构造函数connectInput() 方法,输出通过注册回调函数registerCallback()方法。

    因为每个滤波器的输入,输出数据类型都是固定,所以在滤波器互相连接时要注意输入输出数据类型,是否可以直接连接。如给定两个滤波器FooFilter、BarFilter。FooFilter 的输出类型与BarFilter 输入类型相同,因此使用时可以对他们进行连接。

  1. 滤波器连接方式示例代码
  2. 示例1
  3. FooFilter foo;
  4. BarFilter bar(foo);
  5. 示例2
  6. FooFilter foo;
  7. BarFilter bar;
  8. bar.connectInput(foo);

2.1 registerCallback()(注册回调函数)

    使用registerCallback()方法我们可以注册多个回调函数,并且以注册时的顺序被调用。registerCallback() 返回message_filters::Connection 对象,可以调用该对象的disconnect() 方法断开连接。

3. Subscriber

    订阅者滤波器提供其他滤波器的输入源,内部实现只是对ros 订阅者的一个封装,且subscriber 滤波器不能连接其他滤波器的输出。订阅者滤波器采用订阅主题的方式获取输入。

3.1 subscriber 连接方式

subscriber 没有输入连接,输出采用回调函数方式。

C++: void callback(const boost::shared_ptr<M const>&) Python: callback(msg)

示例代码如下:

  1. 示例1
  2. message_filters::Subscriber<std_msgs::UInt32> sub(nh, "my_topic", 1);//获取输入
  3. sub.registerCallback(myCallback);//设置输出
  4. 示例2
  5. ros::Subscriber sub = nh.subscribe("my_topic", 1, myCallback);//同时设置输入输出

4.总结

    message_filters 包中有丰富的滤波器,本文只列举了Subscriber的使用作为示例,其他的使用方法及功能可以参考ros wiki。后续如果有时间,本文也会继续完善文档。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/813934
推荐阅读
相关标签
  

闽ICP备14008679号