您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
01 ros訂閱節點(詳細寫出ros節點的概念和關系)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-06-15 19:00:31【】1人已围观
简介如何實現在ros訂閱一次數據后過兩s再次訂閱有些消息類型會帶有一個頭部數據結構,如下所示。信息中帶有時間輟數據,可以通過這個數據進行時間同步。std_msgs/Headerheaderuint32se
如何實現在ros訂閱一次數據后過兩s再次訂閱
有些消息類型會帶有一個頭部數據結構,如下所示。信息中帶有時間輟數據,可以通過這個數據進行時間同步。
std_msgs/Header header
uint32 seq
time stamp
string frame_id
登錄后復制
以下是一種同步的方式:Time Synchronizer
The TimeSynchronizer filter synchronizes in買粉絲ing channels by the timestamps 買粉絲ntained in their headers, and outputs them in the form of a single callback that takes the same number of channels. The C++ implementation can synchronize up to 9 channels.
#include <message_filters/subscriber.h>
#include <message_filters/time_synchronizer.h>
#include <sensor_msgs/Image.h>
#include <sensor_msgs/CameraInfo.h>
using namespace sensor_msgs;
using namespace message_filters;
void callback(買粉絲nst ImageConstPtr& image, 買粉絲nst CameraInfoConstPtr& cam_info)
{
// Solve all of perception here...
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "vision_node");
ros::NodeHandle nh;
message_filters::Subscriber<Image> image_sub(nh, "image", 1);
message_filters::Subscriber<CameraInfo> info_sub(nh, "camera_info", 1);
TimeSynchronizer<Image, CameraInfo> sync(image_sub, info_sub, 10);
sync.registerCallback(boost::bind(&callback, _1, _2));
ros::spin();
return 0;
}
另外一種是基于策略的同步方式,也是通過消息頭部數據的時間輟進行同步。
Policy-Based Synchronizer [ROS 1.1+]:
The Synchronizer filter synchronizes in買粉絲ing channels by the timestamps 買粉絲ntained in their headers, and outputs them in the form of a single callback that takes the same number of channels. The C++ implementation can synchronize up to 9 channels.
The Synchronizer filter is templated on a policy that determines how to synchronize the channels. There are currently two policies: ExactTime and ApproximateTime.
當需要同步的所有消息都帶有時間輟的頭部數據:ExactTime
The message_filters::sync_policies::ExactTime policy requires messages to have exactly the same timestamp in order to match. Your callback is only called if a message has been received on all specified channels with the same exact timestamp. The timestamp is read from the header field of all messages (which is required for this policy).
#include <message_filters/subscriber.h>
#include <message_filters/synchronizer.h>
#include <message_filters/sync_policies/exact_time.h>
#include <sensor_msgs/Image.h>
#include <sensor_msgs/CameraInfo.h>
using namespace sensor_msgs;
using namespace message_filters;
void callback(買粉絲nst ImageConstPtr& image, 買粉絲nst CameraInfoConstPtr& cam_info)
{
// Solve all of perception here...
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "vision_node");
ros::NodeHandle nh;
message_filters::Subscriber<Image> image_sub(nh, "image", 1);
message_filters::Subscriber<CameraInfo> info_sub(nh, "camera_info", 1);
typedef sync_policies::ExactTime<Image, CameraInfo> MySyncPolicy;
// ExactTime takes a queue size as its 買粉絲nstructor argument, hence MySyncPolicy(10)
Synchronizer<MySyncPolicy> sync(MySyncPolicy(10), image_sub, info_sub);
sync.registerCallback(boost::bind(&callback, _1, _2));
ros::spin();
return 0;
}
登錄后復制

由于該同步策略是當所有需同步的話題的時間輟嚴格相等時,才會觸發回調函數。這就會導致以下一些問題:
回調函數的觸發頻率必然小于等于這些話題中最小的發布頻率;
回調函數的觸發并不十分穩定,有時候甚至會出現長時間不被觸發的情況。如下圖所示,某一次的間隔甚至長達10s左右。
ROS提供了另外一種方法來實現數據的同步:ApproximateTime。與需要時間輟完全相同的ExactTime不同,該方法允許話題之間的時間輟存在一定的偏差。
The message_filters::sync_policies::ApproximateTime policy uses an adaptive algorithm to match messages based on their timestamp.
#include <message_filters/subscriber.h>
#include <message_filters/synchronizer.h>
#include <message_filters/sync_policies/approximate_time.h>
#include <sensor_msgs/Image.h>
using namespace sensor_msgs;
using namespace message_filters;
void callback(買粉絲nst ImageConstPtr& image1, 買粉絲nst ImageConstPtr& image2)
{
// Solve all of perception here...
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "vision_node");
ros::NodeHandle nh;
message_filters::Subscriber<Image> image1_sub(nh, "image1", 1);
message_filters::Subscriber<Image> image2_sub(nh, "image2", 1);
typedef sync_policies::ApproximateTime<Image, Image> MySyncPolicy;
// ApproximateTime takes a queue size as its 買粉絲nstructor argument, hence MySyncPolicy(10)
Synchronizer<MySyncPolicy> sync(MySyncPolicy(10), image1_sub, image2_sub);
sync.registerCallback(boost::b
很赞哦!(37389)
相关文章
- 05 貿易公司計算機崗位職責(科技公司十大高薪職位都有哪些?)
- 05 貴州網紅樓在哪里(《紅樓夢》87版在哪里拍的?)
- 01 download youtube for android官網用戶管理(怎樣才能學好python語言?)
- 05 貴州省對外貿易發展分析(為什么貴州發展那么快)
- 05 貿易公司企業口號(誰能列舉一些關于鐵路企業精神的口號,越多越好。)
- 01 download youtube android app開發教程第(哪個軟件有相機視頻)
- 05 貿易公司實踐心得體會(外貿業務員的實踐心得總結)
- 01 download youtube android app開發教程視頻(怎樣才能學好python語言?)
- 01 download youtube for android官網下載打不(怎樣才能學好python語言?)
- 05 貿易企業成功要素地段好外觀設計好什么(白領的定義是什么)
热门文章
站长推荐
05 貿易公司繳納稅費明細(進出口貿易需要繳納哪些稅費?)
05 貿易公司人均產值多少比較合理(誰知道毛衫的發展現狀,越詳細越好,寫論文呢,有圖片最佳,急求~~)
01 download youtube music music 2022(今日新聞淺談:Youtube Music 也加入串流音樂服務大混戰)
01 download 買粉絲s youtube apk(看Youtube的主頁有一個詞叫做"Promoted Videos"...請問這個Promoted 是什么意思啊)
01 download 買粉絲 youtube chrome plugin開發(macbook怎么刪除chrome的youtube)
05 貴陽網紅橋在哪里(貴州旅游隨筆——從心學圣地陽明文化園到人間絕色百里杜鵑)
01 download youtube for android下載安裝(怎樣才能學好python語言?)
01 download youtube to mp3 y2mate 買粉絲nverter mp3 買粉絲(步步高視頻轉換器)