Download as pdf or txt
Download as pdf or txt
You are on page 1of 39

U NIVERZITET U S ARAJEVU

E LEKTROTEHNI ČKI FAKULTET


O DSJEK ZA AUTOMATIKU I ELEKTRONIKU

Softversko rješenje za upravljanje x100


mobilnim robotom

Z AVRŠNI RAD
- P RVI CIKLUS STUDIJA -

Student:
Almir Garić

Mentor:
Red. prof. dr. Jasmin Velagić

Sarajevo, januar 2023.


i

Sažetak
Grafički interfejs upravljanja je napravljen pomoću frameworka Qt za izradu Desktop aplika-
cije koja je univerzalna za sve platforme operativnih sistema, dok je kod pisan u programskom
jeziku C++. Pri čemu je za upravljanje aktuatorima mobilnog robota x100 korišten ROS opera-
tivni sistem . Namjena završnog rada jeste da se opiše postupak izrade softverskog rješenja koji
simulira upravljački modula, sa idejom da se mobilni robot može upravljati bežično.Pomoću
Qt Creatora razvijen je i korisnički interfejs za upravljanje. Aplikacija omogućava upravlja-
nje brzinom mobilnog robota i smjerom mobilnog robota.Hardverski sistem obuhvata računar
na kojem je korisniči interfejs, te elektronika koja dolazi u sklopu platforme mobilnog robota
x100. Cilj je pripremiti sistem za upravljanje u otvorenom, kako bi nakon očitanja sa senzora
i aktuatora mobilnog robota, sistem mogao zatvoriti negativnom povratnom spregom i na taj
način bilo omogućeno upravljanje u zatvorenom, te omogućen automatski mod kretanja vozila.

Ključne riječi: QT creator, ROS operativni sistem, programski jezik C++, mobilni robot
x100,

Abstract
The graphical management interface was created using the Qt framework for creating a Desktop
application that is universal for all operating system platforms, while the code is written in the
C++ programming language. The ROS operating system was used to control the actuators of
the x100 mobile robot. The purpose of the final work is to describe the process of creating
a software solution that simulates a control module, with the idea that a mobile robot can be
controlled by a wireless connection. Using Qt Creator, a user interface for control was also
developed. The application enables the control of the speed of the mobile robot and the direction
of the mobile robot. The hardware system includes the computer on which the user interface is
located, and the electronics that come as part of the x100 mobile robot platform. The goal is
to prepare the system for outdoor control, so that after reading from the sensors and actuators
of the mobile robot, the system could be closed with negative feedback and in this way, indoor
control would be enabled, and the automatic mode of vehicle movement would be enabled.

Keywords: QT creator, ROS operating system, programming language C++, mobile robot
x100,
Elektrotehnički fakultet, Univerzitet u Sarajevu
Odsjek za Automatiku i elektroniku
Red. prof. dr Jasmin Velagić, dipl.el.ing
Sarajevo, 15. januar 2023.g

Postavka zadatka završnog rada I ciklusa:


Softversko rješenje upravljanja mobilnim robotom x100

Mobilni robot X100 je opremljen sa sofisticiranim softverskim rješenjem za upravljanje i


praćenje. Ovo rješenje omogućava precizno kretanje robota u prostoru i prilagod̄avanje njego-
vih aktivnosti trenutnim okolnostima. Takod̄er, korisnički interfejs omogućava lakše upravlja-
nje robota i pristup različitim postavkama i opcijama. Ovo softversko rješenje je ključno za
efikasno i sigurno korištenje mobilnog robota X100 u različitim aplikacijama.

Koncepti i metode rješavanja:


Rad treba da se sastoji iz sljedećih cjelina:

• pregled literature;

• dati kratko uputstvo za korištenje korisničkog interfejsa

• analiza mobilnog robota x100;

• analiza ROS operativnog sistema,

• analiza QT-a,

• izrada odgovarajućeg softverskog rješenja u QT Creatoru,

• izrada softverskog rješenja u ROS operativnom sistemu,

• analiza eksperimentalnih rezultata,

Polazna literatura:

[1] Jasmin Velagić, Zabilješke s predavanja, Elektrotehnički fakultet, Sarajevo, 2012,


URL: http://people.etf.unsa.ba/ jvelagic/laras/lectures.htm

[2] H. Funacubo, Actuators for Control (Precision Machinery and Robotics), CRC Press,
1991.

[3] H. Janocha, Actuators: Basics and Applications, Springer Verlag, 2004.

[4] C. Da Silva, Sensors and Actuators, CRC Press, 2007.

[5] N. Manring, Hydraulic Control Systems, John Willey and Sons, 2005.

ii
iii

[6] I.L. Krivts & G.V. Krejnin, Pneumatic Actuating Systems for Automatic Equipment,
CRC Press, 2006.

[7] Daniel Watzenig, Martin Horn, “Automated Driving: Safer and More Efficient Future
Driving”, Springer International Publishing Switzerland 2017.

[8] Nikolay Avgoustinov, “Modelling in Mechanical Engineering and Mechatronics: Towards


Autonomous Intelligent Software Models”, Springer-Verlag London 2007.

[9] Guillaume Lazar, Robin Penea, “Mastering Qt5”, Packt Publishing Ltd 2016.

[10] Robert Oshana and Mark Kraeling , “Software Engineering for Embedded Systems:
Methods, Practical Techniques, and Applications”, Elsevier 2013

Red. prof. dr Jasmin Velagić, dipl. ing. el.


Univerzitet u Sarajevu
Elektrotehnički fakultet
Odsjek za Automatiku i elektroniku

Izjava o autentičnosti radova


Završni rad
I ciklusa studija

Ime i prezime: Almir Garić


Naslov rada: Softversko rješenje za upravljanje mobilnim robotom x100
Vrsta rada: Završni rad Prvog ciklusa studija
Broj stranica: 30

Potvrd̄ujem:
• da sam pročitao dokumente koji se odnose na plagijarizam, kako je to definirano Statutom
Univerziteta u Sarajevu, Etičkim kodeksom Univerziteta u Sarajevu i pravilima studiranja
koja se odnose na I i II ciklus studija, integrirani studijski program I i II ciklusa i III
ciklus studija na Univerzitetu u Sarajevu, kao i uputama o plagijarizmu navedenim na
web stranici Univerziteta u Sarajevu;
• da sam svjestan univerzitetskih disciplinskih pravila koja se tiču plagijarizma;
• da je rad koji predajem potpuno moj, samostalni rad, osim u dijelovima gdje je to nazna-
čeno;
• da rad nije predat, u cjelini ili djelimično, za stjecanje zvanja na Univerzitetu u Sarajevu
ili nekoj drugoj visokoškolskoj ustanovi;
• da sam jasno naznačio prisustvo citiranog ili parafraziranog materijala i da sam se referi-
rao na sve izvore;
• da sam dosljedno naveo korištene i citirane izvore ili bibliografiju po nekom od prepo-
ručenih stilova citiranja, sa navod̄enjem potpune reference koja obuhvata potpuni bibli-
ografski opis korištenog i citiranog izvora;
• da sam odgovarajuće naznačio svaku pomoć koju sam dobio pored pomoći mentora i
akademskih tutora/ica.

Sarajevo, datum januar, 2023.g

Potpis:

(ime)

iv
Sadržaj

Popis slika vii

Popis tabela viii

1 Uvod 1
1.1 Obrazloženje teme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Struktura rada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2 Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota


x100 2
2.1 ROS operativni sistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.1 Glavni ciljevi ROS-a . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 Koncepti ROS-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.3 ROS koncepti višeg nivoa . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.4 ROS klijentske biblioteke . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.5 Tehnički pregled ROS-a . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 QT tehnologija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.1 Šta je QT tehnologija? . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.2 QT Kompanija i QT Projekat . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.3 Build sistem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.4 Razvojno okruženje . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.5 QT widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.6 QT Quick Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 x100 mobilni robot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.1 XMACHINES kompanija . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.2 x100 UGV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.3 Karakteristike x100 UGV-a . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.4 Prvi koraci sa x100 mobilnim robotom . . . . . . . . . . . . . . . . . 13
2.4 QT Creator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.1 Hello World program . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3 Povezivanje ROS operativnom sistema sa QT aplikacijom 19

4 Izrada QT aplikacije 20

5 Eksperimentalni rezultati 21

Prilozi 23
SADRŽAJ vi

