3D激光雷达-IMU的无目标外参标定

2023-05-16

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【全栈算法】技术交流群

后台回复【相机标定】获取超详细的单目双目相机模型介绍、内外参标定算法原理视频!

摘要:这项工作提出了一种基于扩展卡尔曼滤波器(EKF)的3D激光雷达和IMU的无目标外参标定算法。该算法首先在最小二乘优化框架中使用基于运动的校准约束确定传感器间旋转外参的初始估计,接着在扩展卡尔曼滤波器框架中使用基于运动的校准约束进行量测更新进一步估计传感器间的旋转和平移。作者通过实际实验对该算法进行了验证。

1 引言

3D 激光雷达和 IMU 在自主机器人中无处不在。3D 激光雷达能够生成环境的 3D 点云并且不受光照影响。这证明了激光雷达在一些机器人的应用中是有益的。然而,由于旋转式激光雷达的旋转特性及其产生测量结果的顺序方式,当机器人进行动态机动时,激光雷达会出现明显的运动失真。运动失真会恶化激光雷达里程计或SLAM的结果。惯性测量单元 (IMU) 可用于减轻运动对旋转式激光雷达的影响。IMU以高于激光雷达旋转速率的频率测量线加速度和角速度。最先进的激光雷达里程计或SLAM算法使用IMU来校正激光雷达扫描中的运动失真(也称为去畸变),以更好地估计机器人的位置和建图。为了使用 IMU 的测量值,这些算法要求 IMU 和激光雷达之间的空间/外部参数是先验已知的,这样来自这两个传感器的数据可以在一个公共的参考系中表示。研究人员通常使用从不同来源采购的产品来组装传感器套件,激光雷达和 IMU 之间的外部校准参数通常是未知的。因此,必须进行外部校准才能使用激光雷达惯性里程计或 SLAM 算法。

2 相关工作

有几篇已发表的不依赖于第三个辅助传感器的关于 3D 激光雷达和相机(例如[1] – [4])、相机和IMU(例如[5] – [7])的外部校准工作,以及许多3D激光雷达和IMU校准的工作(例如[8] – [13]),然而,其中工作 [8] - [10]是依赖GNSS信息对惯性传感器进行精确姿态估计的方法。因此,当GNSS不可用时,则无法使用这些方法。工作[11]先做相机和IMU 标定,然后用激光雷达交叉标定视觉惯性系统。工作[12] ,[13]不依赖辅助传感器进行 3D 激光雷达和IMU 外部校准,因此在辅助传感器不可用的情况下更易于使用。

工作[12]使用高斯过程回归。工作[14]对IMU测量值进行上采样,以便可以为每个激光雷达发射时间推断出相应的IMU读数。IMU测量的上采样有助于消除在激光雷达-IMU校准数据的收集阶段发生的运动失真。他们使用 3 个正交平面作为校准参考地图/目标,并利用每个测量的激光雷达点在相应平面上的投影作为几何约束,这需要了解未知的外部校准参数。他们对上采样的IMU测量执行IMU预积分[15] ,并解决非线性批量估计问题以确定未知的外部校准参数。

另一方面,工作[13]将IMU状态(姿态、速度、偏差)建模为连续时间样条,而不是 IMU 测量(如[12]),该样条可与IMU测量值进行微分和等效。将 IMU 轨迹建模为连续时间样条有助于推断激光雷达发射时间的 IMU 姿态。与之前的方法(如[12])不同的是该方法利用了校准环境中的所有平面,类似的是该方法也使用每个测量激光雷达点在相应平面上的投影作为几何约束,这需要了解未知的外部校准参数。几何约束被平方并相加以形成一个损失函数,该损失函数使用非线性最小二乘法最小化。尽管[13]不使用任何校准目标,但它仍然需要一个需要具有多个明确定义的平面结构的环境。

本文方法利用扩展卡尔曼滤波器进行3D激光雷达IMU外部校准,从[5]中介绍的相机 IMU 外部校准算法中汲取灵感。与[5]相比,本文使用适合激光雷达的测量模型,与分别使用高斯过程回归和样条的[12]和[13]相比,在EKF框架下使用离散时间IMU状态传播模型来消除激光雷达扫描中的运动失真。

