• Ei tuloksia

Itsensä tasapainottava kaksipyöräinen mobiilirobotti

N/A
N/A
Info
Lataa
Protected

Academic year: 2023

Jaa "Itsensä tasapainottava kaksipyöräinen mobiilirobotti"

Copied!
38
0
0

Kokoteksti

(1)

ITSENSÄ TASAPAINOTTAVA KAKSIPYÖRÄINEN MOBIILIROBOTTI

Kandidaatintutkielma Tekniikan ja luonnontieteiden tiedekunta Tarkastaja: Veli-Pekka Pyrhönen Helmikuu 2022

(2)

TIIVISTELMÄ

Simo Käki: Itsensä tasapainottava kaksipyöräinen mobiilirobotti Kandidaatintutkielma

Tampereen yliopisto

Teknisten tieteiden kandidaatin tutkinto-ohjelma Helmikuu 2022

Käänteisheilurin massakeskipiste sijaitsee sen kiintopisteen yläpuolella, minkä takia heilu- ri kaatuu helposti painovoiman vaikutuksesta. Käänteisheilureilla voidaan tutkia tasapainojärjes- telmien tasapainotusta ja toimintaperiaatteita. Tasapainojärjestelmien käytännön sovelluksia ovat esimerkiksi polkupyörät, potkulaudat ja ihmiset. Käänteisheilurijärjestelmien tasapainottaminen ta- kaisinkytketyllä säädöllä on haastava tehtävä niiden luontaisen epästabiiliuden vuoksi.

Tässä työssä tutkitaan itse rakennettua kaksipyöräistä mobiilirobottia, joka on eräs käänteis- heilurijärjestelmä. Mobiilirobotille suunnitellaan stabiloiva lineaarinen tilatakaisinkytketty säätö, jon- ka tavoitteena on pitää robotti pystyssä lähellä sen aloitusasemaa. Säädön suunnittelu aloitetaan johtamalla järjestelmälle lineaariset liikeyhtälöt, joista muodostetaan lineaarinen aikainvariantti ti- lamalli. Tilamallin tiloiksi valitaan robotin kehikon kulma ja kulmanopeus sekä renkaiden kiertokul- ma ja kiertokulmanopeus. Toteutetussa kaksipyöräisessä robotissa ei kuitenkaan mitata renkai- den kiertokulmanopeutta. Täyden tilan tilatakaisinkytkentä vaatii tiedon kaikkien tilojen käyttäyty- misestä, joten puuttuva kiertokulmanopeuden mittaus pitää estimoida olemassa olevilla mittauk- silla. Koska puuttuva mittaus on kiertokulman muutosnopeus, voidaan se estimoida kiertokulman mittauksesta ylipäästösuotimella. Muille mittauksille suunnitellaan sopivat alipäästösuotimet mit- taushäiriöiden vähentämiseksi, ja kulman estimoinnissa yhdistetään kulman ja kulmanopeuden mittaukset komplementaarisella suotimella. Tilatakaisinkytkentä viritetään LQR (Linear Quadratic Regulator) -menetelmällä.

Työssä suunniteltu säätöratkaisu toteutetaan digitaalisella mikrokontrollerilla, joka ohjaa kak- sipyöräisen robotin moottoreille syötettävää jännitettä. Järjestelmän käytännön suorituskykyä ar- vioidaan alkuarvovasteen ja häiriöimpulssin perusteella. Työn tulokset osoittavat, että suunniteltu säätöalgoritmi kykenee pitämään kaksipyöräisen mobiilirobotin pystyssä ja säilyttämään robotin lähellä sen aloitusasemaa. Näin ollen säätöalgoritmi toteuttaa sille asetetut vaatimusmäärittelyt.

Avainsanat: tilatakaisinkytkentä, takaisinkytketty säätö, käänteisheiluri, kaksipyöräinen mobiiliro- botti, LQR

Tämän julkaisun alkuperäisyys on tarkastettu Turnitin OriginalityCheck -ohjelmalla.

(3)

SISÄLLYSLUETTELO

1. Johdanto . . . 1

2. Yleiskuvaus . . . 2

2.1 Tasapainojärjestelmät . . . 2

2.2 Tasapainojärjestelmien fyysiset rakenteet ja säätömenetelmät . . . 3

2.3 Kaksipyöräinen käänteisheiluri . . . 3

3. LTI-tilasäädön teoriaa . . . 6

3.1 Tilamalli . . . 6

3.1.1 Liikeyhtälöt . . . 6

3.1.2 Moottorin dynamiikka . . . 10

3.1.3 Lopulliset liikeyhtälöt ja tilamalli . . . 12

3.2 Ohjattavuus . . . 13

3.3 Tilatakaisinkytketty säätö. . . 14

3.4 LQR . . . 15

4. Tilasäätäjän suunnittelu ja testaustulokset. . . 17

4.1 Tilasäädön suunnittelu. . . 17

4.2 Mittaukset ja suotimet . . . 18

4.3 Testaustulokset . . . 20

5. Yhteenveto . . . 22

Lähteet . . . 24

Liite A: Räjäytyskuva . . . 26

Liite B: Kytkentäkaavio . . . 27

Liite C: Arduino koodi . . . 28

(4)

LYHENTEET JA MERKINNÄT

D Haihtunut energia

Ek,keh Kehikon kineettinen energia Ek,reng Renkaan kineettinen energia Ep,keh Kehikon potentiaalienergia Ep,reng Renkaan potentiaalienergia Ikeh Kehikon hitausmomentti Imoot Moottorin hitausmomentti Ireng Renkaan hitausmomentti Ivaih Vaihteiston hitausmomentti Lmoot Moottorin sisäinen induktanssi

L Lagrangiani

Rmoot Moottorin sisäinen vastus

Pi Lagrangen yhtälön konfiguraatiavaruuden muuttujaa vastaava voi- ma

A Tilamallin dynamiikkamatriisi B Tilamallin ohjausmatriisi C Tilamallin mittausmatriisi D Tilamallin suoravaikutusmatriisi Q LQR-menetelmän tilojen painomatriisi R LQR-menetelmän ohjauksien painomatriisi Z−1 Matriisin inverssi

Zn×m Matriisi jonka dimensio onn×m u Tilamallin ohjausvektori

x Tilamallin tilavektori y Tilamallin mittausvektori

zT,ZT Vektorin tai matriisin transpoosi ż,ż Muuttujan derivaatta

(5)

ϕmoot Moottorin kiertokulma ϕreng Renkaan kiertokulma

ρi Lagrangen yhtälön konfiguraatioavaruuden muuttuja τmoot Moottorin vääntömomentti

τoik Oikean renkaan vääntömomentti τreng Renkaan vääntömomentti

τvas Vasemman renkaan vääntömomentti τ Moottorin häviötön vääntömomentti

θ Kehikon kulman poikkeama pystyasennosta bmoot Moottorin vaimennuskerroin

breng Renkaan vaimennuskerroin bvaih Vaihteiston vaimennuskerroin g Putoamiskiihtävyys

i Moottorille syötetty virta ke Moottorin sähköinen vakio kt Moottorin vääntömomenttivakio

k Moottorin sähköisen - ja vääntömomenttivakion yhteinen lukuarvo l Massakeskipisteen etäisyys pyörien akselista

mkeh Kehikon massa mreng Renkaan massa

nvaih Vaihteiston välityssuhde

q Kappaleen liikkuma matkax-akselin suunnassa rreng Renkaan säde

vemf Moottorin sähkömotorinen voima vs Moottorille syötetty jännite LQR Linear Quadratic Regulator

LTI Linear Time Invariant (suom. Lineaarinen aikainvariantti)

MWIP Mobile Wheeled Inverted Pendulum (suom. Mobiili pyörällinen käänteisheiluri järjestelmä)

PID Proportional Integral Derivative

SIMO Single Input Multiple Output (suom. yhden sisääntulon, usean ulos- tulon järjestelmä)

(6)

1. JOHDANTO

Säätötekniikka on yksi automaatiotekniikan haaroista, joka keskittyy pääosin takaisinkyt- kettyyn säätöön. Takaisinkytketyssä säädössä järjestelmää pyritään ohjaamaan haluttuun tilaan nopeasti ja tehokkaasti. Teollisuudessa tähän käytetään useimmiten PID-säädintä, mutta muitakin tekniikoita on kehitetty [1, s. xi].

Käänteisheiluri on tasapainojärjestelmä, jossa sen massakeskipiste on korkeammalla kuin sen kiintopiste. Yksinkertaisimmillaan käänteisheiluri on tanko tai sauva, joka on kiin- nitetty toisesta päästään kiintopisteeseen. Tasapainojärjestelmät ovat luonnostaan epäs- tabiileja järjestelmiä, jotka vaativat takaisinkytkettyä säätöä pysyäkseen pystyssä. Kään- teisheilureita käytetään usein uusien säätötekniikoiden tai -menetelmien tutkimiseen ja testaamiseen. Käänteisheiluria pidetäänkin säätöteorian ja robotiikan yhtenä suosituim- mista sovelluskohteista [2, s. 4]. Käänteisheilurijärjestelmiä tutkimalla voidaan ymmär- tää enemmän esimerkiksi ihmisen tasapainoon vaikuttavista toiminnoista tai kappaleiden pystyssä pysymisestä [3][4]. Lisäksi käänteisheilurin matemaattista mallia voidaan hyö- dyntää esimerkiksi avaruusrakettien tasapainotuksessa [1, s. 86]. Segway-henkilökuljetin on arkipäiväinen esimerkki käänteisheilurijärjestelmästä.