A Korištenje funkcija u Tex-u 24


A.1 Matematički izraz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
A.2 Slika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
A.3 Tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
A.4 Landscape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
A.5 Indeks pojmova i Popis oznaka . . . . . . . . . . . . . . . . . . . . . . . . . . 28
A.6 Korištenje literature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
A.7 Programski kodovi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Literatura 29

Indeks pojmova 29
Popis slika

2.1 Bazni koncept ROS-a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4


2.2 Primjer master-node komunikacije . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3 Mobilni robot x100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4 Mobilni robot x100 unutar simulatora Gazebo . . . . . . . . . . . . . . . . . . 14
2.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

A.1 Primjer naslova slike - uputstvo za traženje bibiografskih referenci na Google


Scholar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
A.2 Primjer dijagrama - veličina i tip fonta na slici bi trebao odgovarati veličini i
tipu fonta u tekstu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
A.3 Primjer ekstrakcije bibliografskih stavki za kopiranje u .bib fajl, sa Google Sc-
holara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Popis tabela

A.1 Naslov tabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26


Poglavlje 1

Uvod

1.1 Obrazloženje teme


Softversko rješenje za upravljanje mobilnim robotom X100 ima zadatak da omogući efikasno i
sigurno korištenje robota u različitim aplikacijama. To se postiže kroz precizno kretanje robota
u prostoru i prilagod̄avanje njegovih aktivnosti trenutnim okolnostima. Korisnički interfejs u
QT omogućava jednostavno upravljanje robotom i pristup različitim opcijama i postavkama.
Operativni sistem ROS takod̄er igra važnu ulogu u upravljanju robotom, omogućavajući lakšu
integraciju senzora, algoritama i drugih komponenti. Zadatak implementacije je da se stvori
funkcionalna verzija softverskog rješenja za upravljanje mobilnim robotom X100. To uključuje
izradu korisničkog interfejsa, programiranje aktuatora za mobilnim robotom, i razvijanje de-
sktop aplikacije koja će se koristiti za upravljanje mobilnim robotom. Implementacija takod̄er
uključuje testiranje softverskog rješenja i otklanjanje bilo kojih poteškoća ili grešaka. Cilj im-
plementacije je da se stvori funkcionalno rješenje koje će biti spremno za upotrebu u realnim
aplikacijama.

1.2 Struktura rada


Rad je podijeljen na tri cjeline cjeline : Prva cjelina opisuje specifikacije mobilnog robota x100,
te ROS operativnog sistema, QT tehnologije. Druga cjelina opisuje korištenje tehnologija ROS
operativnog sistema, QT Creator-a, te odabranih alata uopsteno. Treca cjelina opisuje izradu
namjenskog rjesenja i opisivanje eksperimentalnih rezultata.
U ovoj sekciji je najbolje dati po jedan paragraf o svakom poglavlju iz rada. Potencirajte
koji su glavni doprinosi svakog poglavlja, te kako su poglavlja medjusobno povezana.

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 1


Poglavlje 2

Analiza ROS operativnog sistema, QT


tehnologije, te specifikacije mobilnog
robota x100

2.1 ROS operativni sistem


ROS (Robot Operating System) je otvorenokodni operativni sistem za upravljanje robotima.
Omogućuje razvoj, testiranje i implementaciju softverskih paketa za različite vrste robota. ROS
se sastoji od kolekcije paketa za komunikaciju, kontrolu, navod̄enje, percepciju i odred̄ivanje
lokacije, koji se med̄usobno integrišu pomoću standardizovanih protokola i alata za razvoj. Ko-
risti se u različitim oblastima, uključujući robote za upravljanje proizvodnjom, mobilne robote i
letjelice, kao i u istraživanju i razvoju novih tehnologija. ROS je platforma koja olakšava razvoj
softverskih aplikacija za upravljanje robota. Koristi se u različitim oblastima, uključujući robote
za upravljanje proizvodnjom, mobilne robote i letjelice, kao i u istraživanju i razvoju novih teh-
nologija.ROS se sastoji od kolekcije paketa koji se med̄usobno integrišu pomoću standardizo-
vanih protokola i alata za razvoj. Ovi paketi obuhvataju različite funkcije, poput komunikacije,
kontrole, navod̄enja, percepcije i odred̄ivanja lokacije.ROS koristi publikovanje-pretplaćivanje
(publish-subscribe) model komunikacije izmed̄u različitih komponenti (nazvanih "nodovi") u
sistemu. Ovi nodovi mogu da razmjenjuju poruke putem tzv. "tema", što olakšava razvoj
modularnih aplikacija koje se mogu lako integrisati u cjelokupni sistem.ROS je dostupan za
različite operativne sisteme, uključujući Linux, Windows i macOS. Postoji više verzija ROS-a,
a najčešće se koriste ROS 1 i ROS 2. ROS 1 je baziran na jeziku Python, dok je ROS 2 baziran
na jeziku C++.ROS je nastao kao projekat Stanforda, a kasnije je preuzet od strane OpenAI-ja.
Operativni sistem se sastoji od klijentskih i serverskih delova. Klijenti su aplikacije koje koriste
servise i publikujure podatke na ROS mreži, dok su serveri aplikacije koje pružaju servise i
primaju podatke od klijenata.ROS koristi graf poruka za komunikaciju izmed̄u klijenata i ser-
vera. Ovo omogućuje modularno dizajniranje aplikacija i lako dodavanje ili uklanjanje delova
sistema bez potrebe za ponovnim kompajliranjem cijelog sistema.ROS takod̄e pruža alate za
vizualizaciju i debagovanje, kao i biblioteke za različite naučne oblasti, poput računarskog vida
i mašinskog učenja.ROS je podeljen u više verzija, od kojih je najčešće korišćena trenutno ROS
2. ROS 2 je nadogradnja originalnog ROS-a i donosi neke nove funkcionalnosti i poboljša-
nja. Glavne razlike izmed̄u ROS-a i ROS 2 su: ROS 2 koristi novi protokol za komunikaciju
izmed̄u klijenata i servera, poznat kao DDS (Data Distribution Service), umesto prethodnog
protokola baziranog na TCP/IP. Ovo omogućuje bolju performansu i pouzdanost komunikacije
u uslovima visokog opterećenja i velike distribucije.ROS 2 podržava više operativnih sistema,

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 2


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

uključujući Linux, Windows i MacOS. Originalni ROS je bio ograničen samo na Linux.ROS 2
podržava više jezika za programiranje, uključujući C++, Python i Ruby, dok je originalni ROS
bio ograničen samo na C++.ROS 2 ima novi sistem paketa za lakše održavanje i razvoj apli-
kacija, uključujući bolju podršku za kontinuirani integritet i testiranje. Ukratko, ROS 2 donosi
poboljšanja u performansi, pouzdanosti i fleksibilnosti u odnosu na originalni ROS, što ga čini
popularnijim izborom za razvoj aplikacija za upravljanje robota. Postoje mnoge kompanije i
organizacije koje koriste ROS u različite svrhe. Neki od primera su:Willow Garage je bio prva
kompanija koja je koristila ROS u komercijalne svrhe. Oni su koristili ROS za razvoj mobilnog
robota PR2, koji se koristi u istraživanju i razvoju novih tehnologija.Toyota je koristila ROS za
razvoj sistema za autonomno vod̄enje vozila.NASA je koristila ROS u svojim projektima sve-
mirskih letelica, kao što su projekti Robonaut i Mars Curiosity Rover.Dajie Robotics je koristio
ROS za razvoj mobilnog robota za upravljanje proizvodnjom.Google je koristio ROS u svojim
projektima za razvoj mobilnih robota, kao što je projekat Street View. Ovi su samo neki od pri-
mera kompanija i organizacija koje koriste ROS u svojim projektima. ROS je postao standard
u industriji robota i kontinuirano se razvija i unapred̄uje od strane velike zajednice korisnika i
developera širom sveta. Postoje mnoge koristi od korišćenja ROS-a u razvoju robota. Neki od
glavnih razloga zbog kojih se ROS često koristi su: Modularnost: ROS omogućuje modularno
dizajniranje aplikacija i lako dodavanje ili uklanjanje delova sistema bez potrebe za ponovnim
kompajliranjem cijelog sistema. Ovo olakšava razvoj i održavanje aplikacija. Standardizacija:
ROS pruža standardizovane alate i protokole za komunikaciju i razvoj softverskih paketa, što
olakšava integraciju različitih delova sistema i smanjuje vreme potrebno za razvoj. Zajednica:
ROS ima veliku zajednicu korisnika i developera širom sveta, što omogućuje lako pronalaženje
resursa i podrške u slučaju problema. Alati za vizualizaciju i debagovanje: ROS pruža alate za
vizualizaciju i debagovanje, što olakšava razvoj i održavanje aplikacija. Podrška za više jezika
i operativnih sistema: ROS 2 podržava više jezika za programiranje i operativnih sistema, što
omogućuje razvoj aplikacija na više platformi.ROS ima klijentsko-server arhitekturu, u kojoj se
klijenti povezuju sa serverima preko mreže i koriste servise i objavljuju podatke. ROS mreža
se sastoji od nodova, koji predstavljaju jedinstvene procese u sistemu. Nodi se povezuju po-
moću poruka, koje se mogu poslati izmed̄u nodova putem kanala poznatih kao topik. Nodi
mogu takod̄e da objave podatke na topik ili da primaju podatke sa topika.ROS takod̄e sadrži
sistem paketa, koji se sastoji od skupova nodova, biblioteka i dokumentacije, koji se koriste za
razvoj aplikacija. Ovo omogućuje modularno dizajniranje i lako dodavanje ili uklanjanje delova
sistema bez potrebe za ponovnim kompajliranjem cijelog sistema.