需要外部校准来消除运动失真,并且在收集数据进行外部校准时会发生运动失真。EKF框架允许我们在外部校准过程中使用外部校准参数的最佳估计值来对激光雷达扫描进行运动补偿。该方法遵循预测→去畸变→修正循环,使用扫描匹配技术,该技术使用去畸变扫描来产生状态/协方差更新的测量值,以便对3D激光雷达IMU系统进行外部校准。该工作使用Open-VINS框架来开发校准代码。

3 贡献

该工作所提出的方法不需要任何校准目标或特定的环境特征(如平面)来进行3D-Lidar和IMU的外部校准,与[12]和[13]不同。该方法不依赖于辅助姿态传感器,如GNSS或相机惯性传感器套件,而[8]、[9]、[10]、[11]则需要。该方法不需要对校准参数进行任何测量值初始化,与[5]不同。该方法利用[16]中提出的用于视觉惯性导航的通用EKF,并将其重新设计为结合[17]中使用的基于运动的校准约束,以制定本工作的3D激光雷达-IMU外部校准算法。最后,这是第二个开源的3D激光雷达-IMU校准算法,它不依赖于任何辅助传感器,第一个是[13]。

4 基于运动的外参标定

基于运动的约束类似于校准中常用的标准手眼校准[18]约束,并在[17]中扩展到多模态移动机器人传感器的校准。在本工作的场景中,是两次激光雷达扫描之间的运动,可通过使用任何扫描匹配技术[19]获得,是IMU在两个扫描之间的运动。由于传感器在空间上被固定的刚性位姿(外部校准参数)彼此分离,则获得以下方程中给出的约束

5766dbf8d65d7542a83532737b1a915e.png

是旋转矩阵,平移向量。使用公式(1)给出的基于运动的约束来估计传感器间的旋转和平移。具体来说,该工作利用公式(1)的旋转分量来初始化传感器间的旋转,并基于该初始化使用扩展卡尔曼滤波器算法来估计传感器间平移。

5 问题表述

该工作目标是确定空间6自由度分离,即 3D 激光雷达和 IMU 之间的外在校准参数(图 1)。将校准过程分为三个步骤,即数据收集、传感器间旋转初始化和完全外部校准。

9cd68fab567055c50e115c000f5661c9.png
图1:实验平台:激光雷达惯性传感器套件,配有一个128线激光雷达和一个Vectornav-VN 300 IMU。红色:x轴,绿色:y轴,蓝色:z轴。将IMU放置在两个不同的位置(用黄色箭头突出显示),根据标尺测量,这两个位置沿y轴相距5 cm。在缺乏地面真值的情况下,使用此信息作为参考来验证校准算法。

A.数据收集

数据采集是任何外部校准算法的重要步骤。由于传感器套件包含一个IMU,一个只能感知本体运动的传感器,因此通过充分激发所有旋转和平移,外部校准参数都是完全可观的。然而,如[5]中所述,沿着至少两个旋转自由度的运动激励对于可观性至关重要。尽管[5]涉及相机IMU校准,但关于可观测性的结论也将扩展到3D激光雷达IMU校准问题,因为在这两种情况下,外部传感器([5]中的相机和本工作的激光雷达)都用作姿态传感器。数据采集轨迹如图2所示。

7c6e65d6a77617ad59bc3f14e1ea0dad.png
图2:激光雷达-IMU系统在IMU系的校准轨迹

B.传感器间旋转初始化

通过使用基于运动的校准约束来估计IMU和3D激光雷达之间的外参。旋转分量如公式2所示。

67ea73cba83c578fcb00d6ebd405bd4a.png

在该工作的实现中,使用传感器的旋转矢量表示。公式(2)可以重写为

29eaaaab54b98329f98b335bdb435b71.png

其中和分别和的旋转矢量。如图3a所示,使用NDT扫描匹配[19]来估计连续激光雷达扫描之间的激光雷达旋转。在两个扫描间隔之间积分陀螺仪角速度,以估计IMU旋转。对于每个和对应的,结合公式(3)中给出的约束形成一个未知的目标函数公式(4)。

edb1dc2f895bfae0c9f3c28a73fbae92.png

为了获得估计,需要将公式(4)相对于最小化,如公式(5)所示。使用Ceres[20]非线性最小二乘解算器来解决公式(5)中的优化问题。

087a80a031df6d3abc6d94ed527755d0.png

