24
SVEU ˇ CILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RA ˇ CUNARSTVA ZAVRŠNI RAD br. 4391 Autonomno uspinjanje mobilnog robota po stubama Sabrina Eugenie Miškulin Zagreb, lipanj 2016.

Autonomno uspinjanje mobilnog robota po stubama · 2016-07-14 · i dinamicki opis, vizualnu reprezentaciju i kolizijski model robota.ˇ 3.1.2. Model robota Nekoliko stvari su nam

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

SVEUCILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RACUNARSTVA

ZAVRŠNI RAD br. 4391

Autonomno uspinjanje mobilnogrobota po stubama

Sabrina Eugenie Miškulin

Zagreb, lipanj 2016.

Zahvaljujem se prof. dr. sc. Ivanu Petrovicu i asistentu mag. ing. Kruni Lencu

iii

SADRŽAJ

1. Uvod 1

2. Mobilna platforma Guardian 22.1. Fizicke karakteristike robota . . . . . . . . . . . . . . . . . . . . . . 3

2.2. Senzori korišteni na robotu . . . . . . . . . . . . . . . . . . . . . . . 4

2.3. Programska podrška . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.3.1. Simulator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3. Sinteza algoritma upravljanja 83.1. Simulacija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.1.1. SDF i URDF Modeliranje . . . . . . . . . . . . . . . . . . . 9

3.1.2. Model robota . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.1.3. Model okolišta . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2. O algoritmu upravljanja . . . . . . . . . . . . . . . . . . . . . . . . . 14

4. Rezultati 174.0.1. Eksperiment u simulatoru . . . . . . . . . . . . . . . . . . . 17

4.0.2. Eksperiment na stvarnom robotu . . . . . . . . . . . . . . . . 17

5. Zakljucak 18

Literatura 19

iv

1. Uvod

Mobilni roboti tijekom zadnjeg desetljeca igraju sve važniju ulogu u razlicitim djelat-

nostima, npr. svemirskim istraživanjima, industriji, domacinstvima, uslužnim djelat-

nostima itd. Mobilni roboti se mogu podijeliti s obzirom na stupanj autonomije, na

one koji u potpunosti zavise o covjeku do onih koji su sposobni samostalno istraži-

vati i djelovati u nepoznatim prostorima. Osnovno svojstvo koje mobilni robot mora

imati da bi bio autonoman je mogucnost obrade mjerenja iz okoliša dobivenih pomocu

senzora. Korištenjem rezultata obrade mobilni robot mora moci podijeliti okoliš na

dijelove u kojima ne može djelovati te na dijelove u kojima je djelovanje moguce do

odredene razine. Jedan od veoma zahtjevnih objekata za klasifikaciju na koji mobilni

robot može naici su stepenice, koje mogu biti prepreka za neke robote, ali i prohodni

teren za odredene robote opremljene odgovarajucim algoritmima.

Stepenice su sveprisutne i neizostavni dio covjekove okoline, dizajnirane da pre-

moste vertikalne udaljenosti. Autonomno gibanje po stepenicama može se primijeniti

u razlicitim slucajevima od istraživackih i spasilackih misija, vojnih svrha, povecanja

mogucnosti mobilnosti invalida, do poboljšanja efikasnosti kucanskih robota. Auto-

nomno uspinjanje stubama je tim razlogom jedno od najzahtjevanijih izazova u mobil-

noj robotici, posebice kod humanoidnih robota.

Metoda predstavljena u ovoj disertaciji, koja omogucuje mobilnom robotu auto-

nomno uspinjanje stepenicama, koristi robustan pristup primjenjiv u stvarnim uvjetima

i u stvarnom vremenu, uz pretpostavku da se robot nalazi ispred stuba, te da je una-

prijed poznata geometrija stepenica, dinamika vozila i površina stepenica. Metoda se

bazira na brzoj i preciznoj procjeni smjera robotskog gibanja i njegove relativne po-

zicije s obzirom na rubove stepenica. Dodatno, moguce je uvesti prošireni Kalmanov

filtar upotrijebljen za procejnu visine, te procjenu rotacijske brzine s tri-osnog žiro-

skopa i mjerenja geometrijskih karakteristika stepenica s lasera.

Teoretska analiza i implementacija algoritma su detaljno opisani, uz priloženi eks-

periment u simulatoru, te se u rezultatima navode prednosti i nedostatci algoritma.

1

2. Mobilna platforma Guardian

Da bi se robot što robusnije i preciznije gibao uz stepenice potrebno je poznavati fizicke