2.1.1 Glavni ciljevi ROS-a


Olakšavanje razvoja aplikacija za upravljanje robota. Standardizacija protokola i alata za ko-
munikaciju i razvoj softverskih paketa. Podrška razvoja i održavanja aplikacija pomoću alata
za vizualizaciju i debagovanje. Podrška različitim jezicima za programiranje i operativnim sis-
temima Podržavanje razvoja i istraživanja u oblasti robota.

2.1.2 Koncepti ROS-a


ROS ima tri nivoa koncepata: nivo sistema datoteka, nivo računarskog grafa i nivo zajednice.

Nivo sistema datoteka


ROS (Robot Operating System) je okruženje za razvoj softvera za robotske aplikacije. Sistem
datoteka u ROS-u služi za organizovanje različitih resursa koji se koriste u ROS-u, kao što

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 3


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

su paketi, metapaketi, manifesti paketa, spremišta i tipovi poruka i usluga.Paketi su glavna


jedinica organizacije softvera u ROS-u i sadrže runtime procese (čvorove), biblioteke, podatke
i druge resurse koji se koriste zajedno. Metapaketi su paketi koji predstavljaju grupu drugih
paketa i najčešće se koriste kao unazad kompatibilni držači mjesta za prethodno napravljene
rosbuild stekove. Manifesti paketa su datoteke koje sadrže metapodatke o paketu, kao što su
ime, verzija, opis i informacije o licenci. Spremišta su kolekcije paketa koji dijele zajednički
sistem za upravljanje verzijama i mogu se objaviti zajedno pomoću alata za automatizaciju
otpuštanja catkin bloom. Tipovi poruka i usluga su opisi struktura podataka koji se koriste u
porukama i uslugama u ROS-u.

Nivo ROS Computation Graph-a


ROS Computation Graph je mreža ROS procesa koji rado zajedno obrad̄uju podatke. Ovi pro-
cesi se nazivaju čvorovi i obično se koriste za izvod̄enje specifičnih zadataka u robotskom sis-
temu, kao što su kontrola laserskog daljinomjera, kontrola motora kotača, lokalizacija, plani-
ranje putanje itd. ROS Master omogućava čvorovima da se registruju i pronalaze jedni druge,
te da razmjenjuju podatke putem poruka i pozivaju usluge. Parametarski server služi za po-
hranjivanje podataka na centralnoj lokaciji pomoću ključa. Ovi koncepti su implementirani u
spremištu ros_comm.Usluge u ROS-u omogućavaju da se izvrše interakcije zahtjeva/odgovora
izmed̄u procesa u distribuiranom sistemu. Usluge se sastoje od para struktura poruka, jedne
za zahtjev i jedne za odgovor, i pružaju se pod imenom od strane jednog procesa (čvora), dok
se koriste od strane drugog procesa (klijenta) putem slanja zahtjeva i čekanja odgovora. Ove
interakcije se programeru generalno predstavljaju kao pozivi udaljenih procedura.ROS Master
je proces koji služi kao imenska usluga u ROS Computation Graph-u i pohranjuje informacije
o registraciji čvorova, temama i uslugama. Čvorovi komuniciraju s Masterom kako bi prijavili
svoje registracijske informacije i mogu dobiti informacije o drugim registrovanim čvorovima i
uspostaviti veze prema potrebi. Master takod̄er obavještava čvorove kada se registracijske in-
formacije promijene, što omogućava čvorovima da dinamički kreiraju veze prilikom pokretanja
novih čvorova. Čvorovi se direktno povezuju jedni s drugima, a Master pruža samo informacije
o traženju, slično kao DNS server. Čvorovi se pretplate na teme i uspostavljaju veze preko pro-
tokola povezivanja, najčešće TCPROS protokol koji koristi standardne TCP/IP utičnice. Ova
arhitektura omogućava odvojeni rad, gdje su imena glavno sredstvo za izgradnju složenijih sis-
tema. Čvorovi, teme, usluge i parametri imaju imena i mogu se remapirati tokom izvod̄enja da
bi se prilagodili drugoj topologiji Computation Graph-a.

Slika 2.1: Bazni koncept ROS-a

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 4


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

Nazivi u ROS-u
Nazivi resursa grafova u ROS-u pružaju hijerarhijsku strukturu imenovanja koja se koristi za
sve resurse u ROS računskom grafikonu, kao što su čvorovi, parametri, teme i usluge. Ova
imena omogućavaju enkapsulaciju i izolaciju različitih dijelova sistema, što smanjuje moguć-
nost sukoba izmed̄u resursa i olakšava integraciju različitih dijelova sistema. Imena se takod̄er
rješavaju relativno, tako da resursi ne moraju biti svjesni u kojem imenskom prostoru se nalaze,
što pojednostavljuje programiranje. Imena se sastoje od putanje koja se sastoji od segmenta
imena razdvojenih kosom crtom, a globalni imenski prostor je reprezentiran kosom crtom. Na
primjer, /stanford/robot/name je ime resursa s imenom ’name’ unutar imenskog prostora s ime-
nom ’robot’ unutar imenskog prostora. U ROS-u, postoje četiri tipa imena resursa grafikona:
Bazna imena su ona koja nemaju nikakve kvalifikatore prostora imena i podrazumijevaju se da
su relativna imena. Ova imena se najčešće koriste za inicijalizaciju imena čvora. Relativna
imena su ona koja se razriješavaju u odnosu na imenski prostor čvora. Na primjer, ako je čvor
/wg/node1 u imenskom prostoru /wg, onda će se ime čvor2 razriješiti u /wg/node2. Globalna
imena su ona koja počinju sa "/" i smatraju se potpuno razriješenim. Ova imena treba izbjegavati
jer ograničavaju prenosivost koda. Privatna imena su ona koja počinju sa " " i pretvaraju ime
čvora u imenski prostor. Na primjer, čvor1 u imenskom prostoru /wg/ će imati privatni imenski
prostor /wg/node1. Ova imena su korisna za prosljed̄ivanje parametara odred̄enom čvoru preko
servera parametara.

Imena resursa paketa u ROS-u


U ROS (Robot Operating System), imena resursa paketa se koriste da bi se olakšalo upućivanje
na datoteke i tipove podataka na disku. Ova imena se sastoje od imena paketa u kojem se
resurs nalazi i imena resursa. Na primjer, "std_msgs" se odnosi na tip poruke "String" u paketu
"std_msgs". Datoteke koje se odnose na ROS i na koje se može pozvati korištenjem imena
resursa paketa uključuju: vrste poruka, vrste usluga, i tipove čvorova. Imena resursa paketa
slična su putanjama datoteka, ali su kraća zbog sposobnosti ROS-a da locira pakete na disku
i da napravi dodatne pretpostavke o njihovom sadržaju. Na primjer, opisi poruka uvijek su
pohranjeni u poddirektoriju "msg" i imaju ekstenziju ".msg", tako da je "std_msgs" skraćenica
za "path/to/std_msgs/msg/String.msg". Imena resursa paketa moraju počinjati sa slovom i ne
smiju sadržavati nikakve posebne znakove, osim donje crte. Validna imena se sastoje od prvog
alfa znaka i narednih znakova koji mogu biti alfanumerički, donja crta ili kosa crta, s tim da
kosa crta može biti prisutna samo jednom.

