当前位置:网站首页>ROS知识点——消息过滤器 ( message_filters)
ROS知识点——消息过滤器 ( message_filters)
2022-07-02 14:49:00 【Jerry_Sea】
参考:
1)时间同步器
https://blog.csdn.net/u012700322/article/details/51784412
https://blog.csdn.net/fana8010/article/details/23880067(这篇文章是上一篇的原文)
2)基于策略的同步器
https://blog.csdn.net/muyiyushan/article/details/118418040(官网翻译,第7部分)
http://wiki.ros.org/message_filters#Policy-Based_Synchronizer_.5BROS_1.1.2B-.5D(官网,第7部分)
以下是针对参考1)中的第一篇内容:
bug1:3.1 连接
两句等价成一句,但为什么要分开成两句呢?因为只使用一句只能读取一个输入传给回调函数,所以需要使用两句,先用一句分开将多个数据封装好,然后再用一句将多个数据传给回调函数。
boost bind
bug2:4 时间一致器
The TimeSynchronizer filter synchronizes incoming channels by the timestamps contained in their headers
PointCloud2ROS点云数据消息结构:header里面有个stamp,比较不同数据源的stamp来进行时间同步。
以下是针对参考2)中的解释:
bug3:对“自己”代码的理解
typedef message_filters::sync_policies::ApproximateTime<sensor_msgs::PointCloud2, sensor_msgs::PointCloud2> SyncPolicyT;
//定义策略,message_filters::sync_policies::ApproximateTime策略使用一个基于时间戳的自适应算法匹配消息,匹配两个点云
void DualLidarCalib::start()
{
// 订阅器 sub and pub
parent_cloud_sub_ = new message_filters::Subscriber<sensor_msgs::PointCloud2>(nh_, parent_cloud_topic_, 10);
child_cloud_sub_ = new message_filters::Subscriber<sensor_msgs::PointCloud2>(nh_, child_cloud_topic_, 10);
//点云同步器 ApproximateTime takes a queue size as its constructor argument, hence MySyncPolicy(100)
cloud_synchronizer_ = new message_filters::Synchronizer<SyncPolicyT>(SyncPolicyT(100), *parent_cloud_sub_, *child_cloud_sub_);
//调用回调函数
cloud_synchronizer_->registerCallback(boost::bind(&DualLidarCalib::cloudCallback, this, _1, _2));
//registerCallback()输入为const boost::shared_ptr<M const>&
}
void DualLidarCalib::cloudCallback(const sensor_msgs::PointCloud2::ConstPtr& in_parent_cloud_msg,
const sensor_msgs::PointCloud2::ConstPtr& in_child_cloud_msg)
{
...
}
boost::bind()理解:
1)https://blog.csdn.net/holyjw/article/details/89883363(只用看“1. 通过functions和function pointers使用bind”)
2)https://blog.csdn.net/bj318318/article/details/116200356(只用看“1介绍”)
边栏推荐
猜你喜欢

你想要的宏基因组-微生物组知识全在这(2022.7)

Use the API port of the bridge of knowledge and action to provide resources for partners to access

綠竹生物沖刺港股:年期內虧損超5億 泰格醫藥與北京亦莊是股東

LeetCode:1380. Lucky number in matrix -- simple

默认浏览器设置不了怎么办?

Notice on holding a salon for young editors of scientific and Technological Journals -- the abilities and promotion strategies that young editors should have in the new era

PhD battle-11 preview | review and prospect backdoor attack and defense of neural network

In MySQL and Oracle, the boundary and range of between and precautions when querying the date

ETH数据集下载及相关问题

剑指 Offer 24. 反转链表
随机推荐
Sword finger offer 21 Adjust the array order so that odd numbers precede even numbers
Use the API port of the bridge of knowledge and action to provide resources for partners to access
[error record] error -32000 received from application: there are no running service protocol
In MySQL and Oracle, the boundary and range of between and precautions when querying the date
chmod命令原理及用法详解[通俗易懂]
Interpretation of key parameters in MOSFET device manual
Nexus簡介及小白使用IDEA打包上傳到Nexus3私服詳細教程
Cell: Tsinghua Chenggong group revealed an odor of skin flora. Volatiles promote flavivirus to infect the host and attract mosquitoes
&lt; IV & gt; H264 decode output YUV file
Sword finger offer 27 Image of binary tree
The macrogenome microbiome knowledge you want is all here (2022.7)
Exploration of mobile application performance tools
Role and function of uboot
Vscode setting delete line shortcut [easy to understand]
The poor family once again gave birth to a noble son: Jiangxi poor county got the provincial number one, what did you do right?
Detailed explanation of @accessories annotation of Lombok plug-in
LeetCode:1380. Lucky number in matrix -- simple
Linux Installation PostgreSQL + Patroni cluster problem
871. Minimum refueling times
书包网小说多线程爬虫[通俗易懂]