Image
18.7.2017 0 Comments

Linux súkromne i pracovne v2.0 (21. časť) NXT-ROS prakticky

Tento článok bude praktickým „zrkadlom“ teórie, ktorej sme sa venovali v posledných troch častiach seriálu. Predstavíme v ňom konkrétne balíčky ROS súvisiace s programovaním robota Mindstorms NXT 2.0 a miesto ich začlenenia v štruktúre NXT-ROS. V kontexte predstavovaných balíčkov sa budeme venovať najmä vytváraným uzlom a témam.

NXT v štruktúre ROS

Inštaláciou balíčka ros-electric-nxtall (osobitne ros-electric-nxt, ros-electric-nxt-apps a ros-electric-nxt-robots) sa v našom PC v zložke /opt/ros/electric/stacks vytvoria zložky nxt, nxt_apps a nxt_robots. Tie obsahujú súčasti potrebné na interakciu s robotmi NXT.

Balík NXT-Python (pôvodne NXT_Python) kontroluje roboty NXT pomocou skriptov umiestnených v zložke nxt/nxt_python/src/nxt. Ďalšie dôležité skripty sú tie, ktoré zabezpečujú komunikáciu medzi uzlami pomocou správ. Nachádzajú sa v zložke nxt/nxt_msgs/src/nxt_msgs/msg. Tu umiestnené súbory sú generované automaticky zo súborov nachádzajúcich sa v zložke nxt/nxt_msgs/msg. Zdrojové súbory s kódom, ktorý definuje spôsob ovládania robotov NXT pomocou klávesnice, resp. pákového ovládača (joystick), sú umiestnené v zložke nxt_apps/nxt_teleop/src (nxt_apps/nxt_assisted_teleop/src).

Balíčky určené na ovládanie či prácu s robotom NXT sú uložené v zložke nxt_robots.  Ide o tri balíčky: nxt_robot_kit_test, nxt_robot_sensor_car a nxt_robot_gyro_car. Každý z nich má príslušné parametre, vytvára zodpovedajúce uzly a komunikuje pomocou správ konkrétnych tém.  V súlade s úrovňou súborového systému konceptu vývoja aplikácií ROS disponujú všetky spomínané balíčky príslušnými manifestmi a konfiguráciami. Súčasťou každého balíčka je spúšťací (launch) súbor. Každý balíček má svoje parametre a je závislý od jedného, resp. viacerých tzv. závislých balíčkov. Spustením balíčka dochádza k vytvoreniu runtime uzla (node), pričom v mnohých prípadoch sa automaticky vytvára a spúšťa tzv. master (roscore) uzol: auto-starting new master: ROS_MASTER_URI=http://localhost:11311/. V prípade, ak sa master uzol nevytvorí automaticky, môžeme ho spustiť aj samostatne, a to príkazom roscore.

Balíčky spúšťame, resp. runtime uzly vytvárame v samostatných termináloch. Uzly vzájomne spolupracujú v rámci ROS úrovne výpočtového grafu (Computation Graph). Registrujú sa ako publishery, resp. subscribery správ a takto spolu neustále komunikujú.

 

nxt_robot_kit_test

Spustením príkazu roslaunch nxt_robot_kit_test robot.launch spustíme prvý z menovaných balíčkov. Ten vytvorí nasledujúce témy: /intensity_sensor, /joint_command, /joint_state, /joint_states, /tf, /touch_sensor, /ultrasonic_sensor. Zoznam tém získame zadaním príkazu rostopic list. Informácie o konkrétnej téme vrátane jej publishera a subscribera získame príkazom rostopic info /názov_témy. Sledovanie správ konkrétnej témy uskutočníme príkazom rostopic echo /názov_témy. V prípade balíčka nxt_robot_kit_test môžeme sledovať výstupy troch konkrétnych senzorov:

Senzor Druh Téma Význam
1. dotykový /touch_sensor detekcia dotykov
2. ultrasonic /ultrasonic_sensor meranie vzdialeností
3. intenzita svetla /intensity_sensor meranie intenzity svetla


Obr. 1 Sledovanie správ zasielaných senzormi robota

nxt_robot_sensor_car

