cs:ros
no way to compare when less than two revisions
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Předchozí verzeNásledující verze | |||
— | cs:ros [2018/07/20 20:26] – [ROS Kinetic (10)] roman | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
+ | ====== ROS ve stavebnici MLAB ====== | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Instalace aktuální verze ROS Kinetic (10) je popsána [[cs: | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Struktura ROSu ===== | ||
+ | Software používající ROS je rozčleněn do tzv. nodů. | ||
+ | |||
+ | === Nod (node) === | ||
+ | Nod je základní prvek celého ROS systému, je to jeden program, který je připojen k master-nodu. Každý node může komunikovat navzájem s ostatními pomocí připraveného messaging systému. Zprávy můžou existovat dvojího typu. | ||
+ | |||
+ | == Zprávy (msg) == | ||
+ | Zprávy můžou obsahovat typy dat, které jsou nadefinované v souboru (.msg). Zpráva může obsahovat jednu nebo více hodnot. | ||
+ | |||
+ | .msg soubor může vypadat například takto | ||
+ | |||
+ | string name | ||
+ | float32 hodnota | ||
+ | |||
+ | Takováto zpráva pak předává dvě hodnoty. První jako řetězec znaků a druhou jako číslo s desetinou tečkou. | ||
+ | Každá zpráva má své téma (topic) nastavené při odeslání z nodu - (publisher). Zprávu přijme nod - (subscriber), | ||
+ | |||
+ | == Servis (srv) == | ||
+ | Servise je typ zprávy, který je definován obdobně jako zpráva (msg) pomocí souboru .srv. Navíc má tu vlastnost, že zpráva míří k určitému nodu, který na zprávu odpoví způsobem předepsaným v souboru .srv. Servis se není vhodný pro dlouhotrvající funkce, protože klient čeká na odpověď. Jen například pro čtení senzorů, získání dat atd... | ||
+ | |||
+ | příklad .srv souboru | ||
+ | |||
+ | string name | ||
+ | float32 hodnota | ||
+ | --- | ||
+ | bool stav | ||
+ | |||
+ | == Action (act) == | ||
+ | Akce jsou typy zpráv určené pro dlouhotrvající akce. Je to obdoba servisu popsaného výše. Při jejich spuštění se nečeká na dokončení akce jako je tomu u servisů a spouštěcí klient muze mezitím provádět jinou činnost. Dlouhotrvající proces může během svého průběhu posílat informace o sobě (například procento dokončení, | ||
+ | |||
+ | Toto je vhodné například, | ||
+ | |||
+ | Akce se definuje obdobně jako předchozí dva typy zpráv souborem .action: | ||
+ | |||
+ | string name # parametry předané při startu akce | ||
+ | float32 hodnota | ||
+ | --- | ||
+ | int32 hodnota | ||
+ | --- | ||
+ | bool stav # informace o dokončení celé akce | ||
+ | int32 hodnota | ||
+ | |||
+ | |||
+ | == Master node == | ||
+ | Master node je nod, který se spouští příkazem '' | ||
+ | |||
+ | Oficiální dokumentace, | ||
+ | |||
+ | ===== Sdílení dat po síti ===== | ||
+ | Sdílení dat mezi nody (zprávy, servisy, master-node, | ||
+ | |||
+ | Jeden počítač, na kterém běží master-node '' | ||
+ | export ROS_MASTER_URI=' | ||
+ | Kde nastavím jméno počítače (nebo jeho IP adresu) (v tomto případě // | ||
+ | |||
+ | [[http:// | ||
+ | [[http:// | ||
+ | ====== Instalace ====== | ||
+ | |||
+ | ===== ROS jade (9) ===== | ||
+ | Přidání repozitářů do systému (funguje pouze pro ubuntu Trusty (14.04), Utopic (14.10) a Vivid (15.04)) | ||
+ | sudo sh -c 'echo "deb http:// | ||
+ | |||
+ | Instalace klíčů: | ||
+ | sudo apt-key adv --keyserver hkp:// | ||
+ | |||
+ | Následně zaktualizovat seznam repozitářů: | ||
+ | sudo apt-get update | ||
+ | |||
+ | Nyní je možné nainstalovat i jen části ROSu podle účelu použití. Na pracovní desktop s monitorem se hodí celá verze, která obsahuje nástroje i snadný debugging nebo vizualizaci dat. Na Odroid bych doporučil buď desktop nebo základní verzi. | ||
+ | |||
+ | * Celá verze: <wrap lo>ROS, rqt, rviz, knihovna pro roboty, 2D/3D simulace, navigace and 2D/3D precepce</ | ||
+ | |||
+ | sudo apt-get install ros-jade-desktop-full | ||
+ | |||
+ | * Desktopová verze: <wrap lo>ROS, rqt, rviz, a knihovny pro roboty</ | ||
+ | |||
+ | sudo apt-get install ros-jade-desktop | ||
+ | |||
+ | * Základní verze: <wrap lo>ROS a základní komunikační balíčky. Bez grafických nástrojů.</ | ||
+ | |||
+ | sudo apt-get install ros-jade-ros-base | ||
+ | |||
+ | Jednotlivé balíčky lze kdykoliv doinstalovat. | ||
+ | |||
+ | Po nainstalování je potřeba inicializovat a aktualizovat program rosdep | ||
+ | sudo rosdep init | ||
+ | rosdep update | ||
+ | |||
+ | Ještě je potřeba nastavit prostředí terminálu. To lze udělat na stálo takto: | ||
+ | echo " | ||
+ | source ~/.bashrc | ||
+ | nebo pro aktuální session terminálu spuštěním | ||
+ | |||
+ | <WRAP center round info 100%> | ||
+ | Zde napsaný postup <wrap lo> | ||
+ | </ | ||
+ | |||
+ | ===== ROS Kinetic (10) ===== | ||
+ | Postup instalace je převzat z oficiálního postupu dostupného [[http:// | ||
+ | |||
+ | sudo sh -c 'echo "deb http:// | ||
+ | sudo apt-key adv --keyserver hkp:// | ||
+ | sudo apt update | ||
+ | |||
+ | * Celá verze: <wrap lo>ROS, rqt, rviz, knihovna pro roboty, 2D/3D simulace, navigace and 2D/3D precepce</ | ||
+ | |||
+ | sudo apt install ros-kinetic-desktop-full | ||
+ | |||
+ | * Desktopová verze: <wrap lo>ROS, rqt, rviz, a knihovny pro roboty</ | ||
+ | |||
+ | sudo apt install ros-kinetic-desktop | ||
+ | |||
+ | * Základní verze: <wrap lo>ROS a základní komunikační balíčky. Bez grafických nástrojů.</ | ||
+ | |||
+ | sudo apt install ros-kinetic-ros-base | ||
+ | |||
+ | Po instalace je potřeba nastavit závislosti uvnitř ROSu. | ||
+ | sudo rosdep init | ||
+ | rosdep update | ||
+ | |||
+ | export CMAKE_PREFIX_PATH=/ | ||
+ | | ||
+ | Pro snadné spouštění je vhodné nastavit prostředí terminálu nastálo. | ||
+ | echo " | ||
+ | source ~/.bashrc | ||
+ | |||
+ | Tím je instalace ROSu dokončena... | ||
+ | ==== Testované sestavy ==== | ||
+ | * Desktop Ubuntu amd64 16.04.1 LTS - ROS Kinematic Kame - OK | ||
+ | * Desktop Ubuntu amd64 14.04 LTS - ROS Kinematic Kame - OK | ||
+ | * Desktop Ubuntu amd64 14.04 LTS - ROS Jade - OK | ||
+ | * Odroid C1 Ubuntu 14.04 - ROS Jade - OK | ||
+ | * Odroid C1 Ubuntu 14.04 - ROS Kinetic Kame - OK | ||
+ | * Odroid C1+ Ubuntu 16.04.02 - ROS Kinetic Kame - OK <wrap lo> | ||
+ | * Odroid C2 Debian Jessie - ROS Kinetic Kame - OK | ||
+ | * Odroid C2 Ubuntu 16.04 LTS - ROS Kinetic Kame - OK <wrap lo> | ||
+ | |||
+ | |||
+ | ====== Sensor-UI s ROS ====== | ||
+ | [[https:// | ||
+ | |||
+ | ==== Instalace ==== | ||
+ | Pro rozfungování [[https:// | ||
+ | |||
+ | Nejdříve stáhneme repozitář a vybereme vývojovou větev s ROS implementací | ||
+ | git clone git@github.com: | ||
+ | cd ROS_sensor-ui && git checkout ROS_sensor-ui | ||
+ | |||
+ | Nyní si ROS_sensor-UI přeložíme pomocí: <wrap lo> | ||
+ | catkin_make | ||
+ | |||
+ | Nyní můžeme spustit master-node | ||
+ | roscore | ||
+ | |||
+ | <WRAP center round tip 100%> | ||
+ | Aby '' | ||
+ | cd ROS_sensor-ui/ | ||
+ | Nyní bude '' | ||
+ | </ | ||
+ | |||
+ | | ||
+ | V dalším terminálu si spustíme ROSpymlabServer.py | ||
+ | rosrun sensor_server ROSpymlabServer.py | ||
+ | |||
+ | |||
+ | |||
+ | nyní jsme si spustili server, který ovládá pymlab zařízení. Server se sám nepřípojí. Čeká na zprávu od klienta, která mu řekne jaké [[cs: | ||
+ | |||
+ | |||
+ | ==== Příklad klienta ==== | ||
+ | Klienta z repozitáře spustíme následovně: | ||
+ | rosrun sensor_server example_client_lts_sht.py | ||
+ | Ke správné funkci tohoto příkladu je potřeba připojených senzorů vlhkoměru [[cs: | ||
+ | |||
+ | Nyní by jste v terminálu serveru měli vidět jednotlivé senzory a data z nich. Takový řádek vypadá nějak takto: | ||
+ | sht25 get_hum 43.5987 || sht25 get_temp 24.9653 || lts01 get_temp 50.2070 || | ||
+ | |||
+ | ==== Výstup ze ROSpymlabServeru ==== | ||
+ | Jako výstup jsou zprávy vlastní struktury, které obsahují informace o senzoru, jménu hodnoty (funkce, kterou se v pymlabu získá) a její hodnotu. Zprávy mají nastavené téma '' | ||
+ | |||
+ | Struktura zpráv je definována takto: | ||
+ | string name | ||
+ | float32 value | ||
+ | |||
+ | ==== Vizualizace dat ==== | ||
+ | === rqt_plot === | ||
+ | Jako jeden z užitečných nástrojů balíku ROS je '' | ||
+ | |||
+ | Aby bylo možné data zobrazit pomocí '' | ||
+ | rosrun sensor_server example_plotter.py | ||
+ | a pak samotný '' | ||
+ | rqt_plot | ||
+ | |||
+ | V otevřeném okně si pak můžete nastavit zobrazovaná data. V použití s příkladovým kódem nás zajímají data s tématem ''/ | ||
+ | |||
+ | Výstup pak vypadá takto: | ||
+ | {{ : | ||
+ | |||
+ | '' | ||
+ | |||
+ | === Web a Highcharts === | ||
+ | Pro zprovoznění zobrazení ve webovém prohlížeči je potřeba doinstalovat software | ||
+ | sudo apt-get install ros-jade-rosbridge-suite | ||
+ | source / | ||
+ | |||
+ | rosbridge se pak spustí tímto příkazem. | ||
+ | roslaunch rosbridge_server rosbridge_websocket.launch | ||
+ | |||
+ | Pro zobrazení stránky stáhněte soubor [[https:// | ||
+ | ros.connect(' | ||
+ | | ||
+ | <WRAP center round important 100%> | ||
+ | Tato metoda není vhodná pro dlouhodobé prohlížení dat, protože JS knihovna highcharts špatně hospodaří s daty a při velkém množství dochází k zaplnění paměti a následném zaseknutí/ | ||
+ | </ | ||
+ | |||
+ | ==== Návody ==== | ||
+ | Dobrý návod pro začátky s ROSem je oficiální wiki stránka nebo tutoriál [[https:// | ||
+ | |||
+ | ====== Aplikace ROSu v MLABu ====== | ||
+ | |||
+ | * [[cs: | ||
+ | * [[cs: | ||
cs/ros.txt · Poslední úprava: 2018/07/20 20:27 (upraveno mimo DokuWiki)