У меня есть приложение, в котором я направляю транспортное средство по компасу, и у меня возникает проблема, когда транспортное средство пересекает угол от 360 до 0 градусов.
В этом случае в контуре управления нет интеллектуальных вычислений, чтобы вычислить ближайший способ поворота, чтобы следовать по курсу.
Например, если транспортному средству приказано следовать по курсу 360 градусов, оно неизбежно будет дрейфовать на несколько градусов в сторону эфира. Если он дрейфует до 0+ градусов, контур управления сойдет с ума и попытается направить автомобиль по кругу, чтобы снова развернуть его на 360 градусов.
Есть ли изящный способ справиться с этим?
То, как написана функция навигации, я использую внешний класс ПИД-регулятора и вычисляю заголовок следующим образом:
lock (steering)
{
if (!Engaged)
{
return;
}
double mv = 90 + Trim + pidController.CalculateCorrection(flyHeading, currentHeading);
steering.Degree = mv;
}
Спасибо!