Tässä työssä käsitellään itse rakennetun kaksipyöräisen käänteisheilurijärjestelmän tasa- sapainottamista tilatakaisinkytkennällä. Työssä on tarkoitus suunnitella toimiva tilatakai- sinkytketty säätö kaksipyöräiselle käänteisheilurijärjestelmälle ja toteuttaa se digitaalisella mikrokontrollerilla. Työssä edetään järjestelmän matemaattisesta mallista säätöjärjestel- män toteutukseen.

Luku 2 esittelee tasapainojärjestelmiä sekä työssä tutkittavan säädettävän järjestelmän.

Lisäksi käydään läpi säädettävän tasapainojärjestelmän kokoamisessa tehdyt ratkaisut, kuten valitut komponentit. Luvussa 3 esitellään säädön suunnittelussa tarvittavaa teoria.

Luvussa 4 säädin toteutetaan luvun 3 teorialla. Lisäksi esitellään, miten suunniteltu sää- din toteuttaa mobiilirobotille asetetut vaatimusmäärittelyt. Työn yhteenveto on luvussa 5, jonka lopussa pohditaan myös jatkokehitysmahdollisuuksia.

(7)

2. YLEISKUVAUS

Tässä luvussa tutustutaan muutamaan tasapainojärjestelmään ja niiden sovelluksiin. Li- säksi esitellään käänteisheilureihin ja niiden sovelluskohteisiin liittyviä tutkimuksia. Lopuk- si esitellään tämän tutkimuksen kohteena oleva käänteisheilurijärjestelmä. Järjestelmästä käydään läpi sen dynamiikkaan vaikuttavat ominaisuudet ja haasteet tasapainotuksessa.

2.1 Tasapainojärjestelmät

Åström ja Murray määrittelevät [1, s. 84] tasapainojärjestelmän olevan mekaaninen jär- jestelmä, jossa massakeskipiste on tasapainossa kiintopisteen yläpuolella. Perinteinen esimerkki tasapainojärjestelmästä on käänteisheiluri, jossa sauva on pystyasennossa ta- son päällä. Kyseinen esimerkki on esitelty kuvassa 2.1. Kuvan sauva kaatuu pienistäkin häiriöistä, eikä se pysty enää palautumaan pystyasentoon. Arkielämästä tuttu tasapaino- järjestelmä on ihminen itse. Ihmisen massakeskipiste sijaitsee jalkojen eli kiintopisteiden yläpuolella, minkä seurauksena kaatuminen täytyy estää raajoja liikuttamalla. Muita arjes- ta tuttuja tasapainojärjestelmiä ovat esimerkiksi polkupyörä, potkulauta ja kaksipyöräinen henkilökuljetin eli Segway.

Kuva 2.1. Perinteinen käänteisheilurijärjestelmä. Massakeskipiste on merkitty kuvaan sauvan keskelle. Kiintopiste on sauvan ja tason kontaktipiste.

Tasapainoärjestelmien sovelluskohteita on useita. Esimerkiksi perinteistä PID-säädintä on käytetty nilkan neuroproteesitutkimuksissa, joissa ihmistä on mallinnettu käänteishei- lurina [5]. Samanlaista mallinnusta on käytetty myös ihmisen paikallaan seisomisen si- muloinnissa [3]. Lääketieteen ulkopuolella käänteisheilurijärjestelmien malleja on käytet-

(8)

ty esimerkiksi kolmiulotteisten kappaleiden käyttäytymisen analysoimiseen maanjäristyk- sissä [4]. Jopa raketteja voidaan mallintaa käänteisheilureina [1, s. 86]. Käänteisheiluri- järjestelmien tutkimuksesta on apua moniin sovelluskohteisiin. Näiden järjestelmien ta- kaisinkytkettyä säätöä tutkimalla voidaan päätyä parempiin tasapainotusmenetelmiin ja -ratkaisuihin.

2.2 Tasapainojärjestelmien fyysiset rakenteet ja säätömenetelmät

Perinteisesti tasapainojärjestelmien tasapainoasema saavutetaan siirtämällä järjestelmän kiintopiste massakeskipisteen alle. Käänteisheilurin tasapainotus on mahdollista, jos sen yläosan dynamiikka on hitaampaa kuin kiintopisteen, mikä takaa kiintopisteen pääsyn hei- lurin massakeskipisteen alle. Hitaampi dynamiikka usein saavutetaan lisäämällä massaa käänteisheilurin yläosaan, mikä kasvattaa sen hitausmomenttia. Kiintopisteen liikuttami- nen ei kuitenkaan aina ole mahdollista, kuten reaktiopyörään perustuvassa käänteishei- lurissa [6]. Tällöin tasapainottava vaikutus luodaan muuttuvalla vääntömomentilla reaktio- pyörän ja heilurin pään välissä.

Tasapainojärjestelmien säätöalgoritmit voivat olla toisistaan hyvinkin erilaisia, koska fysi- kaaliset rakenteet ovat toisistaan poikkeavia. Tästä syystä niiden matemaattis-fysikaaliset mallit voivat erota toisistaan huomattavasti. Tähän tosin vaikuttaa myös menetelmä, jolla malliin on päädytty. Lisäksi heilurilla on kaksi tasapainopistettä. Toinen on stabiili heilurin ollessa ala-asennossa ja toinen on epästabiili heilurin ollessa yläasennossa.

Tässä työssä tutkittavaa käänteisheiluria säädetään lineaarisella säätölailla. Käänteishei- luri on kuitenkin epälineaarinen systeemi [2, s. 1], joten sen matemaattinen malli on linea- risoitava säädön suunnittelua varten. Käänteisheilureita on myös säädetty epälineaarisilla säätölaeilla kuten Bang-bang control - ja Fuzzy control -menetelmillä. Yleisesti voidaan todeta, että käänteisheilureiden takaisinkytkettysäätö on haastavaa [2][7].

2.3 Kaksipyöräinen käänteisheiluri

Tässä työssä tarkastellaan mobiilia kaksipyöräistä käänteisheilurijärjestelmää (engl. Mo- bile Wheeled Inverted Pendulum, MWIP), jonka liikettä tutkitaan kahdessa ulottuvuudes- sa. Tämän tyyppinen järjestelmä muistuttaa kaksipyöräistä henkilökuljetinta. Järjestelmän tasapainotus perustuu pyörien akselin siirtämiseen massakeskipisteen alle, jolloin järjes- telmä on tasapainossa. Pyöriin on kiinnitetty tasavirtamoottorit, joita voidaan ohjata niille syötettävällä jännitteellä.

Robotin huomattavasti painavimmat osat ovat akut koteloneen sekä moottorit. Liitteessä A on esitelty räjäytyskuva tässä tutkielmassa käytettävästä käänteisheilurijärjestelmästä.

Kuvasta näkee myös tärkeimpien osien asettelun. Akut on asetettu robotin päälle tuodak- seen kehikoon lisää hitausmomenttia ja täten sen dynamiikkaan hitautta. Toisaalta kehi-

(9)

kon hidas dynamiikka vaikeuttaa robotin tasapainotusta, jos se kallistuu liikaa, sillä tällöin palautuminen pystyasentoon on hankalampaa.

Robotin osien painot on kirjattu taulukkoon 2.1. Osat on punnittu vaa’alla yhden gramman tarkkuudella. Pienten osien kuten ruuvien painot on pyöristetty ylöspäin puoleen gram- maan. Johtojen yhteispaino on saatu vähentämällä kokonaispainosta tunnettujen osien painot. Taulukkoon 2.2 on listattu järjestelmän mallintamisessa käytetyt tunnetut ja arvioi- dut parametrit. Suurin osa parametreista on saatu mallintamalla järjestelmä Solidworks -ohjelmalla, ja kirjaamalla osien painot ohjelmaan. Solidworks laskee numeerisesti kap- paleen hitausmomentit. Kuten myöhemmin alaluvussa 2.3 todetaan, moottorin vääntömo- menttivakiolle (engl. torque constant) ja sähköiselle vakiolle (engl. electrical constant) on käytetty samaa lukuarvoa. Lukuarvo on laskettu moottorien datalehden arvoista. Tauluk- koon 2.2 on selvyyden vuoksi kirjattu nämä vakiot erikseen samalla lukuarvolla. Kaikkia arvoja ei kuitenkaan ole pystytty kokeellisesti määrittämään, joten esimerkiksi energiahä- viöt ja moottorin sisäiset hitausmomentit on arvioitu.

Taulukko 2.1.Robotin osat ja painot.

Osa Paino Lukumäärä

Akut sekä kotelo 160 g 1

Moottori 102 g 2

Rengas 51 g 2

Leipälauta 40 g 1

Metallitaso 30 g 1

