指南针:从359到0度

Dr *_*ban 6 robotics lego-mindstorms lego nxt compass-geolocation

我正在尝试使用指南针移动机器人.我们使用指南针使机器人沿直线移动,它使用2个轮子,它们移动有点不同.因此我们将0到359之间的值设置为方向,然后检查当前方向,计算错误并修复它.像error = current_direction - 实际方向.

问题是,例如,如果我们的初始方向是90度而我们的机器人是45,那么错误将是45并且它将修复它.如果为0,则错误将为90并且将修复它.问题是如果它移动了一点多于0并且例如变为359,则误差将是-269,因此不是在一个方向上移动90而是在另一个方向上移动-269.

我使用错误的符号来决定移动哪个轮子以固定方向.任何想法如何解决它?

Pis*_*3.0 6

if (error > 180) {
   error -= 360;
}

if (error < -180) {
   error += 360;
}
Run Code Online (Sandbox Code Playgroud)

  • 我曾经有一个机器人可能会变得如此困惑,以至于我们不得不改变那些` (3认同)