karakteristike samog robota, poput duljine, širine, mase, tromosti njegovih akutara i

dr. Uspinjanje po stubama moguce je realizirati korištenjem razlicitih tipova pogona

mobilnih robota: na kotacima, nogama (npr. hexapodi), hibridni tipovi pogona, na

gusjenicnom pogonom. Robot koji se koristio u svrhe uspinjanja prikazan je na slici

2.1.

Slika 2.1: Robot Guardian Robotnik [2]

Guardian je dizajniran da podnosi nagibe manje od 45 stupnjeva. [2] To je jedan

od uvjeta koje treba ispuniti prilikom inicijalne provjere mogucnosti obavljanja auto-

nomnog uspona.

2

2.1. Fizicke karakteristike robota

Slika 2.2: Prikaz mogucih pogona Guardiana Robotnika [2]

Roboti na gusjenicni pogon imaju vecu dodirnu površinu od robota na kotacima i bolju

ravnotežu od robota na nogama.

Slika 2.3: Princip gusjenicnog pogona [2]

3

Slika 2.4: Dimenzije robota [2]

Dimenzije robota su bitan parametar pri implementaciji algoritma za kretanje po

prostoru, poglavito za autonomno kretanje po stepenicama. Širina robota je 49,8 cm

(kotaci s robota se skidaju), a duljina 1,127 metara. Ti parametri se usporeduju s

dimenzijama stepenica.

2.2. Senzori korišteni na robotu

Robot je opremljen razlicitim senzorima: kamere (Axis IP Camera), 2D lasera Ho-

kuyo s mogucnošcu periodicnog naginjanja za stvaranje 3D laserskog ocitavanja, IMU

(engl. Inertial Measurement Unit) senzora koji se sastoji od akcelerometra za mjerenje

akceleracije i kutne brzine, te žiroskopa za orijentaciju.

S obzirom da je robot projektiran za vanjske i za unutarnje prostore, opremljen je

senzorima za vanjsku namjenu koji se mogu koristiti i u unutarnjim prostorima. Fizicki

izgled primijenjenog 2D lasera prikazan je na slici 2.5. Hokuyo UTM-30LX je laserski

senzor za površinsko mjerenje. Izvor laserske svjetlosti je poluvodicka laserska dioda

koja emitira infracrveni laser valne duljine λ = 905 nm. Površinsko mjerenje obuhvaca

podrucje do 240◦ s maksimalnim polumjerom od 30 metara. Primjer obuhvacenog

4

površinskog mjerenja prikazano je na slici 2.6. Kutna rezolucija lasera je 0.25◦(360◦/

1,440 koraka), vrijeme jednog ocitanja traje 25 ms. Tocnost lasera ovisi o udaljenosti

objekta od lasera, za udaljenosti od 0.1 do 10 m tocnost varira ± 30mm, dok od 10 do

30 m varira za ± 50mm.[6]

Slika 2.5: Hokuyo UTM-30LX 2D laser senzor

Tocnost lasera takoder ovisi o jacini direktnog svjetla, laser postaje manje pouzdan

na jakom suncanom svjetlu. Izloženost direktnom svjetlu je lako moguca ukoliko se

robot krece u vanjskim prostorima.

Slika 2.6: Površinsko ocitanje je polumjera 30 m, kuta do 240◦, te 120◦mrtvog kuta

5

IMU senzor je orijentacijski senzor koji za procjenu orijentacije koristi fuziju tro-

osnog akcelerometra, tro-osnog žiroskopa i tro-osnog magnetometra. IMU senzor ko-

rišten na robotu je MicroStrain 3DM-GX2 koji je graden na principu MEMS senzorske

tehnologije. Kako senzor posjeduje i temperaturni senzor, time su sve kvantitativne ve-

licine temperaturno kompenzirane. Kutne brzina je ispravljena kompenzacijom gravi-

tacije i skaliranjem faktora nelinearnosti s polinomom do treceg reda. [1] IMU senzor

kao i 2D laser implementirani su u simulacijskom robotskom modelu.

Slika 2.7: IMU senzor: MicroStrain 3DM-GX2

2.3. Programska podrška

Operacijski sustav mobilne platforme je Ubuntu verzije 12.04., jedno od distribucije

Linuxa. Za uspostavu komunikacije izmedu korisnickih programa i fizickog robota

koristi se Robotski operacijski sustav (ROS). ROS kao takav ovisi o navedenom ope-

