低成本IMU的标定与性能评价

2023-11-09

低成本IMU的标定与性能评价

摘要 - IMU(惯性测量单元)被广泛的使用在许多的机器人应用中,例如导航和建图任务。在大部分这种系统中,IMU和其他传感器数据(如:GPS、距离传感器、相机)进行融合。为了更好的结果,为了最小化系统的传播误差,IMU应该被仔细的标定。但是当在短暂的的一段时间内失去了来自其他传感器的数据会发生什么呢?在这种情况下我们能够信任IMU的数据吗?在这篇论文中,我们提出了一种鲁棒和简单的方法去标定IMU并且不借助外部的设备,我们然后使用标定结果去分析基于MEMS的IMU作为单独的传感器在3D定位和运动估计任务这两种典型行为。

1. 介绍

机器人中所使用的IMU基于MEMS(微电子机械系统)技术:除了需要非常的便宜,这种类型的sensor出现在最近的大部分手机中,使得这些设备在小的可移动平台和低成本无人机中可以用来作为导航单元。
不幸的是,低成本的IMU受到系统误差、偏移偏差、随机误差影响极大的降低了位置和姿态估计的精度。系统误差可以被之前的标定方法进行补偿,偏差和随机误差引入了无界漂移误差(误差会持续累积),使基于MEMS的imu无法在定位和建图等复杂任务中用作独立传感器使用。
在本文中,我们解决了系统误差,提出了一种有效的半自动IMU标定方法,可以免费提高低成本及标定不良的IMU的性能。所提到的方法测试使用了两种类型的sensor:Xsens MTi IMU 和 Samsung Galaxy S4 手机。在第一种情况下,我们将估计的标定参数与IMU数据表中报告的标定参数进行比较。在第二种情况下,我们比较了使用未标定和标定后的测量结果在几个已知轨迹中获得的定向误差(如图1(b))。此外,我们还研究了随机误差如何在整个导航系统中传播。

在这里插入图片描述

Fig.1 均方根误差(即偏航、俯仰和侧滚误差的平均值,以度为单位)在几个已知轨迹的方向估计中只使用标定陀螺仪:(a) a Xsens MTi IMU;(b)三星Galaxy S4智能手机。在第二种情况下,我们也报告了使用未标定测量获得的方向误差。

A. 相关工作

惯性导航是一个比较成熟的研究领域。介绍了惯性导航的技术、物理原理和应用等。简要介绍了基于MEMS的惯性导航,并分析了由陀螺仪信号噪声干扰引起的定向误差的传播。在机器人等领域,IMU已被用于纯惯性导航,姿态估计和视觉惯性导航,也使用在智能手机设备中。
本文提出的标定方法是作者在[7]中介绍的,该方法是基于Lotters等人在[8]中首先介绍的多位置方法。他们建议标定偏差和加速度计的比例系数时利用静态加速度的大小必须等于重力的大小这一事实。这种技术在[9]中得到了扩展,包括加速度计轴不对齐:这种方法需要一个单轴转台来提供强旋转速率信号。在[10]中作者提出了一种不需要任何外部机械设备的标定方案。与我们的方法类似,作者利用重力矢量大小的高度局部稳定性对加速度计进行标定,然后将标定后的加速度计感知的重力矢量与角速度积分得到的重力矢量进行比较,对陀螺仪标定。

2. 半自动IMU标定

基于MEMS的低成本IMU(20-100美元)和当前智能手机配备的IMU传感器通常缺乏标定,测量结果引入了不可忽略的系统和随机误差。常见的误差来源是:加速度计和陀螺仪坐标系的坐标轴没有对齐,不准确的缩放,横轴的灵敏度,变化的偏差和噪声。中等成本的IMU(1000 - 2000美元)通常使用传统的低成本传感器组,但它们是工厂标定的,标定参数存储在固件或不容易擦除的存储器中。这些情况下的标定是使用标准但有效的方法执行的,其中将设备输出与已知参考进行比较。不幸的是,工厂标定的间接成本占主导地位。我们提出了一种半自动标定方法,在估计传感器偏差的同时,提供加速度计和陀螺仪坐标系的不对齐和尺度因子。我们的方法是基于多位置方法1[8],它不需要任何参数调整,只需要用手移动传感器并将其放置在一组不同的静态位置。与以前的基于多位置的方法不同,我们利用大量的静态状态减少循环,以增加数据集的数量,同时保留传感器偏差的局部稳定性。我们引入了一种有效的无参数静态检测算子来检测用于标定的静态间隔。此外,在陀螺仪积分中采用Runge-Kutta四阶归一化方法提高了标定精度。

