PID制御計測器
StormWorksで作ってるPID制御のための計測機器がイメージに近い状態で動くようになりました
PID制御ってP値、I値、D値それぞれの値を決めるためにデータを取得して模索する段階がどうしても必要になるので、そのための計測器です
計測するのは車の速度だったり、航空機の高度だったりして移動物が対象になるので、計測値は無線信号で飛ばす仕組みにする都合で受信側・送信側双方の制作が求められます。めんどうくさいです
受信と送信の仕組みができました
送信機にあたる部分をテストカーに搭載しての実機テスト
ちゃんとスピードを計測することができました
これでやっとPID制御のための地盤が整ってきたことになります
先は長いですね…
2 notes
·
View notes
Here comes the snow!❄️☃️ Stay safe out there. #stormwork #lineman #ibew #local57 #utah #winter Posted by @ibew_local_57 (at Utah) https://www.instagram.com/p/Ckrx1J9rzCm/?igshid=NGJjMDIxMWI=
1 note
·
View note
ПИД регулятор
Как-то давно я узнал про такую интересную вещь как Пропорционально-интегрально-дифференцирующий регулятор - это такое управляющее устройство с так называемой "обратной связью". Впервые я его встретил в игре Stormworks, и, проведя пару неудачных тестов, забросил попытки понять этого неведомого чудо-зверя.
Но вот недавно я снова заинтересовался этой темой и, посмотрев объяснения на ютубе (вот вам ссылочка) и почитав статью на Википедии, понял насколько это гениальная вещь! Расскажу вам всё, что я узнал из этих двух источников простым языком и разберу на примере того ��е Stormworks (простите, скриншотов и видео не будет - производительность ПК не позволяет).
На оригинальность не претендую, лишь делюсь с вами интересной информацией
Принцип работы
Итак, представим, что в Stormworks у нас есть вертолёт, который должен зависнуть на заданной высоте. Как мы попытаемся решить эту задачу? Первое, что приходит в голову - отнять текущую высоту от заданной и, пока у нас есть разница, увеличить мощность ротора, чтобы тот поднял наш вертолёт, а когда разница равна нулю - уменьшать её. Всё просто и логично, верно?
Именно так! И это как раз и есть пропорциональная часть нашего регулятора. Но у нас на практике будут 2 проблемы:
Мы не наберём нужную нам высоту, а останемся намного ниже.
Прежде, чем вертолёт остановится на одной высоте, он будет то подниматься, то опускаться, пытаясь поймать баланс между силой ротора, тянущей его вверх и силой, тянущей его вниз.
Для начала разберёмся с первой проблемой. Не долетим мы потому, что мы зависнем там, где подъёмная сила и сила снижения сравняются, а это произойдёт не там, где мы хотим, а там, где получится и это окажется ниже, чем нам надо (практически всегда, если я правильно понял). Разница между получившейся высотой и заданной называется статической ошибкой. Подкорректировать её можно коэффициентом p, который является множителем разницы текущей и заданной высоты. Что это делает? Усиляет сигнал на роторе, чтобы он сильнее крутился и вертолёт поднялся выше. Но нужной высоты всё равно не достигнем: либо не долетим, либо (при слишком высоком коэффициенте p) перелетим, и во втором случае мы не поймаем баланс никогда, поэтому лучше сделать так, чтобы мы как можно меньше не долетали.
Полным устранением отклонения от заданной высоты занимается интегрирующая часть. Она составляет сумму наших ошибок с течением времени и прибавляет к текущей ошибке. Описание не совсем точное, для тех кто шарит в математике поясню правильнее: она находит интеграл отклонения от заданной высоты по времени. Коэффициент i перед интегрирующей частью настраивает резкость исправления. Если подобрать слишком большой i, то регулятор будет слишком сильно пытаться исправить ошибку и это опять приведёт нас к бесконечным недолётам и перелётам.
Но внимание: перед остановкой на нужной высоте мы всё ещё будем качаться вверх-вниз, даже если мы правильно подберём коэффициенты!
Разница между правильными и слишком большими i и p в том, что в первом случае мы со временем остановимся на нужной нам высоте, а во втором - этого никогда не произойдёт. Чтобы быстрее поймать баланс и практически устранить нашу раскачку нам нужна дифференцирующая составляющая нашего контроллера (регулятора). Она находит определяет с какой скоростью мы приближаемся к нужной нам отметке и корректирует скорость приближения к ней. То есть делает так, чтобы, если мы далеко от целевой высоты - ротор начинал быстрее её набирать, а по мере приближения - набор высоты замедлялся. Коэффициент d влияет на скорость реакции нашего регулятора: слишком низкий практически не будет ничего менять, а слишком высокий... вот тут не знаю - поэксперементируйте.
Ниже я приложил гифку из Википедии, которая наглядно покажет как каждый коэффициент влияет на текущее выходное значение регулятора (в нашем случае - на высоту):
Ну, вот и всё на этом. Всем до новой записи, которая выйдет...
3 notes
·
View notes
Hello Tumblr world!
Twitterがすこし迷走しているようで、そのあおりでAPI制限くらってもおもしろくないので、退避先を確保しておこうとアカウント作ってみました
趣味的な記録・備忘録がほとんどだと思います
趣味はHONDAクロスカブ110でトコトコ走るのが大好きです。あとゲームでもっぱらKerbalSpaceProgramやStormWorksをプレイしてます
1 note
·
View note