Multikopterit.net keskusteluforum

PID simulaattori

Aloittaja robofly, huhtikuu 03, 2016, 03:51:24 IP

« edellinen - seuraava »

0 Jäsenet ja 1 Vieras katselee tätä aihetta.

robofly

Joskus vuosia sitten koodasin mielenkiinnosta PID simulaattorin jossa voi muuttaa P, I ja D kertoimia ja katsoa näytöllä kuinka käyrät piirtyvät. Sillä oli hauska leikkiä ja testailla, samalla opin PID perusteet minkä vuoksi minun ei koskaan tarvinut lukea tutoriaaleja miten säädetäään kopterin PIDt.

Nyt päätin koodata sen uudestaan ja jakaa sen täällä jotta aloittelevat rupelipäät voisivat kokeilla itse miten PID toimii.

Simulaattorista lyhyesti
Simulaattorin tarkoitus opettaa ja havainnollistaa miten PID kertoimet vaikuttavat säätöön.
Simulaattori ei mallinna fysiikkaa oikeasti. Kaikki arvo ovat vain numeroita, ei oikeita yksiköitä.
Koodattu (tosi nopeasti) Javalla. Pitäisi toimia kaikissa yleisimmissä käyttöjärjestelmissä Linux, Mac OSX, myös Windows.

Jos olet koodaa ja haluat vilkaista koodeja tai osallistua:
https://github.com/andreiva/pid-simulator

Jos haluat vain käynnistää ohjelman ja alkaa säätämään!
https://github.com/andreiva/pid-simulator/blob/master/build/PID%20Simulator.jar?raw=true

Jar tiedoston käynnistäminen vaatii Javan, joka on jo melko varmasti asennettu koneellesi. Jos ei, lataa ja asenna  Java Runtime Environment. Ohjelma lähtee käyntiin tuplaklikkauksella. Jos ei lähde kokeille, hiiren oikea klikki -> Avaa sovelluksessa -> Java

Vähän tarkempi selostus toiminnasta löytyy englanniksi täältä
https://github.com/andreiva/pid-simulator

Koodasin tämän Java Swingillä koska sillä tekeminen onnistuu suht äkkiä. Oikeasti tämä pitäisi koodata jollain sopivalla JavaScript frameworkilla ja tehdä tästä Web-versio joka toimisi selaimessa, niin on helpompi käyttää.

Kysykää kysymyksiä ja antakaa palautetta. Hauskaa säätöä!

robofly

#1
Vähän tarkempi selostus.
Simulaattori ei varsinaisesti matki yhtä tiettyä asiaa. Sen toiminta voidaan soveltaa mihin tahansa kontekstiin.
Esimerkki: tietokoneen kotelo joka lämpenee käytössä, punainen viiva on lämpötila. Tuulettimen tehoa säädetään PID säätimellä, vihreä viiva. Säädin pyrkii pitämään lämpötilan asetusarvossa (Set point) keltainen viiva.

Kopterimaailmassa punainen viiva on kopterin mitattu kulma esim Roll akselilla. Vihreä viiva on yhden moottorin teho. Keltainen viiva on lentäjän tikuilla asettama kulma, jossa FC:n tulisi pyrkiä pitämään kopteri kaikista häiriöistä huolimatta.

Voit yhtäkkiä lisätä tai väähentää "virhettä" +25 tai -25 painikkeista ja seurata miten säädin reagoi.

Delay
Output delay matkii viivettä säätimen ja ulostulon välillä. Esim FC antaa komennon ESC:lle mutta ESCssä ei olekkaan BLHeliä ja sillä kestää nostaa/laskea kierroksia. Kun tähän laittaa suuren arvon, lopputulos on aika lähellä oikeata tilannetta kun kopterissa on hitaat ESCt. Ulostulo alkaa oskilloimaan kiihtyvällä tahdilla ja ampuu yli jatkuvasti.
System delay matkii säädettävän "kappaleen" hitautta. Esim kopteri on todella raskas, vaikka moottorit ovat täysillä, kopterilla kestää aikaa kääntyä oikeaan kulmaan (set point)

Filter
Alipäästösuodin joka poistaa satunnaiset piikit mittauksesta. EI toimi oikein vielä.

Noise
Lisää satunnaisia mittausvirheitä. Esim potkureiden epätasapainosta johtuva tärinä. Tämäkin antaa hyvän kuvan mitä tärinä tekee PID säätimelle (tai alipäästösuodin ei toimi kunnolla).

Toivottavasti näillä pääsee alkuun.

robofly

Ennakkovaroitus vielä. Ohjelma on buginen, käyttöliittymä näyttää torpatulta kopterilta  ;D mutta toimii.
Tarkoitus oli julkaista se nopeasti täällä ja katsoa onko siitä hyötyä.
Koodin laadusta ei edes kannata mainita mitään  :-X

hukkis

On kyllä hyvä kun joku jaksaa ja osaa näitä vääntää. Missä oltaisiin ilman open source aivoja ja ohjelmistoja... radioon mixauksia ja yrittää sillä säätää se kopteri edes leijumaan. Ai prkl tartzani on ainoo jolla se on mahdollista edes yrittää :o

robofly

Muutin koodiin muutamia arvoja ja korjasin yhden typon derivaatan laskennassa. Nyt järjestelmä on helpompi saada oskilloimaan, kun muuttaa viiveiitä. Jar tiedosto on päivitetty, sen voi ladata  samasta linkistä.

https://github.com/andreiva/pid-simulator/blob/master/build/PID%20Simulator.jar?raw=true

robofly

No onkos kukaan testannut simulaattoria. Onko siitä hyötyä?

jyrip

En osannut asentaa tuota. Java ja tiedostot ladattu, mutta miten tuo lähtee edes käyntiin?
www.youtube.com/mr2fpvninjas
Fpv lentelyä Akaan Toijalassa!

robofly

Ei tarvitse asentaa. Lataa vaan jar tiedosto ja käynnistä tuplaklikkaamalla.

Sent from my ONE A2003 using Tapatalk


jyrip

Lainaus käyttäjältä: robofly - kesäkuu 04, 2016, 11:46:17 IP
Ei tarvitse asentaa. Lataa vaan jar tiedosto ja käynnistä tuplaklikkaamalla.

Sent from my ONE A2003 using Tapatalk


Aijaa hei.... se olikin noin helppoa :)
www.youtube.com/mr2fpvninjas
Fpv lentelyä Akaan Toijalassa!