Имам приложение, в което насочвам превозно средство по посока на компаса и имам проблем, когато превозното средство преминава от 360 градуса на 0 градуса.
В този случай няма интелигентност в контролната верига, която да изчисли най-близкия начин да завиете, за да следвате посока.
Например, ако превозното средство е инструктирано да следва посока от 360 градуса, то неизбежно ще се отклони с няколко градуса към етерната страна. Ако се отклони до 0+ градуса, контролната верига ще се побърка и ще се опита да насочи превозното средство докрай, за да го върне отново на 360 градуса.
Има ли грациозен начин да се справите с това?
Начинът, по който е написана функцията за навигация, използвам външен клас PID контролер и изчислявам заглавието по следния начин:
lock (steering)
{
if (!Engaged)
{
return;
}
double mv = 90 + Trim + pidController.CalculateCorrection(flyHeading, currentHeading);
steering.Degree = mv;
}
Благодаря!