Не съм запознат с PID регулатора, хептен ми се усложнява задачата. Но ми се струва че по тези формули ще върви постоянно в зиг-заг, в направление, но зиг-заг. То дори не ми трябва и компас, но ако ме обърне вълна или течение в обратна на направлението посока, не знам как ще се справи този алгоритъм.
Да, можеш да минеш и без компас. С Питагоровата теорема ще можеш да изчислиш разстоянието (хипотенузата) между точката до която искаш да стигнеш и точката в която си в момента. Ако при следващото засичане хипотенузата (разстоянието) е по-голямо - значи вървиш в обратна посока.
Ще върви по зиг-заг точно щото нямаш "предсказване", което може да ти осигури ПИД-а. Корекцията която ще получаваш ще означава "кривни за малко (примерно 1 секунда) руля и след това го изправи". Прави корекция, променя правата по която се движи и след това вижда дали тази права е успоредна на правата свързваща го с целта (т.е. този "коефициент на наклона" е еднакъв за двете прави). ПИД-а просто ще дава командата за корекция малко по-рано. Дълго е да ти го обясня, виж някое видео в тубата за това как работи този контролер. Най-грубо ти трябва черната линия. Червената е "прекалено нервно управление", а синята е "прекалено бавна реакция"
Представи си че караш кола. На пътя се появява препятствие. Ако реагираш прекалено бързо и рязко колата ще завие преди препятствието, но ще се насочиш към канавката и ще трябва да връщаш траекторията, и ако е пак толкова бързо, ще отидеш към другата канавка и пак, и пак... Ако пък си прекалено бавен... колата няма да завие достатъчно бързо и ще се удариш. Трябва ти премерена реакция, която да предвиди колко да завъртиш волана така, че хем да избягаш препятствието, хем да не отидеш в канавката...
Задачата се усложнява и от това, че реакцията на лодката не е мигновена - нито при започване на завоя, нито при завършването му. Ако няма ПИД, лодката ще продължи да завива след маневрата, и следващаат корекция ще трябва да я връща обратно, но и там ще "предобри" работата и ще се получи като червената линия.
Харакеристиката на ПИД-а се определя от 3 коефициента и 2 времена, които описват неговото поведение и тези 5 числа се подбират опитно за всяко едно приложение.
1. Пропорционален коефициент - най-грубо "при 1 градус отклонение от курса завърти руля на еди-колко си градуса". Можеш да искаш руля да се завърти на 1 градус, може и на 20 градуса - зависи от размера на руля, скоростта и от желанието ти колко бързо да се извърши корекцията. Той реално е основния коефициент, определящ размера и посоката на въздействие.
2. Интегрален коефициент - той помага да се коригират малки отклонения, коитопроп. коефициент не хваща. Най-грубо "последните 10 пъти отклонението беше +0.1 градуса. Малко е за корекция по проп. коеф., но щом 10 пъти все сме наляво, може би е добра идея да "чукнем" мъничко надясно?"
3. Диференциаен коефициент - най-грубо "в моменат вървим под ъгъл който е грешен с +10 градуса. предния път вървяхме с курс който е грешен с +20 градуса. Все още сме на "+" (пропорционалния коефициент все още крещи като обезумял "ДАВАЙ ОЩЕ В "-") , но дали не е време да го озаптим малко с един мъничък "+", щото ако така продължаваме, като стигнем "0", ще я подминем и ще трябва да се връщаме... (случая с червената линия)"
Двете времена са съответно за интегралния и диференциалния коефициент. Те указват колко време назад да се "следи историята на пътуването" и да се види как е протичал процеса, и съответно дали не е добре да се предприемат някакви изпреварващи или доуточняващи корекции.