A. 数据集采集和数据分类

我们的方法需要收集一组在初始阶段没有运动后,不同的静态姿态(在36到50个不同的方向之间)的IMU测量值(图2)标定的准确性在很大程度上取决于静态和运动间隔之间分类的可靠性。。我们将“静态间隔”定义为传感器保持在静态(固定)位置的一段时间。不幸的是,在这些期间,IMU读数不是零,因为它们受到偏差漂移和随机噪声的影响,而加速度计也感知重力加速度。根据我们的经验,基于带通滤波器的算子,如[10]中使用的准静态检测器,在实际数据集上表现不佳:检测到的静态间隔经常包含一小部分运动。此外,它们需要微调,因为它们依赖于三个参数。我们建议使用基于加速度计信号方差大小的算子:

ς ( t ) = [ var ⁡ t w ( a x t ) ] 2 + [ var ⁡ t w ( a y t ) ] 2 + [ var ⁡ t w ( a z t ) ] 2 ( 1 ) \varsigma(t)=\sqrt{\left[\operatorname{var}_{t_{w}}\left(a_{x}^{t}\right)\right]^{2}+\left[\operatorname{var}_{t_{w}}\left(a_{y}^{t}\right)\right]^{2}+\left[\operatorname{var}_{t_{w}}\left(a_{z}^{t}\right)\right]^{2}} \qquad (1) ς(t)=[vartw(axt)]2+[vartw(ayt)]2+[vartw(azt)]2 (1)

其中 v a r t w ( a t ) var_{t_{w} } (a^{t} ) vartw(at)是计算一般信号 a t a_{t} at在以 t t t为中心的长度为 t w t_{w} tw秒的时间间隔内的方差的算子。如果方差幅度低于阈值,则认为时间 t t t的样本是“静态”的。一个不间断的静态样本序列定义为单个静态间隔。我们考虑在长度为 T i n i t T_{init} Tinit的静态初始化期间计算的方差大小的整数倍作为阈值(见图2),其中整数倍数是自动估计的(见第c节)。在所有的实验中,我们使用 t w = 1 s t_{w} = 1s tw=1s T i n i t = 30 s T_{init} = 30s Tinit=30s。(图3)中显示了静态检测器应用于数据流的示例报告。

Fig.2 数据集获取流程示意图

Fig.2 数据集获取流程示意图

在这里插入图片描述

Fig.3 给出了一个应用于加速度计数据的静态检测器算子的例子(报告了方差大小的平方)。

B. 加速度计和陀螺仪标定

在理想的IMU中,加速度计的3个轴和陀螺仪的3个轴定义了一个单一的、共享的、正交的3D结构。在实际情况下,由于安装不准确,这两个坐标系形成两个不同的不对齐的非正交的结构。对于小角度,这些偏差可以通过两个偏差矩阵的均值进行线性补偿,即 T a T^{a} Ta T g T^{g} Tg,一个用于加速度计,一个用于陀螺仪。假设IMU坐标系与加速度计正交坐标系重合:

T a = [ 1 − α y z α z y 0 1 − α z x 0 0 1 ] ( 2 ) T^{a} = \begin{bmatrix} 1 & -\alpha_{yz} & \alpha_{zy} \\ 0 & 1 & -\alpha_{zx} \\ 0 & 0 & 1 \end{bmatrix}\qquad(2) Ta= 100αyz10αzyαzx1 (2)

T g = [ 1 − γ y z γ z y γ x z 1 − γ z x − γ x y γ y z 1 ] ( 3 ) T^{g} = \begin{bmatrix} 1 & -\gamma _{yz} & \gamma _{zy} \\ \gamma_{xz} & 1 & -\gamma_{zx} \\ -\gamma_{xy} & \gamma _{yz} & 1 \end{bmatrix} \qquad(3) Tg= 1γxzγxyγyz1γyzγzyγzx1 (3)