Taso 25 g 2

Moottori ajuri 25 g 1

Liitin 14 g 2

Mikrokontrolleri 12 g 1 Taivutettu metalli 10 g 2

MPU6050 anturi 2 g 1

m3 30 mm koroke 3 g 8

m3 12 mm koroke 1 g 4

m3 8 mm ruuvi 0,5 g 18 m3 10 mm ruuvi 0,5 g 8

m3 mutteri 0,5 g 8

m3 6 mm ruuvi 0,5 g 6

m4 8 mm ruuvi 0,5 g 2

Johdot 14 g

Yhteensä 733 g

(10)

Taulukko 2.2.Malliparametrit.

Selite Tunnus Lukuarvo

Tunnetut parametrit

Moottorin vääntömomenttivakio

kt 0,211 220 N m A−1

Moottorin sähköinen vakio ke 0,211 220 V s rad−1

Kehikon massa mkeh 0,603 kg

Renkaan massa mreng 0,130 kg

Kehikon hitausmomentti Ikeh 0,003 035 184 kgm2 Renkaan hitausmomentti Ireng 0,000 035 163 kgm2

Renkaan säde rreng 0,0375 m

Vaihteiston suhdeluku nvaih 34 Massakeskipisteen

etäisyys pyörien akselista

l 0,0407 m

Moottorin sisäinen vastus Rmoot 5,6Ω

Putoamiskiihtyvyys g 9,81 m/s2

Arvioidut parametrit

Moottorin hitausmomentti Imoot 0,000 01 kgm2 Vaihteiston hitausmomentti Ivaih 0,000 01 kgm2

Moottorin vaimennuskerroin

bmoot 0,001 N m s rad−1

Renkaan vaimennuskerroin

breng 0,001 N m s rad−1

Vaihteiston vaimennuskerroin

bvaih 0,001 N m s rad−1

(11)

3. LTI-TILASÄÄDÖN TEORIAA

Luvussa 2 kuvattua kaksipyöräistä käänteisheilurijärjestelmää voidaan mallintaa lineaa- risena aikainvarianttina (engl. Linear Time-Invariant, LTI) järjestelmänä. Mallin muodos- tamiseen tarvitaan järjestelmää kuvaavat liikeyhtälöt. Tässä luvussa esitellään kaksipyö- räisen käänteisheilurin liikeyhtälöt sekä niistä muodostettu lineaarinen tilamalli. Lisäksi esitellään tilatakaisinkytkennän suunnitteluun liittyvää teoriaa.

3.1 Tilamalli

Tilamallilla voidaan ylläpitää järjestelmän tilaa, mikä helpottaa simulointia. Yleinen tila- malli on muotoa [1, s. 82]

ẋ =f(x,u) y=h(x,u),

(3.1)

jossax∈Rnon tilavektori,ẋ tilavektorin derivaatta ajan suhteen,u ∈Rmohjausvektori ja y ∈ Rp mittausvektori. Funktiot f : Rn× Rm → Rn ja h : Rn ×Rm → Rp ovat mahdollisesti epälineaarisia funktioita, jotka kertovat mitenẋ jaysaadaan ohjauksista ja järjestelmän tiloista. Tässänon tilojen lukumäärä,mohjausten lukumäärä japmittausten lukumäärä. Yleinen LTI-tilamalli on muotoa [1, s. 82][8, s. 191]

ẋ =Ax+Bu

y=Cx+Du, (3.2)

jossa A ∈ Rn×n on dynamiikkamatriisi, B ∈ Rn×m on ohjausmatriisi, C ∈ Rp×n on mittausmatriisi ja D ∈ Rp×m on suoravaikutusmatriisi. Tilamallin tilamuuttujat voidaan valita vapaasti, minkä seurauksena tilamalli ei ole yksikäsitteinen. Tässä työssä tilamallin johtaminen on tehty mukaillen Frankovskýn et al. julkaisua [9].

3.1.1 Liikeyhtälöt

Määritellään renkaiden luistamattomuus kaavalla

q =rrengϕreng, (3.3)

(12)

jossaqon renkaiden akselin etäisyys lähtöpisteestä,rrengrenkaan säde jaϕrengrenkaan kiertokulma.

x y

Ep= 0

q

rreng

vkeh θ

l ϕreng

Kuva 3.1.Yksinkertaistettu sivukuva kaksipyöräisestä käänteisheilurijärjestelmästä. Muo- kattu lähteistä [2][9].

Kehikon massakeskipisteenx- ja y-koordinaatit saadaan kolmion trigonometrialla kuvan 3.1 mukaisesti. Koordinaatit ovat

xkeh =q+lsinθ (3.4)

ja

ykeh =lcosθ, (3.5)

joissalon massakeskipisteen etäisyys akselista jaθ kehikon kulma pystyasentoon näh- den. Yhtälöissä massakeskipisteenxjaykoordinaattien muutosnopeus saadaan derivoi- malla yhtälöitä (3.4) ja (3.5) ajan suhteen. Muutosnopeuksiksi saadaan

keh =q̇ +lcos(θ)θ̇ (3.6) ja

keh =−lsin(θ)θ̇. (3.7)

(13)

Yhdistämällä paikkojen derivaatat (3.6) ja (3.7) pythagoraan lauseella saadaan

vkeh =

√︂

2keh+ẏ2keh =

√︂

(q̇ +lcos(θ)θ̇ )2+ (−lsin(θ)θ̇ )2, (3.8) jossavkeh on massakeskipisteen nopeus.

Kehikon ja renkaan massojenmkeh jamreng sekä hitausmomenttienIkeh jaIreng avulla saadaan laskettua kineettiset energiat

Ek,keh= 1

2mkehvkeh2 +1

2Ikehθ̇2 = 1

2mkeh(q̇2+ 2q̇lcos(θ)θ̇ +l2θ̇2) + 1

2Ikehθ̇2 (3.9) ja

Ek,reng = 1

2mreng2+ 1

2Irengϕ̇2

reng. (3.10)

Asetetaan potenttiaalienergianEp nollataso renkaiden akselin tasolle. Tällöin kehikon ja renkaan potentiaalienergiat ovat

Ep,keh =mkehglcosθ (3.11)

ja

Ep,reng = 0, (3.12)

joissag on putoamiskiihtyvyys.

Renkaiden pyörimisestä osa energiasta muuttuu lämmöksi ja ääneksi. Rayleighin häviön kaavalla saadaan haihtunut energia [10]

D=Doik +Dvas = 2· 1 2

breng

rreng22 = breng

r2reng2, (3.13) jossabreng kuvastaa renkaiden vaimennusvakiota.

LagrangianiLmääritellään kaavalla [11]

L=T −V, (3.14)

jossa T on systeemin kineettinen energia ja V potentiaalienergia. Sijoitetaan määritel- mään (3.14) kaavat (3.9), (3.10), (3.11) ja (3.12). Tällöin saadaan järjestelmän lagrangia-

(14)

ni

L=Ek,keh+ 2Ek,reng−Ep,keh−2Ep,reng

= (mkeh

2 +mreng+ Ireng

r2 )q̇2+ (lmkehcos(θ))q̇θ̇ + (mkehl2

2 +Ikeh

2 )θ̇2−lmkehgcos(θ). (3.15) Toisen tyyppiset Lagrangen yhtälöt (engl. Lagrange’s equations of the second kind) ener- gian häviön kanssa ovat muotoa [10][12]

d dt

∂L

∂ρ̇i − ∂L

∂ρi = Pi− ∂D

∂ρi, i= 1...n, (3.16) jossa(ρ1...ρn)ovat konfiguraatioavaruuden muuttujia jaPion kyseistä koordinaattia vas- taava geneerinen voima. Asetetaan ρ1 = q jaρ2 = θ. Tällöin yhtälöstä (3.16) saadaan kaksi liikeyhtälöä

d dt(∂L

∂q̇)−∂L

∂q = Pq− ∂D

∂q = τoikvas

r − ∂D

∂q (3.17)

ja

d dt(∂L

∂θ̇)−∂L

∂θ = Pθ− ∂D

∂θ =−(τoikvas)− ∂D

∂θ , (3.18)

joissa τoik on oikean renkaan vääntömomentti ja vastaavasti τvas vasemman renkaan vääntömomentti. Sijoitetaan kaavat (3.15) ja (3.13) yleisiin liikeyhtälöihin (3.17) ja (3.18).

Nyt saadaan liikeyhtälöt

(mkeh+ 2mreng+2Ireng

rreng )q¨ + 2breng

rreng2 q̇ +lmkehcos(θ)θ¨−lmkehsin(θ)θ̇2

= τvasoik

rreng (3.19)

ja

(lmkehcos(θ))q¨ + (mkehl2+Ikeh)θ¨−lmkehgsin(θ) = −(τvasoik), (3.20) jotka kuvaavat kaksipyöräisen käänteisheilurijärjestelmän dynamiikkaa.