racijskom sustavu jer koristi sistemski upravitelj zadataka, datotecni sustav, korisnicko

sucelje i ostalo, poput jezicnog prevoditelja, dretvenog modela i dr. Robotski opera-

cijski sustav je fleksibilan okvir (engl. Framework) za pisanje robotskih programa, tj.

robotske programske podrške. ROS je neovisan o robotskoj platformi te cini kolek-

ciju alata, biblioteka i pravila ciji cilj je pojednostaviti stvaranje željenog robotskog

ponašanja koji su najcešce kompleksni i zahtijevaju robusna i modularna rješenja.

ROS koristi graficko-orijentiranu arhitekturu. Svaki sustav projektiran u ROS-u se

može prikazati graficki, gdje je svaki cvor proces koji je umrežen s drugim cvorovima

svojim ulazima i izlazima koji su ostvareni s ROS-ovim komunikacijskim suceljem.

Ulazi i izlazi su komunikacijski kanali unutarnjih procesa, poput teme (engl. topic) i

servisa (engl. service). To ujedno i omogucava jednostavnu distribuciju projektirane

6

arhitekture medu robotima zadržavajuci originalnu arhitekturu za robota.

Za ovu primjenu najprikladniji je bio Hydro verzija ROS-a. Vecina upravljackih

programa (engl. drivers) je bila dostupna za ovu verziju. Simulacijski i robotski pa-

keti bili su testiranu za ovu verziju ROS-a, no bilo je upravljackih programa koji nisu

bili kompatibilni s Hydro verzijom. Vecina senzora je imala upravljacke programe za

tu verziju ROS-a, no vecina aktuatora (elektromotor za laser) nije. Zbog nekompa-

tibilnosti modificirali su se dijelovi koda upravljackih programa. Prilagodna uprav-

ljackih programa ukljucivalo je mijenjanje CMakeLists.txt i package.txt datoteka, te

mijenjanje parametara u konfiguracijskim datotekama i povezivanjem sa izvršnim pro-

gramima. Ovu verziju ROS-a podržavao je navedeni operacijski sustav te se isti nije

nadogradivao.

Verzije ROS-a poput Indigo, Jade ili Kinect podržava Ubuntu 14.04 verzija OS-a.

Kod robotskog paketa jezicno predvodenje za Indigo je potrebno premostiti ROS-ove

definirane funkcije koje ukljucuje ROS konzolu, što nije efikasno i može prouzrociti

neželjeno ponašanje robota.

2.3.1. Simulator

Za robotsku simulaciju koristimo Gazebo simulator koji je integriran u ROS-u. Gazebo

je robustan robotski simulator s dobro projektiranom fizickom jezgrom i grafickim ko-

risnickim suceljem. Prednosti simulatora su brzina ispitivanja ispravnosti razlicitih ko-

risnickih algoritama, praktican prikaz dizajna robota, izvodenje jednostavnih stvarnih

situacija, te dizajn okoliša. Gazebo uz to nudi precizno i efikasno simuliranje robota

razlicitih platformi u složenim vanjskim i zatvorenim prostorima.

7

3. Sinteza algoritma upravljanja

Algoritam je namijenjen za rad u realnom vremenu. To zahtijeva brzo i ucinkovito

detektiranje parametara stepenica u prostoru. Samo detektiranje uvodi u cijeli sustav

kašnjenje, pa je potrebno robota dovesti ispred stepenica kako bi se zanemarilo vri-

jeme utrošeno na obradu podataka iz lasera. Nakon što algoritam za detekciju preda

potrebne parametre potrebno za autonomno uspinjanje (visina, širina i nagib stuba),

robot se pocinje uspinjati i ispravljati svoju putanju na temelju podataka orijentacije s

IMU senzora.

3.1. Simulacija

Za simulaciju je bilo potrebno napraviti model robota, za to se koristilo simulacijsko

okruženje Gazebo kao i simulacijsko okruženje Rviz za prikaz prostornih podataka iz

lasera. Prostorni podaci se prikazuju u obliku oblaka tocaka gdje se podatak navodi

kao tocka u prostoru sa odredenim koordinatama, u ovisnosti o laserskom senzoru,

osim koordinata, podatak može sadržati i boju i intenzitet tocke prostora. Podaci o boji

i intenzitetu tocke ovisi o korištenom laserskom senzoru.

Osim robota, potrebno je modelirati 2D laser i IMU. Kvaliteta modela znacajno

utjece na kvalitetu autonomnog upravljanja. Osim same implementacije Hokuyo 2D

