Kodutöö. Ratasroboti simuleeritud juhtimine

Selles harjutuses paneme kokku eelnevalt õpitu: loome käivitusfaili, mis kuvab eelnevalt loodud parametriseeritud neljarattalist robotit ja lubab sellega ka simulatsioonis ringi sõita.

Samm-sammulise juhendi vaatamiseks klikka harjutuse vahepealkirjadele.

Ava RVizis eelnevalt loodud täielikult parametriseeritud neljarattaline robot. Hetkel on see suhteliselt paigalseisev robot. Väikeste häkkidega saame aga sellegi roboti panna RVizi aknas ringi sõitma. Selleks kasutame sõlme nimega fake_driver_node, mille abil oleme tegelikult juba varem robotondi robotiga RVizi aknas ringi sõitnud.

fake_driver_node otsib lüli nimega base_footprint ning juhib seda. Seega on meil vaja roboti sõidutamiseks luua sellise nimega lüli ja ühendada see sobiva liigendi abil robotiga.

Ava fourwheeler.urdf.xacro fail ja täienda seda, luues ilma välise ilmeta (st ilma visual märgendita) lüli nimega base_footprint. Ühenda see liikumatu liigendi abil roboti kere lüliga base_link nii, et liigendi ülemlüli oleks base_footprint, alamlüli base_link ning et base_footprint asetseks roboti all, rataste alumise servaga samal kõrgusel “maas”.

Testi uut kirjeldust, kuvades neljarattalist sõidukit uuesti RVizi abiga.

Kuva RVizis uuesti oma neljarattalist robotit (või kui seda pole vahepeal seisma pandud, siis ära seda ka praegu seiska).

Selleks, et robotit päriselt klaviatuurilt juhtida, peab lisaks roboti kuvamisele käivitama ka sõlme, mis suudab simuleerida roboti liikumist. Selle nimi on fake_driver_node ja ta asub kimbus robotont_driver. Käivita see sõlm uues terminaliaknas.

Nüüd peaksid saama seada RViz akna vasakus servas “Displays” paneelis “Fixed Frame” väärtuseks “odom”, nagu näidatud pildil:
.

Viimase asjana käivita veel ühes terminaliaknas juba tuttav sõlm teleop_twist_keyboard.py kimbust teleop_twist_keyboard ja sõida robotiga ringi.

Kõigi nende sõlmede eraldi käimapanemine eri terminaliakendes on natuke tobe. Nüüd on meil aga ka tegelikult piisavalt oskusi, et luua üks käivitusfail, mis seda kõike korraga teeb – siis saame käivitada ainult selle.

Viimase asjana loogi kõigi nende sõlmede samaaegselt käimapanemiseks uus käivitusfail. See käivitusfail peaks:

  • Laadima parameetriserverisse roboti kirjelduse

  • Käivitama RVizi konfiguratsioonifailiga, mis kuvab täielikult parametriseeritud robotit

  • Käivitama sõlme robot_state_publisher kimbust robot_state_publisher

  • Käivitama sõlme joint_state_publisher_gui kimbust joint_state_publisher_gui

  • Käivitama sõlme fake_driver_node kimbust robotont_driver

  • Käivitama sõlme teleop_twist_keyboard.py kimbust teleop_twist_keyboard

Loo vastav käivitusfail ning testi seda, sulgedes kõik ROSi sõlmed ning käivitades siis kõik vajalikud ühekorraga käivitusfaili abil.

Tee ka robot vähemalt ühe meetri jagu laiemaks ja muuda peale selle XACRO failis veel üht vabalt valitud parameetrit!

Lõpptulemus peaks välja nägema umbes järgmine (siin ei ole robotit laiemaks tehtud):