我有一个机器人,前面和后面分别安装了红色LED和绿色LED。我想计算机器人的头部方向,因为它指向的是greenLEd - redLed向量。
如何对其进行编码,使得下图中标记为1和2的点具有相同的角度,即逆时针45度,而点3应为225度。
我使用了以下脚本,但它给了我错误的结果:
def headDirectionAngle(redLEDCoords, greenLEDCoords, referenceVector):
greenRedLEDVector = np.array(greenLEDCoords) - np.array(redLEDCoords)
angle = np.math.atan2(np.linalg.det([referenceVector,greenRedLEDVector]),np.dot(referenceVector,greenRedLEDVector))
return np.degrees(angle)
referenceVector = np.array([0,240])
我该怎么办?谢谢你的帮助。
答案 0 :(得分:1)
返回基础,没有numpy
。
atan2
已经给出了逆时针角度,但介于-180和180之间。您可以添加360并计算模360以获得0到360之间的角度:
from math import atan2, degrees
def anti_clockwise(x,y):
alpha = degrees(atan2(y,x))
return (alpha + 360) % 360
print(anti_clockwise(480, 480))
# 45.0
print(anti_clockwise(-480, -480))
# 225.0
x
应该是绿色和红色LED之间X坐标的差异。同样适用于y
。