加速度计和陀螺仪也会受到比例误差的影响:

K a = [ s x a 0 0 0 s y a 0 0 0 s z a ] K g = [ s x g 0 0 0 s y g 0 0 0 s z g ] ( 4 ) K^{a} = \begin{bmatrix} s_{x}^{a} & 0 & 0 \\ 0 & s_{y}^{a} & 0 \\ 0 & 0 & s_{z}^{a} \end{bmatrix} \qquad K^{g} = \begin{bmatrix} s_{x}^{g} & 0 & 0 \\ 0 & s_{y}^{g} & 0 \\ 0 & 0 & s_{z}^{g} \end{bmatrix} \qquad(4) Ka= sxa000sya000sza Kg= sxg000syg000szg (4)

还有偏差:

b a = [ b x a b y a b z a ] b g = [ b x g b y g b z g ] ( 5 ) b^{a} = \begin{bmatrix} b_{x}^{a}\\ b_{y}^{a}\\ b_{z}^{a} \end{bmatrix} \qquad b^{g} = \begin{bmatrix} b_{x}^{g}\\ b_{y}^{g}\\ b_{z}^{g} \end{bmatrix} \qquad(5) ba= bxabyabza bg= bxgbygbzg (5)

因此,对于加速度计,完整的传感器误差模型为:

a O = T a K a ( a S − b a − v a ) ( 6 ) a^{O}=T^{a}K^{a}(a^{S}-b^{a}-v^{a}) \qquad (6) aO=TaKa(aSbava)(6)

对于陀螺仪,还有:

w O = T g K g ( w S − b g − v g ) ( 7 ) w^{O}=T^{g}K^{g}(w^{S}-b^{g}-v^{g}) \qquad (7) wO=TgKg(wSbgvg)(7)

ν a ν^a νa ν g ν^g νg是测量噪声。
在多位置方法中,假定测量加速度的范数等于(已知的)重力大小加上多源误差因子。为了标定加速度计坐标系,我们需要估计未知参数向量 θ a c c θ^{acc} θacc,它包括3个未对齐分量,3个尺度分量和3个偏差分量:

θ a c c = [ α y z , α z y , α z x , s x a , s y a , s z a , b x a , b y a , b z a ] ( 8 ) \theta ^{acc}=[\alpha_{yz}, \alpha_{zy}, \alpha_{zx}, s_{x}^{a}, s_{y}^{a}, s_{z}^{a}, b_{x}^{a}, b_{y}^{a}, b_{z}^{a}] \qquad (8) θacc=[αyz,αzy,αzx,sxa,sya,sza,bxa,bya,bza](8)

最小化损失函数为:

L ( θ a c c ) = ∑ k = 1 M ( ∣ ∣ g ∣ ∣ 2 − ∣ ∣ h ( a k S , θ a c c ) ∣ ∣ 2 ) 2 ( 9 ) L(\theta^{acc})=\sum_{k=1}^{M}(||g||^2-||h(a_k^S,\theta^{acc} )||^2)^{2} \qquad (9) L(θacc)=k=1M(∣∣g2∣∣h(akS,θacc)2)2(9)

其中 M M M为静态间隔数, a k K a_k^K akK表示原始传感器读数, h h h是应用当前参数矢量校正读数的函数, ∣ ∣ g ∣ ∣ ||g|| ∣∣g∣∣是重力矢量的实际大小。为了最小化 ( E q . 9 ) (Eq. 9) (Eq.9),我们采用Levenberg-Marquardt (LM)算法。
我们也使用相同的静态间隔来标定陀螺仪:在这种情况下,我们可以假设一个无偏差的系统平均初始静态信号来获得偏差,但我们还需要估计陀螺仪和加速度计帧之间的刚体旋转。在这种情况下,未知参数矢量 θ g y r o \theta^{gyro} θgyro陀螺包括6个不对齐分量和3个比例分量:

θ g y r o = [ γ y z , γ z y , γ x z , γ z x , γ x y , γ y x , s x g , s y g , s z g ] ( 10 ) \theta ^{gyro}=[\gamma_{yz}, \gamma_{zy}, \gamma_{xz}, \gamma_{zx}, \gamma_{xy}, \gamma_{yx},s_{x}^{g}, s_{y}^{g}, s_{z}^{g}] \qquad (10) θgyro=[γyz,γzy,γxz,γzx,γxy,γyx,sxg,syg,szg](10)

