cs:ros
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Předchozí 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)