2D kaardistamine, automaatne navigeerimine¶
Mis on kaardistamine?¶
Siiani oleme kasutanud vaid andmeid, mida me saame reaalajas. Aga kas poleks mitte tore, kui robotil oleks mälu? Kui sõidame mõnest takistusest mööda, siis on kasulik see takistus meelde jätta ning edaspidisel teekonna planeerimisel arvesse võtta. Selleks ongi kaardistamine. Käesolevas peatükis koostame 2D kaardi ümbrusest. Selleks kasutame 3D kaamerast tulevat punktipilve ja töötleme selle ümber kahemõõtmeliseks laserskanniks. Seejärel kasutatakse laserskanni andmeid, et luua kahemõõtmeline kaart ja jätta meelde. Selles näites kasutame kaardi loomiseks ja sellel roboti asukoha määramiseks kasutame Google Cartographer tarkvara, mida muuhulgas kasutavad ka Google’i isesõitvad autod.
Laseri andmete visualiseerimine RVizis¶
RViz on ROSis põhiline programm, mida kasutada erinevate andmete graafiliseks visualiseerimiseks. Kõigepealt kasutame RVizi roboti kaugusanduri laserskanni pidevaks kujutamiseks ning hiljem juba valminud kaardi nägemiseks.
Ava uus terminal ja loo ssh-ühendus robotisse
Pane robotis käima vajalik ROS tarkvara
roslaunch robotont_teleop teleop_with_laserscan.launch
Ava teine terminal ning käivita klaviatuurilt juhtimise programm
seadista_robot
roslaunch robotont_teleop teleop_pc_side.launch
Ava kolmas terminal ning käivita laserskanni visualiseerimine RVizis
seadista_robot
roslaunch robotont_description display_laserscan.launch
Nüüd säti enda aknad nii, et näeksid korraga RVizi pilti ning terminali klaviatuurilt juhtimiseks.
Veendu, et oleks aktiivne aken, sõida ringi ja vaata, milline on pilt RVizis.
Vaadates ainult RVizi, sõida läbi ruumi keskel oleva takistusraja.
Kui oled valmis jätkma, sulge kõik terminaliaknad.
Ruumi kaardistamine¶
Nüüd kui oleme näinud, mida robot näeb, on aeg kaardistama hakata.
Ava terminal, loo ssh-ühendus robotisse ning trüki sinna
roslaunch robotont_teleop teleop_carto_with_navstack.launch
See tegeleb kaardistamisega.
Nüüd ava uus arvutipoolne terminal ning trüki sinna
seadista_robot
roslaunch robotont_description display_2dmapping.launch
Ava uus terminal ning trüki sinna
seadista_robot
roslaunch robotont_teleop teleop_pc_side.launch
Selles terminalis saad robotit juhtida.
Nüüd säti enda aknad nii, et näeksid korraga RVizi pilti ning seda terminali, kus klaviatuuriga juhtimine käib.
Sõida robotiga seni ringi kuni kaart tundub selge ning oled sellega rahul.
Kui oled oma kaardiga rahul, näita juhendajale ning liigu järgmise punkti juurde.
Autonoomne liikumine¶
Kui kaart on olemas, siis oskab robot ka enda asukoha seal leida. Veel enam, robot oskab ise sõita punktist A punkti B, mis talle ette anda.
RVizi aknas kliki esimesena ikoonil “2D Pose Estimate” ning tiri nool roboti sõidusuunas
Seejärel kliki sümbolil “2D Nav Goal” ning tiri nool kaardil sinna, kuhu tahad, et robot sõidaks.
Proovime ise¶
Seda, kuidas robot navigeerimisel käitub, saame ka ise seadistada. Roboti liikumist kaardi abil kujundab valik parameetreid. Ülesandeks on suurendada ja vähendada nende parameetrite väärtusi ning jälgida roboti käitumist ja dokumenteerida, mida ja kuidas muutes roboti käitumine muutus.
Parameetrid on:
acc_lim_x - maksimaalne lineaarkiirendus
acc_lim_theta - maksimaalne nurkkiirendus
yaw_goal_tolerance - kui täpne on roboti suund lõpppunktis
xy_goal_tolerance - kui täpne on roboti asend lõpppunktis
Mis juhtub kui neid parameetreid suurendada või vähendada?
See juhend eeldab, et kaart on tehtud ja RViz käib.
Loo ssh-ühendus robotisse
Ava fail
planner.yaml
käsuganano ~/catkin_ws/src/robotont/robotont_teleop/config/planner.yaml
Muuda korraga ainult ühte eelnevaist parameetrist oma äranägemise järgi.
Salvesta ja välju. (Ctrl+X)
Käivita uuesti planeerimistarkvara käsuga
roslaunch robotont_teleop navstack.launch
Proovi planeerida robotile teekond nagu eelmises ülesandes. Kas robot käitus teisiti? Kuidas robot käitus? Kirjuta üles, mida muutsid ning kuidas roboti planeerimine selle peale muutus. Olles terminalis, kus eelmist käsku jooksutasid, sule programm käsuga Ctrl+C. Mine punkti 2 ja proovi parameetreid teisiti muuta.