Saadut liikeyhtälöt ovat epälineaarisia, joten niitä ei voida sellaisenaan käyttää säätöal- goritmin suunnitteluun [1, s. 192]. Epälineaarisuus johtuu termeistä sin(θ), cos(θ), θ̇2 ja näiden tulosta. Itsensä tasapainottavan robotin tapauksessa tutkitaan tasapainopistet- tä θ = 0eli pystyasentoa, minkä takia mallin tarkkuus halutaan taata kyseisen pisteen

(15)

läheisyydessä. Epälineaaristen termien lineaariset arviot ovat

cos(θ)≈1, sin(θ)≈θ, θ̇2 ≈0, (3.21) kun θ ≈ 0. Sijoitetaan arvot (3.21) yhtälöihin (3.19) ja (3.20), jolloin saadaan lineaariset liikeyhtälöt

(mkeh+ 2mreng+2Ireng

rreng )q¨ + 2breng

r2reng q̇ +lmkehθ¨ = τvasoik

rreng (3.22)

ja

lmkehq¨ + (mkehl2+Ikeh)θ¨−lmkehgθ=−(τvasoik), (3.23) jotka kuvaavat järjestelmän dynamiikkaa pystyasennossa ja sen välittömässä läheisyy- dessä.

3.1.2 Moottorin dynamiikka

Liikeyhtälöissä esiintyy moottorien vääntömomentit τoik ja τvas, joita ei suoraan pystytä ohjaamaan. Johdetaan renkaiden vääntömomentinτrengriippuvuus moottorille syötetystä jännitteestävs.

Moottorin häviötön vääntömomentti

τ =kti (3.24)

on suoraan verrannollinen sen läpi kulkevaan virtaani. Sähkömoottorit toimivat myöskin generaattorina, jolloin niiden tuottama jännite

vemf =keϕ̇

moot (3.25)

on suoraan verrannollinen pyörimisnopeuteen ϕ̇

moot. Käytetään verrannollisuusvakioille ktjake samaa numeerista arvoak.

Kuvan 3.2a piirikaaviosta saadaan yhtälö

vs−Rmooti−Lmoot d

dti−vemf = 0, (3.26)

jossaRmoot on moottorin sisäinen vastus jaLmootmoottorin sisäinen induktanssi. Induk- tanssi on vastukseen verrattuna pieni, joten se voidaan jättää huomiotta. Täten yhtälö (3.26) supistuu muotoon

vs−Rmooti−vemf = 0. (3.27)

(16)

Rmoot i

−+ vemf Lmoot

+

− vs

(a)Sähkömoottorin piirikaavio.

bmootϕ̇

moot

τmoot, ϕmoot

τ

Imoot

(b)Roottorin vapaakappalekuva.

Kuva 3.2. Moottorin piirikaavio ja moottorin roottorin vapaakappalekuva. Muokattu läh- teestä [9].

Ratkaistaan supistuneesta muodosta virta i ja sijoitetaan siihen yhtälö (3.25). Tällöin moottorin läpi kulkevalle viralle saadaan kaava

i= vs−vemf

Rmoot = vs−kϕ̇

moot

Rmoot . (3.28)

Sijoitetaan yhtälö (3.28) kaavaan (3.24). Nyt moottorin vääntömomentti on

τ = k

Rmootvs− k2 Rmootϕ̇

moot. (3.29)

Kuvasta 3.2b saadaan kaava

Imootϕ¨

moot+bmootϕ̇

moot+τ =τmoot, (3.30)

jossaImoot on moottorin hitausmomentti,bmoot moottorin vaimennusvakio jaτmoot moot- torin todellinen vääntömomentti.

τmoot, ϕmoot

ϕreng τreng

Ivaih

Kuva 3.3.Vaihdelaatikon vapaakappalekuva. Muokattu lähteestä [9].

Moottorilta saatava teho on sama kuin vaihdelaatikolta saatava teho, joten pätee kaava

τmootϕ̇

mootrengϕ̇

reng. (3.31)

(17)

Vaihdelaatikon välityssuhde voidaan huomioida kaavalla

ϕ̇

moot =ϕ̇

reng·nvaih, (3.32)

jossanvaihon välityssuhde. Kaavoista (3.31) ja (3.32) voidaan ratkaista moottorin todelli- sen vääntömomentin ja renkaan vääntömomentin suhde

τmoot = τreng

nvaih. (3.33)

Kuvan 3.3 sekä kaavojen (3.29), (3.30), (3.32) ja (3.33) avulla voidaan ratkaista vaihde- laatikollisen moottorin dynamiikkaa kuvaava yhtälö

(Imootn2vaih+Ivaih)ϕ¨

reng+((bmoot+ k2

Rmoot)n2vaih+bvaih)ϕ̇

rengreng = knvaih

Rmootvs. (3.34) Täten yhtälön (3.34) mukaan vaihteellisen moottorin tuottamaksi vääntömomentiksi ren- kaaseen saadaan

τreng =−(Imootn2vaih+Ivaih)ϕ¨

reng−((bmoot+ k2

Rmoot)n2vaih+bvaih)ϕ̇

reng

+ knvaih Rmoot

vs. (3.35)

Oletetaan, että moottorit ovat identtisiä, joten pätee

τvasoik = 2τreng. (3.36)

3.1.3 Lopulliset liikeyhtälöt ja tilamalli

Sijoitetaan kaavat (3.3), (3.36) ja (3.35) lineaariisiin liikeyhtälöihin (3.22) ja (3.23). Tällöin saadaan lopulliset liikeyhtälöt

(mkehrreng2

2 +mrengr2reng+Irengrreng+Imootn2vaih+Ivaih)ϕ¨

reng+ (mkehrrengl 2 )θ¨ + (breng+bmootn2vaih+k2n2vaih

Rmoot +bvaih)ϕ̇

reng = knvaih

Rmootvs (3.37)

ja

(mkehrrengl

2 −Imootn2vaih−Ivaih)ϕ¨

reng+ (mkehl2

2 +Ikeh 2 )θ¨ + (−bmootn2vaih−k2n2vaih

Rmoot −bvaih)ϕ̇

reng− mkehlg

2 θ =−knvaih

Rmootvs, (3.38) joista voidaan muodostaa LTI-tilamalli.

(18)

Tilamallin muodostamiseksi valitaan tilamuuttujiksiϕreng,θ,ϕ̇

reng jaθ̇. Tällöin tilavektori xvoidaan esittää muodossa

x=

⎣ ϕreng

θ ϕ̇

reng

θ̇

. (3.39)

Muuttujien ϕ̇

reng ja θ̇ derivaatat voidaan ratkaista yhtälöistä (3.37) ja (3.38). Saadaan matriisiyhtälö

E

⎣ ϕ¨

reng

¨θ

⎦=−F

⎣ ϕ̇

reng

θ̇

⎦−G

⎣ ϕreng

θ

⎦+Hvs

⎣ ϕ¨

reng

¨θ

⎦=−E−1F

⎣ ϕ̇

reng

θ̇

⎦−E−1G

⎣ ϕreng

θ

⎦+E−1Hvs, (3.40) jossa E2×2, F2×2, G2×2 ja H2×1 ovat matriiseja, joiden alkiot ovat yhtälöistä (3.37) ja (3.38). Täten järjestelmän tilamalli on

ẋ =

0 0 1 0

0 0 0 1

−E−1F −E−1G

⎦ x+

⎣ 0 0 E−1H

⎦ vs

y =

1 0 0 0 0 1 0 0 0 0 0 1

⎦ x.

(3.41)

Tilamallin suoravaikutusmatriisiD on nolla. Mittausmatriisista voidaan havaita, että ren- kaan kiertokulman muutosnopeuttaϕ̇

reng ei mitata. Säädön suunnittelua varten primää- ri suureeksi valikoitui θ. Tilamallista voidaan myös havaita järjestelmän olevan SIMO- järjestelmä (engl. Single Input Multiple Output), sillä ulostuloja on useita ja ohjauksia vain yksi.

3.2 Ohjattavuus

Kaksipyöräisen robotin kannalta on tärkeää tietää, onko robotin tila ohjattavissa pelkäs- tään moottoreille syötettävällä jännitteellä vs. Ohjattavuuden määrittelemiseksi jätetään mittauksetyhuomiotta.

(19)

