Operácie

Hexapod Ignác: Rozdiel medzi revíziami

Z SensorWiki

 
(36 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 7: Riadok 7:
 
== Opis projektu ==
 
== Opis projektu ==
  
'''Čo''' je jeho cieľom, ako bude vyzerať výsledok.
+
Cieľom tohto projektu bolo zdokonalenie nami vytvoreného HEXAPODU, čo je šesťnohý kráčajúci robot svojou stavbou pripomínajúci pavúka.
  
'''Prečo?'''
+
Po menej úspešnej účasti na robotickej súťaži ISTROBOT, ktorá sa konala v roku 2018 sme analyzovali nedostatky nášho kráčajúceho robota. Z analýzy sme zistili, že robot nedodržuje požadovaný smer kráčania a neudržuje svoj pohyb vo vymedzených hraniciach. Táto zmena smeru je spôsobená nepresným dosahovaním požadovaných polôh servomotorov, ktoré pohybujú končatinami robota a tým udávajú robota do pohybu.
  
# Prečo práve tento projekt, aký má zmysel, komu bude osožný...
 
# Druhy '''riadok'''
 
  
'''Ako ?'''
 
  
Sem príde podrobný návod na výrobu.
+
__TOC__
 +
 
 +
== Analýza 1 ==
  
* Popisat proces premeny napadu na hmotny (funkcny) produkt
+
Už pred účasťou na súťaži ISTROBOT 2018 sme zaznamenali problém s HEXAPODOM, kedy sme postrehli, že robot nie je schopný udržať sa vo vymedzených hraniciach na dráhe určenej pre robotí šprint. Keďže v tom čase sme nemali čas na nápravu tohto problému, tak problém sme riešili postupným ladením jednotlivých servomotorov. Žiaľ tento spôsob sa nám neosvedčil, pretože sme zistili, že akokoľvek prestavíme požadovanú hodnotu, tak servomotor nám presne túto hodnotu nedosiahne z dôvodu menšej nosnosti jednotlivých motorov. Naším návrhom bolo odstránenie prebytočných častí systému, ktoré neboli využívané. Z toho dôvodu sme sa rozhodli pre odstránenie jedného kĺbu (servomotoru), ktorý nebol využívaný a zbytočne zaťažoval konštrukciu robota. Týmto spôsobom by sa mala konštrukcia odľahčiť a motory by mali väčšiu šancu dosiahnuť požadovanú polohu.
* Vyspecifikovat potrebny material (uprednostnujeme vlastnych alebo existujucich komponentov, v pripade potreby vieme pomoct)<BR> vystupom bude zhmotneny napad a aj navod - krok za krokom pre reprodukciu produktu
 
  
  
[http://www.example.com link title]
+
== Analýza 2 ==
  
[[Súbor:MojObrazok2.jpg|center|300px]]
+
Po vykonaní analýzy 1 a následne po aplikácií jednotlivých krokov, ktoré mali vyriešiť analyzovaný problém sme zistili, že problém v určitej miere stále pretrváva. Z toho dôvodu sme sa rozhodli implementovať kameru k mikropočítaču Raspberry Pi 3, ktorá nám poskytuje vizuálny kontakt s okolím a vďaka tomuto vizuálnemu kontaktu získavame spätnú väzbu, za pomoci ktorej dokážeme presnejšie riadiť pohyb robota.
  
[[Médiá:MojZdrojak.c]]
 
  
 +
== Popis riešenia ==
  
'''Použité zdroje:'''  
+
'''Návrh novej končatiny'''
  
* Zoznam použitej literatúry, vrátane katalógových údajov (datasheet), internetových odkazov a pod.
+
Po vykonaní analýzy 1 sme zistili, že musíme nanovo navrhnúť nohy robota. Po prekonzultovaní možnosti sme sa rozhodli odstrániť jeden kĺb, ktorý pre náš robotí šprint bol nevyužívaný. V online 3D modelovacom prostredí ThinkerCad sme si tieto nohy navrhli tak, že namiesto servomotoru, ktorý tvoril kĺb nohy, sme vytvorili spoj medzi jednotlivými článkami nohy. Kvôli odľahčeniu sme pridali do nohy taký výrez, aby nastalo čo najväčšie odľahčenie a zároveň sa zachovala pevnosť nohy. Následne sme si navrhnuté nohy vytlačili za pomoci 3D tlačiarne.
  
__TOC__
+
[[Súbor:Koncatina.png|center|400px]]
  
== Analýza ==
 
  
V tejto časti popíšete ako idete daný problém riešiť. Uvediete sem aj všetky potrebné technické údaje,
+
[[Súbor:Predpo1.png|center|400px]]
ktoré sú potrebné na úspešné vyriešenie projektu. Napríklad:
 
  
* popis komunikačnej zbernice (i2c, 1-wire, RS-232 a pod.)
 
* obrázok zapojenia vývodov použitej súčiastky
 
* odkaz na katalógový list
 
* priebehy dôležitých signálov
 
* este jedna polozka
 
  
 +
'''Implementácia kamery'''
  
== Popis riešenia ==
+
Keďže naše riešenie vyplývajúce z analýzy 1 nebolo postačujúce, tak sme vykonali 2. analýzu, v ktorej sme sa rozhodli pre využitie kamery. Tá ponúka spätnú väzbu s prostredím, v ktorom sa robot nachádza. Jedná sa o kameru Arducam 8 MP Sony IMX219, ktorá poskytuje pohľad rybieho oka. Na upevnenie kamery sme si vytlačili nami navrhnutý držiak, taktiež v prostredí ThinkerCad. Ku kamere bol vytvorený algoritmus, ktorý je opísaný nižšie.
  
Sem opíšete ako konkrétne ste problém vyriešili. Začnite popisom pripojenia k procesoru
+
[[Súbor:Kamera.png|center|400px]]
(nezabudnite na schému zapojenia!) a zdôraznite ktoré jeho periférie ste pritom využili.  
 
  
'''Schéma zapojenia snímača'''
 
[[Súbor:Zapojenie.png]]
 
  
[[Súbor:Example.jpg]]
+
=== Použité komponenty ===
  
Pozn.: Názov obrázku musí byť jedinečný, uvedomte si, že Obr1.jpg už pred vami skúsilo
+
# Raspberry Pi 3
nahrať už aspoň 10 študentov.
+
# Časti tela vytlačené na 3D tlačiarni
 +
# 12 servomotorov
 +
# Kábliky
 +
# 2 tlačidlá
 +
# Powerbanka
 +
# Batéria na napájanie servomotorov
 +
# Kamera pre Raspberry Pi
  
[[Súbor:MojObrazok.jpg|center|250px]]
 
  
 
=== Algoritmus a program ===
 
=== Algoritmus a program ===
  
Uveďte stručný popis algoritmu, v akom jazyku a verzii vývojového prostredia ste ho vytvorili.  
+
Program na riadenie robota sme vytvorili v programovacom prostredí MATLAB & Simulink R2019a za pomoci podporných balíkov pre Raspberry Pi. V prostredí Simulink, konkrétne v bloku Stateflow, ktorý slúži na tvorbu udalostných systémov, sme ovládali chod jednotlivých servomotorov, a teda sme v ňom vytvorili chôdzu robota a bloky, ktoré riadili jeho otáčanie. Z obrazu získaného z kamery sa po spracovaní vyhodnocuje v MATLAB Funkcii, či sa robot nepriblížil k čiare. Ak sa priblíži k pravej alebo ľavej čiare, tak sa pootočí do opačnej strany.
Je vhodné nakresliť aspoň hrubú štruktúru programu napríklad vo forme vývojového diagramu.  
 
Rozsiahly program pre lepšiu prehľadnosť rozdeľte do viacerých súborov.
 
 
 
Vyberte podstatné časti zdrojového kódu, použite na to prostredie ''source'':
 
 
 
<source lang="c">
 
/* A nezabudnite zdroják hojne komentovať  */
 
 
 
int main(void) {
 
   
 
    printf("Hello, World!\n"); 
 
    return(0); 
 
}
 
</source>
 
  
Nezabudnite však nahrať aj kompletné zdrojové kódy vášho programu!
+
[[Súbor:HexapodSimulink2.jpg]]
  
Zdrojový kód: [[Médiá:Serial.h|serial.h]] a [[Médiá:Pip.c|main.c]]
+
Zdrojový kód: [[Médiá:Hexapod2Cam.slx|Hexapod2Cam.slx]]
  
[[Médiá:MojProgram.c|program.c]]
 
  
 +
== Výsledok ==
  
=== Výsledok ===
+
Na obrázku nižšie môžeme vidieť riadený pohyb robota za pomoci kamery.
  
Nezabudnite zdokumentovať výsledok vašej práce. Určite sem patria fotografie, video
 
a zhodnotenie ako ste spokojní s výsledkom,
 
  
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.
+
[[Súbor:Walking.gif|center]]
  
  
 
[[Category:DTV2019]]
 
[[Category:DTV2019]]

Aktuálna revízia z 20:20, 9. jún 2019

Autori: Martin Psotka, Vladimír Beňák
Študijný odbor: Robotika a kybernetika 3. Bc. (2019)

Opis projektu

Cieľom tohto projektu bolo zdokonalenie nami vytvoreného HEXAPODU, čo je šesťnohý kráčajúci robot svojou stavbou pripomínajúci pavúka.

Po menej úspešnej účasti na robotickej súťaži ISTROBOT, ktorá sa konala v roku 2018 sme analyzovali nedostatky nášho kráčajúceho robota. Z analýzy sme zistili, že robot nedodržuje požadovaný smer kráčania a neudržuje svoj pohyb vo vymedzených hraniciach. Táto zmena smeru je spôsobená nepresným dosahovaním požadovaných polôh servomotorov, ktoré pohybujú končatinami robota a tým udávajú robota do pohybu.


Analýza 1

Už pred účasťou na súťaži ISTROBOT 2018 sme zaznamenali problém s HEXAPODOM, kedy sme postrehli, že robot nie je schopný udržať sa vo vymedzených hraniciach na dráhe určenej pre robotí šprint. Keďže v tom čase sme nemali čas na nápravu tohto problému, tak problém sme riešili postupným ladením jednotlivých servomotorov. Žiaľ tento spôsob sa nám neosvedčil, pretože sme zistili, že akokoľvek prestavíme požadovanú hodnotu, tak servomotor nám presne túto hodnotu nedosiahne z dôvodu menšej nosnosti jednotlivých motorov. Naším návrhom bolo odstránenie prebytočných častí systému, ktoré neboli využívané. Z toho dôvodu sme sa rozhodli pre odstránenie jedného kĺbu (servomotoru), ktorý nebol využívaný a zbytočne zaťažoval konštrukciu robota. Týmto spôsobom by sa mala konštrukcia odľahčiť a motory by mali väčšiu šancu dosiahnuť požadovanú polohu.


Analýza 2

Po vykonaní analýzy 1 a následne po aplikácií jednotlivých krokov, ktoré mali vyriešiť analyzovaný problém sme zistili, že problém v určitej miere stále pretrváva. Z toho dôvodu sme sa rozhodli implementovať kameru k mikropočítaču Raspberry Pi 3, ktorá nám poskytuje vizuálny kontakt s okolím a vďaka tomuto vizuálnemu kontaktu získavame spätnú väzbu, za pomoci ktorej dokážeme presnejšie riadiť pohyb robota.


Popis riešenia

Návrh novej končatiny

Po vykonaní analýzy 1 sme zistili, že musíme nanovo navrhnúť nohy robota. Po prekonzultovaní možnosti sme sa rozhodli odstrániť jeden kĺb, ktorý pre náš robotí šprint bol nevyužívaný. V online 3D modelovacom prostredí ThinkerCad sme si tieto nohy navrhli tak, že namiesto servomotoru, ktorý tvoril kĺb nohy, sme vytvorili spoj medzi jednotlivými článkami nohy. Kvôli odľahčeniu sme pridali do nohy taký výrez, aby nastalo čo najväčšie odľahčenie a zároveň sa zachovala pevnosť nohy. Následne sme si navrhnuté nohy vytlačili za pomoci 3D tlačiarne.

Koncatina.png


Predpo1.png


Implementácia kamery

Keďže naše riešenie vyplývajúce z analýzy 1 nebolo postačujúce, tak sme vykonali 2. analýzu, v ktorej sme sa rozhodli pre využitie kamery. Tá ponúka spätnú väzbu s prostredím, v ktorom sa robot nachádza. Jedná sa o kameru Arducam 8 MP Sony IMX219, ktorá poskytuje pohľad rybieho oka. Na upevnenie kamery sme si vytlačili nami navrhnutý držiak, taktiež v prostredí ThinkerCad. Ku kamere bol vytvorený algoritmus, ktorý je opísaný nižšie.

Kamera.png


Použité komponenty

  1. Raspberry Pi 3
  2. Časti tela vytlačené na 3D tlačiarni
  3. 12 servomotorov
  4. Kábliky
  5. 2 tlačidlá
  6. Powerbanka
  7. Batéria na napájanie servomotorov
  8. Kamera pre Raspberry Pi


Algoritmus a program

Program na riadenie robota sme vytvorili v programovacom prostredí MATLAB & Simulink R2019a za pomoci podporných balíkov pre Raspberry Pi. V prostredí Simulink, konkrétne v bloku Stateflow, ktorý slúži na tvorbu udalostných systémov, sme ovládali chod jednotlivých servomotorov, a teda sme v ňom vytvorili chôdzu robota a bloky, ktoré riadili jeho otáčanie. Z obrazu získaného z kamery sa po spracovaní vyhodnocuje v MATLAB Funkcii, či sa robot nepriblížil k čiare. Ak sa priblíži k pravej alebo ľavej čiare, tak sa pootočí do opačnej strany.

HexapodSimulink2.jpg

Zdrojový kód: Hexapod2Cam.slx


Výsledok

Na obrázku nižšie môžeme vidieť riadený pohyb robota za pomoci kamery.


Walking.gif