Space Engineers

Space Engineers

AdvGyro
15 Comments
mmmm1998 Feb 24, 2017 @ 3:00am 
регулятор может не свестись даже в зону, где начинается учитыватся интегральная часть, и соответсвенно вести себя как обычный PD регулятор и не сводится точно на цель). Поначалу корабль дрожит, но по мере сброса интегральной части, рывки будут происходить всё реже и реже, пока интегральная часть не сбросится почти до нуля или до нуля, после чего дрожание исчезнет вовсе.
P.S. Если будут вопросы, то лучше задавать их в комментариях под моим скриптом с регулятором, чтобы здесь оффтоп не разводить.
P.P.S Извеняюсь, коммен был большой, пришлось разбить
mmmm1998 Feb 24, 2017 @ 2:58am 
Если же вам нужно наводится и на двигающиеся, относительно вас, цели, то придётся использовать PID режим, у котого есть один недостаток: при наведении на неподвижную цель возникают затухающее (именно затухающее) дрожание (время дрожание и его амплитуду можно уменьшая значение переменной ILim(регулирует пространство, в котором может накапливатся интегральная часть (чтобы не накапливалось при больших отклонениях от цели силшком большая интегральная составляющая), но тогда, при большой угловой скорости цели и маленьком значении ILim,
mmmm1998 Feb 24, 2017 @ 2:57am 
Другое дело, если вы говорите про дрожь, которая со временем не утихает, присутствует в тех ситуациях, которые я описал выше. Тогда лучше воспользуйтесь моим PID регулятором (скрипт в мастерской с именем "Orientator3D", а в нём класс PIDcontrolV3D, краткая инструкция в шапке скрипта).
Если вам нужно наводится только на неподвижные, относительно вас, цели, то просто обнулите интегральную часть (PID превратится PD регулятор).
mmmm1998 Feb 24, 2017 @ 2:56am 
PID же ускорение не учитывает (иначе бы это был какой-то PIID), потому и дрожит при наводке (другое дело, что чем больше уловое ускорение, тем больше дрожь, и наоборот: чем меньше угловое ускорение, тем меньше дрожь). Соответственно, если наводится на далёкий корабль, то дрожь должна быть слабой и заметной только при максимальном приближении камеры (по крайней мере у меня так).
mmmm1998 Feb 24, 2017 @ 2:56am 
@Skleroz, тут очень важный момент: а в какой именно ситуации возникает дрожание? Если оно возникает, когда вы пытаетесь навестись на цель, которая имеет ненулевую скорость и движется не от вас и не на вас и не вокруг вас по круговой траектории, то дрожание возникать будет. По той простой причине, что, даже если цель, относительно вас, имеет постоянную линейную скорость, она, относительно вас же, будет иметь не только угловую скорость, но и угловое ускорение.
Skleroz Feb 15, 2017 @ 2:40pm 
@mmmm1998 Привет! Если будет возможность, выкладывай, этот "кошмар Дженкина" до сих пор мучает, в принципе, за почти год ситуация не изменилась, дрожание все равно есть =(
P.S. Прошу прощения за оффтопик, но проблема и правда разражающая.
Cheetah  [author] Feb 12, 2017 @ 9:48pm 
Да, выложи, если нетрудно. С дрожанием беда, ничем убрать не могу.
mmmm1998 Feb 11, 2017 @ 9:29am 
Опять тот неловкий момент, когда ты написал класс GyroArray, потом наконец подумал, что его уже кто-нибуть да написал, и за пять минут находишь класс почти с таким же интерфейсом. Хоть раз бы было наоборот! А так спасибо за скрипт.
P.S. Странно, у вас проблемы с ПИД-регулятором? Я просто тоже использую ПИД-регулятор в классе Orentation3D (орентирует корабль на какую-то точку) и никаких проблем с дрожанием нет, даже проскоков нету, сразу на цель орентируется. Если кому-нибуть ПИД понадобится, могу выложить вместе с Orientation3D.
Skleroz Oct 3, 2016 @ 10:57am 
Ок, сама мысль классная, главное, чтобы цель сильно не "гуляла".
Cheetah  [author] Oct 3, 2016 @ 10:52am 
Нужно смело подбирать деривативку (производную), точно наводиться на цель и... выключать оверрайд. То есть нужно нарисовать функцию (типа роббимовской GetDirectionTo), которая определяет, находится ли "угловое расстояние" до цели в допустимом пределе погрешности, и если да — ставить оверрайды в нуль и выключать режим. Во второй версии скрипта у меня это предусмотрено.
Skleroz Oct 3, 2016 @ 10:29am 
О! Кстати вопрос касательно точной наводки. Сколько я не пробовал перебирать константы, для ПИД, мелкая дрожь все равно остается. Я, в принципе понимаю, что это проблема работы оверрайда самих гироскопов, но... не работал ли ты над подобной проблемой? Во всяком случае, мягкая наводка уже звучит интригующе.
Cheetah  [author] Oct 2, 2016 @ 10:35pm 
Кстати, об Ализиусе. У меня на подходе ещё один скрипт, простой в использовании как консервная банка, с его встроенным ПИД-регулятором и мягкой наводкой на цель. Правда, он в три раза длиннее (14064 байт с вырезанной табуляцией), так что его скорее всего выложу отдельно.
Skleroz Oct 2, 2016 @ 3:30pm 
Всегда пожалуйста!
Cheetah  [author] Oct 2, 2016 @ 12:19pm 
Спасибо, учту.
Skleroz Sep 27, 2016 @ 1:14pm 
Hi! Really pleased, first time I see credits to my script as source of code. Feel free to use and ask questions about =)
Originally, work started from Alysius scripts, you should check those scripts, they are amazing!
Last but not least, brilliant work, simple and functional script!