Määritelmä 3.2.1(Ohjattavuus). Lineaarinen systeemi on ohjattava, jos ja vain jos mihin tahansa tilaan xf päästään ohjaussignaalilla u : [0, T] −→ R, T ∈ ]0,∞[ alkutilasta x(0) =x0 [1, s. 230][8, s. 816][13, s. 144].

Ohjattavuutta voidaan testata ohjattavuusmatriisilla [1, s. 232]

Wr =[︂

B AB · · · An−1B ]︂

, (3.42)

jossaAjaBovat tilamallin (3.2) matriiseja jantilojen lukumäärä. Tilamatriisipari(A,B) on ohjattavissa, mikäli ohjattavuusmatriisin aste on sama kuin tilojen lukumäärä.

Dorfin ja Bishopin mukaan [8, s. 816] ohjattavuudesta seuraa järjestelmän stabiloitavuus.

Täten kaikki lineaariset, myös epästabiilit, ohjattavat systeemit on mahdollista stabiloida.

3.3 Tilatakaisinkytketty säätö

Tilatakaisinkytkennällä tarkoitetaan järjestelmän tilan x negatiivista takaisinkytkemistä asetusarvosignaaliin. Tilatakaisinkytketyllä säädöllä pyritään ajamaan järjestelmän tilax haluttuun asetusarvoon (servotehtävä) ja pysymään siinä häiriöistä huolimatta (reguloin- titehtävä). Asetusarvon ollessa nolla puhutaan regulaattorista, joka pyrkii ajamaan tilanx arvot nolliin. Regulaattorin rakenne on esitelty kuvassa 3.4. Regulointi- ja servotehtävän lisäksi tilatakaisinkytkennältä vaaditaan järjestelmän stabiiliutta [1, s. 238].

Kuva 3.4.Täyden tilan tilatakaisinkytkennän lohkokaavio ilman asetusarvosignaalia.

Lineaarinen täyden tilan tilatakaisinkytketä säätölaki määrittää, miten ohjausulasketaan järjestelmän tilasta x. Lineaarinen säätölaki voidaan regulaattorin tapauksessa esittää

(20)

muodossa

u =−Kx, (3.43)

jossa u on ohjaus, Km×n tilatakaisinkytkentävahvistus ja x järjestelmän tila. Tilatakai- sinkytkentävahvistus K pyritään valitsemaan niin, että järjestelmälle asetetut vaatimuk- set toteutuvat. Usein voidaan kiinnittää tarkempaa huomiota järjestelmän askelvasteen nousuaikaan, ylitykseen tai asettumisaikaan. Kaikkiin näihin ominaisuuksiin voidaan vai- kuttaa asettelemalla suljetun järjestelmän ominaisarvot haluttuihin paikkoihin kompleksi- tasossa [1, s. 239][13, s. 234].

3.4 LQR

Ominaisarvojen sopiva valitseminen voi olla tavoitteiden näkökulmasta haastavaa, eikä haluttua dynamiikkaa välttämättä saavuteta. Lisäksi lopullinen valinta voi sisältää kom- promisseja eri vaatimuksien väliltä. LQR eli Linear Quadratic Regulator -menetelmä on yksi tapa laskea optimaalinen tilatakaisinkytkentävahvistus. Menetelmä minimoi alla ole- vaa neliöllistä kustannusfunktiota: [1, s. 256][13, s. 238][14, s. 11][15, s.60]

J =

∫︂ T t0

[xTQx+uTRu]dt, (3.44)

jossa Qn×n on symmetrinen positiivinen semidefiniitti matriisi ja Rm×m on symmetri- nen positiivinen definiitti matriisi. Kustannusfunktio sakottaa nollasta poikkeavia tiloja ja ohjauksia. Regulaattorin suunnittelussa halutaan lopputilan x(T)olevan nolla. Mikäli T on äärellinen puhutaan äärelisen horisontin ongelmasta, kun taas T:n ollessa ääretön, on kyseessä äärettömän horisontin ongelma. Työssä tarkastellaan äärettömän horisontin ongelmaaT → ∞, sekä oletetaan matriisienQ,RjaK olevan aikainvariantteja.

KustannusfunktionJ minivoivaK saadaan kaavasta

K =R−1BTS, (3.45)

jossaS onalgebrallisen Riccati-yhtälön(engl. algebraic Riccati equation) [1, s. 256]

ATS +SA−SBR−1BTS +Q=O (3.46)

ratkaisu. Yhtälö (3.46) voidaan ratkaista MATLABilla.

Tilasäätäjän suunnittelussa LQR-menetelmällä on olennaista, miten matriisitQjaRva-

(21)

litaan. Yksinkertainen valinta on käyttää diagonaalipainoja [1, s. 257]

Q=

⎣ q1

. . . qn

, R=

⎣ r1

. . . rm

. (3.47)

KasvattamallaQ:n diagonaalipainojen arvoja, pyrkii säätölaki pitämään ulostulon läheillä tasapainoarvoja välittämättä ohjauksen käyttäytymisestä. Toisaalta jos painotetaan paljon ohjausta, säädöstä tulee konservatiivista, koska isoista ohjausarvoista sakotetaan paljon.

(22)

4. TILASÄÄTÄJÄN SUUNNITTELU JA TESTAUSTULOKSET

Tässä luvussa esitellään, miten tilasäätäjä suunnitellaan alaluvussa 2.3 kuvatulle kaksi- pyöräiselle käänteisheilurijärjestelmälle. Suunnittelu on tehty luvun 3 menetelmillä. Lo- puksi esitellään myös säädetyn käänteisheilurijärjestelmän testaustulokset.

4.1 Tilasäädön suunnittelu

Säädön suunnittelu aloitetaan tilamallista (3.41). Jotta voidaan varmistua järjestelmän olevan stabiloitavissa, on varmistuttava sen ohjattavuudesta. Tutkitaan mallin (3.41) oh- jattavuutta kaavalla (3.42). Ohjattavuusmatriisi ja sen aste ovat:

rank(Wr) = rank(

0 11 −186 3232

0 −5 80 −1610 11 −186 3232 −56234

−5 80 −1610 27974

⎦ ) = 4.

Koska ohjattavuusmatriisi on täysiasteinen, on malli (3.41) ohjattava.

Seuraavaksi mitoitetaan tilatakaisinkytkentävahvistus K LQR-menetelmällä. Käytetään kaavan (3.47) mukaisia painomatriiseja. Koska (3.41) on SIMO-järjestelmä, onRskalaari.

Painomatriiseiksi on valittu

Q=

⎣ 1

20 1

1

ja

R = 1.

(23)

Painokertoimet on valittu simulaatiotulosten ja fyysisten kokeilujen perusteella. Kehikon poikkeaman pystyasennosta pitäminen läheillä nollaa on robotin pystyssä pysymisen kan- nalta tärkeintä. Tästä syytä matriisiQon valittu niin, että suurin painokerroin onθ:n koh- dalla. Täten valinta sakottaa eniten robotin kehikon poikkeamaa pystyasennosta, pitäen θ:n läheillä nollaa.R:n valinta ykköseksi osoittautui toimivaksi ratkaisuksi.

Tilatakaisinkytkentävahvistus lasketaan MATLABin lqr-komennolla, jolle annetaan para- metriksi matriisitA,B,QjaR. Tilatakaisinkytkentävahvistukseksi saadaan

K =[︂

−1,4142 −98,7944 −4,1605 −14,1922 ]︂

.

Säätäjä vahvistaa kulmanθpoikkeamaa eniten, koska sen vahvistuskertoimen itseisarvo on kaikista suurin. Tästä seuraa, että robotti pyrkii ensisijaisesti tasapainottamaan itsen- sä.

4.2 Mittaukset ja suotimet

Säädön suunnittelussa pitää huomioida mikrokontrollerin olevan diskreettiaikainen järjes- telmä. Tässä työssä Arduino MKR 1000 on rajoitettu suorittamaan koodia tietyllä näytteis- tysajalla h. Näytteistysajaksi on valittu 10 ms. Näytteistysaika on todettu riittäväksi, sillä sen Nyquistin taajuus onfN = 2h1 = 50 Hz, joka on tarpeeksi korkea tälle sovellukselle.

Tällä näytteistysajalla mitataan robotin kulmaa sekä kulmanopeutta.

Moottorien enkooderit ovat inkrementaalisia enkoodereita eli ne lähettävät signaalin aina kun akseli pyörähtää tietyn verran, tässä noin 0,27°. Tätä signaalia ei voida mitata näyt- teistysajalla vaan sen mittauksessa käytetään keskeytyksiä (engl. interrupts). Aina kun Arduino havaitsee signaalin tulevan enkooderilta, se keskeyttää muun koodin juoksemi- sen ja kasvattaa laskurin arvoa. Laskurin arvosta lasketaan renkaiden kiertokulmaϕreng muiden mittauksien lukemisen yhteydessä. Keskeytykset on kuitenkin poistettu muiden mittauksien lukemisen sekä moottorien ohjaamisen ajaksi, jottei keskeytys vaikuttaisi näi- den toimintojen suorittamiseen.

Kuten tilamallin (3.41) yhteydessä todetaan, ei kaikkia tiloja mitata. Mittaamatta jää kään- teisheilurin renkaiden kiertokulman muutosnopeusϕ̇

reng. Puuttuvat tilat voitaisiin estimoi- da täydentilan estimaattorilla, mutta koska puuttuva tila on olemassa olevan tilan muu- tosnopeus, voidaan se tuottaa suodattamalla renkaiden kiertokulmaaϕrengylipäästösuo- timella (engl. high-pass filter). Käytännössä ϕ̇

reng on laskettu derivaatalla, jota on suo- datettu alipäästösuotimella (engl. low-pass filter). Diskreettiaikainen derivaatta voidaan laskea kaavalla

ϕ̇

reng[n] = ϕreng[n]−ϕreng[n−1]

h , (4.1)

jossa ϕreng[n] on tämän hetkinen arvo ja ϕreng[n −1]ajan h takainen arvo. Alipäästö-

(24)

suotimen mitoitusta varten on renkaan kiertokulmadataa mitattu ja derivoitu kaavan (4.1) avulla. Tälle datalle on suoritettu DFT (Discrete Fourier Transform), joka esittää signaalin taajuussisällön. Taajuussisällöstä on valittu rajataajuus, joita suurempia taajuuksia suo- datetaan pois alipäästösuotimella. Rajataajuudeksi on valittufϕ̇

reng,cut−of f = 0,5 Hz. Ali- päästösuotimen diskreettiaikainen toteutus on tehty Windowed-Sinc -suotimella [16, s.

285]. Kyseistä suodinta käytetään myös kiihtyvyysanturilta saadun kulman θk suodat- tamiseen, sillä se sisältää paljon häiriötä. Suotimen rajataajuudeksi kulmalle on valittu fθk,cut−of f = 1 Hz.

Kulman mittauksen tarkkuutta on lisätty yhdistämällä mittaustieto kulmasta θk sekä kul- manopeudestaθ̇

g. Yhdistäminen on toteutettu komplementaarisuotimella, jota käytetään yleensä robottilennokkien asennon arvioinnissa [17, s. 4]. Komplementaarisuotimen ylei- nen rakenne on esitelty kuvassa 4.1a. Komplementaarisuotimen yleisessä rakenteessa on kaksi suodinta, jotka ovat toistensa komplementteja niin, ettäG(s) +G(s) = 1. Suo- timeksiG(s)on valittu ylipäästösuodin, jolla suodatetaan integroitua gyroskoopin mittaa- maa kulmanopeuttaθ̇g. Tämä rakenne on esitelty kuvassa 4.1b.

(a) Yleinen komplementaarisuodin, jossaG(s) on suodin jaG(s)sen komplementti.

(b)Kulman estimointiin sopiva komplementaari- suodin.

(c)Redusoitu komplementaarisuodin kulman mittaukselle.

Kuva 4.1

Lohkokaaviosta 4.1b kuitenkin huomataan, että se voidaan redusoida muotoon 4.1c.

Redusoitu muoto on helposti toteutettavissa diskreettiaikaiseen Arduinoon. Redusoituun

(25)

komplementaarisuotimeen syötetään gyroskoopin mittaamaθ̇gsekä kiihtyvyysanturin mit- tauksista laskettu θk. Kiihtyvyysanturilta saatua kulmaaθk on suodatettu ennen komple- mentaarisuodinta, kuten aiemmin todettiin.

4.3 Testaustulokset

Kun kaikki tilat on mitattavissa tai laskettavissa toisista tiloista, voidaan ohjaus ulaskea kaavan (3.43) avulla. Ohjauksen arvoksi saadaan moottoreille syötettävä jännitevs. Liit- teessä C on esitelty Arduino-koodin toteutus.

Alkuarvotestiä varten robotin aloituskulmaksi on asetettu 20°. Tässä tilassa ainoastaan nollasta poikkeaa robotin kulmaθ. Kuten videolla [18] näkyy, robotti siirtää pyörien akse- lin nopeasti kehikon massakeskipisteen alle. Korjausliikkeen seurauksena robotin poik- keama aloitusasemasta on noin 6,5 cm. Poikkeama vastaa hyvin simulaatiotuloksia vas- taavasta tilanteesta, vaikka simuloinnissa käytetyn mallin parametreissä on virheitä. Al- kuarvotestin simulaatiotulokset on esitelty kuvassa 4.2.

Kuva 4.2.Simulaatiotulokset häiriön kanssa. Vasemmalla ylhäällä robotin paikkaqja sen alla poikkeama pystyasennostaθ. Näiden kuvaajien oikealla puolella on niiden muutos- nopeudet. Alussa kulmaθon 20°. Simulaatioaika on 20 s.

Robotti kestää ulkoista häiriötä testauksen rajoissa todella hyvin. Testausmenetelmänä käytettiin lyhyitä tökkäyksiä sormella robotin kehikon yläosaan. Robotin vasteita näihin impulsseihin näkyy videolla [19]. Lyhyt impulssi robotin yläosaan pakottaa robotin siirty- mään pidemmän matkan, kuin alkuarvotestissä, säilyttääkseen tasapainon. Näissä tilan- teissa yläosan hitaampi dynamiikka auttaa, sillä alaosa kerkeää nopeasti yläosan alle.

Tämän jälkeen robotti siirtyy takaisin aloitusasemaansa. Impulssin keston lisääminen vai-

(26)

keuttaa tasapainoasemaan palaamista huomattavasti. Tällöin robotin vauhti kasvaa niin, ettei akseli kykene enää saavuttamaan tarpeeksi suurta vauhtia päästäkseen yläosan alle. Tästä seuraa kiihdyttäminen kaatumisen suuntaan, kunnes robotti lopulta kaatuu.

Testauksien aikana huomattiin robotin kääntyvän ajan kuluessa. Tämä todennäköisesti johtuu robotin moottoreiden erilaisuudesta. Moottoreiden kynnysjännitteet, joilla ne alka- vat pyöriä, ovat erisuuret. Lisäksi moottoreissa on hystereesiä, joka myös aiheuttaa ky- seistä käyttäytymistä.

(27)

5. YHTEENVETO

Työn tavoitteena oli mallintaa itse rakennetulle kaksipyöräiselle mobiilirobotille liikeyhtälöt ja suunnitella niiden perusteella lineaarinen tilatakaisinkytketty säätö. Samalla tutustut- tiin käänteisheilurijärjestelmiin sekä niiden sovelluskohteisiin. Sovelluskohteita löytyi niin lääketieteestä kuin kappaleiden reagoinnista maanjäristyksiin. Käänteisheilurijärjestelmät ovat myös säilyttäneet asemansa säätötekniikan suorituskykytesteinä jo pitkään. Uusia ja joskus monimutkaisiakin säätömenetelmiä testataan käänteisheilurijärjestelmillä.

Tutkielmaa varten tehty suunnittelutyö oli luonteeltaan laaja ja haastava, joten sen tiivis- täminen siistiin ja selkeään muotoon osoittautui hankalaksi. Ylitsepääsemättömäksi on- gelmaksi myös osoittautui moottorien puutteelliset datalehdet. Puuttuvat parametrit jou- duttiin arvioimaan, joten oli välttämätöntä päätyä kompromisseihin. Simulaatiotuloksilla päästiin läheille todellisuutta, vaikka parametreihin jäi selviä virheitä. Näistä yksi oli moot- toreiden vääntömomenttivakion arvo, joka jouduttiin pienentämään kymmenesosaan si- mulointimallin toimimiseksi. Toisaalta takaisinkytkentä linearisoi ja takaisinkytketty järjes- telmä on yleensä epäherkkä mallin parametrien muutoksille.

Tasapainottamisen saavuttamiseksi valittiin säätömenetelmäksi täyden tilan tilatakaisin- kytkentä. Tilatakaisinkytkennän tiloksi valikoitui robotin kehikon kulma ja kulmanopeus sekä renkaiden kiertokulma ja kiertokulmanopeus. Koska tiloiksi on valittu muiden tilojen muutosnopeuksia, muistuttaa tilatakaisinkytkentä kahden PD-säätimen säätölakia. Tilata- kaisinkytkentä on hyvin tutkittu ja teorialtaan selkeä takaisinkytketyn säädön menetelmä.

Vaikka johdettu tilamalli olikin parametrien vuoksi virheellinen, saatiin LQR-menetelmällä viritettyä toimiva tilatakaisinkytkentävahvistus. Toimivaan ratkaisuun pääseminen kuiten- kin vaati useita iteraatioita ja kokeiluja robotilla ennen toimivan ratkaisun löytymistä. Li- säksi Arduinon suorittamaa koodia muutettiin useasti testauksien välissä suorituskyvyn parantamiseksi.

Suorituskykyä pyrittiin parantamaan suotimien lisäämisellä mittauksille. Niiden virittämi- nen ei aina kuitenkaan ole ilmiselvää tai helppoa. DFT auttaa suotimen rajataajuuden va- litsemisessa, mutta sekään ei aina takaa toimivaa ratkaisua. Suotimien toteutus on myös haastavaa diskreettiaikaiseen Arduinoon.

Vaikka malliparametreissa oli epävarmuutta ja mallin oikeellisuudesta ei ole varmuutta, robotti saatiin onnistuneesti tasapainottelemaan. Saavutettu takaisinkytkennän suoritus-

(28)

kyky on yllättävän hyvä ottaen huomioon edellämainitut epävarmuudet. Robotti pystyi säilyttämään pystyasennon ja kykeni palautumaan sen yläosaan kohdistetuista häiriöim- pulsseista. Tutkielmassa käytetyt menetelmät ovat toimivia, mutta komponenttien laadun ja niistä olevan tiedon puutteen vuoksi tulokset jäivät epäluotettaviksi tai vaikeasti toistet- taviksi.

Työhön jäi useita jatkokehitysmahdollisuuksia. Koska moottorit eivät ole identtisiä, robot- ti kaartaa yrittäessään edetä suoraan. Tämä ongelma johtuu todennäköisesti moottorien hystereesistä, ja sitä voisi lähteä korjaamaan lisäämällä PID-säätimen pitämään renkai- den välisen kiertokulman erotuksen nollassa. Toinen vaihtoehto voisi olla ottaa tilatakai- sinkytkennässä huomioon kolmas vapausaste. Tällöin pitäisi mitata robotin kiertokulmaa kuvan 3.1y-akselin ympäri. Robotin kääntyminen tavalla tai toisella olisi lisättävä, jos ro- bottia haluaa ohjata etäältä. Arduino MKR 1000 kykenee Wi-Fi protokollaan, joten sen kanssa voisi kommunikoida kyseiseen protokollaan kykenevällä laitteella. Tulevaisuuden kannalta voisi myös harkita moottoreiden vaihtamista sellaisiin, joiden datalehdestä sel- viäisi puuttuvat parametrit. Täten tilamallin oikeellisuus paranisi ja simulointituloksista voi- si tulla merkittävämpiä.

(29)

LÄHTEET

[1] K. J. Åström and R. M. Murray,Feedback Systems: An Introduction for Scientists and Engineers. Princeton, NJ: Princeton University Press, 2020, 573 pp.

[2] O. Boubaker and R. Iriarte,The Inverted Pendulum in Control Theory and Robotics:

From theory to new innovations. Stevenage: The Institution of Engineering and Technology, 2018,ISBN: 9781785613203.

[3] P. Morasso, A. Cherif and J. Zenzeri, “Quiet standing: The single inverted pendulum model is not so bad after all”,PloS one, vol. 14, no. 3, e0213870–e0213870, 2019,

ISSN: 1932-6203.

[4] M. F. Vassiliou, S. Burger, M. Egger, J. A. Bachmann, M. Broccardo and B. Stojadi- novic, “The three-dimensional behavior of inverted pendulum cylindrical structures during earthquakes”, Earthquake engineering and structural dynamics, vol. 46, no. 14, pp. 2261–2280, 2017,ISSN: 0098-8847.

[5] H. Rouhani, M. Same, K. Masani, Y. Q. Li and M. R. Popovic, “Pid controller design for fes applied to ankle muscles in neuroprosthesis for standing balance”,Frontiers in neuroscience, vol. 11, pp. 347–347, 2017,ISSN: 1662-4548.

[6] D. J. Block, K. J. Åström and M. W. Spong,The Reaction Wheel Pendulum, 1. San Rafael, California: Morgan and Claypool Publishers, 2007, vol. 1.ISBN: 9781598291957.

[7] O. Boubaker, “The inverted pendulum benchmark in nonlinear control theory: A survey”,International journal of advanced robotic systems, vol. 10, no. 5, pp. 233–, 2013,ISSN: 1729-8806.

[8] R. C. Dorf and R. H. Bishop,Modern control systems (13th ed.)Harlow : Pearson, 2017, 1025 pp.

[9] P. Frankovský, L. Dominik, I. V. Gmiterko, P. Kurylo and O. Perminova, “Modeling of two-wheeled self-balancing robot driven by dc gearmotors”, International Journal of Applied Mechanics and Engineering, vol. 22, no. 3, pp. 739–747, 2017.

[10] H. Goldstein, Classical mechanics, eng, 3rd ed., ser. Addison-Wesley series in physics. San Francisco: Addison-Wesley, 2002,ISBN: 0-201-65702-3.

[11] R. Rennie and J. Law, A Dictionary of Physics (8th ed.)Oxford University Press, 2019.

[12] Lagrange equations (in mechanics), Encyclopedia of mathematics, Jun. 5, 2018.

[Online]. Available: http://encyclopediaofmath.org/index.php?title=

Lagrange_equations_(in_mechanics)&oldid=47555(visited on 10/22/2021).

(30)

[13] C.-T. Chen,Linear system theory and design, eng, 3rd ed., ser. The Oxford series in electrical and computer engineering. Oxford University Press, 1999, ISBN: 1- 61344-115-0.

[14] B. D. O. Anderson and J. B. Moore, Optimal control: linear quadratic methods.

Mineola, N.Y.: Dover Publications, 2007, 448 pp.,ISBN: 978-0-486-45766-6.

[15] Z. Li, Advanced Control of Wheeled Inverted Pendulum Systems, 1st ed. 2013.

London: Springer London, 2013,ISBN: 1-4471-2963-6.

[16] S. W. Smith,Digital signal processing : a practical guide for engineers and scien- tists, 1st edition, ser. Demystifying technology series. Newnes, 2003,ISBN: 1-281- 77196-1.

[17] P. Narkhede, S. Poddar, R. Walambe, G. Ghinea and K. Kotecha, “Cascaded complementary filter architecture for sensor fusion in attitude estimation”,Sensors (Basel, Switzerland), vol. 21, no. 6, pp. 1937–, 2021,ISSN: 1424-8220.

[18] S. Käki. (2021). ”Testi 30 11 2021 Alkuarvovaste,” Youtube, url:https://youtu.

be/2-JACwSYu8A(viitattu 14. 01. 2022).

[19] ——, (2021). ”Testi 30 11 2021 Häiriövaste,” Youtube, url:https://youtu.be/

hJ1VlQ_30EU(viitattu 14. 01. 2021).

(31)

LIITE A: RÄJÄYTYSKUVA

Kuva A.1.Räjäytyskuva mobiilista kaksipyöräisestä käänteisheilurista. Kuva tuotettu So- lidworks Education Edition ohjelmalla.

(32)

LIITE B: KYTKENTÄKAAVIO

Kuva B.1.Kytkentäkaavio

(33)

LIITE C: ARDUINO KOODI

1 # include <MPU6050 . h>

2 # include <Wire . h>

3 # include <math . h>

4 # include <cppQueue . h>

5 # include < B a s i c L i n e a r A l g e b r a . h>

6

7 # de fi ne FORWARD 1 8 # de fi ne BACKWARD −1 9 # de fi ne STOP 0 10

11 i n t M = 1 5 ;

12 cppQueue thetaQ = cppQueue (s i z e o f(double) , M, FIFO , t r u e ) ; 13 cppQueue velocQ = cppQueue (s i z e o f(double) , M, FIFO , t r u e ) ; 14 double h _ l p _ t h e t a [ ] = {

15 0 . 0 1 4 7 , 0 . 0 2 8 6 , 0 . 0 4 9 0 , 0 . 0 7 2 6 , 0 . 0 9 5 1 , 16 0 . 1 1 2 7 , 0 . 1 2 2 4 , 0 . 1 2 2 4 , 0 . 1 1 2 7 , 0 . 0 9 5 1 , 17 0 . 0 7 2 6 , 0 . 0 4 9 0 , 0 . 0 2 8 6 , 0 . 0 1 4 7 , 0 . 0 0 9 8 18 } ;

19 double h _ l p _ v e l o c [ ] = {

20 0 . 0 1 4 7 , 0 . 0 2 8 6 , 0 . 0 4 9 0 , 0 . 0 7 2 6 , 0 . 0 9 5 1 , 21 0 . 1 1 2 7 , 0 . 1 2 2 4 , 0 . 1 2 2 4 , 0 . 1 1 2 7 , 0 . 0 9 5 1 , 22 0 . 0 7 2 6 , 0 . 0 4 9 0 , 0 . 0 2 8 6 , 0 . 0 1 4 7 , 0 . 0 0 9 8 23 } ;

24

25 MPU6050 mpu ;

26 i n t 1 6 _ t accX , accY , accZ , gyX , gyY , gyZ ; 27

28 double t h e t a = 0 . 0 ; // rad 29 double omega = 0 . 0 ; // rad/s 30 double prev_omega = 0 . 0 ;

31 double pos = 0 . 0 ; // m 32 double prev_pos = 0 . 0 ;

(34)

33 double v e l = 0 . 0 ; // m/s 34

35 double comp_theta = 0 . 0 ; // deg 36 double prev_comp_theta = 0 . 0 ; 37

38 unsigned long timeNow = 0 ;

39 unsigned long d t = 10000; // µs = 10ms 40

41 // Encoders

42 const i n t encA [ ] = { 5 , 0 } ; 43 const i n t encB [ ] = { 4 , 1 } ; 44 // Motor control

45 const i n t pwm [ ] = { 1 9 , 1 8 } ; 46 const i n t i n 1 [ ] = { 2 0 , 2 } ; 47 const i n t i n 2 [ ] = { 2 1 , 3 } ; 48

49 v o l a t i l e long i n t q [ ] = { 0 , 0 } ; 50

51 double p h i = 0.2694 * 5.1 / 3 4 . ; 52

53 // Control variables (Matrices) 54 BLA : : M a t r i x <1> u ;// = 0 ;

55 BLA : : M a t r i x <4 ,1 > y = { 0 , 0 , 0 , 0 } ;

56 BLA : : M a t r i x <1 ,4 > K = { −1.4142 , −98.7944 , −4.1605 , −14.1922 } ; 57

58

59 void se tup ( ) { 60

61 S e r i a l . be gin ( 1 1 5 0 0 ) ; 62 Wire . be gin ( ) ;

63

64 mpu . i n i t i a l i z e ( ) ; 65

66 while( ! mpu . t e s t C o n n e c t i o n ( ) ) { 67 d e l a y ( 5 0 0 ) ;

68 }

69

70 mpu . s e t X A c c e l O f f s e t ( − 5 9 5 8 ) ; 71 mpu . s e t Y A c c e l O f f s e t ( 1 7 7 8 ) ; 72 mpu . s e t Z A c c e l O f f s e t ( 1 0 4 4 ) ;

(35)

73 mpu . s e t X G y r o O f f s e t ( 1 5 ) ; 74 mpu . s e t Y G y r o O f f s e t ( − 2 1 ) ; 75 mpu . s e t Z G y r o O f f s e t ( 5 7 ) ; 76

77 // Set motor control pinmodes 78 f o r (i n t i = 0 ; i < 2 ; i ++) { 79 pinMode ( encA [ i ] , INPUT ) ; 80 pinMode ( encB [ i ] , INPUT ) ; 81 pinMode (pwm[ i ] , OUTPUT ) ; 82 pinMode ( i n 1 [ i ] , OUTPUT ) ; 83 pinMode ( i n 2 [ i ] , OUTPUT ) ;

84 }

85

86 //attachInterrupt(digitalPinToInterrupt(encA[0]), readEncoder<0>, RISING);

87 a t t a c h I n t e r r u p t ( d i g i t a l P i n T o I n t e r r u p t ( encA [ 1 ] ) , readEncoder <1 > , RISING ) ; 88

89

90 // Turn off motors - Initial state

91 s e t M o t o r (STOP, 0 , pwm[ 0 ] , i n 1 [ 0 ] , i n 2 [ 0 ] ) ; 92 s e t M o t o r (STOP, 0 , pwm[ 1 ] , i n 1 [ 1 ] , i n 2 [ 1 ] ) ; 93

94 // 2s delay

95 f o r (i n t i = 0 ; i < 2 *100; i ++) { 96 readSensors ( ) ;

97 d e l a y ( 1 0 ) ;

98 }

99 } 100