在此步骤中,用于估计的传感器旋转和存在一定的缺点。首先,是通过在不考虑陀螺仪偏差的情况下积分陀螺仪测量值来计算的,其次,通过激光雷达扫描的NDT获得,由于传感器套件在数据收集步骤中进行的运动,激光雷达扫描可能会产生明显的运动失真。此步骤仅提供的初始估计值,用于初始化基于EKF的算法。

C.传感器间平移估计:使用扩展卡尔曼滤波器的全状态估计

传感器间平移的估计取决于IMU平移,其涉及IMU加速计测量的双重积分,但在不知道偏差的情况下执行双重积分将引入显著误差。使用扩展卡尔曼滤波器,该滤波器除了估计和之外,还估计加速度计和陀螺仪偏差、激光雷达扫描瞬间IMU的姿态和速度。EKF方法的框图如图3b所示。我们将估计的状态是:

374e206ee80f03cf51f9efdde44d016d.png

这里M是扫描次数。是扫描时间戳k处的IMU状态。EKF状态向量有演化分量和静态分量。不断发展的组件是扫描时间戳k处的IMU状态:

b9815fb5da0dfc63ce389efaa0e6a7b1.png b1c725385da3f0edfafa100b06d3e30c.png 3bb126bee08fe5cce2bcdafe72cb31f2.png
图 3:图 3a为确定 初始估计值的过程,图 3b 为扩展卡尔曼滤波器,该滤波器利用图 3a 中获得的 初始估计值同时生成 和 。

1)状态传播

我们使用[5],[16]中给出的离散时间实现将EKF状态从IMU时间戳i传播到i+1。陀螺仪和加速计测量值在IMU采样周期Δt期间假定为恒定。在以下等式中,是由于重力在全局框架G中产生的加速度。

b90e0b8474a7e945b8a39553cf8e3060.png b493d6ae611d92f01b77606642d52a35.png 6cbab7f0b3a0aef582738fccded5ffe6.png

这里,是高斯白噪声。离散化并取期望值,式15可以写成:

e8f504f7d24e1212fe0c666be0a18a14.png

除了状态变量的传播,还需要使用式17 将EKF 状态协方差𝐏从IMU时间戳i传播到i+1。

f3f26d8121722ba080f606d24c9cc901.png

其中

d15b753b5f4a39b0b31c1b1fc4ce37a7.png 7b0c1260278eddd5336724dc30c9eab7.png

2)去畸变

3D激光雷达使用旋转机制顺序产生点测量。当激光雷达移动时,它产生的原始扫描会受到运动失真的影响。校准数据收集过程要求传感器套件呈现运动激励,这会将原始扫描中的点从其真实位置移开。在激光雷达扫描中,每个3D点都是从时间上唯一的帧中测量的,并带有时间戳(位于两个相邻扫描时间戳之间)。为了解决运动失真的问题,我们需要预测IMU在时间点的姿态。IMU传播模型用于IMU在时间点的姿态预测。一旦有了IMU在点云时间戳的姿态的估计,就可以使用外部校准参数的最佳估计来推断相应的Lidar姿态,这可以通过式1中给出的运动约束来完成。例如,考虑第k次扫描中带有时间戳的点。为了纠偏该点,利用式1,并使用它来估计扫描时间戳k和点时间戳k_i之间的激光雷达运动(式18)

a6c51c9903091dadd69944b3feb883b7.png

用于变换点,以获得校正的激光雷达扫描点。在这里,是当时的外部校准参数估计值,是扫描时间戳k处IMU姿态的估计值,最后是使用IMU状态传播模型获得的点时间戳处的IMU姿态。

3)NDT

在去畸变后,使用NDT扫描匹配[19]在连续畸变校正激光雷达扫描k-1和k之间生成激光雷达运动估计值。使用这些激光雷达运动估计值作为EKF状态更新的测量值。

4)状态更新

状态更新模块需要了解测量模型、测量残差和与状态变量相关的测量雅可比。使用式1中的运动约束来推导测量模型:

7b523729360ad34909a087a48a444a2b.png e9f9ae4412f5948139bf347d8e7e7f05.png

其中

763684c80ef53e4d7ee0862764e762ba.png

分离式19的旋转和平移分量,我们得到

f73a350474ae9c09f5c0c6bebf1b86c0.png

在状态估计值下计算的测量模型提供了预测的旋转和平移测量值,即分别为和 。真实测量值和预测测量值之间的差异为我们提供了状态更新所需的测量残差:

3a746a75e51a0e8becf327706e76cacd.png

