rmoss_core icon indicating copy to clipboard operation
rmoss_core copied to clipboard

Support TimeSynchronizer for CamClient

Open gezp opened this issue 2 years ago • 1 comments

Feature request

Feature description

rmoss_camCamClient 对ROS消息进行了进行了封装,只暴露如下接口:

  typedef std::function<void (const cv::Mat &, const rclcpp::Time &)> Callback;
  virtual bool connect(const std::string & camera_name, Callback cb);

这种隐藏ROS层细节能够使开发者专心于图像开发,而不用关心ROS消息处理过程,但是这样导致无法使用Message Filter中消息同步等工具,而消息同步在某些RM场景中可能十分有用,比如RM中的相机和IMU的同步。

Implementation considerations

方案一:扩展CamClient 类,适配message_filters接口,只需要继承message_filters::SimpleFilter即可 (可实现类似message_filters::Subscriber的效果),然后使用message_filters::TimeSynchronizer 即可。

  • 该方法的优点是扩展了CamClient 功能,缺点是相比于直接使用message_filters::Subscriber订阅ROS消息方法,显得多余,容易使开发者产生困惑。

方案二:针对特定场景封装特定消息同步类,无需扩展CamClient ,而是另起炉灶,如创建CamImuSyncClient,内部集成message_filters::TimeSynchronizer 等方法实现特定消息同步.

  • 该方法优点是易实现,且意图明确,缺点是可能会引入CamClient 中重复代码。

gezp avatar Mar 05 '22 08:03 gezp