101 t e m p l a t e <i n t j >

102 void readEncoder ( ) {

103 i n t b = d i g i t a l R e a d ( encB [ j ] ) ; 104 i f ( b > 0 ) {

105 q [ j ] + + ;

106 }

107 else {

108 q [ j ] − − ;

109 }

110 } 111

112 void readSensors ( ) {

(36)

113

114 mpu . g e t M o t i o n 6 (& accX , &accY , &accZ , &gyX , &gyY , &gyZ ) ; 115

116 // Theta from accelerometer

117 double t 1 = atan2 ( accX , accZ ) ; // rad 118 thetaQ . push (& t 1 ) ;

119

120 prev_pos = pos ;

121 pos = q [ 1 ] * phi / 3 6 0 ; 122

123 double t 2 = ( pos − prev_pos ) / ( d t * 1 . e − 6 ) ; 124 velocQ . push (& t 2 ) ;

125

126 // low pass 127 t h e t a = 0 . 0 ; 128 v e l = 0 . 0 ; 129 double v a l 1 ; 130 double v a l 2 ;

131 f o r (i n t i = 0 ; i < M; i ++) { 132 thetaQ . peekIdx (& v a l 1 , i ) ; 133 t h e t a += h _ l p _ t h e t a [ i ] * val1 ; 134

135 velocQ . peekIdx (& v a l 2 , i ) ; 136 v e l += h _ l p _ v e l o c [ i ] * val2 ;

137 }

138

139 s t a t i c double b = 0 . 0 2 5 ;

140 omega = prev_omega − ( b * ( prev_omega − gyY / 1 3 1 ) ) ; 141 prev_omega = omega ;

142

143 s t a t i c double c = 0 . 9 7 5 ;

144 comp_theta = c *( −gyY/131 * (double) ( d t * 1. e−6) + prev_comp_theta ) 145 + ( 1 . − c ) * t h e t a *180/ M_PI ;

146 prev_comp_theta = comp_theta ; 147

148 y ( 0 ) = pos ; //

149 y ( 1 ) = comp_theta * M_PI / 1 8 0 ; // rad 150 y ( 2 ) = v e l ; //

151 y ( 3 ) = −omega * M_PI / 1 8 0 ; // rad/s 152 }

(37)

153

154 void s e t M o t o r (i n t d i r , i n t pwmVal , i n t pwm, i n t i n 1 , i n t i n 2 ) { 155

156 i f ( d i r == FORWARD) { 157 d i g i t a l W r i t e ( i n 1 , HIGH ) ; 158 d i g i t a l W r i t e ( i n 2 , LOW) ;

159 }

160 else i f ( d i r == BACKWARD) { 161 d i g i t a l W r i t e ( i n 1 , LOW) ; 162 d i g i t a l W r i t e ( i n 2 , HIGH ) ;

163 }

164 else {

165 d i g i t a l W r i t e ( i n 1 , LOW) ; 166 d i g i t a l W r i t e ( i n 2 , LOW) ;

167 }

168 a n a l o g W r i t e (pwm, pwmVal ) ; 169

170 } 171

172 i n t C o n t r o l ( ) { 173

174 // Compute control variable 175 u = − K * y ;

176

177 // Saturation 178 i f ( u ( 0 ) > 12) { 179 u ( 0 ) = 1 2 ;

180 }

181 else i f ( u ( 0 ) < −12) { 182 u ( 0 ) = −12;

183 }

184

185 // Signal to motors

186 i n t d u t y = u ( 0 ) * 2 5 5 . 0 / 1 2 . 0 ; 187 i f ( d u t y > 0 ) {

188 s e t M o t o r (FORWARD, duty , pwm[ 0 ] , i n 1 [ 0 ] , i n 2 [ 0 ] ) ; 189 s e t M o t o r (FORWARD, duty , pwm[ 1 ] , i n 1 [ 1 ] , i n 2 [ 1 ] ) ;

190 }

191 else i f ( d u t y < 0 ) {

192 s e t M o t o r (BACKWARD, abs ( d u t y ) , pwm[ 0 ] , i n 1 [ 0 ] , i n 2 [ 0 ] ) ;

(38)

193 s e t M o t o r (BACKWARD, abs ( d u t y ) , pwm[ 1 ] , i n 1 [ 1 ] , i n 2 [ 1 ] ) ;

194 }

195 else {

196 s e t M o t o r (STOP, 0 , pwm[ 0 ] , i n 1 [ 0 ] , i n 2 [ 0 ] ) ; 197 s e t M o t o r (STOP, 0 , pwm[ 1 ] , i n 1 [ 1 ] , i n 2 [ 1 ] ) ;

198 }

199

200 // Stop motors if too much tilt 201 i f ( y ( 1 ) > . 9 | | y ( 1 ) < − . 9 ) {

202 s e t M o t o r (STOP, 0 , pwm[ 0 ] , i n 1 [ 0 ] , i n 2 [ 0 ] ) ; 203 s e t M o t o r (STOP, 0 , pwm[ 1 ] , i n 1 [ 1 ] , i n 2 [ 1 ] ) ; 204 while( 1 ) { } ;

205 }