6 系统描述

系统(图1)由Ouster 128线激光雷达和Vectornav VN-300 IMU组成。激光雷达以 10Hz 输出扫描,IMU 以 400 Hz 输出陀螺仪和加速度计测量值。

7 实验和结果

Ouster 128通道激光雷达,除了在128通道模式下使用它外,我们还可以将其重新配置为16、32、64通道模式。因此,该工作还展示了当激光雷达在较少线数时,该算法的性能,目的是确定无论激光雷达中的通道数量如何,该算法都会提供比较性能。通过将IMU分别放置在两个不同的位置,即位置1和2(见图1),收集了两个不同的数据集1和2。在以下部分中,所有结果都是使用数据集2生成的,3D 激光雷达在128通道模式下运行。对于所有通道模式和两个数据集,我们获得了类似的结果,但为了版面考虑,作者省略了这些结果。

A.收敛性

图4和图5显示了估计的外在校准的收敛性。就考虑平移变量而言,我们使用初始化滤波器,滤波器收敛到具有紧密±1σ边界的固定值。就旋转变量而言,我们使用从传感器间旋转初始化技术中获得的估计值初始化滤波器。

5c5667d76c376df6363a2a4c5ba61460.png
图 4:平移分量 和1σ边界的校准结果。滤波器从 开始,收敛到固定值。
4641fce62eb23889ef9775e4340408d2.png
图 5:旋转分量 和1σ边界的校准结果。滤波器从旋转分量初始估计值开始。

B.激光雷达扫描去畸变的重要性

在本节中,介绍了在基于EKF的校准过程中消除激光雷达扫描畸变的重要性。在图6中,展示了在校准过程中获得的扫描匹配的结果。图6中的左图显示了模糊和错位的边缘/角。边缘/拐角是模糊的,因为扫描没有去畸变,并且它们是未对准的,因为来自原始扫描匹配的激光雷达里程计是不正确的。运动失真的激光雷达扫描导致激光雷达里程计的结果较差,进而导致校准估计的整体恶化(见图7)。然而,在图 6 的右图中,可以看到边缘/角落很清晰且不模糊,这要归功于激光雷达扫描的去畸变。校准结果的对比如图7所示。

97abf984ed013cdaf8ac72e1591245cc.png
图6:校准过程中原始扫描和去畸变扫描的扫描匹配。扫描已经过降采样以提高可见度。
e18ebacaf62661019ba1dc77511bde1e.png
图7:当激光雷达扫描没有去畸变时,校准结果不收敛到固定值。

C.不同激光雷达线数对比

表I和II显示了卡尔曼滤波过程结束时针对激光雷达不同线数获得的最终校准估计值,数据集1和2分别在位置1和2收集。在表I和表II中,可以发现该校准算法收敛于校准参数的估计值与激光雷达线数无关,从而证明了其在具有不同线数的激光雷达上的可用性。

2ec7d2fa7c7d725d201865140a1657c5.png

D.相对验证

验证校准算法的通常方法是使用模拟器、辅助传感器(如相机或GPS),或者在原始设备制造商的情况下,使用CAD图作为地面实况。当通过从不同的供应商采购传感器来组装传感器套件时,则无法了解实际情况。此外,使用任何辅助传感器也将带来额外开销。在这项工作中,作者使用了一种相对验证技术,该技术可以根据标尺测量获得的参考来验证该校准结果。如前所述,作者收集了两个数据集1和2,IMU分别保存在两个不同的位置1和2(见图1)。根据标尺测量,两个IMU位置之间的相对偏移沿y轴为5cm,以此作为参考,将校准结果进行比较。在表III中显示了两个位置的校准差异(即表I和表II中显示的结果之间的差异)。在128、64、32和16通道模式下沿y轴分别获得3.2%、0.6%、5.4%和9.4%的百分比误差。

E.可观测性所需的运动

如[5]所述,建议在校准过程开始时激发至少两个旋转自由度足够长的时间,以确保收敛到可靠的校准值。图8和图9显示了传感器套件在数据收集过程中进行的旋转和平移轨迹。在图4中,平移校准参数在25-30秒内收敛,对应于围绕两个轴(即X和Z)的旋转运动(见图8)停止执行的时间。就旋转校准参数而言(图5),它们在基于EKF的校准过程中略有变化,因为它们已经在初始化过程中接近最终估计值。