我们使用标定后的加速度计作为参考:给定初始重力矢量,积分一组陀螺仪读数,我们可以估计最终估计重力矢量,并计算与参考的差值。在此例中,损失函数为:

L ( θ g y r o ) = ∑ k = 2 M ∣ ∣ u a , k − u g , k ∣ ∣ 2 ( 11 ) L(\theta^{gyro})=\sum_{k=2}^{M}||u_{a,k}-u_{g,k}||^2 \qquad (11) L(θgyro)=k=2M∣∣ua,kug,k2(11)

其中 u a , k u_{a,k} ua,k是在时间窗口内测量到的加速度矢量,在第 k k k个静态区间内对标定的加速度计读数进行平均, u g , k u_{g,k} ug,k是对第 k − 1 k−1 k1个和第 k k k个静态区间之间的角速度进行积分计算得到的加速度矢量。采用Runge-Kutta四阶归一化方法[11]进行积分,该方法优于标准线性积分方法,结果精度更高。

C. 提出的算法

提出的标定算法的报告如下:

算法1
  1. 获取 ( S e c . A ) (Sec. A) (Sec.A)节中描述的数据集(数据集必须包含长度为 T i n i t T_{init} Tinit的初始静态周期)

  2. 估计在初始静态期间的陀螺偏差和加速度计方差幅度 a c c v m acc_{vm} accvm

  3. 消除陀螺仪读数的偏差。

  4. 对于 m u l t = 1 t o k mult = 1 to k mult=1tok

    -使用thresholdmult * accvm计算静态间隔
    -使用这些静态间隔标定加速度计并计算残差

  5. 取最小残差

  6. 的加速度计标定。使用标定的加速度计读数标定陀螺仪。

D. 标定结果

我们使用工厂标定的Xsens MTi IMU测试我们的方法,启用所谓的“未标定数据模式”。使用此设置,传感器直接传输加速度计和陀螺仪三联的原始未标定数据(即,连接到每个传感器的模数转换器,adc的输出)。用我们的方法得到的标定与数据表中给出的工厂标定参数相当,见表1开始的表。对于每个表,我们报告了工厂标定参数(在左边)和我们的标定参数(在右边)。注意,偏移估计(表5和表6)还包括时变传感器偏差。然而,这个估计数与数据表所提供的估计数非常接近。

在这里插入图片描述

在这里插入图片描述

3. 自由惯性导航

众所周知,基于自由惯性导航的系统(即所谓的“捷联系统”,[1,3])由于传感器误差在位置估计中的传播而受到无界漂移的影响。实际上,惯性辅助导航系统可以减少或消除这种漂移。不幸的是,并非所有来自其他传感器的数据都是可用的:例如,在GPS辅助系统中,GPS信号可能会在短时间内丢失,或者在视觉惯性导航系统中,周围环境可能缺乏显著的视觉特征。由于这些原因,我们想研究用第2节中提出的方法校准的基于MEMS的IMU的性能和局限性。在三维自由惯性导航情况下。
在接下来的实验中,我们使用了Xsens MTi IMU和三星Galaxy S4智能手机,都使用了上一节中介绍的方法进行校准。我们用手移动传感器的轨迹来测试我们的系统,包括沿每个方向的快速运动和绕每个轴的快速旋转。此外,每条路径代表一个闭环,其中起点和终点是环境中的同一点,具有相同的方向。通过检查恢复轨迹的起点和终点之间的误差来测量精度。在这些实验中,我们没有使用任何过滤技术,因为我们对评估最终的“原始”误差感兴趣。

A. 定位

我们开始研究干扰陀螺仪信号的噪声和误差传播的影响。我们可以假设IMU是无偏置的:对于每个轨迹,我们估计了从初始静态周期获取的陀螺仪信号的平均偏置。假设每次运行期间的偏差恒定,并将其减去陀螺仪信号,系统可以被认为是无偏差的。如第二节所述。采用四元数算法和龙格-库塔数值积分法[11]提高估计精度。图1显示了一些结果,其中报告了不同时间长度的几个闭环轨迹的最终方向的均方根误差。在图1(a)中,报告了使用Xsens MTi IMU获得的结果。我们在Xsens MTi中设置了“未校准数据模式”设置,使传感器能够直接传输原始的、未校准的数据。然后使用第二节中提出的参数对测量结果进行校准。:即使过2分钟,总误差(即偏航,俯仰和滚转误差的平均值)小于2度。我们使用三星Galaxy S4智能手机进行了相同的实验(图1(b)):在这种情况下,我们报告了使用手机提供的传感器读数获得的方向误差(在图中称为“未校准陀螺仪”)和使用我们的方法估计的参数校准的相同数据获得的方向误差(在图中称为“校准陀螺仪”)。与未校准数据相比,使用校准数据获得的结果精度有显着提高。

B. 位置

在这里插入图片描述

Fig.4 不同类型运动的位置漂移:(a)无运动(b)平面运动©三维运动。

为了测试系统在开环位置估计情况下的性能,需要对来自加速度计的信号进行双重积分。在这里,我们可以根据简化的多位置方法估计和减去加速度计的偏差:在每个测试轨迹之前,我们将IMU移动到一组具有不同姿态的静态位置。然后,我们用Eq. 9中定义的代价函数解决了一个最小二乘问题,其中参数向量仅包含加速度计偏差。在静态初始化期间,我们还计算了由重力引起的(无偏差)加速度分量。这个向量被投影在每个IMU帧中使用陀螺仪计算的方向并减去当前的加速度测量值。然后对剩余的加速度进行二次积分以得到位移。在这个实验中,我们只使用了Xsens MTi IMU,因为智能手机的低成本传感器提供的精度不足以提供可接受的结果,对于持续时间很短的运动也是如此。
第一次测试涉及从静止位置采集的数据集,即没有运动(图4(A),蓝线):5秒后漂移开始迅速发散。我们重复这个估计,减去一个恒定的重力矢量,即不使用陀螺仪计算的投影方向(图4(a),红线)。在第二种情况下,估计精度显著提高。正如[2]中所指出的,这种行为表明,估计中的大部分误差是由方向估计中的小误差产生的,主要是由陀螺仪噪声引入的。我们对一系列平面运动重复了类似的测试,在平面上移动设备(图4(b))。在这种情况下,使用固定的重力会降低估计精度。通常设备的z轴与重力并不完全对齐:在具有可变偏航旋转的平面运动的情况下,重力方向不应被认为是恒定的,而应使用当前方向进行补偿。我们最后用一系列不同的3D运动测试了系统(图4©):在之前的情况下,几秒钟后漂移开始发散。值得注意的是,这种快速漂移主要归因于MEMS技术的限制(例如,传感器噪声和不准确性)。

4. 结论及未来工作

本文提出了一种简单有效的IMU标定方法。我们还研究了低成本imu的随机、非系统误差如何在惯性导航系统中传播。我们的实验表明:(1)无需使用任何外部设备即可获得可靠的校准结果;(2)使用获得的校准参数,仅惯性导航可以在几秒钟内相对稳定地进行全三维自运动估计(至少对于中等成本的imu,如Xsens MTi),并且大多数定位误差是由于陀螺仪信号的噪声和不准确性造成的;(3)在对陀螺仪偏差进行良好的初始估计的情况下,整合陀螺仪信号得到的三维方向估计在中等成本的IMU传感器几分钟后仍能保持良好的精度,而对于目前智能手机上的低成本IMU传感器,则需要30秒才能保持良好的精度。
作为未来的工作,我们计划研究使视觉惯性导航系统即使在没有视觉的情况下也能在短时间内可靠导航的可能性仅使用来自IMU传感器的信息来识别周围环境中的特征。
所提出的校准系统的开源c++实现可以在

https://bitbucket.org/alberto_pretto/ imu_tk

上免费下载。

5. 确认

本研究得到了欧盟委员会FP7-600890-ROVINA和帕多瓦大学的支持,并获得了“TIDY-UP:增强机器人导航和物体识别的视觉探索”的资助。

引用

[1] D. Titterton and J. Weston, “Strapdown Inertial Navigation Technology.”, The American Institute of Aeronautics and Astronautics, second edition, 2004.
[2] Oliver J. Woodman, “An introduction to inertial navigation.”, in Tech. Report UCAM-CL-TR-696, University of Cambridge, Computer Laboratory, 2007.
[3] V. Kubelka and M. Reinstein, “Complementary filtering approach to orientation estimation using inertial sensors only.” in Proc. of. IEEE International Conference on Robotics and Automation (ICRA), 2012, pp. 599-605.
[4] T. Hamel and R. E. Mahony, “Attitude estimation on so[3] based on direct inertial measurements.” in Proc. of. IEEE International Conference on Robotics and Automation (ICRA), 2006, pp. 2170-2175.
[5] K. Tsotsos, A. Pretto, and S. Soatto, “Visual-inertial ego-motion estimation for humanoid platforms,” in Proc. of: IEEE-RAS International Conference on Humanoid Robots, 2012, pp. 704-711.
[6] M. Li, B. Kim, and A. I. Mourikis, “Real-time motion estimation on a cellphone using inertial sensing and a rolling-shutter camera,” in Proceedings of the IEEE International Conference on Robotics and Automation, Karlsruhe, Germany, May 2013, pp. 4697-4704.
[7] D. Tedaldi, A. Pretto and E. Menegatti, “A Robust and Easy to Implement Method for IMU Calibration without External Equipments”, In IEEE International Conference on Robotics and Automation (ICRA 2014), May 31 - June 7, 2014 Hong Kong, China
[8] J. Lotters, J. Schipper, P. Veltink, W. Olthuis, and P. Bergveld, “Procedure for in-use calibration of triaxial accelerometers in medical applications,” Sensors and Actuators A: Physical, vol. 68, no. 1-3, pp. 221-228, 1998.
[9] I. Skog and P. Hndel, “Calibration of a mems inertial measurement unit,” in Proc. of XVII IMEKO WORLD CONGRESS, 2006.
[10] W. Fong, S. Ong, and A. Nee, “Methods for in-field user calibration of an inertial measurement unit without external equipment,” Measurement Science and Technology, vol. 19, pp. 1-11, 2008.
[11] M. Andrle and J. Crassidis, “Geometric integration of quaternions,” in in Proc. of AIAA/AAS Astrodynamics Specialist Conference, 2012.

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

低成本IMU的标定与性能评价 的相关文章

