Сервоприводы маленькие и легкие и пытаются перемещаться в положение, о котором вы им говорите, как можно быстрее.Джойстики также могут очень быстро менять значения, и они также могут быть затруднены.В результате ваши сервоприводы постоянно совершают множество маленьких быстрых движений, которые могут сделать револьверную головку дергающейся.
Я могу придумать два варианта, и вы можете сделать оба:
Сглаживание входов джойстика с помощью фильтрации нижних частот.Обычно это просто означает использование средневзвешенного значения текущих и предыдущих значений.Идея состоит в том, чтобы устранить плохие показания или два, которые могут произойти из-за грязных контактов в потенциометре.
Сгладьте движение.Вместо того, чтобы немедленно пытаться переместить сервоприводы непосредственно в текущие позиции джойстиков, переместите их в направлении целевой позиции.На каждой итерации цикла они будут приближаться к целевой позиции вместо того, чтобы пытаться прыгнуть туда почти мгновенно.
Для # 2 есть пара подходов, которые мне нравится использовать.
Один из них - просто использовать средневзвешенное значение текущей позиции сервопривода и целевой позиции.Если вы перемещаете джойстик на значительное расстояние, турель будет быстро поворачиваться, но замедляться по мере приближения к целевому положению.
Другой способ - использовать физическую модель.Представьте себе создание вектора силы, который указывает от текущего положения сервоприводов к целевому положению джойстиков и пропорционален расстоянию между ними.Примените эту силу к текущей точке.Также примените «силу трения», которая противостоит скорости текущей точки.Численно интегрируйте скорость и положение в петле.Если вы внезапно переместите джойстик в новое положение, турель будет ускоряться к нему, а затем замедляться по мере приближения к нему.Регулировка констант, используемых для вычисления сил, позволит вам контролировать, насколько «тяжелым» кажется механизм.