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

Linux súkromne i pracovne v2.0 : Nové verzie unikátnych distribúcií

19.02.2018 00:10

V poslednom mesiaci roku 2017 boli vydané nové verzie linuxových distribúcií ReactOS a Puppy. Ide o dve unikátne distribúcie vymykajúce sa zo štandardu, ktorý predstavujú ostatné bežne používané distr ...

ITPro

Linux súkromne i pracovne v2.0 (25. časť): Okruhy siete Tor

12.12.2017 14:22

V tejto časti seriálu sa poslednýkrát vrátime k sieti Tor, pričom detailnejšie opíšeme spôsob fungovania jej okruhov. Na začiatku článku vám v stručnosti predstavíme postup vytvárania okruhov. Následn ...

ITPro 2

Geografické informačné systémy a virtuálna realita

11.12.2017 14:14

Geografický informačný systém (GIS), počítačový systém pracujúci s údajmi opisujúcimi miesta na zemskom povrchu, je už zo svojej podstaty predurčený na využitie nástrojmi virtuálnej reality. Virtuálna ...

Žiadne komentáre

Vyhľadávanie

PC forum button

Najnovšie videá