lasera potrebno je modelirati njegovo mehanicko naginjanje stalnom kutnom brzinom

da bi se omogucilo trodimenzionalno ocitavanje prostora. Šum na senzorima možemo

naknadno dodati da pobliže opiše stvarni sustav. Autonomno uspinjanje se može ba-

zirati na detekciji zidova ili rukohvata, racunajuci udaljenost može se upravljati s ob-

zirom na detekciju rubova, ili kako je robot namješten ispred stepenica, moguce je

koristiti samo IMU senzor. Za rucno upravljanje koristio se unos iz tipkovnice koje je

bilo potrebno napraviti u ROS-u.

8

3.1.1. SDF i URDF Modeliranje

SDF je XML format koji opisuje objekte i okoliš za robotske simulatore, vizualizacij-

ske software i omogucuje definiranje upravljanja. Originalno je projektiran u sklopu

Gazebo simulatora, no trenutno se koristi kao opceniti format. Ovdje cemo se foku-

sirati prvenstveno na modeliranju senzora potrebnih za algoritam upravljanja. SDF

modeliranje se koristio za modeliranje okoliša.

ROS ne podržava SDF format, te je potrebno ili SDF format parsirati u URDF for-

mat ili ga rucno napisati. URDF (engl. Unified Robot Description Format) je XML

specifikacija za opis robota. Specifikacije generalno ne mogu opisati sve moguce ro-

bote. Funkcionira na principu da se robot sastoji od krutih tijela povezani preko zglo-

bova i time fleksibilni elementi nisu moguci. Specifikacija URDF pokriva kinematicki

i dinamicki opis, vizualnu reprezentaciju i kolizijski model robota.

3.1.2. Model robota

Nekoliko stvari su nam bitne kod izgradnje modela robota, a to su njegov pogon i nje-

govi korišteni senzori. Modelirani dijelovi robota su bili dostupni, te je bilo potrebno

to složiti u jednu cijelinu i pridružiti mu senzorske funkcije.

Za pogonski dio robota moguce je simulirati samo kotace, jer gusjenicni pogon u

Gazebu nije moguce fizicki implementirati, jer ne nudi poseban prikljucak (engl. plug-

in) kao za druge vrste fizickog gibanja. S obzirom da to nije niti u jednoj verziji Gazeba

dostupno, koristili su se samo kotaci kao pogon. To je predstavljalo dodatni problem

jer takvog robota nije bilo moguce ili je bilo teško namjestiti dimenzije stepenica, da

bi se robot uopce mogao uspinjati. Zato se umjesto stepenica koristila uzbrdica.

9

Slika 3.1: Prikaz robota u simulatoru

Programski je kotacima implementiran PID regulator koji je uobicajen za kotace

robota. Što se tice senzora, bilo je potrebno implementirati IMU i Hokuyo laser koji

ima mogucnost periodicnog naginjanja.

Definicija senzora Potrebno je definirati laserski senzor (ray based). Pod XML

elementom < sensor > potrebno je definirati sljedece:

< always_on > s parametrima true/false ili 0/1 daje odluku o tome da li senzor mora

poceti raditi od trenutka kad se model stvorio (engl. spawned) u simulatoru ili treba

cekati neki proces da se pretplati (engl. subscribe) na njegov topic da bi poceo raditi. U

svrhu testiranja je dobro da bude false, no ako stavimo true to vjerno oponaša situaciju

u stvarnom svijetu, što ce ovdje biti slucaj.

< update_rate > s parametrom frekvencije ažuriranja dogadaja, inace iznosi isto kao

i brzina objavljivanja (publish).

< plugin > parametar koji ovisi o senzoru. Ono nam omogucuje da definiramo

Gazebo-ROS plugin za odredeni senzor. Element može sadržavati svoje vlastite po-

delemente koji detaljnije opisuju parametre SDF plugin-a. Nakon implementacije Ho-

kuyo lasera u SDF specifikacijama za Gazebo i URDF specifikacija za ROS, potrebno

je implementirati fizicko naginjanje lasera. Prisutna su dva nacina, jedno od njih je

pisanje zasebnog plug-ina u programskim jezicima koji ROS podržava (python, C++),

a drugi nacin je konfiguracija postojecih datoteka preko pr2 kontrolera. U konfigura-

cijskoj datoteci potrebno je povezati zglobove (<joint>) lasera iz URDF-a s prikladnim

10

PID regulatorom u konfiguracijskoj datoteci .yaml ekstenzije.

