我使用编码器来获取车辆的行驶距离和航向角转弯时它不能给出精确的角度,车辆正在转弯。在我的算法中,我使用所有角度的累加来计算相对于世界的总角度(X-O-Y)。
它与轮径比和轮距比有关吗?
这个问题是在我的脑海中提出的,因为同一个算法与另一个不同尺寸(车轮直径和车轮到车轮的距离)的硬件一起工作,它也确实返回了精确的转向角。
如果能提供一些有价值的建议,我将不胜感激。
最佳答案
机器人的角度取决于特定的硬件,如车轮尺寸、编码器尺寸和车辆宽度也许你们和另一个机器人在一起是幸运的,因为轮径和轮距的变化互相抵消了,所以方程式是一样的,但通常你们不会这么幸运
假设你有一个两轮机器人,在两个不同的设置上相同的读数可以产生不同的结果。在我的简单说明中,我有一个两轮机器人的轴,两个机器人都有相同的wheel_diameter
和使用相同的旋转编码器。一个机器人在两个轮子之间的距离R1
另一个机器人的距离R2
假设两个机器人保持一个轮子静止,另一个轮子在轮子编码器上向前移动5下(两个机器人使用相同的编码器和相同大小的轮子)。利用半圆周长的简单方程,我们可以找到轮子移动的距离。dist_trav = (pi * wheel_diameter) * (#ticks / total ticks on encoder)
当然,由于一个轮子是静止的,机器人实际上是在另一个半圆上旋转。我们可以用circumference = 2*pi*dist_between_wheels
轮子之间的距离是我们圆的半径angle = % of circumference traveled * units = (dist_trav / circumference) * 360
我们使用360度,所以角度以度为单位,但如果需要,可以使用弧度
您将看到,即使在这个例子中,机器人是相同的,除了轮子之间的距离,相同数量的记号将意味着非常不同的角度如果r2=2*r1
我们可以看到dist_trav
对于两个机器人是相同的(因为轮子的直径相同),但是当我们计算出角度时
黑色机器人angle_black = (dist_traveled / 2*pi*R1) * 360
红色机器人
angle_black = (dist_traveled / 2*pi*2*R1 ) * 360
= (dist_traveled / 4*pi *R1 ) * 360
所以对于相同的轮子运动,红色机器人的角度变化只有黑色机器人的1/2。这只是一个玩具的例子,但是你可以很容易地看到不同直径的轮子和它们之间的距离是如何产生巨大差异的。
关于algorithm - 轮径和轮距之比对车辆的对准和期望的行驶方向有影响吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33411393/