计算差动驱动机器人的位置


14

如何使用增量传感器计算或更新差动驱动机器人的位置?

在两个差速器轮的每一个上都有一个增量传感器。这两个传感器确定距离 RESP。Δ ř ħ 其轮一个已知的时间期间已经推出Δ ΔËFŤΔ[R一世GHŤΔŤ

首先,假设两个轮子之间的中心标记了机器人的位置。在这种情况下,可以将位置计算为:

X=XËFŤ+X[R一世GHŤ2ÿ=ÿËFŤ+ÿ[R一世GHŤ2

在两个车轮都沿直线滚动的假设下“推导”这些方程式(对于小距离应该近似正确),我得到:

ΔXΔŤ=1个2ΔËFŤΔŤ+Δ[R一世GHŤΔŤCØsθΔÿΔŤ=1个2ΔËFŤΔŤ+Δ[R一世GHŤΔŤs一世ñθ

其中是机器人的定向角。对于这个角度的变化,我找到了等式θ

ΔθΔŤ=1个wΔËFŤΔŤ-Δ[R一世GHŤΔŤ

其中是两个轮子之间的距离。w

由于Δ ÿ取决于θ,我不知道是否我首先应该计算新的θ通过增加Δ θ或者我应该更爱用“老” θ有什么理由要使用另一个?ΔXΔÿθθΔθθ

然后,让我们假设两个轮子之间的中心没有标记机器人的位置。相反,我想使用一个标记机器人边界框的几何中心的点。然后y变为:Xÿ

X=XËFŤ+X[R一世GHŤ2+CØsθÿ=ÿËFŤ+ÿ[R一世GHŤ2+s一世ñθ

“派生”第一个给出:

ΔXΔŤ=1个2ΔËFŤΔŤ+Δ[R一世GHŤΔŤCØsθ-s一世ñθΔθΔŤ

现在有一个Dependance的这是使用“新” θ的原因吗?Δθθ

有没有更好的方法可以进行位置和方向的模拟更新?可能使用复数(与3D四元数的方法相同)还是齐次坐标?

Answers:


8

要回答您的第一个问题:如果您真的想找到差动驱动的真正运动学方程,则我不会通过假设每个车轮都沿直线运动来开始近似。相反,找到转弯半径,计算圆弧的中心点,然后计算机器人的下一个点。如果机器人笔直移动,则转弯半径将是无限的,但是在笔直的情况下,数学运算很简单。

因此,可以想象一下,在每个时间步长或每次计算增量传感器的变化时,机器人都会沿着这样的弧线从A点移动到B点: 在此处输入图片说明 这是一些示例代码,简化了数学运算:

// leftDelta and rightDelta = distance that the left and right wheel have moved along
//  the ground

if (fabs(leftDelta - rightDelta) < 1.0e-6) { // basically going straight
    new_x = x + leftDelta * cos(heading);
    new_y = y + rightDelta * sin(heading);
    new_heading = heading;
} else {
    float R = unitsAxisWidth * (leftDelta + rightDelta) / (2 * (rightDelta - leftDelta)),
          wd = (rightDelta - leftDelta) / unitsAxisWidth;

    new_x = x + R * sin(wd + heading) - R * sin(heading);
    new_y = y - R * cos(wd + heading) + R * cos(heading);
    new_heading = boundAngle(heading + wd);
}

我在模拟器中使用了类似的数学运算法则来演示不同的控制方式:http : //www.cs.utexas.edu/~rjnevels/RobotSimulator4/demos/SteeringDemo/


1
上面的代码段中使用的方程式在此处得出:rossum.sourceforge.net/papers/DiffSteer
kamek 2014年

很好的解释!模拟器链接已损坏
傻笑者

2

ΔθθΔXΔÿ

从实际意义上讲,最好计算一下 Δθ 计算之后 ΔXΔÿ,因为您在循环中的第一次迭代要求初始值为 θ

请记住,无论如何这都是一种容易出错的测量方法-它是一对1D测量值,可提供3D世界的2D近似值。即使您能够获得ΔŤ 非常接近 0,它仍然不会考虑车轮打滑和不平坦的地形。


搜索“差动驱动车辆的前向运动学”应该为一堆文章提供更多有关该问题的数学方法。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.