2.1.3 ROS koncepti višeg nivoa


ROS (Robot Operating System) je open source platforma koja se koristi za razvoj robotskih sis-
tema. Ona pruža set alata za razvoj aplikacija za robotske sisteme, kao što su razmjena podataka
izmed̄u različitih komponenti sistema, sistem za upravljanje vremenom, i alati za razvoj vizueli-
zacije. ROS je dizajniran da bude agnostičan prema arhitekturi, što znači da se može integrisati
sa različitim robotskim platformama i hardverskim konfiguracijama. Postoji nekoliko "steka"
(stack) koji se koriste sa ROS-om kako bi se omogućila izgradnja više složenih sistema. Na
primer, "common" stek pruža koncepte višeg nivoa za upotrebu sa ROS-om, "common_msgs"
stek pruža ontologiju osnovnih poruka za robotske sisteme, a "geometry" stek pruža poruke za
predstavljanje uobičajenih geometrijskih primitiva. Ostali korisni alati uključeni u ROS su "tf"
paket za izračunavanje položaja višestrukih koordinatnih okvira tokom vremena, "actionlib" pa-
ket za definiranje zajedničkog sučelja za zadatke koji se mogu preokupiti u ROS-u, "pluginlib"

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 5


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

za dinamičko učitavanje biblioteka u C++ kodu, i "filteri" paket za obradu podataka pomoću
niza filtera. "Urdf" paket takod̄er definira XML format za predstavljanje modela robota i obez-
bjed̄uje C++ parser.

2.1.4 ROS klijentske biblioteke


ROS (Robot Operating System) klijentska biblioteka je zbirka koda koja olakšava programira-
nje u ROS-u. One omogućavaju pisanje ROS čvorova, objavljivanje i pretplatu na teme, pisanje
i pozivanje usluga, i korištenje poslužitelja parametara u različitim programskim jezicima. Tre-
nutno su najčešće korištene ROS klijentske biblioteke "roscpp", koja je napisana u C++ i dizaj-
nirana da bude biblioteka visokih performansi za ROS, i "rospy", koja je napisana u Pythonu i
dizajnirana da pruži prednosti objektno orijentisanog skriptnog jezika za ROS. Postoji i neko-
liko eksperimentalnih ROS klijentskih biblioteka, kao što su "rosjava", koja je implementirana
u Javi sa podrškom za Android, "rosnodejs", koja je napisana u Node.js i omogućuje direktnu
komunikaciju sa ROS Masterom, i "rosgo", koja je čista implementacija u Go jeziku.

2.1.5 Tehnički pregled ROS-a


Master
ROS Master je komponenta ROS sistema koja se implementira putem protokola XMLRPC, koji
je bez stanja i zasnovan na HTTP-u. XMLRPC je odabran jer je relativno lagan, ne zahtijeva
vezu sa stanjem i dostupan je u različitim programskim jezicima. Na primjer, u Pythonu se može
povezati s ROS Masterom preko ServerProxy klase i koristiti API-je za registraciju čvorova
kao izdavača, pretplatnika i pružaoca usluga. ROS Master se nalazi na odred̄enom URI-ju i
pohranjen je u varijabli okruženja ROS_MASTER_URI. Po defaultu, Master će se vezati za
port 11311.

Parametarski Server
Parametarski server je komponenta ROS sistema koja se nalazi u ROS Master-u i služi za skla-
dištenje i preuzimanje parametara različitih tipova podataka. API parametarskog servera je
implementiran putem protokola XMLRPC, što omogućava laganu integraciju sa ROS klijent-
skim bibliotekama i veću fleksibilnost u skladištenju i preuzimanju podataka. Parametarski
server može pohraniti osnovne XML-RPC skalare, liste i binarne podatke kodirane base64. On
takod̄er može pohraniti rječnike, ali oni imaju posebno značenje jer se koriste za predstavljanje
imenskih prostora u hijerarhijskoj strukturi. Koristeći XMLRPC API, moguće je upućivati po-
zive parametarskom serveru i koristiti njegove funkcije, čak i bez potrebe za korištenjem ROS
klijentske biblioteke. Detaljan popis API-ja parametarskog servera može se naći u dokumenta-
ciji.

Čvor
ROS čvor je softverska jedinica koja se izvodi na računalu i koja se koristi za odred̄enu funk-
cionalnost u okviru ROS sistema. Čvorovi se mogu komunicirati jedni s drugima koristeći
ROS mehanizme za objavljivanje i pretplaćivanje na teme, te takod̄er mogu koristiti ROS us-
luge za med̄usobnu komunikaciju. Čvorovi se spajaju na ROS glavni poslužitelj (Master), koji
služi kao početna točka za uspostavljanje komunikacije izmed̄u čvorova. ROS čvor ima više
API-ja, uključujući podred̄eni API koji se koristi za primanje povratnih poziva od glavnog i za

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 6


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

pregovaranje veza s drugim čvorovima, te transportne protokole tema TCPROS i UDPROS za


uspostavljanje veza tema izmed̄u čvorova. Čvorovi takod̄er imaju URI koji odgovara host:portu
XMLRPC poslužitelja koji služi za komunikaciju s Masterom i za pregovaranje veza s drugim
čvorovima, te pruža Slave API za primanje poziva za ažuriranje izdavača od Mastera. Pret-
platnici se mogu povezati s izdavačima tema putem XMLRPC poslužitelja izdavača, a zatim
uspostavljaju zasebnu vezu za prijenos tema koristeći protokol poput TCPROS-a i potrebna
podešavanja.

Transport Topic-a
U ROS-u, postoje različiti načini za slanje podataka izmed̄u čvorova, od kojih svaki ima svoje
prednosti i nedostatke, ovisno o specifičnoj aplikaciji. TCP je široko korišten zbog svoje jed-
nostavnosti i pouzdanosti, ali može biti neprikladan za mreže s velikim gubitkom podataka
poput WiFi-ja ili ćelijskih modema. U takvim situacijama, UDP je bolji izbor jer ne pokušava
ponovno slati izgubljene pakete. ROS ne preferira niti jedan transport, već dopušta čvorovima
da pregovaraju o vezi preko XMLRPC-a i koriste odgovarajući transport za razmjenu podataka
o temama. Ovaj transport može biti TCP ili UDP, a oba imaju svoje specifične protokole za pri-
jenos podataka. XMLRPC se koristi samo za pregovaranje o vezama, a ne za prijenos podataka
izmed̄u čvorova. Kada se dva čvora povežu, oni razmjenjuju informacije o tipu poruke i nazivu
teme, a zatim izdavač počinje slati serijalizirane podatke poruke direktno preko veze koristeći
odgovarajući transport.Ukratko, ROS omogućava čvorovima da koriste različite transporte za
komunikaciju, a XMLRPC se koristi samo za pregovaranje o vezama izmed̄u čvorova. Čvorovi
se direktno povezuju i razmjenjuju podatke, bez posredovanja od strane Mastera. To omogućava
fleksibilnost u odabiru transporta i prilagodljivost različitim mrežnim okruženjima.

Serijalizacija poruka i sume MD5 poruka


ROS čvorovi se med̄usobno povezuju kako bi razmjenjivali poruke putem tema. Čvorovi ko-
riste URI (Uniform Resource Identifier) da se identifikuju i pregovaraju o vezama s drugim
čvorovima preko XMLRPC protokola. Kada se čvorovi uspješno povežu, koriste se različiti
transportni protokoli, poput TCPROS i UDPROS, da bi se prenosile poruke izmed̄u njih. Po-
ruke u ROS-u su verzionisane pomoću MD5 sume teksta poruke, a tipovi poruka su kompaktno
serijalizirani u obliku sličnom c-strukturi. Ovi mehanizmi omogućavaju čvorovima da efikasno
razmjenjuju podatke putem mreže, bez obzira na vrstu mreže koja se koristi.

Uspostavljanje veze izmed̄u topic-a


