使用atan2计算机器人模拟中的圆角度
我正在做一个关于机器人的模拟,这个机器人会围着一个中心点(坐标是 (x1, y1))转圈。机器人会定期测量自己的位置,并把这些信息返回给我。假设返回的坐标是 (x3, y3)。不过,我对如何在Python中正确使用atan2来计算当前测量和上一个测量与中心点之间的角度还有些不太确定。
到目前为止,我是这样做的,想确认一下这样做是否正确:
current_angle = atan2(y3-y1, x3-x1)
last_angle = atan2(y2-y1, x2-x1)
angle_difference = current_angle - last_angle
在得到angle_difference
后,我会计算角速度,公式是velocity = angle_difference / dt
(dt是上一个测量和当前测量之间的时间间隔)
1 个回答
1
几乎是对的。这个公式在从第一象限到第四象限,或者从第二象限到第三象限的时候会出问题。所以你需要先计算角度差的绝对值,然后取最小值,最后再调整符号。