Skip to content

Support TimeSynchronizer for CamClient #13

@gezp

Description

@gezp

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 中重复代码。

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions