Math 差速器驱动里程计中车轮错位的计算

Math 差速器驱动里程计中车轮错位的计算,math,coordinates,robotics,Math,Coordinates,Robotics,我有一个差速驱动机器人,用里程计推断它的位置 我使用的是标准方程式: WheelBase = 35.5cm; WheelRadius = 5cm; WheelCircumference = (WheelRadius * 2 * Math.PI); WheelCircumferencePerEncoderClick = WheelCircumference / 360; DistanceLeft = WheelCircumferencePerEncoderClick * EncoderCount

我有一个差速驱动机器人,用里程计推断它的位置

我使用的是标准方程式:

WheelBase = 35.5cm;
WheelRadius = 5cm;
WheelCircumference = (WheelRadius * 2 * Math.PI);
WheelCircumferencePerEncoderClick = WheelCircumference / 360;

DistanceLeft = WheelCircumferencePerEncoderClick * EncoderCountLeft
DistanceRight = WheelCircumferencePerEncoderClick * EncoderCountRight

DistanceTravelled = (DistanceRight + DistanceLeft) / 2
AngleChange (Theta) = (DistanceRight - DistanceLeft) / WheelBase
我的(DIY)底盘有一个轻微的特点,在整个轴距(35.5厘米)过程中,车轮错位,左轮为6.39毫米(我是一个软件人而不是硬件人!),比右轮更“向前”。(轮子位于机器人的中间。)

我不确定如何计算我必须添加到公式中的内容,以获得正确的值。。它不会对机器人产生太大的影响,除非它在原地转弯,而且我的价值观很不正确,我认为这是造成它的原因

我的第一个想法是在网格上画出车轮的位置,并计算出它们位置线的斜率,然后用它乘以。。。什么


我走对了吗?有人能帮忙吗?我四处寻找这个错误,大多数人似乎忽略了它(因为他们使用的是专业底盘)

如果我在右边读这篇文章,问题是因为左轮在右边的前面,当它们以不同的速度转动时,它们不能滚动而不打滑。转动速度的差异越大,问题就越严重,这可能就是为什么当旋转方向相反时,在“一角硬币上转动”时会出现问题的原因

我认为解决这一问题的方法是考虑一个相关的问题:两个轮子位置正确,但是两个轮子都歪斜了一点(这正是你所处的情况,把轮子对角线看作“轴距”)。然后,运动可分为两个部分,一个是主要的前后组件,作用正常;另一个是次要的侧向组件,不会引起角度变化,仅取决于车轮旋转的总和


我会看看我是否能想出一些有意义的数学…

必须对AngleChanged的公式进行修正,如下所示:

将L和R分别作为左右车轮在一个刻度内行驶的距离。
B表示标称轴距的长度(而不是倾斜轴距的长度)。
设E表示左轮误差。也就是说,左轮从其理想位置向前偏移的距离。
我们试图找到θ,即轴距角度在一个刻度内的变化。

首先,(预)-计算倾斜轴距和理想轴距之间的角度:

φ=弧坦(E/B)

使用一些基本几何(如果你愿意,我可以发布细节),我们可以计算θ如下:

σ=arctan((E+L-R)/B)
θ=φ-σ

当E=0时,这将减少到您以前的实现,并且直观地理解结果为E->+inf,因此我们的公式似乎是正确的

注:
在计算σ(sigma)时,你可能想去掉计算上难看的反正切。在这种情况下,通常的做法是(实际上,您在以前的公式中使用了它)对小x使用近似值arctan(x)=x
这里的问题是,虽然数量(L-R)/B可能非常小,但误差相加E/B可能会增长到不可接受的大。您可以尝试通过去掉arctan并使用sigma=(E+L-R)/B来计算sigma,但是如果您想要更好的近似值,您应该使用arctan(a+x)的一阶泰勒级数,大约为0:

arctan(a+x)=arctan(a)+x/(1+a^2)

应用于西格玛计算,近似值现在看起来如下:

σ=arctan(E/B)+(L-R)/(B+E^2/B)


请注意,arctan(E/B)已预先计算为φ。这是一个更好的西格玛近似值,它应该会产生更精确的θ计算。

我遵循您的想法和指示,我相信我可以实现这一点。然而(我不是一个数学爱好者)当你说“你可能想去掉计算上难看的反正切”时,我无法理解你的想法。你指的是我在做θ=(distance right-distance left)/轴距,而没有ArcTan环绕的事实吗?这对实际结果有什么影响?对不起,有点慢!澄清一下,一个勾号,是对传感器的一次观察(多次编码器点击)?我现在完全对ArcTan感到困惑,如果我在没有ArcTan的情况下进行,我会得到:(20--20)/35弧度到度=65度ArcTan((20--20)/35)弧度到度=49度,这其中哪一个是正确的?好的,我明白了,所以如果我插入小距离,就像我最初的θ计算中的1cm一样,使用arctan时的变化非常小。这很有效-我得到了更好的值。我还有更多的校准要做,但这应该会让我可怜的粒子少一点困惑!