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.

  1. Ava uus terminal ja loo ssh-ühendus robotisse

  2. Pane robotis käima vajalik ROS tarkvara

    roslaunch robotont_teleop teleop_with_laserscan.launch
    
  3. Ava teine terminal ning käivita klaviatuurilt juhtimise programm

    seadista_robot
    
    roslaunch robotont_teleop teleop_pc_side.launch
    
  4. Ava kolmas terminal ning käivita laserskanni visualiseerimine RVizis

    seadista_robot
    
    roslaunch robotont_description display_laserscan.launch
    
  5. Nüüd säti enda aknad nii, et näeksid korraga RVizi pilti ning terminali klaviatuurilt juhtimiseks.

  6. Veendu, et oleks aktiivne aken, sõida ringi ja vaata, milline on pilt RVizis.

  7. Vaadates ainult RVizi, sõida läbi ruumi keskel oleva takistusraja.

  8. 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.

  1. Ava terminal, loo ssh-ühendus robotisse ning trüki sinna

    roslaunch robotont_teleop teleop_carto_with_navstack.launch
    

    See tegeleb kaardistamisega.

  2. Nüüd ava uus arvutipoolne terminal ning trüki sinna

    seadista_robot
    
    roslaunch robotont_description display_2dmapping.launch
    
  3. Ava uus terminal ning trüki sinna

    seadista_robot
    
    roslaunch robotont_teleop teleop_pc_side.launch
    

    Selles terminalis saad robotit juhtida.

  4. Nüüd säti enda aknad nii, et näeksid korraga RVizi pilti ning seda terminali, kus klaviatuuriga juhtimine käib.

  5. 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.

  1. RVizi aknas kliki esimesena ikoonil “2D Pose Estimate” ning tiri nool roboti sõidusuunas

    ../_images/2dposeestimate.png
    ../_images/poseestimatearrow.png
  2. Seejärel kliki sümbolil “2D Nav Goal” ning tiri nool kaardil sinna, kuhu tahad, et robot sõidaks.

    ../_images/2dnavgoal.png
    ../_images/2dnavgoalarrow.png

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.

  1. Loo ssh-ühendus robotisse

  2. Ava fail planner.yaml käsuga

    nano ~/catkin_ws/src/robotont/robotont_teleop/config/planner.yaml
    
  3. Muuda korraga ainult ühte eelnevaist parameetrist oma äranägemise järgi.

  4. Salvesta ja välju. (Ctrl+X)

  5. Käivita uuesti planeerimistarkvara käsuga

    roslaunch robotont_teleop navstack.launch
    
  6. 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.

    ../_images/tabel1.png