Pretplatnik se spaja na Publisher koristeći odabrani transportni protokol, kao što je TCPROS.
XMLRPC dio ovog procesa izgleda ovako: prvo, pretplatnik se registrira kod Mastera sa svo-
jim imenom, nazivom teme i tipom poruke koju želi da prima. Master odgovara da trenutno
nema aktivnih izdavača za tu temu. Nakon toga, izdavač se registrira kod Mastera sa svojim
imenom, nazivom teme i tipom poruke koju želi da objavi. Master primjećuje da pretplatnik
želi da prati tu temu i obavještava pretplatnika o novom izdavaču putem povratnog poziva "pu-
blisherUpdate". Pretplatnik se potom spaja na izdavača koristeći protokol TCPROS i zahtijeva
od izdavača da mu pošalje temu. Izdavač odgovara odabirom TCPROS protokola i pretplatnik
kreira novu vezu sa izdavačem preko TCPROS protokola sa odgovarajućim hostom i portom.
Da bi se kontrolisao Hokuyo laserski daljinomer, pokreće se čvor hokuyo_node koji raz-
govara sa laserom i objavljuje senzor_msgs/LaserScan poruke na temu skeniranja. Da bi se

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 7


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

Slika 2.2: Primjer master-node komunikacije

vizualizirali podaci laserskog skeniranja, pokreće se rviz čvor i pretplaćuje se na temu skeni-
ranja. Nakon pretplate, rviz čvor počinje da prima LaserScan poruke i prikazuje ih na ekranu.
Oba čvora su nezavisna od jedna drugog i mogu se pokrenuti, ugasiti i ponovo pokrenuti u bilo
kom redoslijedu bez ikakvih grešaka. Da bi se povezali čvorovi laser_viewer i hokuyo_node,
koristi se usluga imena koja se obezbjed̄uje od strane master čvora. Master čvor ima dobro poz-
nati XMLRPC URI koji je dostupan svim čvorovima. Prije nego što se tema objavi po prvi put,
čvor se oglašava da želi da objavi na toj temi i šalje masteru, putem XMLRPC-a, informacije o
publikaciji, uključujući tip poruke, naziv teme i URI čvora za objavljivanje. Master održava ove
informacije u tabeli izdavača. Kada se čvor pretplati na temu, komunicira sa masterom putem
XMLRPC-a i šalje mu iste informacije (tip poruke, ime teme i URI čvora). Master održava ove
informacije u tabeli pretplatnika i vraća pretplatniku trenutnu listu URI-ja izdavača. Pretplat-
nik će takod̄er primati ažuriranja od mastera kako se lista izdavača mijenja. Na osnovu liste
izdavača, pretplatnički čvor spreman je da pokrene veze specifične za transport.

Uspostavljanje servisne veze


Uspostavljanje servisne veze se može posmatrati kao pojednostavljena verzija tema u ROS sis-
temu. Dok teme mogu imati više izdavača, samo jedan čvor može biti pružalac usluge. Najno-
viji čvor koji se registruje kod mastera se smatra trenutnim pružaocem usluge, što omogućava
jednostavniji protokol za podešavanje. Servis se prvo registruje kod Mastera, a zatim klijent
usluge traži uslugu na Masteru. Klijent usluge se potom povezuje sa pružaocem usluge preko
TCP/IP veze i obostrano razmjenjuje zaglavlja. Nakon toga, klijent usluge šalje serijaliziranu
poruku zahtjeva, a pružalac usluge odgovara serijalizovanom odgovornom porukom.Ako se ovo
čini poznatim, to je zato što se servisna veza u ROS-u zapravo temelji na TCPROS protokolu.
I rospy i roscpp koriste istu TCP/IP serversku utičnicu za primanje tematskih i servisnih veza.
Kako Master ne vrši povratne pozive prilikom registracije nove usluge, mnoge klijentske bibli-
oteke pružaju API metod "čekaj na uslugu", koji jednostavno ponavlja pozive Masteru dok se
usluga ne pojavi.

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 8


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

Uspostavljanje stalne servisne veze


Po defaultu, servisne veze su bez stanja. Za svaki poziv koji klijent želi da obavi, ponavlja ko-
rake traženja usluge na glavnom ured̄aju i razmjene podataka o zahtjevu/odgovoru preko nove
veze.Pristup bez stanja generalno je robusniji jer omogućava ponovno pokretanje servisnog
čvora, ali ovi troškovi mogu biti visoki ako se česti, ponovljeni pozivi upućuju istoj usluzi.ROS
omogućava trajne veze sa uslugom, koje obezbed̄uju vezu sa veoma velikom propusnošću za
upućivanje ponovljenih poziva na uslugu. Sa ovim trajnim vezama, veza izmed̄u klijenta i us-
luge ostaje otvorena tako da klijent usluge može nastaviti slati zahtjeve preko veze.Veću pažnju
treba koristiti sa upornim vezama. Ako se pojavi novi provajder servisa, on ne prekida tekuću
vezu. Slično, ako trajna veza ne uspije, nema pokušaja ponovnog povezivanja.

* * *

U ovom poglavlju su opisani osnovni koncepti ROS-a. U nastavku će biti opisani osnovni
koncepti QT tehnologije.

2.2 QT tehnologija
Qt se koristi za razvoj različitih vrsta aplikacija, uključujući grafičke korisničke interfejse (GUI)
za desktop aplikacije, igre, mobilne aplikacije i embedded sisteme. Okvir pruža veliki broj
alata i biblioteka za razvoj aplikacija, uključujući widgete za korisnički interfejs, alate za rad
sa podacima, podršku za različite grafičke formate i mnoge druge. Qt takod̄e uključuje QML,
jezik za razvoj interaktivnog korisničkog interfejsa za mobilne aplikacije i embedded sisteme.
Qt je dostupan pod različitim licencama, uključujući GPL i komercijalnu licencu.

2.2.1 Šta je QT tehnologija?


Qt nije programski jezik sam po sebi. To je okvir napisan u C++.MOC (Meta-Object Compiler)
je pretprocesor koji se koristi u okviru Qt za proširivanje jezika C++ sa dodatnim karakteris-
tikama kao što su signali i slotovi. On analizira izvorne datoteke napisane u Qt-proširenom
C++-u prije kompilacije i generiše standardno usklad̄ene C++ izvore. Ovaj proces omogućava
razvoj aplikacija i biblioteka koristeći Qt okvir pomoću bilo kojeg standardnog kompatibilnog
C++ kompajlera, poput Clanga, GCC-a, ICC-a, MinGW-a i MSVC-a.

2.2.2 QT Kompanija i QT Projekat


Qt Company, bivši Trolltech, je glavni pokretač Qt projekta i odgovoran za većinu razvoja Qt-a.
Med̄utim, Qt projekat je otvoren za doprinos svih zainteresovanih pojedinaca i kompanija. Qt
projekat je savez mnogih kompanija i pojedinaca koji su spremni da doprinesu razvoju Qt-a i
slijede meritokratski model upravljanja. Ovo omogućava da se Qt razvija u skladu sa potrebama
i željama korisnika i da se koristi širom svijeta u mnogim različitim industrijama.Razvoj Qt-a
započeli su 1990. godine norveški programeri Eirik Chambe-Eng i Haavard Nord. Njihova
kompanija, Trolltech, koja je prodavala Qt licence i pružala podršku, prošla je kroz nekoliko
akvizicija tokom godina. Danas bivši Trolltech nosi naziv The Qt Company i podružnica je u
potpunom vlasništvu Digia Plc., Finska. Iako je Qt Company glavni pokretač Qt-a, Qt je sada
razvijen od strane većeg saveza: Qt Project. Sastoji se od mnogih kompanija i pojedinaca širom
svijeta i slijedi meritokratski model upravljanja.

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 9


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

2.2.3 Build sistem


Da bi se koristili qmake ili CMake za izgradnju Qt projekta, prvo je potrebno instalirati Qt na
računar. To može biti preuzeto sa službenog sajta Qt-a i instalirano na vaš računar.Nakon što je
Qt instaliran, potrebno je napraviti Qt projekat pomoću Qt Creator-a ili ručno kreiranjem .pro
ili .cmake datoteke, u zavisnosti od toga koji sistem izgradnje koristite.Kada kreirate projekat,
možete pozvati qmake ili CMake da bi se projekat sastavio u binarnu datoteku. To se može
uraditi iz Qt Creator-a ili iz komandne linije, u zavisnosti od toga koji način rada preferirate.Za
Qbs, postupak je sličan. Potrebno je instalirati Qbs i kreirati projekat pomoću Qbs-a. Nakon
toga, možete pozvati Qbs da bi se projekat sastavio u binarnu datoteku. Qbs takod̄e pruža
mogućnost automatskog pakovanja projekta u različite instalacione pakete, što je korisno za
distribuciju vašeg projekta.

2.2.4 Razvojno okruženje


Qt je razvojni okvir koji dolazi sa svojim integrisanim razvojnim okruženjem (IDE) pod nazi-
vom Qt Creator. Ovo okruženje je dostupno za Linux, OS X i Windows i pruža alate poput
inteligentnog dovršavanja koda, isticanja sintakse, integrisanog sistema pomoći, integracije de-
bagera i profilera, kao i integracije za sisteme za kontrolu verzija kao što su git i Bazaar. Osim
Qt Creator-a, programeri na Windows-u mogu koristiti i Qt Visual Studio dodatak. Med̄utim, Qt
se može koristiti sa bilo kojim tekstualnim ured̄ivačem ili integrisanim razvojnim okruženjem
koje podržava C++, poput KDevelop-a na KDE-u. Korisnici nisu obavezni da koriste bilo koji
IDE kada rade sa Qt-om.

2.2.5 QT widgets
Qt Widget modul omogućava razvoj korisničkih interfejsa pomoću standardnih widget-a kao
što su dugmad, polja za unos teksta, izbornici i drugi. Qt Designer je alat za dizajn korisnič-
kih interfejsa koji se može koristiti za izradu GUI-ja zasnovanih na widgetima. On omogućava
vizuelno dizajniranje prozora i formi sa widgetima i automatski generiše kod za njih. Qt De-
signer se može koristiti samostalno ili se može integrisati u Qt Creator da bi se olakšao razvoj
projekata. On takod̄e omogućava promjenu izgleda widget-a pomoću stilova i tema.

2.2.6 QT Quick Modul


QtQuick modul omogućava razvoj korisničkih interfejsa korištenjem QML jezika i QtQuick
modula. QML je deklarativni jezik opisa objekata koji se koristi za opisivanje GUI-ja, a koji se
može integrisati sa Javascript-om za proceduralno programiranje. QtQuick modul pruža mnoš-
tvo widget-a i alata za razvoj GUI-ja sa QML-om. Aplikacije se mogu napisati isključivo u
QML-u, ali je obično samo GUI napisan u QML-u, dok je pozadina aplikacije implementirana u
C++. Qt Creator takod̄e ima integrisani QtQuick GUI dizajner i profiler za olakšavanje razvoja
aplikacija sa QtQuick-om. QtQuick modul omogućava razvoj korisničkih interfejsa korište-
njem QML jezika i QtQuick modula. QML je deklarativni jezik opisa objekata koji se koristi za
opisivanje GUI-ja, a koji se može integrisati sa Javascript-om za proceduralno programiranje.
QtQuick modul pruža mnoštvo widget-a i alata za razvoj GUI-ja sa QML-om. Aplikacije se
mogu napisati isključivo u QML-u, ali je obično samo GUI napisan u QML-u, dok je pozadina
aplikacije implementirana u C++. Qt Creator takod̄e ima integrisani QtQuick GUI dizajner i
profiler za olakšavanje razvoja aplikacija sa QtQuick-om.Qt je mnogo više od okvira za razvoj

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 10


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

korisničkih interfejsa. On pruža mnoge module za krosplatformski razvoj u različitim oblas-


tima, uključujući umrežavanje, rad sa bazama podataka, rad sa OpenGL-om, web tehnologije,
rad sa senzorima, komunikacijski protokoli (kao što su Bluetooth, serijski portovi i NFC), rad
sa XML-om i JSON-om, ispis i generiranje PDF-a i još mnogo toga.Postoje mnoge treće strane
koje pružaju language bindings za Qt, što omogućava da se Qt koristi sa drugim jezicima, poput
Pythona i PyQt-a od strane Riverbank Computing-a.

2.3 x100 mobilni robot

Slika 2.3: Mobilni robot x100

2.3.1 XMACHINES kompanija


Mobilni robot x100 je proizvod kompanije Xmachines. XMachines je indijska kompanija koja
se bavi robotikom i umjetnom inteligencijom, sa sjedištem u Hyderabadu. Ona dizajnira i pro-
izvodi proizvode koji kombinuju robotiku i AI tehnologije za potrošačko i poslovno tržište.
Osnovana 2017. godine sa ciljem da premosti tehnološki jaz u indijskoj poljoprivredi, kom-
panija se kasnije proširila na proizvodnju robota za različite industrije. Trenutno, XMachines
proizvodi AI bazirane robote za preciznu poljoprivredu, autonomne mobilne robote za automa-
tizaciju operacija rukovanja materijalom u proizvodnim i skladišnim objektima, kao i mobilne
robotske platforme za istraživače robotike.

2.3.2 x100 UGV


X100 UGV (Unmanned Ground Vehicle) je najnovija platforma za bespilotno zemaljsko vo-
zilo bez posade. Ona je idealna za razvoj i testiranje novih robotskih aplikacija i algoritama.

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 11


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

X100 se karakteriše robusnom čeličnom šasijom, glatko kalibriranim pogonom i pneumatskim


gumama sa gazećim slojem, kao i kompaktnom veličinom i prenosivim oblikom. To čini ga
savršenom platformom za univerzitete i kompanije za testiranje novih robotskih aplikacija i al-
goritama. API koji podržava ROS (Robot Operating System) čini ga svestranom platformom
za istraživanje i razvoj u različitim oblastima kao što su svemirska industrija, grad̄evinarstvo,
rudarstvo, poljoprivreda i robotici isporuke.

2.3.3 Karakteristike x100 UGV-a


X100 UGV (Unmanned Ground Vehicle) je bespilotno zemaljsko vozilo bez posade koje je
idealno za razvoj i testiranje novih robotskih aplikacija i algoritama. Ključne karakteristike
X100 su:

• Težina od 75 kg i nosivost od 75 kg: X100 je sposoban da nosi teret od 75 kg na svojoj


šasiji, što ga čini pogodnim za različite aplikacije.

• 7 inčni ekran na dodir: X100 dolazi sa 7 inčnim ekranom na dodir, što omogućava koris-
niku da interaktivno kontroliše robota.

• Nominalno vrijeme rada od 4 sata: X100 ima vrijeme rada od 4 sata, što omogućava dulje
vrijeme rada bez potrebe za punjenjem.
itemDimenzije od 40 cm širine: X100 je kompaktnog oblika sa širinom od 40 cm, što
omogućava lakše kretanje po različitim prostorima.

• Baterije: X100 dolazi sa dva seta baterija koje se mogu zamijeniti u vrućem stanju za
samo nekoliko sekundi bez isključivanja robota, što omogućava produženu upotrebu i
neprekidan rad.

• Korisna opterećenja: Dizajn šasije robota omogućava montiranje tereta na gornju, straž-
nju i prednju stranu robota bez ugrožavanja stabilnosti. Šasija je dizajnirana s niskim
težištem koje pomaže da robot bude stabilan i siguran s različitim veličinama i konfigu-
racijama nosivosti, što omogućava maksimalnu fleksibilnost prilikom postavljanja tereta
na robota.

• Mehanički: Robusna platforma za više terena, izrad̄ena od visokokvalitetnog nehrd̄ajućeg


čelika, sa 4 kotača sa individualnim pogonom i gumenim ušicama. To omogućava X100
da se kreće po izazovnom terenu.

• Compute Power: Nvidia Xavier NX - X100 dolazi sa Nvidia Xavier NX, moćnim ugrad̄e-
nim računarom koji je prilagodljiv za intenzivno mašinsko učenje i aplikacije mašinskog
vida.

• Softver: ROS - X100 podržava ROS iz kutije, što omogućava lako pokretanje projekata.

• Dodaci: Senzori, aktuatori i kamere se mogu lako povezati sa X100. Ovo omogućava
fleksibilnost prilikom postavljanja dodatnih komponenti za različite aplikacije.

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 12


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

2.3.4 Prvi koraci sa x100 mobilnim robotom