Primjer URDF dijela za implementaciju zgloba lasera

. . .

< j o i n t name=" l a s e r _ t i l t _ j o i n t " t y p e =" r e v o l u t e ">

. . .

</ j o i n t >

< t r a n s m i s s i o n name=" h o k u y o _ f r o n t a l _ l a s e r _ r o t a t i o n _ t r a n s m i s s i o n "

t y p e =" pr2_mechanism_model / S i m p l e T r a n s m i s s i o n ">

< a c t u a t o r name=" h o k u y o _ f r o n t a l _ l a s e r _ r o t a t i o n _ j o i n t _ m o t o r " / >

< j o i n t name=" h o k u y o _ f r o n t a l _ l a s e r _ r o t a t i o n _ j o i n t " / >

< m e c h a n i c a l R e d u c t i o n >1 </ m e c h a n i c a l R e d u c t i o n >

< moto rTorqueCons t an t >1 </ moto rTorqueCons t an t >

</ t r a n s m i s s i o n >

< l i n k name=" l a s e r _ t i l t _ l i n k ">

. . .

</ l i n k >

. . .

Primjer implementacije IMU senzora za simulaciju u Gazebu:

. . .

<gazebo >

< p l u g i n name=" ros_ imu " f i l e n a m e =" l i b g a z e b o _ r o s _ i m u . so ">

<robotNamespace > / g u a r d i a n < / robotNamespace >

<topicName > imu_data < / topicName >

<bodyName> i m u _ l i n k </ bodyName>

<serviceName >/ i m u _ s e r v i c e < / serviceName >

< g a u s s i a n N o i s e >0 .005 </ g a u s s i a n N o i s e >

</ p l u g i n >

</ gazebo >

. . .

<gaussianNoise> je element kojim se odreduje zašumljenost (aditivni bijeli šum) sig-

nala senzora. Šum je moguce ugraditi i u laserski senzor. Moguce je dodatno podeša-

vati parametre šuma, poput standardne devijacije i ocekivanje. URDF modeli senzora i

robota su pisani u jednoj skripti .xacro ekstenzije koja naznacuje velike XML datoteke,

one se cesto koriste za opise robota.

Primjer ispisa IMU podataka o orijentaciji, kutnoj brzini i akceleraciji. Ispis se

ostvaruje naredbom rostopic echo /guardian/imu_data u terminalu.

11

h e a d e r :

seq : 1211

stamp :

s e c s : 447

n s e c s : 372000000

f r a m e _ i d : b a s e _ f o o t p r i n t

o r i e n t a t i o n :

x : −0.00316735477925

y : 0 .000869884719769

z : −0.160331627651

w: 0 .987057739111

o r i e n t a t i o n _ c o v a r i a n c e : [ 2 . 5 e−05 , 0 . 0 , 0 . 0 , 0 . 0 , 2 . 5 e−05 , 0 . 0 , 0 . 0 ,

0 . 0 , 2 . 5 e−05]

a n g u l a r _ v e l o c i t y :

x : 0 .014366214951

y : 0 .0419371826121

z : 1 .04002515783

a n g u l a r _ v e l o c i t y _ c o v a r i a n c e : [ 2 . 5 e−05 , 0 . 0 , 0 . 0 , 0 . 0 , 2 . 5 e−05 , 0 . 0 ,

0 . 0 , 0 . 0 , 2 . 5 e−05]

l i n e a r _ a c c e l e r a t i o n :

x : 3 .32745927996

y : 2 .51941770969

z : 2 .01684149364

l i n e a r _ a c c e l e r a t i o n _ c o v a r i a n c e : [ 2 . 5 e−05 , 0 . 0 , 0 . 0 , 0 . 0 , 2 . 5 e−05 ,

0 . 0 , 0 . 0 , 0 . 0 , 2 . 5 e−05]

Nakon pokretanja robota u Gazebu pomocu tipkovnice potrebno je ispitati ponaša-

nje IMU podataka. U svrhu ispitivanja ponašanja robota kada skrene ulijevo ili udesno,

ispitivali su se podaci za orijentaciju. Na slici 3.2 prikazano je kako se podaci za ori-

jentaciju prilikom skretanja ulijevo ili udesno mijenjaju. Dio grafa koji opisuje skre-

tanje ulijevo odvojeno je vertikalno crtom od prikaza koji prikazuje pocetak skretanja

udesno. Prilikom skretanja udesno ponovno smo robota skrenuli ulijevo da se bolje

uoce funkcije podataka orijentacije s IMU senzora u simulatoru.

