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

Praktická kryptológia (17. časť): Šifrovanie diskových oblastí

19.09.2018 22:35

Tento článok bude voľným pokračovaním predošlej časti seriálu, v ktorej sme sa venovali šifrovaniu pevných diskov. Zameriame sa na niektoré významné detaily a uvedieme význam nástrojov a procedúr, kto ...

ITPro

Zabezpečenie objektu – odporúčania

19.09.2018 22:27

Vo voľnej sérii článkov sa venujeme rôznym aspektom zabezpečenia objektov. Môžu to byť veľké objekty, napríklad areály firiem či logistických skladov, alebo budovy malých firiem, prípadne rodinných fi ...

ITPro

Smart parking: Jednoduchá technológia, z ktorej profitujú všetci

12.07.2018 10:12

Siete pre internet vecí v súčasnosti ponúkajú množstvo riešení na uľahčenie každodenného života. Jeden z najväčších problémov obyvateľov miest je bezpochyby parkovanie. Predstavte si situáciu, keď vie ...

q

Žiadne komentáre

Vyhľadávanie

codefest

Najnovšie videá



PC forum button