206 } 207 208

209 void l o o p ( ) {

210 timeNow = m i c r o s ( ) ; 211

212 n o I n t e r r u p t s ( ) ; 213 readSensors ( ) ; 214 C o n t r o l ( ) ; 215 i n t e r r u p t s ( ) ; 216

217 while ( m i c r o s ( ) < timeNow + d t ) { } 218 }

Ohjelma C.1.Kaksipyöräisen käänteisheilurijärjestelmän koodin toteutus.

Viittaukset

LIITTYVÄT TIEDOSTOT

Tämän vuoksi tässä työssä pyrin antamaan selvyyttä siihen miten asuntosijoittaminen yksityishenkilönä eroaa siitä, että sijoitustoimintaa toteutetaan

Ostin kytken- nän testaamista varten P-kanavaiseksi fetiksi NXP BSP250 (BSP250. 2010.) Kytkennässä ilmeni kuitenkin pieni ongelma. PWM signaalia vastaavaa jännitettä

Maailmakoordinaatisto on robotin työskentely-ympäristöön, esimerkiksi rakennukseen, kuljettimeen tai robotin oheislaitteisiin sidottu robotin ulkopuolinen koordinaatisto

Maailmakoordinaatisto on robotin työskentely-ympäristöön, esimerkiksi rakennukseen, kuljettimeen tai robotin oheislaitteisiin sidottu robotin ulkopuolinen koordinaatisto

Lisäksi työssä selvitetään mitkä toimittajat ovat avaintoimittajia, sekä toimittajien toimitusvarmuuden vaikutus yrityksen toi- mitusvarmuuteen.. Työ toteutetaan

Ammattiosaamisen näytöt toteutetaan koulutuksen aikana ja ne ovat työelämän kanssa yhdessä.. suunniteltu, toteutettu ja arvioitu

Prekaariuden erityiskysymyksiä työoikeuden näkökulmasta on tarkastellut muun muassa Marjo Ylhäinen (2015) väitöskirjassaan. Työoikeuden kontekstissa

Toimeksiantaja saa työstä tietoa tämän päivän polttavista puheenaiheista, jotka ovat itsensä johta- minen, motivaatio työssä sekä itsensä kehittäminen. Lisäksi työ