959c5a1e21c72a164e50d94b7e726bb0.png
图8:数据采集期间的旋转轨迹
13257f5c1eb2d7d865b94403287d18b5.png
图9:数据收集期间的XYZ轨迹

8 结论

该工作提出了一种基于EKF的3D激光雷达IMU标定算法,该算法不依赖于任何标定目标或辅助传感器来估计外参标定。作者介绍了该算法在不同激光雷达线数下的可用性;对于从两个不同的IMU位置收集的两个数据集,给出了所有激光雷达线数的对比结果。另外作者还提出了一种在无法获得地面真值或没有辅助传感器时验证标定结果的方法。

参考

[1] Mishra S ,  Pandey G ,  Saripalli S . Target-free Extrinsic Calibration of a 3D-Lidar and an IMU[C]. International Conference on Multisensor Fusion and Integration for Intelligent Systems. IEEE, 2021.

往期回顾

最新综述 | 复杂环境中的计算机视觉问题介绍及解决!

【知识星球】日常干货分享

dec16ea47cb9d3f765074fb59072cd42.png

0c6fbcf9e94731ba00d9fb71deca4ed1.png

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、规划控制、模型部署落地、自动驾驶仿真测试、硬件配置、AI求职交流等方向;

72a5c94ffb59c9376b6da750dd73ef39.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

自动驾驶之心【知识星球】

想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球(三天内无条件退款),日常分享论文+代码,这里汇聚行业和学术界大佬,前沿技术方向尽在掌握中,期待交流!

77fb08c87f792640896d7a290531a08a.jpeg

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

