当前位置:网站首页>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介绍”)
边栏推荐
- visibilitychange – 指定标签页可见时,刷新页面数据
- 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
- Talk about an experience of job hopping and being rejected
- 二、mock平台的扩展
- 一年顶十年
- 几行代码搞定RPC服务注册和发现
- R and rstudio download and installation tutorial (super detailed)
- ThreadLocal
- 对接保时捷及3PL EDI案例
- Baobab's gem IPO was terminated: Tang Guangyu once planned to raise 1.8 billion to control 47% of the equity
猜你喜欢

亚马逊云科技 Community Builder 申请窗口开启

Sword finger offer 25 Merge two sorted linked lists

Cell: Tsinghua Chenggong group revealed an odor of skin flora. Volatiles promote flavivirus to infect the host and attract mosquitoes

linux安装postgresql + patroni 集群问题

福元医药上交所上市:市值105亿 胡柏藩身价超40亿

Eye of depth (II) -- matrix and its basic operations

Changwan group rushed to Hong Kong stocks: the annual revenue was 289million, and Liu Hui had 53.46% voting rights

TCP拥塞控制详解 | 2. 背景

The poor family once again gave birth to a noble son: Jiangxi poor county got the provincial number one, what did you do right?

A few lines of code to complete RPC service registration and discovery
随机推荐
[shutter] dart data type (dynamic data type)
What will you do after digital IC Verification?
Vscode setting delete line shortcut [easy to understand]
Linux Installation PostgreSQL + Patroni cluster problem
JS delete substring in string
Weili holdings listed on the Hong Kong Stock Exchange: with a market value of HK $500million, it contributed an IPO to Hubei
超卓航科上市:募资9亿市值超60亿 成襄阳首家科创板企业
关于我
LeetCode:1380. Lucky number in matrix -- simple
【Leetcode】13. 罗马数字转整数
Blog theme "text" summer fresh Special Edition
剑指 Offer 27. 二叉树的镜像
Listing of chaozhuo Aviation Technology Co., Ltd.: raising 900million yuan, with a market value of more than 6billion yuan, becoming the first science and technology innovation board enterprise in Xia
Qwebengineview crash and alternatives
Understand one article: four types of data index system
Eth data set download and related problems
Cell: Tsinghua Chenggong group revealed an odor of skin flora. Volatiles promote flavivirus to infect the host and attract mosquitoes
ETH数据集下载及相关问题
一文看懂:数据指标体系的4大类型
P6774 [NOI2020] 时代的眼泪(分块)