随机推荐

  • Java中final关键字的作用

    final关键字可以用来修饰引用 方法和类 1 用来修饰一个引用 如果引用为基本数据类型 则该引用为常量 该值无法修改 如果引用为引用数据类型 比如对象 数组 则该对象 数组本身可以修改 但指向该对象或数组的地址的引用不能修改 如果引用为类
  • 开源DataX集成可视化项目Datax-Web的安装

    关于datax web项目 在做DataX项目测试的时候又收到github的推荐邮件 推荐了一个datax web的开源项目 这不是瞌睡遇到枕头 再研究研究这个项目是不是符合数据同步的要求 datax web https github co
  • JavaWeb 【基础】 servelet 异步操作

    在实际工作中我们会遇到一些耗时操作 这个时候如果不能及时response 就会返回失败 想要执行异步操作 延时返回数据 可以使用以下方法 使用asyncSupported true注解 WebServlet name apitest asy
  • Mysql基础(十二):隔离/锁/MVCC/ReadView

    目录 1 业务系统并发对数据库执行事务 2 脏写 脏读 3 不可重复读 4 幻读 5 事务隔离机制 6 MySQL如何支持4种隔离级别 Spring事务注解如何设置 7 undo log版本链是个什么东西 8 ReadView机制 多个事务
  • Java课题笔记~ Axios

    Axios 对原生的AJAX进行封装 简化书写 Axios官网是 https www axios http cn 2 1 基本使用 axios 使用是比较简单的 分为以下两步 引入 axios 的 js 文件 使用axios 发送请求 并获
  • Steam 灵感的游戏卡悬停效果

    先看效果 再看代码 查看更多
  • 【CSAPP】Binarybomb 实验(phase_1-6+secret_phase)

    Binarybomb 实验 phase 1 6 secret phase 实验内容 一个 binary bombs 二进制炸弹 下文将简称为炸弹 是一个Linux可执行C程序 包含了7个阶段 phase1 phase6和一个隐藏阶段 炸弹运
  • ROS学习笔记13--urdf文件报错:GazeboRosControlPlugin missing <legacyModeNS> while using DefaultRobotHWSim.....

    环境 ubuntn16 04 ROS kinetic vs code urdf文件运行时候报错如下 ERROR 1527494740 144219702 307 635000000 GazeboRosControlPlugin missin
  • jobdu 1 排序

    题目描述 对输入的n个数进行排序并输出 输入 输入的第一行包括一个整数n 1 lt n lt 100 接下来的一行包括n个整数 输出 可能有多组测试数据 对于每组数据 将排序后的n个整数输出 每个数后面都有一个空格 每组测试数据的结果占一行
  • MySQL存储过程与存储函数的区别

    语法定义上的区别就不说了 说一下其他的 如果有不正确的地方 还请大家指正 1 总述 存储函数和存储过程统称为存储例程 stored routine 两者的定义语法很相似 但却是不同的内容 存储函数限制比较多 比如不能用临时表 只能用表变量
  • STM32F4 DWT功能 实现程序运行时间精确测试

    时间戳相关寄存器定义 在Cortex M里面有一个外设叫DWT Data Watchpoint and Trace 该外设有一个32位的寄存器叫CYCCNT 它是一个向上的计数器 记录的是内核时钟运行的个数 最长能记录的时间为 10 74s
  • Dubbo各种协议

    原文地址 http dubbo io User Guide zh htm UserGuide zh 协议参考手册 协议参考手册 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img QStFh0Ov 166207932
  • 给定一系列正整数请按要求对数字进行分类并输出以下 5 个数字:A1=能被 5 整除的数字中所有偶数的和被5除后余1的数字按给出顺序进行交错求和被5除后余2的数字的个数被5除后余 3 的数字的平均数

    1012 数字分类 20 分 给定一系列正整数 请按要求对数字进行分类 并输出以下 5 个数字 A1 能被 5 整除的数字中所有偶数的和 A2 将被 5 除后余 1 的数字按给出顺序进行交错求和 即计算 n1 n2 n3 n4 A3 被 5
  • k8s资源控制

    文章目录 资源限定 资源限定 tomcat deploy yml apiVersion extensions v1beta1 kind Deployment metadata name tomcat deploy spec replicas
  • malloc相关内容,你知道吗?

    当一个程序经过预编译 编译 链接之后到底经历了一个怎样的过程呢 当我们写的程序内有malloc操作 那么内存到底可以申请多大呢 简单的来说下 程序首先在编译器中 经过编译之后会形成汇编格式的 o后缀的文件 经过链接之后 形成 exe的可执行
  • Java Learning - 6.3 五子棋联机模式

    在前一篇博文中完成了单机五子棋的编写 接下来将在其基础上完成联机模式 这里的联机模式采用主从形式 需要服务器端启动后 等待客户端连接以匹配游戏 目录 过程存储 胜负逻辑 悔棋 重新开始 存储本局棋谱 回放棋局 下一步 服务器类 为了进行联机
  • uni-app使用ucharts地图(主要微信小程序-初步使用)

    下载 https ext dcloud net cn plugin id 271 描述 根据数据门店数量 地图颜色逐步加深 效果 使用 目录结构 新建index vue 复制以下内容
  • 关于web3营销的一切知识

    Web3 时而神秘代表未来 有时又充满黑暗与欺骗 因为 Web3 与科技和金融紧密相关 而这两者又代表着当今世界的方向与人性 有很多人在说 Web3 就是数据的归属权转移 而我认为除此之外 Web3 更是社会里众多组织架构 利益关系 资源配
  • R语言基础 5 (常用函数及其应用)

    R语言的函数形式为 Functionname variable1 variable2 对于R中的函数可以有如下分类 下面我们将按以上分类介绍一些常见的函数 及其使用方法 一 数学函数 1 abs x 绝对值 gt abs 4 1 4 2 s
  • 低成本IMU的标定与性能评价

    低成本IMU的标定与性能评价 摘要 IMU 惯性测量单元 被广泛的使用在许多的机器人应用中 例如导航和建图任务 在大部分这种系统中 IMU和其他传感器数据 如 GPS 距离传感器 相机 进行融合 为了更好的结果 为了最小化系统的传播误差 I