多传感器融合技术(一)

2023-05-16

传感器融合,一般可以分为四种:

  1. Early fusion — Fusing the raw data ,一般称为前融合(或数据融合),汇总所有传感器的数据,得到一个super-sensor,再进行检测;
  2. Late fusion — Fusing the results, 一般称为后融合(或结果融合/信息融合),每个传感器独立检测处理,得到检测结果,再汇总;
  3. Mid-level fusion , 一般称为中级融合/中层融合,各传感器提供一个中等表示(比如特征),再汇总;
  4. Sequential fusion , 一般称为顺序融合,将多传感器级联,前一个为后一个提供信息,帮助下一个传感器检测更准确,缺点是容易造成误差的累积;

 

前融合为数据层的融合,可以作为其他三种融合方式的基础,目的是将多个传感器数据源统一到同一度量时空,即时空一致性,时间一致性是为了让两个传感器捕获信息的瞬时时间戳要尽可能地接近,空间一致性是为了将传感器坐标系统一到同一个坐标系。

  • 硬件同步、硬同步:使用同一种硬件同时发布触发采集命令,实现各传感器采集、测量的时间同步。做到同一时刻采集相同的信息。
  • 软件同步:时间同步、空间同步。
  • 时间同步、时间戳同步、软同步:通过统一的主机给各个传感器提供基准时间,各传感器根据已经校准后的各自时间为各自独立采集的数据加上时间戳信息,可以做到所有传感器时间戳同步,但由于各个传感器各自采集周期相互独立,无法保证同一时刻采集相同的信息。
  • 空间同步: 将不同传感器坐标系的测量值转换到同一个坐标系中,其中激光传感器在高速移动的情况下需要考虑当前速度下的帧内位移校准。

以激光雷达(LiDAR)与相机(Camera)的前融合为例,原理是将单帧三维点云转换并映射到单帧图像(二维)的过程,主要指的是将两者进行标定,两者的外参(旋转与平移关系)以及相机本身的内参(小孔成像模型与镜头畸变系数);

首先,我们应当知道LiDAR(以机械16线为例)本身获取的原始数据是由每个激光器的测距值r,旋转角度即方位角\varphi以及固定线束信息\theta组成,通过球面坐标系转换到3D笛卡尔坐标系,得到了三维点云坐标系XYZ,这个坐标系转换过程不在本次讨论中,我们默认已经得到了三维点云xyz。

由简单的刚体变换知识(具体可以参考高翔的视觉SLAM十四讲第三讲三维空间刚体运动),我们可以知道,两个3D笛卡尔坐标系可以通过旋转矩阵(R)与平移向量(t)产生联系,故将每个激光点P_{Lidar}通过以下公式可以转换到相机坐标系下

P{}'_{Camera}= R\cdot P_{Lidar} + t

其中,P{}'_{Camera}=\left [ X_{C}, Y_{C},Z_{C}\right ]^{T}P_{Lidar}=\left [ X_{L}, Y_{L},Z_{L}\right ]^{T}

转换到相机坐标系下后,还需要按照齐次坐标的方式,把最后一维进行归一化处理,得到P在相机归一化平面上的投影(PS:可以参考高翔的视觉SLAM十四讲第四讲相机于图像),这时P_{C}可以看成一个二维的齐次坐标,称为归一化坐标。它位于相机前方 z = 1 处的平面上。该平面称为归一化平面

P_{c}=\left [ X_{c}/Z_{c},Y_{c}/Z_{c},1 \right ]^{T}

然后考虑到镜头的畸变,我们在这个归一化平面上进行畸变矫正(去畸变),默认三个径向畸变系数(k1,k2,k3)和两个切向畸变系数(p1,p2),对归一化平面上的点进行径向畸变和切向畸变纠正,其数学过程为

x_{corrected}=x(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})+2p_{1}xy+p_{2}(r^{2}+2x^{2})

y_{corrected}=y(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})+p_{1}(r^{2}+2y^{2})+2p_{2}xy

以上去畸变的数学公式在《学习Opencv3》书中也有涉及。

最后,将纠正后的点通过内参数矩阵K=\begin{bmatrix} f_{x }& 0& c_{x}\\ 0 & f_{y}& c_{y} \\ 0& 0& 1 \end{bmatrix}投影到像素平面,得到该点在图像上的正确位置。

