Jump to content

Ищу мод: пид регулятор для автоматизации управления самолетом


vano_vvv

Recommended Posts

Здравствуйте.

Что-то я решил что на Еве без самолета никак и начал потихоньку осваивать эту часть игры. Самолет хочу сделать на электротяге. Посмотрел пару видео, слепил самолет - летает, клас!!! И вот тут началось самое интересное, оказывается можно как в настоящем самолете управлять углом атаки лопастей винта  (шагом винта, он же угол раскрытия в игре)  и мощностью двигателя, ну и оборотами винта.

Хочу сделать так: главная тяга - обороты винта,  а вот угол атаки (шаг винта) он же зависит от скорости, но он проситься на стабилизацию, то-есть получается замкнутая петля регулирования: угол атаки -> пид -> Раскрытие лопасти и стабилизируем его на заданном значении угла атаки . ну и следующий параметр  - мощность, здесь немного сложнее, нужно поддерживать минимальную мощность чтоб удержать заданные обороты, мощность можно и большую держать, но тогда будет перерасход электроэнергии

Есть что-то похожее на мою хотелку ? МОЗГ 1000 вроде так не умеет или я не умею его приготовить.....

Link to comment
Share on other sites

наверное сам себе и отвечу - kos, я его уже установил и получил в терминале значения для угла атаки и угла раскрытия, осталось прикрутить между ними пид, образец вроде как есть

https://ksp-kos.github.io/KOS/tutorials/pidloops.html

Link to comment
Share on other sites

а щастье было так близко.... сделал простенький скрипт

set blade0 to ship:partstagged("blade")[0]:getmodule("modulecontrolsurface").

until 1<0 {
    print "угол атаки:"+blade0:getfield("угол атаки") + " раскрыть угол:"+blade0:getfield("раскрыть угол").
    wait 0.25.
}.

он та изменения угра ракрытия реагирует а на угол атаки - нет. см. картинку. что я делаю не так ?Screenshot_20210319_152816.png

Link to comment
Share on other sites

если кому-то это интересно - продолжу тему: оно работает, непонятно почему угол атаки невозможно получить от некоторых лопастей но от других - возможно. Предполагаю что он одинаков на всех лопастях. Первая версия скрипта ниже. Почему-то встроенный pidloop схода не заработал, накидал свой аналог но он может только ПИ.....

print "pid angle control start".

set Kp to 0.55.
set Ki to 0.1.
set Kd to 0.0.

set Xmax to 80.0.
set Xmin to 45.0.
set SP to 4.0.

set Sum to 0.0.

set blade0 to ship:partstagged("blade")[9]:getmodule("modulecontrolsurface").

lock pv to blade0:getfield("угол атаки").
set blang to blade0:getfield("раскрыть угол").

set Sum to blang - ((pv - sp) * Kp).

until false {
    Set K1 to (pv - sp) * Kp. 
    Set Sum to Sum+(K1*Ki).

    if K1+Sum>Xmax {
        set Sum to Xmax-K1.
    }

    if K1+Sum<XMin {
        set Sum to Xmin-K1.
    }

    set blang to K1+Sum.

    for blade in ship:partstagged("blade") {
        blade:getmodule("modulecontrolsurface"):setfield("раскрыть угол",blang).
    }

    print "PV:"+pv+ " OUT:"+blang.
    wait 0.1.
}
Edited by vano_vvv
Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...