3D激光雷达-IMU的无目标外参标定 的相关文章

  • crazy pony_Pony编程语言简介

    crazy pony 在Wallaroo Labs xff08 我是工程副总裁 xff09 xff0c 我们正在构建以Pony编程语言编写的高性能 xff0c 分布式流处理器 大多数人都没有听说过Pony xff0c 但是对于Wallaro
  • html标记语言图像标记_为什么我喜欢这些标记语言

    html标记语言图像标记 去年大约这个时候 xff0c 我为本专栏文章简要介绍了各种标记语言 语言选择的话题最近出现了好几次 xff0c 所以我认为现在该是时候以我的偏见来重新讨论这个话题了 我在这里解释为什么我更喜欢我的语言 xff0c
  • 无人机开源项目_8个开源无人机项目

    无人机开源项目 编者注 xff1a 本文最初发表于2016年12月 xff0c 现已更新以包含其他信息 在过去的几年中 xff0c 对民用 xff0c 军事和商用无人机的兴趣Swift增长 xff0c 这也带动了制造商社区对开源无人机项目的
  • 开源协议 自主发展_开源推动科学发展的9个故事

    开源协议 自主发展 如今 xff0c 科学可能看起来更像开源 世界各地的研究人员和科学家都在呼吁获得免费许可的数据集 开放获取发布条件 xff1b 以及协作 xff0c 透明的同行评审 他们正在寻找开放源代码原则可以增强数字时代知识生产实践
  • 开源 word 替代_5种Google文档的开源替代品

    开源 word 替代 每天处理大量文档时 xff0c 无论您写什么 xff08 白皮书 xff0c 手册 xff0c 演示文稿 xff0c 不同的市场营销材料 xff0c 合同等 xff09 xff0c 都必须在某个时候 xff08 最常见
  • vscode快捷键 & java/c++环境

    vscode快捷键 amp java c 43 43 环境 vscode快捷键环境配置javac 43 43 个人习惯设置参考 vscode快捷键 快捷键功能Ctrl 43 Shift 43 P 或 F1显示所有命令Ctrl 43 空格触发
  • IIC通信协议(简单易理解版)

    IIC通信协议简介 xff1a IIC xff08 也记为I2C xff0c 读作I 2C xff0c inter integrated Circuit集成电路总线 xff0c 最早是飞利浦在1982年开发设计并用于自己的芯片上 xff0c
  • linux防病毒软件_十大Linux最佳防病毒软件-Linux防病毒软件列表!

    linux防病毒软件 Today s article is all about the best Antivirus for Linux But if Linux is so secure why do we need to have an
  • Python isinstance()

    Python isinstance function is used to check if an object is an instance of the specified class or not Python的isinstance
  • 使用git下载仓库_使用Git仓库

    使用git下载仓库 Whenever we start a project we will need to store all files in a repository So let 39 s start by first creatin
  • 在Raspberry Pi(ARM32)上的Docker中构建,运行和测试.NET Core和ASP.NET Core 2.1

    I love me some Raspberry Pi They are great little learning machines and are super fun for kids to play with Even if thos
  • 什么是Ubuntu LTS?与常规Ubuntu版本有何不同?

    Ubuntu distributions are released at given time intervals Every release has a code name that is related to an animal nam
  • 定义一个protobuf消息并生成Go代码

    大家好 xff01 让我们开始gRPC课程的动手部分 整个部分的目标是构建 个人计算机 Web服务 xff0c 该服务将使我们能够管理和搜索笔记本电脑配置 Here 39 s the link to the full gRPC course
  • 学科起源(漫画版)

    发几张收藏的图 xff0c 让大家对学科起源有点了解 xff0c 避免因学科纷争而引起不和 xff0c 生命科学也罢 xff0c 神经网络也罢都摆脱不了从物理和数学的角度去解释 xff0c 因为机器学习中很大的一部分 xff0c 尤其是神经
  • 【沧海拾昧】WiFi串口通信ESP8266模块基本介绍(附野火WiFi透传实例)

    C0104 沧海茫茫千钟粟 xff0c 且拾吾昧一微尘 沧海拾昧集 64 CuPhoenix 阅前敬告 沧海拾昧集仅做个人学习笔记之用 xff0c 所述内容不专业不严谨不成体系 如有问题必是本集记录有谬 xff0c 切勿深究 目录 前言一
  • linux shell

    转自 xff1a http blog csdn net fly sky520 article details 8853537 最近在linux下面编写shell脚本 xff0c 差不多是边学边写 在此记录一些学习心得 一 xff09 she
  • 软件开发遇到的难题_软件开发团队如何处理管理难题

    软件开发遇到的难题 通常是这样的 项目经理或产品负责人传达了来自公司食品链上层人士的消息 xff0c 即必须在给定日期之前交付软件 日期背后的原因可能是已知的 xff0c 但可能不是 反过来 xff0c 项目经理通知软件开发团队必须在该日期
  • Ubuntu20.04由于分辨率问题安装界面显示不完整

    使用vmware安装ubuntu的时候 xff0c 由于分辨率的问题 xff0c 导致安装界面显示不完整 xff0c button被隐藏 xff0c 无法进行下一步鼠标操作 同学遇到的问题 xff0c 迟迟不能解决 xff0c 参考别人的解
  • 数据结构排序算法及代码整理

    排序 xff1b 1 插入排序 xff08 直接插入排序和希尔排序 xff09 2 选择排序 xff08 直接选择排序和堆排序 xff09 3 交换排序 xff08 冒泡排序和快速排序 xff09 4 归并排序 5 基数排序 xff0d x
  • 排序算法性能比较

    各种排序方法的综合比较 结论 排序方法 平均时间 最坏时间 辅助存储 简单排序 O n2 O n2 O 1 快速排序 O nlogn O n2 O logn 堆排序 O nlogn O nlogn O 1 归并排序 O nlogn O nl

