Camera-IMU联合标定原理

2023-05-16

Camera-IMU联合标定原理

    • 一.相机投影模型
    • 二.IMU 模型
    • 三.Camera-IMU标定模型
      • (一) 相机-IMU旋转
      • (二) 相机-IMU平移
      • (三) 视觉惯性代价函数
    • 四. camera-imu联合标定
      • (一) 粗略估计camera与imu之间时间延时
      • (二) 获取imu-camera之间初始旋转,还有一些必要的初始值:重力加速度、陀螺仪偏置
      • (三) 大优化,包括所有的角点重投影误差、imu加速度计与陀螺仪测量误差、偏置随机游走噪声

在VIO系统中,camera-imu间内外参精确与否对整个定位精度起着重要的作用。所以良好的标定结果是定位系统的前提工作。

目前标定算法主要分为离线和在线标定,离线标定以kalibr为代表,能够标定camera内参、camera-imu之间位移旋转、时间延时以及imu自身的刻度系数、非正交性等。标定过程中,kalibr 会使用 apriltag 作为视觉基准,利用非线性优化的方法优化视觉的重投影误差、角速度误差、加速度误差和 bias 误差,最后得到所需要的 IMU 和相机的外参数以及重力向量大小。除此之外,kalibr 还考虑了相机和 IMU不同步的情况,因此,还可以使用 kalibr 获得相机和 IMU 之间的时间延迟。

一.相机投影模型

这里以常用的针孔相机投影为例,而畸变模型包括最常见rantan、equidistant两种。对于空间中3D点怎样投影得到像素平面2D坐标:

在这里插入图片描述

由上图,可以看到空间三维点P由三角形相似,可以简单计算出来像素平面坐标(u,v)。实际投影成像过程不想上图那么简单,主要包含三步:
[ X C Y C Z C ] ⟹ 归一化平面 [ u = X C / Z C v = Y C / Z C ] ⟹ 加畸变 [ r = u 2 + v 2 d r = 1 + k 1 r + k 2 r 2 + k 3 r 2 u d = u d r + 2 u v p 1 + ( r + 2 u 2 ) p 2 v d = v d r + 2 u v p 2 + ( r + 2 v 2 ) p 1 ] ⟹ 像素 [ p x = f x u d + c x p y = f y v d + c y ] \begin{bmatrix} X_{C}\\Y_{C}\\ Z_{C}\end{bmatrix}\overset{归一化平面}{\Longrightarrow } \begin{bmatrix} u=X_{C}/Z_{C}\\v=Y_{C}/Z_{C}\end{bmatrix}\overset{加畸变}{\Longrightarrow } \begin{bmatrix} r=u^{2}+v^{2}\\d_{r}=1+k_{1}r+k_{2}r^{2}+k_{3}r^{2}\\u_{d}=ud_{r}+2uvp_{1}+(r+2u^{2})p_{2}\\ v_{d}=vd_{r}+2uvp_{2}+(r+2v^{2})p_{1}\end{bmatrix}\overset{像素}{\Longrightarrow }\begin{bmatrix} p_{x}=f_{x}u_{d}+c_{x}\\p_{y}=f_{y}v_{d}+c_{y} \end{bmatrix} XCYCZC 归一化平面[u=XC/ZCv=YC/ZC]加畸变 r=u2+v2dr=1+k1r+k2r2+k3r2ud=udr+2uvp1+(r+2u2)p2vd=vdr+2uvp2+(r+2v2)p1 像素[px=fxud+cxpy=fyvd+cy]

上图第二步以rantan畸变为例,对于equidistant畸变模型则是另外一种形式:

