多传感器同步采样方法

本文探讨了在自动驾驶和机器人领域中,如何实现多传感器(如imu、camera和lidar)的同步采样。提出了一个适用于算法研发和轻量级产品部署的系统框架。通过设定采样频率差异和强假设,设计了一个能够确保数据连续输入时,不同传感器数据间具有正确对齐关系的数据结构和处理流程。

多传感器的作用在自动驾驶,机器人领域应用广泛。 这里我根据工作讨论一种轻量级通用的多传感器同步采样的系统框架,可以用于算法研发,和轻量级产品的部署。下面以伪码的形式给出分析。

问题

我们假定三种传感器A, B, C; 采样频率 A>B>C。

不妨认为A -> imu (50-200hz), B ->camera (30-100hz), C -> lidar( 5-10hz),

需设计这样的一个框架, 数据连续输入时 C_k+1可以获取 B(C_k ~ C_k+1), 同时 任意一个B_t+1 可以获取  A(B_t ~B_t+1) , 处理好的数据便于后续算法使用和管理

假设

同时这又有三个强假设:

1 认为在5ms内的差异可以认为是对齐的。

2 认为A B C数据的时间戳为系统接收到的时间戳。其实传感器到系统还有一段延时,传感器接收到也自带时间戳。那样的时间戳配准涉及硬件的联动调试,会变得非常繁琐。

3 A B C数据的采集间隔稳定。

数据结构

// 输入

//用于存储接收的sensor数据

queue C_buf;

queue B_buf;

queue A_buf;

// 输出

queue measurements( pair( C, vector( pair(B , vector(A) )))

 

框架

首先,是数据接受处理,注意线程锁和信号同步

mutex m_buf;

condition_variable con;

//receive buffers

A_callback(&A_msg)
{
    m_buf.lock();
    A_buf.push(A_msg);
    m_buf.unlock();
    con.notify_one();//同时唤醒作用获取观测值数据的程序
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值