Potrebno je provjeri da su baterije pravilno priključene i da su vrata za baterije zatvorena prije
pokretanja robota. Takod̄er se preporučuje da se korisnički priručnik pročita za više informacija.
Da bi se uključio robot, pritisnuti glavno dugme za napajanje i zatim uključiti računar pritiskom
na dugme za napajanje računara. Trebalo bi se vidjeti kako se ekran uključuje i čekati da se
pojavi početni ekran XMachines-a. Potom treba uraditi sljedece korake:

• Provjeriti jesu li baterije pravilno priključene i jesu li vrata za baterije zatvorena.

• Pritisniti glavno dugme za napajanje da uključite robota.

• Uključiti računar pritiskom na dugme za napajanje računara.

• Kliknuti na Playstation dugme da se povežete sa robotom.

• Dvaput kliknuti na x100.php.html kako biste otvorili web pretraživač i kliknite na start
teleop.

• Sačekati dok na ekranu ne vidite napon i struju baterije.

• Povezati se sa x100 hotspotom koristeći SSID: xmachines-x100 i lozinku: xmachines.

• Pristupiti x100 preko SSH-a koristeći naredbu: "ssh -X xmachines_x100@10.42.0.1" i


unesite zadanu lozinku.

• Nakon korištenja, obavezno kliknuti na dugme za zaustavljanje.

Nadalje, Ovo su upute za povezivanje robota x100 na internet. Korisnik može koristiti ekran
osjetljiv na dodir da isključi hotspot i poveže se na svoju WiFi mrežu. Da biste to učinili, klik-
nite na wifi simbol u gornjem desnom kutu, kliknite na prekid veze i odaberite svoju wifi mrežu
i unesite lozinku. Takod̄er se navodi korištenje CLI-ja za uključivanje i isključivanje hots-
pota. Da biste to učinili, idite u /etc/NetworkManager/system-connections, kopirajte naziv vaše
mreže i upišite naredbu "sh hotspot_off.sh –ssid="vaš WifiSSID" za isključivanje hotspota ili
"sh hotspot_off.sh –ssid="vaš WifiSSID" za ponovno uključivanje. Korisnik može koristiti CLI
da uključi i isključi hotspot. To se radi tako što se navigira do /etc/NetworkManager/system-
connections direktorijum kucanjem "cd /etc/NetworkManager/system-connections" i zatim ku-
canjem "ls" da se vide poznate mrežne veze. Korisnik treba da kopira ime svoje mreže i kuca
naredbu "sh hotspot_off.sh –ssid="vaš WifiSSID" da bi isključio hotspot ili "sh hotspot_off.sh
–ssid="vaš WifiSSID" da ga ponovo uključi. Robot x100 se takod̄e može koristiti u simuli-
ranim okruženjima koristeći ROS i Gazebo simulaciju. Da bi se to uradilo, korisnik treba da
klonira x100_gazebo repozitorijum u svoj catkin_ws/src/ ili u postojeći x100_robot/ radni pros-
tor. Zatim treba da pokrene naredbu catkin_make iz foldera catkin_ws, i naredbu "roslaunch
x100_gazebo x100_sim.launch" u novom terminalu da bi pokrenuo x100 u Gazebo-u. Korisnik
sada treba da može da vidi x100 u Gazebo-u. Pokrenite datoteku X100_base.launch i pretplatite
se na sljedeće teme:

• /cmd_vel (geometry_msgs/Twist) - koristi se za pomicanje robota naprijed i nazad, te


rotiranje robota lijevo i desno.

• /x100/front_lights (std_msgs/Int16) - koristi se za kontrolu svjetline prednjih LED dioda,


opseg unosa je od 0 do 100 u procentima.

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 13


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

Slika 2.4: Mobilni robot x100 unutar simulatora Gazebo

Objavljene teme:

• /x100/odom (nav_msgs/Odometry) - neobrad̄ena kilometraža generirana od enkodera ko-


tača.

• /x100/napon (std_msgs/Float32) - objavljuje napon baterije u voltima.

• /x100/current (std_msgs/Float32) - objavljuje ukupnu struju koju robot troši u Amperima.

• /joy - objavljuje podatke koji se odnose na kontrole džojstika.

• /x100/motor_controller_1_temp (std_msgs/Int16) - objavljuje status temperature regula-


tora motora.

• /x100/motor_controller_2_temp (std_msgs/Int16) - objavljuje status temperature regula-


tora motora.

• /x100/motor_controller_3_temp (std_msgs/Int16) - objavljuje status temperature regula-


tora motora.

• /x100/motor_controller_4_temp (std_msgs/Int16) - objavljuje status temperature regula-


tora motora.

Obavezno se pretplatiti na ove teme i često pratiti temperature.

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 14


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

2.4 QT Creator
2.4.1 Hello World program
Nadalje pokazat cemo u nastavku kako napraviti jednostavan "Hello world!" program u QT
creator.

• Kada se pokrene QT creator treba da se pojavi sljedeci pocetni prozor. 2.5 a

• Sada se pritisne na dugme za kreiranje novog projekta. Te se dobije sljedeci prozor. 2.5 b

(a) (b)

Slika 2.5

• Potom, izaberite opciju QT Widget Application. 2.6 a

• Sada se definiše ime projekta te, što će ujedno biti i naziv direktorije gdje je sačuvan
projekat.2.6 b

(a) (b)

Slika 2.6

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 15


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

• Nadalje, se odabere qmake kompajler. 2.7 a

• Zatim, se unese informacija o klasi. Po default-u je "MainWindow".2.7 b

(a) (b)

Slika 2.7

• Odabere se kit, te se nastavi.2.8 a

• Na kraju se pritisne na dugme "Finish". 2.8 b

(a) (b)

Slika 2.8

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 16


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

• Nakon klika na dugme za završetak otvoriće se glavni program. Kao što se može vidjeti
na donjoj slici.2.9 a
• Kada se pokrene aplikacija dobije se rezultujući prozor kao na slici. 2.9 b

(a) (b)

Slika 2.9

Program 2.1: Kreiranje jednostavnog HelloWorld Dugmeta u Qt Creatoru koristeći c++:


1
2 #include <QApplication>
3
4 #include<QPushButton>
5
6 int main(int argc, char *argv[])
7
8 {
9
10 QApplication a(argc, argv);
11
12 QPushButton HelloWorld("Hello World");
13
14 HelloWorld.resize(300,60);
15
16 HelloWorld.show();
17
18 return a.exec();
19
20 }

Objasnit ćemo programski kod u nastavku:


• #include <QApplication> : Ova linija uključuje zaglavlje QApplication klase, koja pruža
osnovnu funkcionalnost potrebnu za Qt aplikacije.
• #include <QPushButton> : Ova linija uključuje zaglavlje QPushButton klase, koja pred-
stavlja klikabilno dugme u Qt baziranom grafičkom korisničkom interfejsu.
• int main(int argc, char *argv[]) : Ovo je glavna funkcija programa, koja se izvršava
kada se program pokrene. Ona prima dva argumenta: argc, koji je broj argumenata ko-
mandne linije koji su proslijed̄eni programu, i argv, što je niz stringova koji predstavljaju
te argumente.

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 17


Analiza ROS operativnog sistema, QT tehnologije, te specifikacije mobilnog robota x100

• Otvorena vitičasta zagrada : Ovo označava početak bloka koda glavne funkcije.

• QApplication a(argc, argv); : Ova linija kreira novi QApplication objekt nazvan a,
proslijed̄ujući argc i argv kao argumente. Ovo inicijalizira Qt aplikaciju i postavlja petlju
dogad̄aja.

• Zatvorena vitičasta zagrada : Ovo označava kraj opsega QApplication objekta.

• QPushButton HelloWorld("Hello World"); : Ova linija kreira novi QPushButton objekt


nazvan HelloWorld sa tekstom "Hello World".

• HelloWorld.resize(300,60); : Ova linija mijenja veličinu dugmeta HelloWorld na 300


piksela širine i 60 piksela visine.

• HelloWorld.show(); : Ova linija prikazuje dugme HelloWorld na ekranu.

• Zatvorena vitičasta zagrada: Ovo označava kraj bloka koda glavne funkcije.

• return a.exec(); : Ova linija pokreće petlju dogad̄aja za QApplication objekt i čeka da se
korisnički dogad̄aji dogode. Kada korisnik zatvori prozor aplikacije, petlja dogad̄aja se
zaustavlja i ova linija vraća izlazni kod aplikacije.

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 18


Poglavlje 3

Povezivanje ROS operativnom sistema sa


QT aplikacijom

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 19