12

Slika 3.2: pokretanje robota za ispitivanje IMU podataka za orijentaciju

Na slici 3.2. se vidi ponašanje IMU senzora. Graficki prikaz podataka moguce je

direktno dobiti iz naredbe:

r q t _ p l o t / g u a r d i a n / imu_da ta / o r i e n t a t i o n / x : y : z :w

Slika 3.3: IMU podaci za orijentaciju

Tocke x,y,z je vrh vektora ciji je pocetak centar samog IMU senzora. Kad robot

dode do uzbrdice u 48. sekundi mijenja mu se y orijentacija, potom slijedi prijelazna

13

pojava sve dok je baza robota paralelna sa površinom uzbrdice. Robot skrece ulijevo

netom prije 60. sekunde, tu z orijentacija mijenja smjer u pozitivan smjer, dok x orijen-

tacija iz nule ide u mali negativnu vrijednost, obrnuto vrijedi za skretanje udesno. Dok

smo skretali udesno, malo smo skretali ulijevo da vidimo da li se IMU senzor ponaša

kako smo predvidjeli. Na y orijentaciji primjecuje se mala valovitost prilikom skreta-

nja zbog trenja izmedu robota i površine uzbrdice koje se definira u URDF modelu.

3.1.3. Model okolišta

Kako Gazebu nije moguce fizicki implementirati gusjenicni pogon, jer nema poseban

plug-in kao za druge vrste pogonskog gibanja. S obzirom da to nije niti u jednoj verziji

Gazeba dostupno, korisitili su se kotaci kao pogon. To je predstavljalo dodatni problem

jer za takvog robota nije bilo moguce ili je bilo teško namjestiti dimenzije stepenica da

bi se robot uopce mogao uspinjati. Zato se umjesto stepenica koristila uzbrdica. Model

okoliša prikazano je na slici 3.2.

Slika 3.4: Prikaz ispitnog okoliša

Zidovi služe zbog detekcije laserom. Za obradu podataka iz lasera koristi se PCL

biblioteka naredbi.

3.2. O algoritmu upravljanja

U nastavku se navode dva modela upravljanja, jedan ukljucuje laserski senzor, a drugi

IMU senzor. Za bolje rezultate moguce je kombinirati oba dva senzora. Brzina izvo-

denja je brža kod implementacije upravljanje pomocu IMU senzora. [10]

14

Za implementaciju IMU senzorom, mjeri se trenutacni položaj. Za upravljanje

potrebno je izraditi klasicni regulator koji reagira ovisno o greški pozicije.[4] PID re-

gulator je moguce implementirati u Indigo verziji ROS-a pomocu PID regulatorskog

paketa, dok u Hydro verziji PID regulator moguce je implementirati u C++ program-

skom jeziku. No, moguce je implementirati bez regulatora, koristeci kao ulazne po-

datke, podatke orijentacije. Dok su parametri orijentacije robota blizu nuli (osim y

orijentacije), robot se krece ravno. Prilikom promjena z i x orijentacije algoritam za-

daje kutnu brzinu u suprotnom smjeru od gibanja robota dok se podaci sa IMU senzora

ne izjednace s nulom.

Podatke iz laserskog senzora necemo implementirati u algoritmu upravljanja. La-

serski podaci se mogu obraditi pomocu ROS integrirane PCL biblioteke (engl. The

Point Cloud Library ) namijenjen za 2D/3D obradu slike i oblaka tocaka. Biblioteka

sadrži veliki broj state-of-the-art algoritama za filtriranje, procjenu i prepoznavanje

objekata, površinsku rekonstrukciju, poravnavanje i preklapanje, te segmentaciju. Ti

algoritmi se mogu koristiti za filtriranje šuma u oblaku tocaka, segmentaciju odredene

dijelove scene, te prepoznati objekte temeljem njihove stvarne velicine i dr. Za racu-

nanje pomaka robota možemo racunati kut izmedu paralelne osi na robotu i stepenica

ili udaljenost robota od zida. Ovisno o kvaliteti oblaka tocaka, mogu se segmentirati

horizontalne linije stuba, robotsku okomicu je moguce matematicki dobiti i onda se

koristi kao konstanta s obzirom da je ishodište oblaka tocaka mjesto izvora (lasera).

[7] Za to je potrebno detektirati rubove stepenica. [8] [5]

# i n c l u d e < r o s / r o s . h>

# i n c l u d e <geometry_msgs / Twis t . h>

# i n c l u d e <nav_msgs / Odometry . h>

