Hi, I want to read imu data at higher rate and feature tracker at lower rate. What is the correct way to do it? Do I need to use multi-thread?
would it suffice if you would just configure the rate/FPS of IMU/feature tracker? That way you wouldn't need to do any special host-side code.
But I think it is better to have high frequency imu data for better VIO result.
Looks like device queue event is what I should use. But TrackedFeatures doesn't have timestamp. I think I can use the system time to sync the left and right features.
Dong_Liu you could use passthroughInputImage (FeatureTracker output) frame to get the timestamp of all features. Also, when sending it via XLink to the host, you can use xlink_out_node.setMetadataOnly(True) to send only metadata (eg. timestamp/sequence number) of the frame, without the frame itself.
Also Dong_Liu , just realized that XLinkOut has function setFpsLimit() which might achieve what you would like.
erik, thanks! I just wait for all queue events for left frame, left feature, right frame and right feature, then processing them. The timestamp for the left frame and right frame indeed are very close.