Poglavlje 4

Izrada QT aplikacije

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 20


Poglavlje 5

Eksperimentalni rezultati

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 21


Zaključak

Može se zaključiti da je softversko rješenje za upravljanje mobilnim robotom X100 uspješno


razvijeno i implementirano. Korisnički interfejs u QT omogućava lakše upravljanje robotom,
a operativni sistem ROS pruža platformu za integraciju različitih senzora i algoritama. Testira-
njem je utvrd̄eno da je softversko rješenje efikasno u omogućavanju preciznog kretanja robota
u prostoru i prilagod̄avanju njegovih aktivnosti trenutnim okolnostima. Ukupno, softversko
rješenje za upravljanje mobilnim robotom X100 predstavlja važan korak u razvoju efikasnih i
sigurnih sistema za upravljanje mobilnim robotima. Daljnjim istraživanjem i razvojem, postoje
mogućnosti za unapred̄enje softverskog rješenja za upravljanje mobilnim robotom X100. To
uključuje dodavanje novih funkcionalnosti i poboljšanje postojećih, kao i integraciju sa drugim
sistemima i senzorima. Nadalje, softversko rješenje za upravljanje mobilnim robotom X100
može se primijeniti u različitim aplikacijama, uključujući transport robe, obavljanje zadataka
u nepristupačnim područjima ili izvod̄enje rutinskih poslova. Ukupno, softversko rješenje za
upravljanje mobilnim robotom X100 predstavlja važan korak u razvoju efikasnih i sigurnih sis-
tema za upravljanje mobilnim robotima i ima veliki potencijal za široku primjenu u različitim
industrijskim i neindustrijskim aplikacijama.

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 22


Prilozi

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 23


Prilog A

Korištenje funkcija u Tex-u

Sadržaji koji se mogu uključiti u Priloge su: izvod̄enje jednačina i formula, detalji važnijih
softverskih programa, razne tabele i dijagrami, karkateristike i performanse ili opisi opreme i
komponenti koje su korištene u disertaciji/radu. Mogu se takodjer uključiti konstrukcioni crteži
ili električne sheme.
U ovom prilogu prikazane su neke od funkcije koje se mogu koristiti prilikom oblikovanja
rada i prikaza rezultata istraživanja korištenjem LATEXa.

A.1 Matematički izraz


Primjer matematičke formule prikazan je izrazom

T : xB 7→ xA ⇔ T (xB ) = xA . (A.1)
Matematičke relacije se u LATEXrazvojnom okruženju automatski numeriraju. Med̄utim, da
bi se pojedina relacija (slika, tabela) referencirala u tekstu, potrebno je da se svakoj relaciji
(slici, tabeli) dodijeli pogodna labela npr. \label{MojaRelacija}, a potom referencira
u .tex fajlu sa \ref{MojaRelacija}. Na taj način će se LATEXpobrinuti za odgovarajuće
kros-referenciranje.

A.2 Slika
Slika A.1 služi kao primjer uključivanja slike u tekst. Relacije, slike i tabele se automatski
numeriraju u LATEXu, i to sa oznakom brojpoglavlja.brojslike (npr. u Poglavlju 3 se numeriraju
sa 3.1, 3.2, ... neovisno od toga u kojoj sekciji ili podsekciji se nalaze).

A.3 Tabela
Formiranje tabele prikazano je na primjeru u Tabeli A.1. Za razliku od naslova slika, naslov
tabela stoji iznad odgovarajućih tabela u tekstu.

A.4 Landscape
Postavljanja stranice u prikaz landscape prikazano je umetanjem izduzene Slike A.3 u lands-
cape format papira.

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 24


Korištenje funkcija u Tex-u

Slika A.1: Primjer naslova slike - uputstvo za traženje bibiografskih referenci na Google Scholar.

Slika A.2: Primjer dijagrama - veličina i tip fonta na slici bi trebao odgovarati veličini i tipu fonta u
tekstu

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 25


Korištenje funkcija u Tex-u

Tabela A.1: Naslov tabele

Oznaka reda Kolona 1 Kolona 2 Kolona 3

red 1 1 2 3
red 2 3 2 1
red 3 E = mc2 2 3

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 26


Korištenje funkcija u Tex-u
Slika A.3: Primjer ekstrakcije bibliografskih stavki za kopiranje u .bib fajl, sa Google Scholara
Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 27
Korištenje funkcija u Tex-u

A.5 Indeks pojmova i Popis oznaka


Ukoliko je u radu neophodno uvesti i indeks, odnosno popis oznaka, onda se to radi na sljedeći
način. Prilikom definiranja indeksa koristi se \index{ime}. Npr. \index{uključivanja
slike}.
Kod dodavanja pojmova u Popis oznaka u .tex fajlu se koristi \nomenclature{simbol}
{opis}, npr. \nomenclature{ETF}{Elektrotehnički fakultet}. Generiranje
indeksa i Popisa oznaka se pravi korištenjem naredbi \makeindex i \makenomenclature
u preambli, odnosno \printindex i \printnomenclature na mjestu generiranja po-
pisa. Osim toga, potrebno je i kompajlirati dokument sa MakeIndex.

A.6 Korištenje literature


Popis literature navodi se na kraju rada. Da bi uz LATEXefikasno koristila literatura, potrebno je
da se generira fajl sa bibliografskim jedinicama. Fajl literatura.bib je sastavni dio ovog
rada, i može poslužiti kao primjer kako se pišu pojedine bibliografske jedinice. Svaki unos
(referenca) sadrži labelu na tu referencu, putem koje se bilo gdje u radu može citirati npr. sa
\cite{Hajn01} .
Dobar trik za popunjavanje bibliografskih unosa u .bib fajlu je korištenje Google Scholara
https://scholar.google.com/. Osim što je baza naučnih radova, Google Scholar
omogućava i kopiranje zapisa referenci na ispravan način. Podržani su svi najpopularniji formati
citiranja (MLA, Chicago, Harvard itd.), kao što se vidi na Slici A.1. Osim toga, klikom na
dugme "BibTeX", moguće je izabrati i zapis reference razumljive razvojnom okruženju LATEX,
a nakon toga je jednostavno kopirati u bibliografski fajl literatura.bib (vidjeti Sliku A.3).
Primjeri navod̄enja literature su knjiga [1], poglavlje u knjizi [2], članak objavljen u časopisu
[3], članak objavljen na konferenciji [4], doktorski rad [5], Internetski izvor [6] te različite
druge publikacije [7]. Stil navod̄enja literature temelji se na stilu razvijenom za IEEE časopise
i konferencije.

A.7 Programski kodovi


Programski kodovi se LATEXu navode korištenjem okruženja lstlisting. Primjer koda je
dat ispod.
Program A.1: Primjer programa
1 // program u C++
2 #include <iostream>
3
4 int main ()
5 {
6 std::cout << "Dobar Dan! ";
7 std::cout << "Prvi program u C++";
8 }

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 28


Literatura

[1] Hajnal, J. V., Hill, D., Hawkes, D. J., (ur.), Medical Image Registration. Boca Raton, USA:
CRC Press LLC, 2001.

[2] Sampat, M. P., Markey, M. K., Bovik, A. C., “Computer-Aided Detection and Diagnosis
in Mammography”, in Handbook of Image and Video Processing, Bovik, A., (ur.). Amster-
dam: Elsevier Academic Press, 2005, str. 1195-1217.

[3] Sim, T., Baker, S., Bsat, M., “The CMU Pose, Illumination, and Expression Database”,
IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 25, No. 12, Decem-
ber 2003, str. 1615-1618.

[4] Wirth, M. A., Choi, C., Jennings, A., “A Nonrigid-Body Approach to Matching Mammo-
grams”, in Seventh International Conference on Image Processing and Its Applications,
Manchester, UK, July 1999, str. 484-488.

[5] Williams, J., “Narrow-band Analyzer”, Doktorski rad, Harvard University, Cambridge,
MA, SAD, 1993.

[6] Jones, J., “Networks”, dostupno na: http://www.atm.com (28. srpnja 2012.).

[7] R Core Team, R: A Language and Environment for Statistical Computing, R Foundation
for Statistical Computing, Vienna, Austria, 2012, dostupno na: http://www.R-project.org

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 29


Indeks pojmova

uključivanje slike, 24

Garić, A., "Softversko rješenje za upravljanje mobilnim robotom x100" 30

You might also like