# i n c l u d e < senso r_msgs / Imu . h>

. . .

# d e f i n e PI 3 .14159265359

. . .

r o s : : P u b l i s h e r ve l_pub_ ;

vo id g u a r d i a n C a l l b a c k ( c o n s t nav_msgs : : Odometry : : C o n s t P t r& msg ) {

geometry_msgs : : Twis t v e l ;

ROS_INFO ( " g u a r d i a n lawnmower@[%f , %f , %f ] " , msg−>pose . pose .

p o s i t i o n . x , msg−>pose . pose . p o s i t i o n . y , msg−>pose . pose . p o s i t i o n . z )

;

. . .

/ / o v d j e se o d v i j a o b r ad a

. . .

15

/ / o d r e d j u j u se p a r a m e t r i b r z i n e

. . .

/ / s a l j e se na t o p i c

ve l_pub_ . p u b l i s h ( v e l ) ;

}

vo id imuCa l lback ( c o n s t s enso r_msgs : : Imu : : C o n s t P t r& msg ) {

ROS_INFO ( " Imu Seq : [%d ] " , msg−>h e a d e r . seq ) ;

ROS_INFO ( " Imu O r i e n t a t i o n x : [% f ] , y : [% f ] , z : [% f ] , w: [% f ] " , msg

−> o r i e n t a t i o n . x , msg−> o r i e n t a t i o n . y , msg−> o r i e n t a t i o n . z , msg−>

o r i e n t a t i o n .w) ;

/ / o v d j e se o d v i j a o b r ad a

. . .

/ / o d r e d j u j u se p a r a m e t r i b r z i n e

. . .

/ / s a l j e se na t o p i c

ve l_pub_ . p u b l i s h ( v e l ) ;

}

i n t main ( i n t a rgc , c h a r ∗∗ a rgv ) {

r o s : : i n i t ( a rgc , argv , " g u a r d i a n _ c l i m b " ) ;

r o s : : NodeHandle nh ;

r o s : : S u b s c r i b e r sub = nh . s u b s c r i b e ( " imu_da ta " , 1000 , imuCa l lback ) ;

/ / r o s : : S u b s c r i b e r sub = nh . s u b s c r i b e ( " g u a r d i a n / odom " , 1 ,

g u a r d i a n C a l l b a c k ) ;

ve l_pub_ = nh . a d v e r t i s e <geometry_msgs : : Twist >( " g u a r d i a n / cmd_vel " ,

1 ) ;

r o s : : s p i n ( ) ;

r e t u r n 0 ;

}

Funkcija imuCallback cita podatke s IMU senzora s robota u simulatoru, te se u

glavnom programu poziva ta funkcija kao subscriber, te objavljuje brzinu u obliku

poruke standardnog tipa Twist, na guardian/cmd_vel topic.

16

4. Rezultati

4.0.1. Eksperiment u simulatoru

U Gazebu je testiran algoritam tako da na sustav robota djelujemo poremecajem. Po-

remecaj se unosi preko tipkovnice kada namjerno želimo zaokrenuti robota ulijevo ili

udesno od referentnog položaja. Ako robota zaokrenemo ono mora razviti predefini-

ranu kutnu brzinu da ga vrati u pocetni položaj. Algoritam pomocu IMU senzora je

ispitan, robot se poravnava.

Dodatni problem je nastao kad je robot išao previše udesno ili ulijevo zbog trenja,

za to je bilo potrebno u URDF datoteci namjestiti veci koeficijent trenja.

Algoritam s laserom je alternativa, no ono vrijedi samo za model stepenica, a ne za

uzbrdicu. Za uzbrdicu je doduše, dovoljno imati Hokuyo bez mehanickog naginjanja.

Upravljanje temeljem laserskog senzora je u principu puno sporiji, jer obrada više traje.

4.0.2. Eksperiment na stvarnom robotu

Na stvarnom robotu se nije ispitao algoritam, razlog tomu što mu se pogonski motori

ne mogu pokrenuti. No reducirao se broj pogrešaka konfiguriranjem pravim parametra

za motore u .yaml skripti. U principu se koristila naredba

$ rostopic echo /diagnostics

koja uveliko pomaže pri rješavanju problema. Jedina promjena u algoritmu bi bila

druga pretplata (subscriber) na temu (topic) koja odgovara guardian/cmd_vel u simu-

latoru, za stvarni robot je guardian_node/command.

Implementacija pomocu IMU senzora bila bi složenija od one u simulatoru. Pra-