Tento balíček nepoužíva správy zasielané na témy /intensity_sensor a /touch_sensor. Namiesto toho však sleduje správy témy /color_sensor. Senzor farieb bol pridaný do stavebnice Lego Mindstorms NXT verzie 2.0. Má tri možnosti použitia: meranie intenzity svetla, detekcia farieb a osvetlenie (emitovanie svetla). Detektor farieb dokáže rozpoznať 6 farieb: čiernu, bielu, modrú, zelenú, žltú a červenú. Osvetlenie (lamp mode) dokáže emitovať 3 farby: červenú, zelenú a modrú. Balíček nxt_robot_sensor_car po spustení vytvára nasledujúce témy: /cmd_vel, /color_sensor, /gyro, /gyro_imu, /joint_command, /joint_state, /joint_states, /odom, /robot_pose_ekf/odom_combined, /tf, /ultrasonic_sensor, /vo. Ako vidno, chýbajú spomínané témy sledujúce senzory intensity a touch. Zoznam tém uvádzame zámerne, a to z dôvodu, že údaje správ takmer každej z tu uvedených tém možno vizualizovať nástrojom rviz. Jednotlivé údaje teda nemusíme prácne sledovať v textovom výpise príkazu rostopic, ale dokážeme ich sprístupniť v grafickom prostredí, čo výrazne zefektívni našu prácu.

Ovládanie pohybu robota NXT

Na to, aby sme dokázali ovládať základný model robota, ktorý môžeme poskladať z kociek Lega Mindstorms NXT 2.0, musíme splniť niekoľko podmienok:

1. pravý motor pripojíme na port A (r_wheel_joint on PORT_A),

2. ľavý motor pripojíme na port B (l_wheel_joint on PORT_B),

3. robota pripojíme k PC pomocou kábla USB Type A – Type B,

4. robota zapneme, a ak pracujeme vo virtuálnom prostredí, pripojíme (attach) zariadenie USB Lego Group Mindstorms NXT,

5. spustíme balíček nxt_robot_gyro_car, a to príkazom roslaunch nxt_robot_gyro_car robot.launch, vytvoria sa pritom nasledujúce témy: /cmd_vel, /gyro, /gyro_imu, /joint_command, /joint_state, /joint_states, /odom, /robot_pose_ekf/odom_combined, /tf, /ultrasonic_sensor, /vo, namiesto balíčka nxt_robot_gyro_car môžeme použiť aj balíček nxt_robot_sensor_car (roslaunch nxt_robot_sensor_car robot.launch),

6. následne spustíme balíček nxt_teleop (nxt_assisted_teleop) príkazom roslaunch nxt_teleop teleop_keyboard.launch, resp. roslaunch nxt_assisted_teleop assisted_teleop.launch a stláčame klávesy šípok na pohyb robota dopredu/dozadu a otáčanie robota doľava/doprava,

7. samozrejmosť je sledovanie správ vytvorených tém, a to v samostatnom textovom termináli alebo prostredníctvom vizualizačného nástroja rviz (rosrun rviz rviz). Spôsob práce v prostredí rviz nebudeme rozoberať. Ide o pomerne sofistikovaný nástroj, určený na vizualizáciu nielen robotov NXT, ale aj mnohých iných robotov a v princípe ľubovoľných údajov, ktorých vizualizácia má význam.

Obr. 2 Robot NXT ovládaný prostredníctvom softvéru NXT-ROS

 

 

Zobrazit Galériu
Autor: Marek Sopko

Mohlo by Vás zaujímať

ITPro

Vírusový radar: Autori BlackEnergy rozšírili svoj kyberšpionážny arzenál o GreyEnergy

13.12.2018 13:52

Tvorcovia BlackEnergy, známi vysoko sofistikovanými kybernetickými útokmi, opäť rozšírili svoj arzenál. Analytici ESET VirusLabu totiž odhalili podskupinu GreyEnergy, ktorá sa zameriava na špionáž, sl ...

ITPro

Huawei Eco-Connect Europe 2018: AI, IoT a 5G prinesú Európe smart budúcnosť

13.12.2018 10:55

V talianskom Ríme sa 8. a 9. novembra 2018 uskutočnila výročná akcia Huawei Eco-Connect Europe, na ktorej spoločnosť Huawei predstavila svoju stratégiu Platform + Ecosystem, ktorá zobrazuje komplexný ...

ITPro

DMS naozaj pomáhajú

13.12.2018 10:44

V súvislosti s podnikovou informačnou architektúrou sa stále častejšie hovorí o tzv. systémoch DMS. Skratka DMS pochádza z anglického Document Management System a zastrešuje aplikácie, ktoré predstavu ...

q

Žiadne komentáre

Vyhľadávanie

DOCKITIN

Najnovšie videá



PC forum button