This is an old revision of the document!
ROSis on tarkvara organiseeritud teekidesse. Teek võib sisalsada ROSi sõlmi, andmetekogu, konfiguratsiooni faili, kolmanda osapoole tarkvara või ükskõik mida vajalikku programmi töötamiseks. teekide eesmärk on pakkuda kasulikke fuktsioone nii, et neid saaks lihtsalt erinevate eesmärkide täitmiseks ära kasutada.
Teeke saab installida kasutades linuxi paketi haldajat või paigutades need oma tööruumi src kataloogi. Pakett nimega ros-tutorials sisaldab teeke, mille abil on võimalik demonstreerida ROSi võimalusi ja mis on vajalikud selle õpetuse järgimiseks.
Installi pakett nimega ros-tutorials:
$ sudo apt-get install ros-kinetic-ros-tutorials
asenda ‘kinetic’ endale installitud ROSi jaotuse nimega (näiteks: indigo, jade, kinetic)
Kui pakett on edukalt installitud tuleb ka töökeskkond uuesti kompileerida:
$ catkin_make #kompileeri töökeskkond
Roscore on kogumik sõlmedest ja programmidest, mis on ROS-põhise süsteemi eeltingimused. Selleks et ROSi sõlmed saaksid oma vahel suheda peab roscore käima.
ava uus terminali aken(Ctrl+Alt+T) ja käivita seal roscore:
$ roscore
Kui kõik on õigesti konfigureeritud peaks terminali ilmuma midagi sellist:
... logging to ~/.ros/log/9cf88ce4-b14d-11df-8a75-00251148e8cf/roslaunch-machine_name-13039.log Checking log directory for disk usage. This may take awhile. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://machine_name:33919/ ros_comm version 1.4.7 SUMMARY ====== PARAMETERS * /rosversion * /rosdistro NODES auto-starting new master process[master]: started with pid [13054] ROS_MASTER_URI=http://machine_name:11311/ setting /run_id to 9cf88ce4-b14d-11df-8a75-00251148e8cf process[rosout-1]: started with pid [13067] started core service [/rosout]
Korraga peab käima ainult üks roscore. Nüüd saavad ROSi sõlmed oma vahel suhelda.
Kogu ROSi süsteem on üles ehitatud sõlmedele ja teemadele. Sõlm on konkreetsele ülesandele pühendatud programm. Sõlmed saavad omavahel suhelda läbi erinevate teemade. Sõlmed saavad teemadesse sõnumeid avaldada ja teemasid tellida, et nendest sõnumeid lugeda. Eespool installisid sa paketi nimega ros-tutorials. See pakett sisaldab kahte sõlme. Esimese sõlme nimi on ‘talker’, mis avaldab teksti “hello world” teemasse /chatter.
Ava uus terminali aken(Ctrl+Alt+T) ja käivita seal sõlm nimega “talker”:
$ rosrun rospy_tutorials talker
Veendu, et roscore käib, ilme selleta ei saa sõlme käivitada. Kui sõlme jooksutamine õnnestub terminali peaks ilmuma:
[INFO] [WallTime: 1314931831.774057] hello world 1314931831.77 [INFO] [WallTime: 1314931832.775497] hello world 1314931832.77 [INFO] [WallTime: 1314931833.778937] hello world 1314931833.78 [INFO] [WallTime: 1314931834.782059] hello world 1314931834.78 [INFO] [WallTime: 1314931835.784853] hello world 1314931835.78 [INFO] [WallTime: 1314931836.788106] hello world 1314931836.79
Avaldaja käib ja avaldab sõnumeid teemasse /chatter, nüüd on vaja tellijat, mis antud sõnumeid loeb.
Teise sõlme nimi on “listener” ja see tellib teema /chatter ning hakkab sellesse teemasse saadetud sõnumeid ekraanile kuvama.
Ava uus terminali aken(Ctrl+Alt+T) ja käivita tellija nimega “listener”:
$ rosrun rospy_tutorials listener
Kui terminali ilmuvad talkeri poolt saadetud sõnumid, siis käivitas sõlm ennast edukalt, tellis teema /chatter ja sõlmed suhtlevad nüüd edukalt läbi ROSi:
[INFO] [WallTime: 1314931969.258941] /listener_17657_1314931968795I heard hello world 1314931969.26 [INFO] [WallTime: 1314931970.262246] /listener_17657_1314931968795I heard hello world 1314931970.26 [INFO] [WallTime: 1314931971.266348] /listener_17657_1314931968795I heard hello world 1314931971.26 [INFO] [WallTime: 1314931972.270429] /listener_17657_1314931968795I heard hello world 1314931972.27 [INFO] [WallTime: 1314931973.274382] /listener_17657_1314931968795I heard hello world 1314931973.27 [INFO] [WallTime: 1314931974.277694] /listener_17657_1314931968795I heard hello world 1314931974.28 [INFO] [WallTime: 1314931975.283708] /listener_17657_1314931968795I heard hello world 1314931975.28
ROSi baasil töötaval robotil on tavaliselt väga palju sõlmi, millest igal on oma eraldi ülesanne. Sõlmed võivad ka paikneda erinevates arvutites ja suhelda läbi erinevate protokollide. Nüüd tutvume aga ROSiga kaasnevate tööriistatega, mis võimaldavad meil sõlmi ja teemasid jälgida ja haldada.
rostopic Esimene tööriist, mida vaatame on rostopic. Rostopic on tööriist, mille abil on võimalik ROSi teemasid jälgida ja haldada.
rostopic käsu saatmisel kuvatakse kõik viisid, kuidas seda kasutada saab:
$ rostopic
rostopic bw display bandwidth used by topic rostopic echo print messages to screen rostopic hz display publishing rate of topic rostopic list print information about active topics rostopic pub publish data to topic rostopic type print topic type Veendu, et taustal töötavad roscore, talker ja listener.
Kuvame kõik teemad, mis on hetkel kasutusel:
$ rostopic list
/chatter /rosout /rosout_agg /chatter on teema, mille kaudu suhtlevad talker ja listener
kasutame käsku rostopic info, et kuvada teema kohta vajalikku informatsiooni:
$ rostopic info /chatter Type: std_msgs/String Publishers: * /talker_12621_1542817185271 (http://raivo-HP-EliteBook:45495/) Subscribers: * /listener_12836_1542817212996 (http://raivo-HP-EliteBook:34711/)
Kuvatakse, millised sõlmed on teemat tellinud ja millised teemasse avaldavad, lisaks näeme ka sõnumi tüüp, milleks on std_msgs/String.
kasutame rostopic hz, et näha sõnumite sagedust:
$ rostopic hz /chatter subscribed to [/chatter] average rate: 10.005 min: 0.100s max: 0.100s std dev: 0.00017s window: 10
Näeme, et sõnumite keskmine sagedus on umbes 10 Hz. (Ctrl+C et sõnumeid katkestada)
Kasutame käsku echo, et kuvada teemasse saadetud sõnumid ekraanile:
$ rostopic echo /chatter data: "hello world 1542817743.91" --- data: "hello world 1542817744.01" --- data: "hello world 1542817744.11" --- data: "hello world 1542817744.21" --- data: "hello world 1542817744.31" ---
Kasutame käsku pub, et avaldada sõnum teemasse:
$ rostopic pub /chatter std_msgs/String “data: 'tere maailm'” publishing and latching message. Press ctrl-C to terminate Kui samal ajal teemat kuulata näeme, et meie saadetud sõnum avaldati:
data: "hello world 1542817787.91" --- data: "hello world 1542817788.01" --- data: "hello world 1542817788.11" --- data: "tere maailm" --- data: "hello world 1542817788.21" --- data: "hello world 1542817788.31" --- data: "hello world 1542817788.41"
ROSiga kaasnevad ka mõningad graafilised tööriistad. Rqt_graph kujutab graafiliselt, kuidas millised sõlmed omavahel suhtlevad:
$ rqt_graph
Käsu käivitamisel avaneb graafiline kasutajaliides. Näeme, et talker avaldab sõnumeid teemasse /chatter ja listener kuulab neid.
ROS sõlmed Kasutame käsku rosnode list, et kuvada kõik hetkel töötavad sõlmed.
$ rosnode list /listener_12836_1542817212996 /rosout /talker_12621_1542817185271
Kasutame käsku rosnode info, et kuvada sõlme kohta vajalikku informatsiooni:
$ rosnode info /talker_12621_1542817185271
--------------------------------------------------------------------------------
Node [/talker_12621_1542817185271]
Publications:
* /chatter [std_msgs/String]
* /rosout [rosgraph_msgs/Log]
Subscriptions: None
Services:
* /talker_12621_1542817185271/get_loggers
* /talker_12621_1542817185271/set_logger_level
contacting node http://raivo-HP-EliteBook:45495/ ...
Pid: 12621
Connections:
* topic: /chatter
* to: /listener_12836_1542817212996
* direction: outbound
* transport: TCPROS
* topic: /rosout
* to: /rosout
* direction: outbound
* transport: TCPROS
Näeme, millises arvutis sõlm töötab ja läbi millise protokolli ta ROSiga ühendatud on.