cenje pozicije pomocu IMU senzora ima mnogo izazova, dvije su prvotne prepreke u

mjerenju stvarne pozicije mobilnog robota. Tocnost procjene orijentacije s obzirom na

gravitacijsko i magnetsko polje zemlje, te kvadratni porast (kvadratna ovisnost) u sig-

nalu pogreške zbog dvostruke integracije ubrzanja, sadržeci pogreške prilikom gibanja

na nagibu i skretanja. [10] Kalmanov filtar se koristi za suspenziju pogrešaka prilikom

nagiba i skretanja. [3] [9]

17

5. Zakljucak

Programska podrška je relativno stara, iako nadogradena, bolje bi bilo da se radilo

u ROS Indigu ciji integrirani Gazebo daje puno više opcija za modeliranje okoliša.

Gazebo inace nije dobar simulator za simuliranje robota na gusjenicni pogon, mogu

se razmatrati alternative poput ODE simulatora preko Matlaba i ROSa, za algoritam

upravljanja, promatrale su se najprikladnije metode. Problem koji se može javiti kod

testiranja algoritma na stvarnom robotu je što se u simulatoru ne mogu odvijati svi

moguci scenariji koji se mogu dogoditi u stvarnom svijetu. Ovaj algoritam je pogodan

za unutarnje prostore, stepeništa koji su okruženi zidovima ili izraženijim rukohva-

tima i dr. Kao koristan alat je debugger koji uveliko pomaže u uvidu u greške kao s

pointerima i dretvama.

18

LITERATURA

[1] Microstrain 3dm-gx2, tehnical product overwiev. URL http://files.

microstrain.com/3dm-gx2_datasheet_v1.pdf.

[2] Robotnik Auomation. Guardian Complete Manual. Robotnik Automation, 2012.

[3] H.D. Taghirad i S.Ali.A. Moosavian E. Mihankhah, A. Kalantari i E. Aboosa-

eedan. Autonomous staircase detection and stair climbing for a tracked mobile

robot using fuzzy controller. 2009.

[4] Mike Fair i David P. Miller. Automated staircase detection, alignment and traver-

sal.

[5] Gian Luca Mariottini Joel A. Hesch i Stergios I. Roumeliotis. Descending-stair

detection, approach, and traversal with an autonomous tracked vehicle.

[6] Hokuyo Automatic CO. LTD. Scanning Laser Range Finder UTM-30LX/LN

Specification, 2012. URL http://www.hokuyo-aut.jp/02sensor/

07scanner/download/pdf/UTM-30LX_spec_en.pdf.

[7] Tobias Schwarze i Zhichao Zhong. Stair detection and tracking from egocentric

stereo vision.

[8] J.-P. Tardif. Non-iterative approach for fast and accurate vanishing point detec-

tion. 2009.

[9] David Törnqvist. Statistical Fault Detection with Applications to IMU Distur-

bances. LINKÖPING, 2006.

[10] David Vincent. Accurate position tracking using inertial measurement units.

2013. URL http://www.pnicorp.com/wp-content/uploads/

Accurate-PositionTracking-Using-IMUs.pdf.

19

Autonomno uspinjanje mobilnog robota po stubama

Sažetak

U radu je potrebno implementirati algoritam autonomnog uspinjanja mobilnog ro-

bota po stubama. Algoritam kao ulaz koristi parametre stuba (nagib, širinu i visinu), te

na osnovi njih i parametara robota odreduje je li uspon siguran. Ako je uspon siguran,

algoritam treba omoguciti autonomni uspon robota po stubama uz pretpostavku da se

robot nalazi ispred njih. Algoritam je potrebno implementirati unutar ROS-a i testirati

ga u simulacijskom okruženju i po mogucnosti na stvarnoj mobilnoj platformi.

Kljucne rijeci: mobilni robot, autonomno upravljanje, ROS, Gazebo simulator, stepe-

nište, ...

Autonomous stair climbing for mobile robot

Abstract

In this work it is necessary to implement an algorithm for autonomous stair clim-

bing for a mobile tracked robot. The algorithm takes the slope, width and height as

input variables and takes the robot’s parameters to estimate the safety of its climb. If

the stair climb for the specific robot is safe, it is necessary for the robot to autono-

mously climb it with the assumption that the robot is in front of the staircase. The

algorithm is implemented within ROS and has to be tested in simulation as in reality if

possible.

Keywords: tracked mobile robot, autonomous control, ROS, Gazebo simulator, stairs,

...