{ r = u 2 + v 2 θ d = θ ( 1 + k 1 θ 2 + k 2 θ 4 + k 3 θ 6 + k 4 θ 8 ) u d = u ⋅ θ d r , v d = v ⋅ θ d r \left\{\begin{matrix} r=\sqrt{u^2+v^2} \\ \theta_{d}=\theta(1+k_{1}\theta^{2}+k_{2}\theta^{4}+k_{3}\theta^{6}+k_{4}\theta^{8}) \\ u_{d}=u\cdot \frac{\theta_{d}}{r},v_{d}=v\cdot \frac{\theta_{d}}{r} \end{matrix}\right. r=u2+v2 θd=θ(1+k1θ2+k2θ4+k3θ6+k4θ8)ud=urθd,vd=vrθd

投影过程首先是算出归一化平面上点,然后再对归一化平面上点加rantan、equidistant畸变,最后再作用于内参焦距、主点,得到成像像素点坐标。

二.IMU 模型

惯性测量单元(Inertial Measurement Unit,IMU),主要用来测量机器人运动过程中的角速度以及加速度。由于相机在运动过快的过程中拍摄的图片会产生模糊,从而导致在两帧图片中存在的共同区域将变少,算法无法确定机器人的运动方向。因此,使用 IMU 可以持续提供可靠的(R,t)估算。对于视觉算法,IMU 起着互补的作用。

对于一个理想的 IMU,其加速度的三个轴与陀螺仪的三个轴定义了一个共享、正交的三维坐标系。加速度计用来感应物体在运动过程中沿着不同轴产生的加速度陀螺仪用来测量物体围绕不同轴的角速度。但在实际情况下,由于组装的原因,加速度计和陀螺仪的三维坐标系是两个非正交,因此导致轴偏转角误差,如下图所示。对于两个坐标系之间的变换,可以通过下式获得:

在这里插入图片描述

​ 非正交传感器坐标轴 ( x S 、 y S 、 z S ) (x^{S}、y^{S}、z^{S}) (xSySzS)和 IMU 主体坐标轴 ( x B 、 y B 、 z B ) (x^{B}、y^{B}、z^{B}) (xByBzB)

假设 IMU 主体坐标系与加速度计正交坐标系相重合,那么在这种情况下,角度 β x z 、 β x y 、 β y x β_{xz}、β_{xy}、β_{yx} βxzβxyβyx的值都为零,上式可以简化为:

在这里插入图片描述

式中,字母 a 表示加速度计情况,而 a O a^{O} aO a S a^{S} aS分别表示理想坐标系和实际坐标系。

陀螺仪和加速度计测量应该参考同样的坐标系,因此可以使用下式来表示如何从实际陀螺仪坐标系变换到理想陀螺仪坐标系:

在这里插入图片描述

加速度计和陀螺仪都会受数字信号转换为物理量带来误差的影响,因此引入加速度计与陀螺仪尺度因子矩阵:
在这里插入图片描述

加速度计和陀螺仪精确加工的条件下,当 IMU 静止时,加速度计和陀螺仪三轴均输出0。但是由于加工误差的存在,加速度计与陀螺仪产生零偏向量:

在这里插入图片描述

在相机和 IMU 联合使用的情况下,主要考虑数据怎么从一个坐标系转换到另一个坐标系. 相机坐标系{C}、IMU 坐标系{B}和世界坐标系{W}之间的关系如下图所示,各个坐标系之间可以相互变换:

在这里插入图片描述

​ 不同坐标系之间相互转换的关系

用 T 来表示不同坐标系之间的变换,在相机和 IMU 使用前,需要对相机和 IMU 之间的变换矩阵 T c b T_{cb} Tcb进行标定。因此相机坐标系和 IMU 坐标系之间满足如下变换关系:

T w b = T w c ⋅ T c b T_{wb}=T_{wc}\cdot T_{cb} Twb=TwcTcb

将 T 表示成旋转矩阵 R 和平移向量 t:

在这里插入图片描述

将上式进行矩阵之间的运算,可以分别得到相机坐标系和 IMU 坐标系之间旋转和平移的变换关系:

在这里插入图片描述

​ 由于相机和 IMU 是两个不同的传感器,两者的触发不能完全同步进行,因此在使用中相机和 IMU 之间触发存在时间差 t d t_{d} td。如下图 所示,传感器采样实例和时间戳之间存在偏差。

传感器采样时间戳

传感器采样时间戳

​ IMU 的采样时间等于相机的采样时间加上时间差 t d t_{d} td: t I M U = t c a m + t d t_{IMU}=t_{cam}+t_{d} tIMU=tcam+td

三.Camera-IMU标定模型

对于低纹理、运动模糊和遮挡的环境,视觉和惯性传感器的结合具有较强的鲁棒性。在纯视觉 SLAM 中通常缺少尺度信息,IMU 通过提供可靠的 R 和 t 以恢复绝对尺度。具有代表性的算法有 EKF-SLAM、MSCKF、OKVIS、VINS-Mono和ORB-SLAM3。以上经典的算法都依赖于系统准确的初始化相机-IMU精准的标定。相机-IMU 的外参标定主要来标定从相机坐标系{C}到 IMU 坐标系{B}的变换矩阵(即旋转和平移),我们首先求取从相机到 IMU 的旋转,然后再求取平移.

(一) 相机-IMU旋转

相机-IMU 之间的旋转对于视觉惯性 SLAM 系统的鲁棒性非常重要,过大的偏差会导致系统的初始化崩溃。因为单目相机可以跟踪系统的位姿,而两幅图像之间的相对旋转可以通过经典的五点算法来解决两帧之间图片的相对旋转 R c k , c k + 1 R_{c_{k},c_{k+1}} Rck,ck+1。此外,角速度可以通过对陀螺仪积分来获得相关的旋转 R b k , b k + 1 R_{b_{k},b_{k+1}} Rbk,bk+1。对于任意的 k 帧的图片,遵循以下等式:

R b k , b k + 1 ⋅ R b c = R b c ⋅ R c k , c k + 1 R_{b_{k},b_{k+1}}\cdot R_{bc}=R_{bc}\cdot R_{c_{k},c_{k+1}} Rbk,bk+1Rbc=RbcRck,ck+1

将上式中的旋转矩阵用四元数来表示:

在这里插入图片描述

对于给定的多对连续图像之间的旋转,我们可以构建一个超定方程:

在这里插入图片描述

式中 N 表示旋转矩阵收敛时所使用帧的数量, w k , k + 1 w_{k,k+1} wk,k+1是异常处理的权重。当旋转校准与传入的测量一起运行时,先前估计的结果 R ^ b c \hat{R}_{bc} R^bc可以作为初始值对残差进行加权:

在这里插入图片描述

残差函数的权重为:

在这里插入图片描述

如果没有足够的特征来估计相机旋转,则将 w k , k + 1 w_{k,k+1} wk,k+1设置为零。以上的超定方程的解可以找到对应于 Q N Q_{N} QN的最小奇异值的右单位奇异向量。即可以解算出对应的旋转矩阵 R b c R_{bc} Rbc

(二) 相机-IMU平移

相机-IMU 的旋转可以从上部分得到,获得旋转矩阵 R b c R_{bc} Rbc后,我们可以估计相机-IMU 的平移,使用紧耦合的滑动窗口来初始化这些参数。初始化在 IMU 坐标系下完成,我们定义的状态向量为:

在这里插入图片描述

其中 x k x_{k} xk是第 k 个 IMU 的状态, g b k g^{bk} gbk是重力向量,N 是 IMU 的状态在滑动窗口中 s 的数量,M是在滑动窗口中具有足够视差的特征的数量。n 和 m 是在滑动窗口中的起始索引。 λ l λ_{l} λl 是第 l l l个特征从第一次观察开始的深度, P b 0 b k P_{b_{0}b_{k}} Pb0bk=[0,0,0]事前设定好。

初始化通过最大似然估计来完成,即最小化滑动窗口内来自 IMU 和单目相机的所有测量误差的马氏范数之和:

在这里插入图片描述

其中 B 是所有 IMU 测量值的集合,C 是任何特征和任何相机姿态之间的所有观测值的集合。由于增量和相对旋转是已知的,上式可以使用非迭代线性方式求解。其中 IMU 的测量可以表示为:

在这里插入图片描述
{ r p , H p r_{p},H_{p} rp,Hp}是线性估计器的解,{ P b k , b k + 1 , H b k , b k + 1 P_{b_{k},b_{k+1}},H_{b_{k},b_{k+1}} Pbk,bk+1,Hbk,bk+1}是线性 IMU 测量模型, H c j l H_{cjl} Hcjl是线性相机测量模型。上式最优化方程描述的过于复杂,为了便于参数的求解,将线性代价函数转换为以下形式:

在这里插入图片描述其中{$ \Lambda_{B},b_{B}KaTeX parse error: Expected 'EOF', got '}' at position 1: }̲和{\Lambda_{C},b_{C}$}分别是 IMU 和视觉测量的信息矩阵和向量。由于已知的增量和对应的旋转,代价函数的状态是线性的,并且上式具有唯一的解。通过对该方程线性的求解,就能获得相机-IMU 之间的平移向量 t b c t_{bc} tbc

(三) 视觉惯性代价函数

​ 单目视觉惯性问题可以被公式化为一个联合优化的代价函数 J ( x ) J(x) J(x),代价函数包括视觉测量的残差权重 e v e_{v} ev和惯性测量的残差权重 e i e_{i} ei:

在这里插入图片描述

其中 i 是图像的特征索引,k 代表相机数量索引,j 表示 3D 目标的位置,W 表示位置测量的信息矩阵。

四. camera-imu联合标定

​imu可以获取每一时刻加速度和角速度,对加速度、角速度进行积分可以得到速度、位置、旋转。不同于SLAM中对离散imu数据进行积分得到状态可能带来较大的误差,采用对时间连续的状态求导来反推imu数据。把离散的状态描述成连续的就需要B-spline。

Kalibr 离线标定方法步骤:

  1. 粗略估计camera与imu之间时间延时。

  2. 获取imu-camera之间初始旋转,还有一些必要的初始值:重力加速度、陀螺仪偏置。

  3. 大优化,非线性优化代价函数,包括所有的角点重投影误差、imu加速度计与陀螺仪测量误差、偏置随机游走噪声。

(一) 粗略估计camera与imu之间时间延时

通过相机内参标定,可以先标定出camera的内参。现在已知每一帧图像的3D-2D对应,可以算出每一帧camera的pose。用这些离散的pose构造连续的B-spline,就可以获取任意时刻pose。

这里对pose参数化采用六维的列向量,分别三维的位移和旋转矢量 。对位移和旋转矢量分别求一阶导、二阶导可以得到速度与加速度:
v = t ˙ v = \dot{t} v=t˙
a = t ˙ a = \dot{t} a=t˙
w i = J r ( θ ) θ ˙ w_{i} = J_{r}(\theta)\dot{\theta} wi=Jr(θ)θ˙

​ 利用camera的样条曲线获取任意时刻camera旋转角速度,而陀螺仪又测量imu的角速度。忽略偏置和噪声影响,两者相差一个旋转,且模长相等: w i = R i c w c w_{i}=R_{ic}w_{c} wi=Ricwc

(二) 获取imu-camera之间初始旋转,还有一些必要的初始值:重力加速度、陀螺仪偏置

同样利用角速度测量关系,这次构造一个优化问题

这样就可以获得camera-imu之间的旋转,以及陀螺仪偏置初始值。

忽略加速度偏置与噪声,假设整个标定过程中平均加速度为零,所以也可以获得重力加速度在参考坐标系下的表示: g ^ = − 1 n ∑ i = 1 n R w c ∗ R c i ∗ a m \hat{g} =-\frac{1}{n} \sum_{i=1}^{n} R_{wc}*R_{ci}*a_{m} g^=n1i=1nRwcRciam

(三) 大优化,包括所有的角点重投影误差、imu加速度计与陀螺仪测量误差、偏置随机游走噪声

前面两步为最后大优化提供一个不错的初始值,接着大优化就是调整所有要优化的变量来让所有的观测误差最小。

误差项包括所有标定板角点重投影误差imu加速度计与陀螺仪测量误差偏置的随机游走噪声(相对特殊点)。

为了简化imu测量误差的构建,这里利用camera pose乘上上面计算出来外参,得到imu的pose 曲线。当然这个曲线可能误差比较大,会在后续优化过程中进行调整。

参考:

https://blog.csdn.net/Yong_Qi2015/article/details/117490261

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

Camera-IMU联合标定原理 的相关文章

  • 在 iOS 中测量/计算距离

    我需要计算 iOS 中两点之间的距离 我可以保证至少有一部iPhone 4 所以相机的图像质量应该很好 这个想法是使用图片计算到某个点的距离 有一个名为 easyMeasure 的应用程序 它完全可以满足我的需要 我对毕达哥拉斯很满意 但这
  • THREE.js 正交相机缩放到鼠标点

    我正在为我们的 THREE js 应用程序开发正交相机 本质上 该相机将以 2D 方式向用户呈现场景 用户可以选择在 2D 和 3D 相机之间切换 该相机将允许平移和缩放到鼠标点 我可以进行平移 也可以进行缩放 但不能缩放到鼠标点 这是我的
  • 来自相机的原始图像数据

    我一直在这个论坛上上下搜索 但找不到我真正需要的东西 我想从相机获取原始图像数据 到目前为止 我尝试通过该方法从 imageDataSampleBuffer 中获取数据captureStillImageAsynchronouslyFromC
  • 是否可以使用 flutter 相机插件流式传输视频?

    我一直在使用相机插件 我知道可以通过CameraController与功能start stopVideoRecording 这些函数将采用文件的路径作为输入 我希望能够在录制时将该视频流式传输到服务器 是否可以通过相机插件的当前功能以某种方
  • Android 闪光灯在相机运行时使用按钮打开/关闭

    我看到有很多这样的问题 但我没有找到任何方法 在我的应用程序中 我有自己的相机和一些选项 并且还有名为的按钮btnFlash用于在相机运行时打开 关闭相机的闪光灯 我尝试了很多方法 但在 Samsung Tab 和 HTC 上都没有效果 这
  • Android 6.0 未经许可捕获图像

    我需要让用户使用 Android 6 0 拍照 从图库或相机应用程序 因为我不需要控制相机 所以我想使用此处描述的意图 但是 如果您不需要此类控制 则可以仅使用 ACTION IMAGE CAPTURE 意图来请求图像 当您启动意图时 系统
  • Firemonkey相机组件太慢

    我有一个问题TCameraComponent在安卓上 我第一次运行该应用程序时 相机正常 但如果我停止TCameraComponent再次启动 相机变得太慢 对正在发生的事情有什么想法吗 CameraComponent1 Active fa
  • 动态设置布局参数

    我正在使用 CameraPreview 示例 API 演示 我需要添加一些覆盖 SurfaceView 的视图 按钮等 为此 我尝试设置它们的参数 但它们始终出现在屏幕的左上角 这是onCreate方法的代码 Override protec
  • 上传前压缩相机图像

    我正在使用这段代码 来自www internetria com http www internetria com blog 2013 04 12 android enviar imagenes por webservice 拍照并上传到服务
  • 从连接到计算机并在成像设备中列出的相机捕获图像

    我有一台佳能 EOS 1000D 当我将其连接到计算机时 它列在 控制面板 gt 成像设备 下 我想以编程方式拍照 我猜想成像设备中列出的所有设备都具有相同的接口 可能是 TWAIN 并且具有向它们发送命令的标准方法 TWAIN可以做到吗
  • 当相机断开连接时,opencv videocapture 挂起/冻结而不是返回“False”

    我正在使用 OpenCV Python 3 1 遵循此处的示例代码 http opencv python tutroals readthedocs io en latest py tutorials py gui py video disp
  • 如何检测前置摄像头放置在设备上的位置?

    有什么方法可以检测 Android 设备上前置摄像头的放置位置吗 我认为在手机上它总是在它的顶部 靠近耳机 但所有平板电脑都是不同的 我检查了华硕 Transformer 前置摄像头位于侧面 如果我以横向模式握住它 则位于顶部 但三星 Ga
  • 相机 API:跨设备问题

    我正在开发一个相机应用程序 基本上作为消息传递应用程序的一部分来附加图像等 该应用程序需要适用于 gt SDK 2 2 并且 I can t尽可能多地使用默认的 Android 相机 因为 该应用程序的性质决定了图像不应保存到磁盘上 一些
  • Android/iOS 上的相机远程快门如何工作?

    我最近在 Android iOS 上遇到了一个使用蓝牙的内置相机应用程序的远程快门 这是我找到的产品的示例链接 Link http www youtube com watch v cyVG76HDvh4 不是来打广告的 只是简单了解背后的技
  • 如何在 AVCaptureDevice 上准确设置快速快门速度(曝光时间)?

    我正在开发适用于 IOS 13 的相机应用程序 为此 我将 AVCaptureSession 与 AVCaptureVideoPreviewLayer 结合使用 到目前为止一切正常 现在我想让用户从给定的典型快门速度值数组 以 1 3 曝光
  • 棒棒糖中的 takePicture 失败

    以下代码正在使用 可在后台拍照 它对于棒棒糖以下的所有版本都工作正常 但在以下版本中给出运行时异常takePicture null null mcall 有任何想法吗 public void takePictures final int d
  • DirectShow 虚拟摄像机不会出现在某些配置的列表中

    我使用 DirectShow 过滤器作为虚拟相机 CLSID VideoInputDeviceCategory 它运行良好 但某些应用程序 配置不将此提要显示为源 例如 在 win 8 1 上 我可以通过 webrtc 在 Chrome F
  • 相机预览的有效模糊

    到目前为止我尝试过的 将每一帧转换为位图 然后用library https github com wasabeef Blurry并将其放入ImageView这是在相机预览前 显然太慢了 就像1 fps 然后我开始使用渲染脚本这会模糊每一帧
  • java.lang.RuntimeException:release()后调用的方法

    If i am 不使用 相机 release in 表面被破坏 then 无法从另一个 Activity 再次启动 CameraActivity 简而言之 得到不幸的是应用程序已停止 错误 即使不释放相机 但如果我确实点击了 主页 按钮 来
  • 浏览器显示“已阻止摄像头以保护您的隐私”

    浏览器说 阻止摄像头以保护您的隐私 我的项目包括使用用户摄像头 当我从本地主机访问应用程序时 摄像头工作正常 但是当通过 IP 地址访问时 浏览器默认阻止摄像头和其他资源 我如何允许它们用于我的应用程序 我的应用程序适用于将使用 IP 地址

随机推荐

  • DataX 学习笔记

    一 DataX简介 1 1 DataX概述 DataX 是阿里巴巴开源的一个异构数据源离线同步工具 xff0c 致力于实现包括关系型数据库 MySQL Oracle等 HDFS Hive ODPS HBase FTP等各种异构数据源之间稳定
  • linux查看整个机器内存使用情况

    1 free命令 参数介绍 xff1a total 内存总数 used 已经使用内存数 free 完全空闲内存 shared 多个进程共享的内存 buffers 用于块设备数据缓冲 xff0c 记录文件系统metadata xff08 目录
  • Docker 学习笔记

    第1章 docker简介 1 1 什么是docker 1 Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目 xff0c 它是基于 dotCloud 公司多年云服务技术的一次革新
  • TiDB 学习笔记

    第一章 TiDB概述 TiDB官网 https pingcap com index html TiDB可以理解为是MySQL的加强版 分布式MySQL MySQLPlus TiDB 简介 TiDB 是 PingCAP 公司设计的开源分布式
  • SeaTunnel 学习笔记

    第1章 Seatunnel概述 官网地址 xff1a https seatunnel apache org 文档地址 xff1a https interestinglab github io seatunnel docs 1 1 SeaTu
  • Snake-SLAM:VIO、解耦化优化、延迟建图、图优化、鲁棒性初始化

    本来想写一篇文章 xff0c 但是这篇已经写的很好了 xff0c 不再赘述 xff1a 一种解耦非线性优化的高效VI SLAM系统 Snake SLAM
  • PooledByteBuf分配及回收之六PooledUnsafeDirectByteBuf初始化

    PooledByteBufAllocator初始化 PoolThreadCache初始化 PoolAerna初始化 PoolChunk初始化 PoolSubpage初始化 PooledUnsafeDirectByteBuf初始化 分配微小型
  • CubeMx工程增加FreeRtos支持

    对于stm32一些ram和flash相对大一些的mcu xff0c 增加一个实时操作系统 xff0c 会使程序控制更加灵活 本文阐述一下通过CubeMx自动添加FreeRtos的方法 xff0c 和使用visualgdb加载CubeMx生成
  • 整理leetcode刷题过程中遇到的常用库函数(c++)

    整理leetcode刷题过程中遇到的常用库函数 xff08 c 43 43 xff09 如果有额外的了解需求 xff0c 可以在微软c 43 43 库函数进行了解 以下按照我理解的刷题顺序整理 xff1a 数组 数组是刷题的开始 xff0c
  • s5pv210开发与学习:1.3之SD卡学习

    目录 拓展阅读 SD卡 内存 RAM 与外存 ROM 的区别 RAM random access memory 随机访问存储器 特点是任意字节读写 随机访问 xff0c 掉电丢失 ROM read only memory 只读存储器 用于存
  • RT-Thread 开发者能力认证考试样题(RCEA)

    V1 0 RT Thread 开发者能力认证考试样题 RCEA xff09 注 xff1a 样题仅为部分题目 第一小卷 单选题 40 题 40 分钟 40 0 分 1 对两个字符 a 和 b 进行初始化 xff1a char a 61 34
  • Android开发中为什么有些变量会以m开头

    平常在看Android代码和看别人敲代码的时候经常看到有些变量会以m开头 xff0c 这到底是什么样的命名规则呢 xff1f 首先看官网的答案 xff1a Follow Field Naming Conventions Non public
  • Ubuntu 串口设备 USB tty

    Ubuntu 串口设备 USB tty 概述USB查看详细信息 概述 研究Ubuntu下串口设备的连接 xff0c 简单的讲就是看有没有连接上 xff0c 至于使用后面再说 USB 使用命令如下可以查看USB接口的信息 xff0c dmes
  • Nooploop UWB LinkTrack ROS下配置

    Nooploop LinkTrack ROS 1 概述2 ROS下配置3 ROS系统安装4 串行库安装 5 ROS包的配置5 1 找不到libserial so文件5 2 解决办法 6 消息格式7 参考8 延伸阅读传感器配置节点程序分析经典
  • 相机标定之使用Kalibr工具箱

    相机标定之使用Kalibr工具箱 1 概述2 准备3 步骤4 参考链接5 相关链接 1 概述 简单介绍如何使用Kalibr工具箱进行针孔模型相机标定的步骤 xff0c 供自己以后参考 xff0c 同时希望给大家带来帮助 2 准备 提前准备好
  • 机器人学中的状态估计学习笔记(一)第二章 概率论基础

    机器人学中的状态估计学习笔记 xff08 一 xff09 第二章 概率论基础 2 1 概率密度函数2 1 1 定义2 1 2 贝叶斯公式及推断2 1 3 矩2 1 5 统计独立性和不相关性2 1 6 归一化积 2 2 高斯概率密度函数2 2
  • 机器人学中的状态估计学习笔记(二)第三章线性高斯系统的状态估计

    机器人学中的状态估计学习笔记 xff08 二 xff09 第三章线性高斯系统的状态估计 3 1 离散时间的批量估计问题3 1 1 问题定义3 1 2 最大后验估计3 1 3 贝叶斯推断3 1 4 存在性 唯一性与能观性情况1 xff1a 有
  • PooledByteBuf分配及回收之十PoolChunkList源码解析

    PooledByteBufAllocator初始化 PoolThreadCache初始化 PoolAerna初始化 PoolChunk初始化 PoolSubpage初始化 PooledUnsafeDirectByteBuf初始化 分配微小型
  • 机器人学中的状态估计学习笔记(三)第四章 非线性非高斯系统的状态估计

    机器人学中的状态估计学习笔记 xff08 三 xff09 第四章 非线性非高斯系统的状态估计 4 1 引言4 2 离散时间的递归估计问题4 3 离散时间的批量估计问题 4 1 引言 本小节主要是从一个简化的 一维度的非线性状态估计问题 估计
  • Camera-IMU联合标定原理

    Camera IMU联合标定原理 一 相机投影模型二 IMU 模型三 Camera IMU标定模型 一 相机 IMU旋转 二 相机 IMU平移 三 视觉惯性代价函数 四 camera imu联合标定 一 粗略估计camera与imu之间时间