随机推荐

  • c++标准容器类(表格介绍)

    1 STL有6种序列容器类型 xff08 1 xff09 vector 它提供对元素的随即访问 xff0c 在尾部添加和删除元素的时间是固定的 xff0c 在头部或中部插入和删除元素的复杂度为线性时间 xff08 2 xff09 deque
  • 各大公司薪水一览表

    转自 http blog sina com cn s blog 4997a23a0100b2xc html 最近终于把自己给卖了 xff0c 这几个月来自己陆陆续续的面试的有30多家公司 xff0c 主要是IT公司 xff0c 准备把今年我
  • strtol

    转自 xff1a http hi baidu com qwpsmile blog item 9bc44efa4f41018a9f514637 html 今天 xff0c 在review 一些代码的时候 xff0c 看到了strtol 这个函
  • 学会做自己的朋友

    转自 http www 5xue com modules article view article php a2233 你是否经历过 xff1a 我们常会怪罪自己 xff0c 给自己很低的评价 xff0c 也习惯对结果做最坏的打算 xff1
  • 二值信号量和互斥信号量的区别

    互斥信号量和二进制信号量的区别 互斥型信号量必须是同一个任务申请 xff0c 同一个任务释放 xff0c 其他任务释放无效 同一个任务可以递归申请 二进制信号量 xff0c 一个任务申请成功后 xff0c 可以由另一个任务释放 二进制信号量
  • 敏捷开发

    这两个圆圈表示不同的视角上的敏捷实践 xff0c 包括开发者视角和项目管理的视角 接下来从里向外进行介绍 xff0c 因为有些实践我了解得不清楚 xff0c 如果下面有哪些说得不对的地方也请大家指出 Test Driven Developm
  • c++结构体的二进制文件,python如何解析

    c 43 43 结构体的二进制文件 xff0c python如何解析 场景分析 现有如下场景 xff1a 有一个二进制文件需要解析成可读数据已知条件 xff1a 该文件符合c 43 43 结构体对应的结构体数据 xff0c 因此我们可以通过
  • LeetCode刷题记录(Python3)——线性表

    LeetCode27 移除元素 简单 问题描述 xff1a 给定一个数组nums和一个值val xff0c 你需要原地 移除所有数值等于val的元素 xff0c 并返回移除后数组的新长度 不要使用额外的数组空间 xff0c 必须仅使用 O
  • 使用百度网盘上传大文件到云服务器

    因为需要把几个7G大小左右的数据上传至服务器 xff0c 但无奈使用的是共享服务器 xff0c 上传速度非常慢 管理员建议可以用奶牛快传 xff08 目前收费 xff09 中转 xff0c 百度搜了一下 xff0c 百度网盘有相同作用 xf
  • ubuntu操作系统中TCP客户端和服务器端的开发

    网络编程在Python中的应用 xff0c 三次握手和四次挥手的理解 TCP客户端和服务器端流程图 xff1a TCP客户端开发流程 xff1a 1 创建客户端套接字 2 和服务端套接字建立连接 3 发送数据 4 接收数据 5 关闭客户端套
  • sphinx 文档_Sphinx轻松漂亮的文档

    sphinx 文档 Sphinx是允许开发人员以纯文本格式编写文档的工具 xff0c 可轻松生成满足各种需求的格式的输出 使用版本控制系统跟踪更改时 xff0c 这将很有帮助 纯文本文档对于跨不同系统的协作者也很有用 纯文本是当前可用的最可
  • 经典激光雷达SLAM系统:LeGO-LOAM

    作者 密斯特李 编辑 汽车人 原文链接 xff1a https zhuanlan zhihu com p 511968459 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之
  • 经典激光雷达SLAM系统:LOAM-Livox

    作者 密斯特李 编辑 汽车人 原文链接 xff1a https zhuanlan zhihu com p 515732721 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之
  • SLAM中姿态估计的图优化方法比较(g2o/Ceres/GTSAM/SE-Sync)

    编辑 深蓝AI 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 后台回复 SLAM综述 获取视觉SLAM 激光SLAM RGBD SLAM等多篇综述 xff01 本文是对论文 A Compari
  • 多传感器融合 | 详解PointPainting和MVP

    作者 谷溢 编辑 深蓝AI 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心技术交流群 后台回复 多传感器融合综述 获取图像 激光雷达 毫米波雷达融合综述等干货资料 xff
  • 2022最新!视觉SLAM综述(多传感器/姿态估计/动态环境/视觉里程计)

    目录 摘要 视觉SLAM算法的发展 相关综述 VSLAM 设置标准 传感器和数据采集 目标环境 视觉特征处理 系统评估 语义等级 基于主要目标的VSLAM方法 目标一 xff1a 多传感器处理 目标二 xff1a 姿态估计 目标三 xff1
  • 自动驾驶路径规划五大常用算法(Dijkstra/人工势场/图搜索等)

    编辑 希骥智能网联汽车 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心 规划控制 技术交流群 后台回复 规划控制综述 获取自动驾驶 智能机器人规划控制最新综述论文 xff
  • 论文汇总!物体级SLAM(定位/建图/重定位/回环检测)

    作者 黑桃K 编辑 汽车人 原文链接 xff1a https zhuanlan zhihu com p 570562248 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心
  • VSLAM与VIO的3D建图,重定位与世界观综述

    作者 紫川Purple River 编辑 汽车人 原文链接 xff1a zhuanlan zhihu com p 592225457 点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自
  • 3D激光雷达-IMU的无目标外参标定

    点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 后台回复 相机标定 获取超详细的单目双目相机模型介绍 内外参标定算法原理视频 xff01 摘要 xf