\begin{matrix} u=f_{x}x_{corrected}+c_{x} & \end{matrix} v=f_{y}y_{corrected}+c_{y}

总结一下,与单目相机成像过程类似

  1. 首先,世界坐标系下有一个固定的点 P,激光雷达坐标为 P_{Lidar}
  2. 由于Lidar和Camera存在固定相对位置,这个变换可由R,t 或变换矩阵T\in SE\left ( 3 \right )描述。 P 的相机坐标为:P{}'_{Camera}=RP_{Lidar}+t
  3. 这时的P{}'_{Camera}仍有X,Y,Z三个量,把它们投影到归一化平面 Z = 1 上,得到 P 的归一化相机坐标:P_{c}=\left [ X_{c}/Z_{c},Y_{c}/Z_{c},1 \right ]^{T}
  4. 最后, P 的归一化坐标经过内参后,对应到它的像素坐标: P_{uv}=KP_{c}

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多传感器融合技术(一) 的相关文章

  • docker 停止容器,删除容器

    停止容器 docker stop ID 删除容器 docker rm id
  • SpringCloud学习笔记-Eureka

    文章目录 服务发现eureka简介架构图使用方法创建Eureka Server引入依赖增加注解修改配置文件 创建Eureka Client引入依赖修改配置文件 Eureka Server高可用编写高可用Eureka Server 用户认证新
  • 《Java核心技术卷一》学习笔记(一)

    写在前面 xff1a 仅作记录 swing和awt部分可以不怎么看 xff0c 前五章都是基础知识 xff0c 有些部分可以熟练java后再看 xff0c 后面的章节可以选择性地看 xff0c 如 xff1a 想刷算法题 了解数据结构 xf
  • go语言项目结合k8s

    1 获取k8s的某个包时 xff0c 报如下错误 xff0c 则可以到idea设置GOPROXY参数 go k8s io apimachinery 64 v0 0 0 20190413052414 d7deff9243b1 unrecogn
  • OpenCV4中读取摄像头参数YAML文件(C++和C#)

    0 xff1a 环境 OpenCV4 1 2 43 Win10 43 Visual Studio2019 我的工程是C 的 xff0c 需要程序读取摄像头参数yaml中的摄像头参数矩阵 畸变矩阵 其实这些opencv都已经帮我们实现了 1
  • 记录下,依照官方指导书搭建小觅双目SDK2时的遇到错误

    如今小觅双目SDK已经出到了2 0 笔者在小型工控机上搭建了Ubuntu 16 04 xff08 64bit xff09 43 ROS kinetic xff08 Ubuntu是U盘安装的 xff0c ROS Kinetic参考http w
  • 我又在电脑上安装小觅双目MYNTEYE的SDK了

    环境是Ubuntu18 xff0c 安装过opencv3 4 2 ROS PCL等 xff0c 新安装完电脑后玩过OpenCV Keras 43 Tensorflow Python 和 SLAM十四讲 的一些例程 所以也只是安装这些相关的软
  • Mixly图形化编程四轴飞行器飞控程序

    Mixly图形化编程四轴飞行器飞控程序 四轴飞行器的飞控程序采用Mixly JL开发环境编程 xff0c 整个程序如下图所示
  • 汇编学习,错误汇总

    一 error A2010 Syntax error 语法错误 xff0c 写错程序了 二 error A2105 Expected instruction or directive 这个就是告诉你命令写错了 xff0c 看看你是不是把某个
  • Ubuntu18.04安装ROS Melodic(绕过Github无需添加节点,分分钟快速安装)

    本文之后 xff0c 世上再无rosdep更新失败问题 xff01 1 安装起来很简单 span class token function sudo span pip span class token function install sp
  • Ubuntu SD卡分区

    在Ubuntu上读取SD卡 xff0c 查看sd卡信息 sudo fdisk l dev sdc1 2048 1026047 1024000 500M b W95 FAT32 dev sdc2 1026048 61403135 603770
  • Linux设置以root用户开机自动登录桌面

    目录 Ubuntu 18 04系统下设置 Redhat7 6系统下设置 Ubuntu 18 04系统下设置 1 允许使用root用户登录桌面 Ubuntu默认不允许使用root用户登录桌面的 首先需要进行如下配置 编辑 usr share
  • 将ROS中的/sensor_msgs/NavSatFix数据导入google earth显示轨迹

    文章目录 1 获取GPS数据2 将GPS数据导入kml模板显示轨迹点3 轨迹显示 1 获取GPS数据 将ros中发布的gps topic输出到文本中 rostopic echo p gpsData gt gpsData 得到如下格式的数据
  • VINS-mono详细解读

    本文转载 xff1a VINS mono详细解读 这个图总结不错 xff1a
  • android studio配置lambda教程

    java1 8的特性之一便是随同发布的lambda表达式 xff0c 它将允许我们将行为传到函数里 在Java 8之前 xff0c 如果想将行为传入函数 xff0c 仅有的选择就是匿名类 xff0c 需要6行代码 而定义行为最重要的那行代码
  • Gtsam学习笔记

    Gtsam学习笔记 文章目录 Gtsam学习笔记 cmake引入 因子factor 预定义的factor 生成factor 初值定义 噪声定义 优化方法 GaussNewton法 LevenbergMarquardt法 边缘化 margin
  • (ADRC)自抗扰控制器学习总结(一)

    ADRC自抗扰控制基本思想要点 xff1a 1 标准型与总扰动 xff0c 扩张状态与扰动整体辨识 xff0c 微分信号生成与安排过渡过程以及扰动的消减与控制量产生 ADRC主要构成 xff1a 1 gt 跟踪微分器 xff08 TD xf
  • 四旋翼姿态解算原理

    姿态结算原理 旋转矩阵的建立 如果要进行四旋翼姿态分析 xff0c 那么需要进行坐标系与坐标系之间的转换 xff0c 地理坐标系与四旋翼坐标系之间的联系如图2 6所示 四旋翼 Quad rotor 分别绕三个轴转动的角度变化如图2 7 所示
  • 四旋翼无人机的设计与实现讲解

    四旋翼无人机基于stm32的设计与实现过程
  • (ADRC)自抗扰控制器(二)——四旋翼无人机

    自抗扰四旋翼控制中的几个问题 xff1a 自抗扰控制器包含三大部分 xff1a TD微分跟踪器 xff1a 微风跟踪器主要可以安排过渡 xff0c 过程同时还具有一定的滤波功能 xff0c 四旋翼由遥控器和地面站发送期望控制信号 xff0c

随机推荐

  • ROS下实现darknet_ros目标检测

    一 代码下载 代码Github主页 xff1a https github com leggedrobotics darknet ros 打开命令行终端 xff0c 键入以下命令下载 span class token function mkd
  • Nginx $request_uri和$uri详解

    一 官方介绍 request uri This variable is equal to the original request URI as received from the client including the args It
  • C++学习总结(二十七)——STL容器与算法(一) STL容器的组成,线性容器(array,vector,tuple,queue,deque,stack),链式容器(list)

    STL容器 xff1a C 43 43 标准库的一部分 xff0c 用C 43 43 Template机制表达泛型的库 xff0c 用泛型技术设计完成实例 Template特性 1 类模板偏特化 xff0c 进行严格的类型检查 2 默认模板
  • C++学习总结(二十八)——STL容器与算法(二) 集合set multiset bitset 映射 map 以及散列hash的介绍

    1 集合set的基本操作 集合中不能包含重复的元素 xff0c 如果包含重复的元素 xff0c 则将被自动剔除 同时实现自动排序 红黑树容器 xff1a 例如数据 xff1a 1 2 3 4 5 6 7 经过排序后的结果为 xff1a 4
  • Linux Ubuntu基本操作指令

    Linux的登录方式 xff1a 1 本地登录 2 远程登录 xff1a putty使用 查看运行级别 xff1a Linux运行级别0 6级 xff0c 0 关机 6 重启 1 单用户 2 3 多用户 可以通过runlevel 查看运行级
  • 微信小程序开发(一)

    微信小程序开发 目录 微信小程序开发 一 微信小程序开发 二 五 让小程序连接树莓派 六 xff1a 小程序控制面板设计 七 xff1a 树莓派如何解析小程序的信息 八 xff1a 树莓派如何回信息给小程序 九 xff1a 树莓派与微信小程
  • ssh远程失败,提示“REMOTE HOST IDENTIFICATION HAS CHANGED! ”解决办法

    搞了个谷歌云 xff0c 但是因为一些原因一直提示我在挖矿 xff0c 一脸懵逼 xff0c 估计是别人的脚本做了手脚 删了新建一个实例 xff0c 外部IP还是原来的 xff0c 使用ssh远程连接的时候发现提示 REMOTE HOST
  • 【滤波器学习笔记】一阶RC低通滤波

    一阶RC低通滤波 从模拟到数字 本文整理自网络 匠人手记 等书籍文章 模拟电路低通滤波时域 频域软件低通滤波 典型电路 图1 典型RC电路 直流 交流 脉冲信号都可以用它 时域 电容电流 xff1a I c 61 d q d t 61 d
  • 嵌入式:一种裸机编程多任务切换方法

    嵌入式 xff1a 一种裸机编程多任务切换方法 有时候为了实现一些简单的 对实时性要求不高的任务 xff0c 采用操作系统不仅增加了程序的复杂性 xff0c 对低性能单片机的资源占用也是值得考虑的问题 这时候操作系统可能不是必要的 xff0
  • 自动化学科领域高质量科技期刊T1级期刊

    自动化学科领域高质量科技期刊T1级期刊 控制理论与控制工程方向 序号 期刊名称 T1 01 IEEE Transactions on Automatic Control T1 02 Automatica T1 03 SIAM Journal
  • UR机器人手眼标定

    一 UR机器人位姿表示 默认情况下UR机器人的基坐标系和TCP如下图所示 xff1a 注意这里的TCP位置和坐标系都是在默认TCP配置的情况下 xff0c 默认的TCP配置如下图所示 xff1a 如果用户想要自己设置TCP的位置和坐标系就可
  • 《自抗扰控制技术》——第一遍阅读

    目录 感想摘抄自认为有用的结论第一章 xff1a 剖析经典PID调节器第二章 xff1a 跟踪微分器第三章 xff1a 非光滑反馈的功能和效率第四章 xff1a 扩张状态观测器第五章 xff1a 自抗扰控制器第六章 xff1a 自抗扰控制器
  • ROS Melodic版本下Gazebo的更新与安装

    ROS Melodic自带的Gazebo版本过低 xff0c 建议升级 span class token comment 1 首先 xff0c 查看Gazebo版本 出现的是 gazebo9 及其相关插件 span dpkg l span
  • 《自抗扰控制技术》——第二遍(仿真)

    目录 感想复现书上的仿真图像第一章 xff1a 剖析经典PID调节器第二章 xff1a 跟踪微分器第三章 xff1a 非光滑反馈的功能和效率第四章 xff1a 扩张状态观测器第五章 xff1a 自抗扰控制器第六章 xff1a 自抗扰控制器的
  • 使用MYNT-EYE-D相机跑开源代码VINS_Fusion

    使用MYNT EYE D相机跑开源代码VINS Fusion 这两天刚买了一个小觅智能公司型号为D1000 IR 120 Color的深度相机 xff0c 探索了一下在VINS Fusions上的融合方法 xff0c 折腾了很久才成功 xf
  • 修改docker默认存储路径

    默认情况下 xff0c docker镜像的默认存储路径是 var lib docker xff0c 这相当于直接挂载系统目录下 xff0c 而一般在搭系统时 xff0c 这个区都不会太大 xff0c 所以如果长期使用docker开发应用 x
  • 制作自己的rgb-d数据集

    今天自己用机器人采了一波数据 尝试着用自己采集的RGB D数据来跑slam2的RGB D例程 下面来记录一下 该文章主要是参考这篇博客 xff1a https blog csdn net qq 16481211 article detail
  • ROS中的一些基本概念

    主节点 xff08 master xff09 xff1a 负责节点到节点的消息与通信 用roscore命令来运行主节点 节点只有在需要注册自己信息或向其他节点发送请求时才能访问主节点 节点 xff08 node xff09 xff1a 是指
  • ros实践(一):编写一个自己的功能包

    创建ROS功能包的命令如下 xff1a catkin create pkg 功能包名称 依赖功能包1 依赖功能包2 实践 cd catkin ws src catkin create pkg my first ros pkg std msg
  • 多传感器融合技术(一)

    传感器融合 xff0c 一般可以分为四种 xff1a Early fusion Fusing the raw data xff0c 一般称为前融合 xff08 或数据融合 xff09 xff0c 汇总所有传感器的数据 xff0c 得到一个s