RMVL  2.6.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
rm::nav::FrameSynchronizer类 参考

多传感器采集时间同步器 更多...

#include <rmvl/nav/localization.hpp>

rm::nav::FrameSynchronizer 的协作图:

Public 成员函数

 FrameSynchronizer (FrameSyncOptions options={})
 创建传感器帧同步器
const FrameSyncOptionsoptions () const noexcept
LocalizationStatus setPrimaryInfo (const msg::CameraInfo &info)
 更新主相机标定信息
LocalizationStatus setSecondaryInfo (const msg::CameraInfo &info)
 更新右目或深度相机标定信息
LocalizationStatus pushPrimary (msg::Image image)
 写入主图像
LocalizationStatus pushPrimary (std::shared_ptr< const msg::Image > image)
 零拷贝写入由调用方共享所有权的主图像
LocalizationStatus pushSecondary (msg::Image image)
 写入右目或深度图像
LocalizationStatus pushSecondary (std::shared_ptr< const msg::Image > image)
 零拷贝写入由调用方共享所有权的右目或深度图像
LocalizationStatus pushImu (msg::Imu imu)
 写入一个可选 IMU 样本
LocalizationStatus pushOdometry (msg::Odometry odometry)
 写入一个可选外部里程计样本
FrameSyncResult next ()
 尝试获取下一帧已同步输入
FrameSyncStatistics statistics () const noexcept
void clear () noexcept
 清空消息队列与上一帧时间,保留标定信息和统计

详细描述

多传感器采集时间同步器

  • 使用消息的 header.stamp 同步,不使用不可预测的到达时间
  • 单目只等待主图像,双目和 RGB-D 在容差内选择时间最接近的辅助图像
  • CameraInfo 作为低频标定状态缓存,IMU 按相邻视觉帧时间区间批量交给后端
  • 外部 Odometry 为可选输入,可承载轮速计、机械里程计或融合结果
  • 图像必须紧密排列,尺寸和坐标系必须与对应 CameraInfo 一致
  • 队列溢出、时间戳乱序和已经无法匹配的图像会被丢弃并计入统计
    注解
    本类线程安全,可直接在不同 LPSS 订阅回调中写入各路消息。
    CameraInfo 的时间戳不参与逐帧同步,更新后持续用于后续图像,直至被下一份有效标定替换。

构造及析构函数说明

◆ FrameSynchronizer()

rm::nav::FrameSynchronizer::FrameSynchronizer ( FrameSyncOptions options = {})
explicit

创建传感器帧同步器

参数
[in]options同步配置
函数调用图:

成员函数说明

◆ clear()

void rm::nav::FrameSynchronizer::clear ( )
noexcept

清空消息队列与上一帧时间,保留标定信息和统计

函数调用图:

◆ next()

FrameSyncResult rm::nav::FrameSynchronizer::next ( )

尝试获取下一帧已同步输入

返回
同步结果,尚未收齐输入时返回对应等待状态
注解
返回 TimestampMismatch 或 FrameMismatch 时可能已经丢弃一张无法组成有效帧的图像, 调用方可继续调用本函数处理后续数据。
函数调用图:

◆ options()

const FrameSyncOptions & rm::nav::FrameSynchronizer::options ( ) const
noexcept
返回
创建同步器时传入且不会再修改的同步配置
函数调用图:

◆ pushImu()

LocalizationStatus rm::nav::FrameSynchronizer::pushImu ( msg::Imu imu)

写入一个可选 IMU 样本

参数
[in]imuIMU 消息
返回
输入状态
函数调用图:

◆ pushOdometry()

LocalizationStatus rm::nav::FrameSynchronizer::pushOdometry ( msg::Odometry odometry)

写入一个可选外部里程计样本

参数
[in]odometry轮速计或其他外部 Odometry 消息
返回
输入状态
函数调用图:

◆ pushPrimary() [1/2]

LocalizationStatus rm::nav::FrameSynchronizer::pushPrimary ( msg::Image image)

写入主图像

参数
[in]image主图像消息,可使用移动语义避免复制像素数据
返回
输入状态,无效图像或无效同步配置会被拒绝并计入统计
函数调用图:

◆ pushPrimary() [2/2]

LocalizationStatus rm::nav::FrameSynchronizer::pushPrimary ( std::shared_ptr< const msg::Image > image)

零拷贝写入由调用方共享所有权的主图像

参数
[in]image主图像共享指针
返回
输入状态,空指针、无效图像或无效同步配置会被拒绝并计入统计
注解
本函数只复制共享指针,不复制图像数据,调用方不得在写入后修改消息内容。
函数调用图:

◆ pushSecondary() [1/2]

LocalizationStatus rm::nav::FrameSynchronizer::pushSecondary ( msg::Image image)

写入右目或深度图像

参数
[in]image辅助图像消息,可使用移动语义避免复制像素数据
返回
输入状态,无效图像或无效同步配置会被拒绝并计入统计
函数调用图:

◆ pushSecondary() [2/2]

LocalizationStatus rm::nav::FrameSynchronizer::pushSecondary ( std::shared_ptr< const msg::Image > image)

零拷贝写入由调用方共享所有权的右目或深度图像

参数
[in]image辅助图像共享指针
返回
输入状态,空指针、无效图像或无效同步配置会被拒绝并计入统计
注解
本函数只复制共享指针,不复制图像数据,调用方不得在写入后修改消息内容。
函数调用图:

◆ setPrimaryInfo()

LocalizationStatus rm::nav::FrameSynchronizer::setPrimaryInfo ( const msg::CameraInfo & info)

更新主相机标定信息

参数
[in]info主相机 CameraInfo
返回
输入状态,失败时保留原标定信息
函数调用图:

◆ setSecondaryInfo()

LocalizationStatus rm::nav::FrameSynchronizer::setSecondaryInfo ( const msg::CameraInfo & info)

更新右目或深度相机标定信息

参数
[in]info辅助相机 CameraInfo
返回
输入状态,失败时保留原标定信息
函数调用图:

◆ statistics()

FrameSyncStatistics rm::nav::FrameSynchronizer::statistics ( ) const
noexcept
返回
当前累计统计的线程安全快照
函数调用图: