您现在的位置是:Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款 >
01 ros訂閱多個話題(ROS如何設置多個外網IP。)
Instagram刷粉絲, Ins買粉絲自助下單平台, Ins買贊網站可微信支付寶付款2024-07-11 11:14:25【】2人已围观
简介如何實現在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
很赞哦!(664)
相关文章
- 03 日本第一大貿易伙伴2022(區域全面經濟伙伴關系協定(RCEP)2022年1月1日起正式實施。)
- 02 download youtube to mp3 player windows 11(為什么我安裝了realplayer后就無法看Youtube的視頻了)
- 03 曲阜寶泰貿易有限公司(現在出山西省需要什么證明)
- 03 春熙路網紅打卡地圖片(如何看待網紅打卡地?)
- 03 暨南大學國際經濟與貿易考研(暨南大學國際商務保研經驗?)
- 03 景區網紅打卡設計公司(2021北京網紅打卡地推薦|這些顏值爆表的酒店民宿,讓人心動了!-)
- 02 download mp3 youtube ios(Youtube iOS客戶端視頻播放錯誤。)
- 03 星火海外版1.0.30(星火海外版哪個版本最好)
- 03 智能門鎖買粉絲買粉絲文章(智能家居產品有哪些)
- 03 昆山的網紅樓照片(紅樓夢李玟王夫人為什么地位高)
热门文章
站长推荐
02 download youtube music 買粉絲puter download(如何在youtubemusic中創建快捷指令)
02 download youtube app 買粉絲 windows(有哪些軟件堪稱神器的軟件?)
03 普陀山網紅咖啡圖片(廈門周杰倫旅游景點介紹 廈門周杰倫旅游景點介紹圖片)
02 download with youtube premium(drm是什么意思 drm的中文翻譯、讀音、例句?)
02 disney made my day的意思(英語短文)
03 曲靖網紅打卡餐廳(曲靖網紅打卡景點)
03 春節年貨節主題標語(年貨節活動策劃方案)
03 景觀網紅打卡點設計方案ppt(長沙坡子街,是怎么成為新晉網紅打卡點的?)