This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:ros:subscribepublish [2019/05/17 19:37] – raivo.sell | et:ros:subscribepublish [2020/07/20 12:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== ROS kontseptsioon ====== | ||
| + | ===== ROSi teegid ===== | ||
| + | |||
| + | ROSis on tarkvara organiseeritud teekidesse. Teek võib sisalsada ROSi sõlmi, andmetekogu, | ||
| + | |||
| + | Teeke saab paigaldada kasutades Linuxi paketihaldajat //apt-get// või paigutades need oma tööruumi //src// kataloogi. Pakett nimega // | ||
| + | |||
| + | Paigalda pakett nimega // | ||
| + | |||
| + | $ sudo apt-get install ros-kinetic-ros-tutorials | ||
| + | |||
| + | Kui pakett on edukalt paigaldatud tuleb töökeskkond uuesti kompileerida: | ||
| + | |||
| + | $ catkin_make #kompileeri töökeskkond | ||
| + | |||
| + | ===== Roscore ===== | ||
| + | |||
| + | //Roscore// on kogumik sõlmedest ja programmidest, | ||
| + | |||
| + | Ava uus terminali aken(Ctrl+Alt+T) ja käivita // | ||
| + | |||
| + | $ roscore | ||
| + | Kui kõik on õigesti seadistatud peaks terminali ilmuma midagi sellist: | ||
| + | |||
| + | ... logging to ~/ | ||
| + | | ||
| + | Press Ctrl-C to interrupt | ||
| + | Done checking log file disk usage. Usage is <1GB. | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | PARAMETERS | ||
| + | * /rosversion | ||
| + | * /rosdistro | ||
| + | |||
| + | NODES | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | Korraga tohib käia ainult üks // | ||
| + | |||
| + | ===== Avaldaja ja Tellija ===== | ||
| + | |||
| + | 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 paigaldasid sa paketi nimega // | ||
| + | |||
| + | Kasutame käsku //rosrun//, et käivitada sõlm. | ||
| + | |||
| + | 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 käivitamine õnnestub peaks terminali ilmuma: | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | Avaldaja käib ja avaldab sõnumeid teemasse /// | ||
| + | |||
| + | Teise sõlme nimi on // | ||
| + | |||
| + | Ava uus terminali aken(Ctrl+Alt+T) ja käivita tellija nimega // | ||
| + | |||
| + | $ rosrun rospy_tutorials listener | ||
| + | Kui terminali ilmuvad //talker// poolt saadetud sõnumid, siis käivitas sõlm ennast edukalt, tellis teema /// | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | ROSi baasil töötaval robotil on tavaliselt väga palju sõlmi, millest igal on oma eraldi ülesanne. Sõlmed võivad paikneda erinevates arvutites ja suhelda läbi erinevate protokollide. Nüüd tutvume aga ROSiga kaasnevate tööriistatega, | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Rostopic ===== | ||
| + | |||
| + | Esimene tööriist, mida vaatame on // | ||
| + | |||
| + | // | ||
| + | |||
| + | $ rostopic | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | Veendu, et taustal töötavad roscore, talker ja listener. | ||
| + | |||
| + | Kuvame kõik teemad, mis on hetkel kasutusel: | ||
| + | |||
| + | $ rostopic list | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | /// | ||
| + | |||
| + | kasutame käsku //rostopic info//, et kuvada teema kohta vajalikku informatsiooni: | ||
| + | |||
| + | $ rostopic info /chatter | ||
| + | Type: std_msgs/ | ||
| + | |||
| + | | ||
| + | * / | ||
| + | |||
| + | | ||
| + | * / | ||
| + | Kuvatakse, millised sõlmed on teemat tellinud ja millised teemasse avaldavad, lisaks näeme ka sõnumi tüüp, milleks on // | ||
| + | |||
| + | kasutame //rostopic hz//, et näha sõnumite sagedust: | ||
| + | |||
| + | $ rostopic hz / | ||
| + | | ||
| + | | ||
| + | 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 katkestab protsessi) | ||
| + | |||
| + | Kasutame käsku //echo//, et kuvada teemasse saadetud sõnumid ekraanile: | ||
| + | |||
| + | $ rostopic echo / | ||
| + | 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/ | ||
| + | | ||
| + | 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" | ||
| + | |||
| + | ====== Rqt_graph ====== | ||
| + | |||
| + | ROSiga kaasnevad ka mõningad graafilised tööriistad. // | ||
| + | |||
| + | käivita // | ||
| + | |||
| + | $ rqt_graph | ||
| + | {{: | ||
| + | |||
| + | Käsu käivitamisel avaneb graafiline kasutajaliides. Näeme, et //talker// avaldab sõnumeid teemasse /// | ||
| + | |||
| + | Keerukamate ülesannetega robotite peal töötab tavaliselt palju erinevaid sõlmi, mis suhtlevad mitmete teemade kaudu. Käsurea pealt on raske üldist pilti näha ja selleks kasutataksegi // | ||
| + | |||
| + | Näide graafikust keerukama roboti peal: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ====== Rosnode ====== | ||
| + | |||
| + | Kasutame käsku //rosnode list//, et kuvada kõik hetkel töötavad sõlmed. | ||
| + | |||
| + | $ rosnode list | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | Kasutame käsku //rosnode info//, et kuvada sõlme kohta vajalikku informatsiooni: | ||
| + | |||
| + | $ rosnode info / | ||
| + | | ||
| + | Node [/ | ||
| + | | ||
| + | * /chatter [std_msgs/ | ||
| + | * /rosout [rosgraph_msgs/ | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | * / | ||
| + | * / | ||
| + | |||
| + | |||
| + | | ||
| + | Pid: 12621 | ||
| + | | ||
| + | * topic: /chatter | ||
| + | * to: / | ||
| + | * 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. | ||