Operácie

Mobilný prieskumný robot: Rozdiel medzi revíziami

Z SensorWiki

(Vytvorená stránka „{| |Autor: || '''Meno Priezvisko''' |- |Študijný odbor: || Aplikovaná informatika || 3. Bc. ('''2019''') |} == Opis projektu == '''Čo''' je jeho cieľom,…“)
 
 
(85 medziľahlých úprav od rovnakého používateľa nie je zobrazených.)
Riadok 1: Riadok 1:
 
{|
 
{|
|Autor:      || '''Meno Priezvisko'''  
+
|Autor:      || '''Ján Urdianyk'''  
 
|-
 
|-
|Študijný odbor:  || Aplikovaná informatika || 3. Bc.  ('''2019''')  
+
|Študijný odbor:  || Robotika a kybernetika || 3. Bc.  ('''2019''')  
 
|}
 
|}
 +
 +
__TOC__
  
 
== Opis projektu ==
 
== Opis projektu ==
  
'''Čo''' je jeho cieľom, ako bude vyzerať výsledok.
+
Cieľom projektu je zostaviť diaľkovo ovládané mobilné zariadenie, ktoré by sa mohlo použiť na prieskumné účely. Toto zariadenie by sa mohlo používať na kontrolu statiky budov, prieskum potrubí a na iných miestach, kde sa človek nedostane alebo je to pre neho nebezpečné.
 +
 
 +
=== Použité zdroje: ===
 +
* [https://pdf1.alldatasheet.com/datasheet-pdf/view/292735/TI/ADS1115.html ADS1115]
 +
* [https://pdf1.alldatasheet.com/datasheet-pdf/view/254714/AD/ADXL345.html ADXL345]
 +
* [https://cdn.sparkfun.com/datasheets/Dev/RaspberryPi/ov5647_full.pdf RPI Kamera]
 +
* [http://pdf1.alldatasheet.com/datasheet-pdf/view/22440/STMICROELECTRONICS/L298N.html L298N]
 +
* [http://pdf1.alldatasheet.com/datasheet-pdf/view/293579/NXP/PCA9685BS.html PCA9685BS]
 +
* [http://www.ee.ic.ac.uk/pcheung/teaching/DE1_EE/stores/sg90_datasheet.pdf SG90 servomotor]
 +
 
 +
=== Použitý softvér: ===
 +
* Operačný systém Raspbian (verzia 9.4) a Windows 10 (64 bit)
 +
* [https://cmake.org/ Cmake (verzia 3.13.2)]
 +
* [https://gcc.gnu.org/ gcc, g++ (verzia 6.3.0)]
 +
* [https://git-scm.com/downloads Git (verzia 2.20.1)]
 +
* [https://visualstudio.microsoft.com/cs/downloads/ Microsoft Visual Studio 2017]
 +
* [https://opencv.org/ OpenCV (verzia 3.4.0)]
 +
* [http://www.emgu.com/wiki/index.php/Main_Page EmguCV (verzia 3.4.3.3016)]
 +
* [https://support.microsoft.com/sk-sk/help/3102436/the-net-framework-4-6-1-offline-installer-for-windows .net framework (verzia 4.6.1)]
 +
* [https://slimdx.org/download.php SlimDX SDK (verzia 4.0.13.43)]
 +
* [http://wiringpi.com/ WiringPi]
 +
 
 +
=== Použité komponenty: ===
 +
* 1x Raspberry PI 3 model B+ https://www.alza.sk/raspberry-pi-3-model-b-d5284636.htm
 +
Základom zariadenia je RPI 3 model B+.
 +
 
 +
[[Súbor:RPI_3_model_B.jpg|x250px]]
 +
 
 +
* 2x SG90 Micro Servo Motor 9g https://www.aliexpress.com
 +
Tieto servomotory sú súčasťou podstavca pre kameru. Umožňujú jej pohyb v dvoch stupňoch voľnosti.
 +
 
 +
[[Súbor:ServomotorSG90.jpg|x250px]]
 +
 
 +
* 1x 16 Channel 12-bit PWM Servo Motor Driver I2C Module PCA9685 https://www.aliexpress.com
 +
Tento modul dokáže generovať 16 PWM signálov a taktiež poskytuje piny na napájanie ďalších zariadení z iného zdroja ako je napájaná logika modulu.
 +
 
 +
[[Súbor:PCA9685.jpg|x250px]]
 +
 
 +
* 1x L298N Module Dual H Bridge https://www.aliexpress.com
 +
Tento modul poskytuje možnosť riadenia dvoch jednosmerných motorov. Dokáže riadiť rýchlosť aj smer pomocou 4 binárnych vstupov a dvoch enable vstupoch, na ktoré môžeme pripojiť PWM signál a tým riadiť rýchlosť motorov. Tento modul je nutný k ovládaniu motorčekov, pretože potrebný prúd na spustenie motorčekov je väčší, ako RPI dokáže bez poškodenia dodať. Dokáže dodať nárazovo až 2A pre každý motor.
 +
 
 +
[[Súbor:L298N.jpg|x250px]]
 +
 
 +
* 1x ADXL345 three-axis acceleration https://www.aliexpress.com
 +
Tento modul meria aktuálne zrýchlenie a ukladá ho do svojho registra.
 +
 
 +
[[Súbor:ADXL345.jpg|x250px]]
 +
 
 +
* 1x I2C ADS1115 16 Bit ADC 4 channel Module https://www.aliexpress.com
 +
Tento modul zabezpečuje prevod analógového signálu na digitálni, ktorého výsledok si uloží do svojho registra.
  
'''Prečo?'''
+
[[Súbor:ADS1115.jpg|x250px]]
  
# Prečo práve tento projekt, aký má zmysel, komu bude osožný...  
+
* 4x Raspberry Pi 3 Smart Car Robot Tire Tyre Wheel + 1:48 70mA DC Gear Motor https://www.aliexpress.com
# Druhy '''riadok'''
+
Zariadenia bude mať štyri jednosmerné motorčeky, ktoré sú riadené pomocou modulu L298N. Motory na jednej strane zariadenia budú pripojené na jeden kanál tohto modulu.
  
'''Ako ?'''
+
[[Súbor:DTV2019_DC_MOTOR.jpg|x250px]]
  
Sem príde podrobný návod na výrobu.
+
* 1x Raspberry Pi 3 B+ Camera Night Vision Wide Angle Fisheye Lens 5 MP Camera https://www.aliexpress.com
 +
Táto kamera je pripojená k RPI štandardným CSI konektorom. Je prichytená na podstavci so servomotormi, ktoré umožňujú jej natáčanie.
  
* Popisat proces premeny napadu na hmotny (funkcny) produkt
+
[[Súbor:DTV2019_RPI_CAMERA.jpg|x250px]]
* 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
 
  
 +
* 1x Voltage Sensor DC0-25V https://www.aliexpress.com
 +
Tento modul obsahuje dva rezistory s odpormi 30kΩ a 7.5 kΩ. Na vstup sa priviedlo napätie na batérií a na výstupe je napätie 5x menšie, ktoré je merateľné A/D prevodníkom ADS1115.
  
[http://www.example.com link title]
+
[[Súbor:DTV2019_VOLTAGE_SENSOR.jpg|x250px]]  
  
[[Súbor:MojObrazok2.jpg|center|300px]]
+
* 4x KEYES KY-032 4pin IR Infrared Obstacle Avoidance Sensor Module https://www.aliexpress.com
 +
Tento modul dokáže detegovať prekážku vo vzdialenosti 2 až 40cm. Poskytuje binárny výstup, ktorý značí prítomnosť alebo neprítomnosť prekážky. Tento modul je potrebné kalibrovať pomocou dvoch potenciometrov.
  
[[Médiá:MojZdrojak.c]]
+
[[Súbor:IR_Obstacle_avoidance.jpg|x250px]]  
  
 +
* 2x 4 PIN IR Infrared Speed Sensor Module https://www.aliexpress.com
 +
Tento modul ma binárny výstup, ktorý sa nastavuje podľa toho, či je IR lúč prerušený. O prerušenie lúča sa stará disk s dierami, ktorý je pripevnený o motor, a má presný počet dierok.
  
'''Použité zdroje:'''
+
[[Súbor:IR_Speed_sensor.jpg|x250px]]
  
* Zoznam použitej literatúry, vrátane katalógových údajov (datasheet), internetových odkazov a pod.
+
* 1x 5V USB Output Converter DC 7V-24V To 5V 3A Step Down Buck KIS3R33S https://www.aliexpress.com
 +
Tento modul mení 11.1V napätie z batérie na 5V a 3A prúd potrebný na správne fungovanie RPI a ďalších modulov. Nárazovo dokáže dodať prúd až 4A.
  
__TOC__
+
[[Súbor:KIS3R33S.jpg|x250px]]
 +
 
 +
* 1x Limkey power 11.1v 4200maH 30c~35c XT60 Plug 3s lipo battery https://www.aliexpress.com
 +
Na napájanie robota sme zvolili 3-článkovú, 11.1V li-po batériu.
 +
 
 +
[[Súbor:Limkey_power_lipo_4200mah.jpg|x250px]]
 +
 
 +
* 1x DC 12V Battery Low Voltage Cut Off Switch https://www.aliexpress.com
 +
Tento modul odpojí batériu, ak napätie na batérií klesne pod určitú hranicu. Táto hranica sa nastavuje pomocou potenciometra, aktuálne je nastavená na 11V. Je potrebný pretože naša batéria sa nenávratne poškodzuje ak z nej odoberáme energiu keď ma nízke napätie.
 +
 
 +
[[Súbor:Low_voltage_cutoff.jpg|x250px]]
 +
 
 +
* 1x XT60 Battery Male Connector Plug https://www.aliexpress.com
 +
* 1x Servo bracket PT Pan/Tilt Camera Platform Anti-Vibration Camera Mount https://www.aliexpress.com
 +
* 1x XT60 Plug On/Off Switch Connector https://www.aliexpress.com
 +
* 3x Raspberry Pi 3 Dupont Cable 40pcs https://www.aliexpress.com
 +
* 1x 20cm Micro USB – USB kábel
 +
* 2x svorkovnica pre dva vodiče – slúži na pripojenie I2C zbernice a napájania
 +
* 23x distančný stĺpik pre M3 skrutky, 5mm dlhé https://www.aliexpress.com
 +
* 1x plastový nástavec na servomotor SG90 v tvare štvorcípej hviezdy https://www.aliexpress.com
 +
* 1x plastový rovný nástavec na servomotor SG90 predĺžený v jednom smere https://www.aliexpress.com
 +
* 2x skrutka na servomotor SG90 https://www.aliexpress.com
 +
* 1x 15Pin Ribbon Flex CSI Cable 30cm https://www.aliexpress.com
 +
* 1x Kingston Canvas React microSDHC 32 GB A1 UHS-I V30 https://www.alza.sk/kingston-canvas-react-microsdhc-32gb-uhs-i-v30-sd-adapter-d5282030.htm
 +
* 1x RASPBERRY Pi RB-Heatsink https://www.alza.sk/raspberry-pi-rb-heatsink-d4147799.htm
 +
 
 +
* 6x metrická skrutka M4x40mm s maticami M4 – slúži na spojenie oboch častí podvozku
 +
* 6x M2.5x8mm – spojenie dvoch častí držiaka RPI
 +
* 6x M2.5x12mm – spojenie držiaka RPI s podvozkom
 +
* 8x M2.5x10mm – prichytenie RPI o držiak a PWM modulu o podvozok
 +
* 24x M2.5 matica – pre všetky skrutky raz okrem skrutiek na RPI, kde sa použili na odsadenie od držiaka
 +
* 4x M2x10mm – prichytenie držiaka kamery o podvozok
 +
* 2x M2x12mm – prichytenie servomotora o držiak kamery
 +
* 2x M2x8 mm – pripevnenie kamery o upravený držiak na kameru
 +
* 10x M2 matica – pre všetky skrutky jedna okrem kamery, kde sa používajú na odsadenie od držiaka
 +
* 22x M3x18mm – prichytenie spínača a všetkých modulov na vrchnom a spodnom podvozku okrem PWM modulu
 +
* 2x M3x25mm – prichytenie svorkovníc I2C zbernice a napájania
 +
* 8x M3x35mm – prichytenie jednosmerných motorov
 +
* 2x M3x6mm – prichytenie IR senzorov rýchlosti o uholník
 +
* 2x M3x10mm – prichytenie uholníkov o podvozok
 +
* 40x M3 matica - pre všetky skrutky jedna okrem napäťového meniča, kde sa používajú na odsadenie od podvozku
  
 
== Analýza ==
 
== Analýza ==
  
V tejto časti popíšete ako idete daný problém riešiť. Uvediete sem aj všetky potrebné technické údaje,  
+
Naše zariadenie kvôli jednoduchosti bude mať diferenciálny podvozok so štyrmi hnacími motormi. Jeho súčasťou bude kamera, ktorá sa vďaka podstavcu a servomotorom bude môcť otáčať. Na zaistenie komunikácie sa použije technológia WiFi. Na ovládanie servomotorov sa použije špeciálny modul, ktorý bude komunikovať s RPI pomocou zbernice I2C. Informáciu o napätí na batérií budeme získavať pomocou napäťového deliča a ADC prevodníka, ktorý sa taktiež nachádza na I2C zbernici. Posledné zariadenie na tejto zbernici je akcelerometer. Zbernica pozostáva z dvoch vodičov - SDA a SCL. Informáciu o rýchlosti otáčania kolies budeme získavať pomocou ikrementálných IR senzorov. Kedže RPI nedokáže dodať dostatočný prúd pre motory, použijeme na to modul, ktorý je na to určený. Rýchlosť sa riadi pomocou PWM signálu, ktorý budeme získavať z modulu na ovládanie servomotorov. Vpredu, vzadu, vľavo aj vpravo sa nachádza IR senzor prekážok.
ktoré potrebné na úspešné vyriešenie projektu. Napríklad:
+
 
 +
== Popis riešenia ==
 +
 
 +
=== Návrh podvozku ===
 +
 
 +
Podvozok sme navrhli tak, aby ho bolo možné vyrezať laserom. Skladá sa z dvoch častí a obsahuje dierky na presných miestach tak, aby sa moduly dali jednoducho zapojiť. Je vyrezaní zo 6mm plexiskla. Súčasťou podvozku T spojky (4 vyrezané z 6 mm plexiskla, ktoré sa vsúvajú do dietok z vnútornej strany, a 4 vyrezané z 3 mm plexiskla, ktoré sa vsúvajú z vonkajšej časti).
 +
 
 +
[[Súbor:Dtv2019_podvozok001.jpeg|x500px]]
 +
 
 +
[[Súbor:Dtv2019_podvozok002.jpeg|x500px]]
 +
 
 +
[[Médiá:Dtv2019_sbr_podvozok_rezanie.pdf]]
 +
 
 +
[[Médiá:Dtv2019_sbr_podvozok_rezanie_T.pdf]]
 +
 
 +
=== Návrh držiaka na RPI a batériu, disk s otvormi na meranie rýchlosti ===
 +
 
 +
Tieto časti boli navrhnuté na tlač na 3D tlačiarni.
 +
 
 +
[[Súbor:Dtv2019_RPI_holder.jpeg|x300px]]
 +
 
 +
[[Súbor:Dtv2019_BATTERY_HOLDER.jpeg|x300px]]
 +
 
 +
[[Súbor:Dtv2019_encoder_disk.jpeg|x300px]]
 +
 
 +
[[Médiá:Dtv2019_sbr_3d_tlac.rar]]
 +
 
 +
 
 +
 
 +
=== Postup montáže ===
 +
 
 +
1. Pripevníme moduly na spodný podvozok. Všetky moduly sú oddelené od podvozku dištančným stĺpikom. (okrem PWM modulu) Použité skrutky aj miesto ich použitia boli vymenované na začiatku. Dve svorkovnice pripevníme o podvozok pomocou dvoch dierok v strede (svorkovnice nie vyznačené na obrázku!).
 +
 
 +
[[Súbor:Dtv2019_postup_01.jpeg|center|x300px]]
 +
 
 +
2. Pripevníme moduly na vrchný podvozok.
 +
 
 +
[[Súbor:Dtv2019_postup_02.jpeg|center|x300px]]
 +
 
 +
3. Pripevníme RPI na držiak. Spojíme držiak na RPI s držiakom na batériu pomocou skrutiek.
 +
 
 +
[[Súbor:Dtv2019_postup_03.jpeg|center|x300px]]
 +
 
 +
4. Pripevníme držiak na baterku a RPI na vrchný podvozok. Pripevníme spínač na držiak RPI.
  
* popis komunikačnej zbernice (i2c, 1-wire, RS-232 a pod.)
+
[[Súbor:Dtv2019_postup_04.jpeg|center|x300px]]
* obrázok zapojenia vývodov použitej súčiastky
 
* odkaz na katalógový list
 
* priebehy dôležitých signálov
 
* este jedna polozka
 
  
 +
5. Pripevníme disky s otvormi na zadné dva motorčeky.
  
== Popis riešenia ==
+
[[Súbor:Dtv2019_postup_05.jpeg|center|x300px]]
 +
 
 +
6. Pripevníme T časti a motorčeky na vrchný podvozok.
 +
 
 +
[[Súbor:Dtv2019_postup_06.jpeg|center|x300px]]
 +
 
 +
7. Pripravíme si stojan na kameru. (Je potrebné vytvoriť dierky na stojane na pripevnenie kamery a skrátenie nástavca na sevomotor)
 +
 
 +
[[Súbor:Dtv2019_postup_07.jpeg|center|x300px]]
 +
 
 +
8. Pripevníme stojan s kamerou na vrchný podvozok.
 +
 
 +
[[Súbor:Dtv2019_postup_08.jpeg|center|x300px]]
 +
 
 +
9. Prepojíme jednotlivé moduly presne podla schémy zapojenia.
  
Sem opíšete ako konkrétne ste problém vyriešili. Začnite popisom pripojenia k procesoru
+
[[Súbor:Dtv2019_postup_schema.jpeg|center|x300px]]
(nezabudnite na schému zapojenia!) a zdôraznite ktoré jeho periférie ste pritom využili.  
 
  
'''Schéma zapojenia snímača'''
+
10. Spojíme spodnú časť podvozku s vrchnou.
[[Súbor:Zapojenie.png]]
 
  
[[Súbor:Example.jpg]]
+
[[Súbor:Dtv2019_postup_09.jpeg|center|x300px]]  
  
Pozn.: Názov obrázku musí byť jedinečný, uvedomte si, že Obr1.jpg už pred vami skúsilo
+
11. Skontrolujeme zapojenie, vložíme baterku a máme hotovo.
nahrať už aspoň 10 študentov.  
 
  
[[Súbor:MojObrazok.jpg|center|250px]]
+
[[Súbor:Dtv2019_postup_10.jpeg|center|x300px]]
  
 
=== 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 je písaný v jazykoch C++ a C#. Program bežiaci na RPI sa skladá z viacerých projektov. Tieto projekty sú vo forme statických a dynamických knižníc. Súčasťou projektu je aj zdrojový kód na vytvorenie kompilovateľného projektu pomocou programu cmake. Medzi základne projekty patria AI, Modules a Networking.
Je vhodné nakresliť aspoň hrubú štruktúru programu napríklad vo forme vývojového diagramu.  
+
Networking zdieľa program na RPI ako aj užívateľské rozhranie a zabezpečuje komunikáciu pomocou protokolu UDP/IP. Zabezpečuje odosielanie, potvrdzovanie prijatia ako aj znovu vysielanie dát. Nie všetky dáta sa potvrdzujú, len tie potrebné na ovládanie robota.
Rozsiahly program pre lepšiu prehľadnosť rozdeľte do viacerých súborov.
+
Modules implementuje abstraktné triedy, pomocou ktorých vytvára programové rozhranie k všetkým použitým modulom.
 +
Projekt AI je vrstvou medzi operátorom a modulmi. Rieši odosielanie dát zo senzorov. Aktuálne má na starosti len preklad medzi údajmi od operátora na údaje pre moduly, ale v budúcnosti by sa mohla rozšíriť o nejaké funkcie zabezpečujúce autonómnosť robota. Všetky zdrojové súbory sú súčasťou repozitára, kde sa všetky zmeny sa zaznamenávajú. Tento repozitár je vytvorený pomocou programu GIT.
 +
Operačný systém na RPI je Raspbian a o spustenie programu sa stará skript, ktorý sa spúšťa po nabehnutí operačného systému. Tento skript okrem spustenia programu spustí aj prednastavený hotspot ak sa nedokáže pripojiť na sieť.
 +
 
 +
[[Súbor:dtv2019_spustaci_script.jpg|x250px]]
 +
 
 +
[[Médiá:dtv2019_spustaciscript.sh]]
 +
 
 +
=== Inštalácia programu ===
 +
 
 +
'''Postup inštalácie na RPI (na zariadení):'''
 +
 
 +
Skopírovať si priečinok „SurveyRobot“ na plochu (cesta
 +
/home/pi/Desktop/). V tomto priečinku vytvoriť priečinok BUILD a použiť príkaz:
 +
 
 +
''cmake ../ -DCLIENT=0 -DPI=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo''
 +
 
 +
Tento príkaz vygeneruje „Makefile“ pomocou ktorého sa dá skompilovať program.
 +
Príkaz na kompiláciu (v priečinku BUILD!):
 +
 
 +
''make -j4''
  
Vyberte podstatné časti zdrojového kódu, použite na to prostredie ''source'':
+
Pred spustením je potrebné nastaviť kameru pomocou príkazu:
  
<source lang="c">
+
''sudo modprobe bcm2835-v4l2''
/* A nezabudnite zdroják hojne komentovať  */
 
  
int main(void) {
+
Po úspešnej kompilácií sa vytvorí priečinok bin, v ktorom bude spustiteľní súbor
   
+
s názvom „PI“.
    printf("Hello, World!\n"); 
 
    return(0); 
 
}
 
</source>
 
  
Nezabudnite však nahrať aj kompletné zdrojové kódy vášho programu!
+
'''Postup inštalácie na windows (operator):'''
  
Zdrojový kód: [[Médiá:Serial.h|serial.h]] a [[Médiá:Pip.c|main.c]]
+
Skopírovať si priložený priečinok „SurveyRobot“ do počítača a spustiť Cmake.
 +
V tomto priečinku vytvoriť pod priečinok BUILD. Do riadku „Where is the source
 +
code:“ vybrať cestu k priečinku „SurveyRobot“ a do riadku „Where to build the
 +
binaries:“ vybrať cestu k priečinku BUILD. V dolnej časti stlačiť tlačidlo „Configure“
 +
a vybrať „Visual Studio 15 2017 Win64“. Potom stlačiť tlačidlo „Generate“, ktoré
 +
vygeneruje projekt pre Visual studio. V priečinku BUILD otvoriť vygenerovaný
 +
súbor „SurveyRobot.sln“ pomocou Microsoft Visual Studio a skompilovať všetky
 +
projekty (v hornej lište vybrať Release ak je tam niečo iné). Po kompilácií v priečinku
 +
bin/release/ vznikol súbor Client.exe a PI.exe. PI slúži len na testovanie spojenia a
 +
kamery. Užívateľské rozhranie sa spustí pomocou spustiteľného súboru Client.exe.
  
[[Médiá:MojProgram.c|program.c]]
+
=== Zdrojové súbory a CAD súbory ===
 +
Git repozitár: https://1drv.ms/u/s!AnuRDVVxxeNDgYQcBXLpILl0jdHf4Q
  
 +
CAD súbory: https://1drv.ms/u/s!AnuRDVVxxeNDgYQdu-rnS8PVis_BsQ
  
 
=== Výsledok ===
 
=== Výsledok ===
  
Nezabudnite zdokumentovať výsledok vašej práce. Určite sem patria fotografie, video
+
Vytvorené zariadenie sa dokáže pohybovať pomocou kolies a otáčať kamerou. Obraz z kamery ako aj údaje z ostatných senzorov sa pomocou WiFi pripojenia posielajú operátorovi. Zariadenie dokáže plniť svoju úlohu i keď bolo by vhodné pridať nejaký kryt, ktorý by chránil elektroniku. Hrúbka použitého plexiskla sa zdá byť až príliš velká, pravdepodobne by stačilo aj 4-5 mm plexisklo.
a zhodnotenie ako ste spokojní s výsledkom,  
 
  
Kľúčové slová 'Category', ktoré sú na konci stránky nemeňte.
+
[[Súbor:Dtv2019_MPR01.jpeg|x250px]]
 +
[[Súbor:Dtv2019_MPR02.jpeg|x250px]]
 +
[[Súbor:Dtv2019_MPR03.jpeg|x250px]]
  
  
 
[[Category:DTV2019]]
 
[[Category:DTV2019]]

Aktuálna revízia z 00:51, 10. jún 2019

Autor: Ján Urdianyk
Študijný odbor: Robotika a kybernetika 3. Bc. (2019)

Opis projektu

Cieľom projektu je zostaviť diaľkovo ovládané mobilné zariadenie, ktoré by sa mohlo použiť na prieskumné účely. Toto zariadenie by sa mohlo používať na kontrolu statiky budov, prieskum potrubí a na iných miestach, kde sa človek nedostane alebo je to pre neho nebezpečné.

Použité zdroje:

Použitý softvér:

Použité komponenty:

Základom zariadenia je RPI 3 model B+.

RPI 3 model B.jpg

Tieto servomotory sú súčasťou podstavca pre kameru. Umožňujú jej pohyb v dvoch stupňoch voľnosti.

ServomotorSG90.jpg

Tento modul dokáže generovať 16 PWM signálov a taktiež poskytuje piny na napájanie ďalších zariadení z iného zdroja ako je napájaná logika modulu.

PCA9685.jpg

Tento modul poskytuje možnosť riadenia dvoch jednosmerných motorov. Dokáže riadiť rýchlosť aj smer pomocou 4 binárnych vstupov a dvoch enable vstupoch, na ktoré môžeme pripojiť PWM signál a tým riadiť rýchlosť motorov. Tento modul je nutný k ovládaniu motorčekov, pretože potrebný prúd na spustenie motorčekov je väčší, ako RPI dokáže bez poškodenia dodať. Dokáže dodať nárazovo až 2A pre každý motor.

L298N.jpg

Tento modul meria aktuálne zrýchlenie a ukladá ho do svojho registra.

ADXL345.jpg

Tento modul zabezpečuje prevod analógového signálu na digitálni, ktorého výsledok si uloží do svojho registra.

ADS1115.jpg

Zariadenia bude mať štyri jednosmerné motorčeky, ktoré sú riadené pomocou modulu L298N. Motory na jednej strane zariadenia budú pripojené na jeden kanál tohto modulu.

DTV2019 DC MOTOR.jpg

Táto kamera je pripojená k RPI štandardným CSI konektorom. Je prichytená na podstavci so servomotormi, ktoré umožňujú jej natáčanie.

DTV2019 RPI CAMERA.jpg

Tento modul obsahuje dva rezistory s odpormi 30kΩ a 7.5 kΩ. Na vstup sa priviedlo napätie na batérií a na výstupe je napätie 5x menšie, ktoré je merateľné A/D prevodníkom ADS1115.

DTV2019 VOLTAGE SENSOR.jpg

Tento modul dokáže detegovať prekážku vo vzdialenosti 2 až 40cm. Poskytuje binárny výstup, ktorý značí prítomnosť alebo neprítomnosť prekážky. Tento modul je potrebné kalibrovať pomocou dvoch potenciometrov.

IR Obstacle avoidance.jpg

Tento modul ma binárny výstup, ktorý sa nastavuje podľa toho, či je IR lúč prerušený. O prerušenie lúča sa stará disk s dierami, ktorý je pripevnený o motor, a má presný počet dierok.

IR Speed sensor.jpg

Tento modul mení 11.1V napätie z batérie na 5V a 3A prúd potrebný na správne fungovanie RPI a ďalších modulov. Nárazovo dokáže dodať prúd až 4A.

KIS3R33S.jpg

Na napájanie robota sme zvolili 3-článkovú, 11.1V li-po batériu.

Limkey power lipo 4200mah.jpg

Tento modul odpojí batériu, ak napätie na batérií klesne pod určitú hranicu. Táto hranica sa nastavuje pomocou potenciometra, aktuálne je nastavená na 11V. Je potrebný pretože naša batéria sa nenávratne poškodzuje ak z nej odoberáme energiu keď ma nízke napätie.

Low voltage cutoff.jpg

  • 6x metrická skrutka M4x40mm s maticami M4 – slúži na spojenie oboch častí podvozku
  • 6x M2.5x8mm – spojenie dvoch častí držiaka RPI
  • 6x M2.5x12mm – spojenie držiaka RPI s podvozkom
  • 8x M2.5x10mm – prichytenie RPI o držiak a PWM modulu o podvozok
  • 24x M2.5 matica – pre všetky skrutky raz okrem skrutiek na RPI, kde sa použili na odsadenie od držiaka
  • 4x M2x10mm – prichytenie držiaka kamery o podvozok
  • 2x M2x12mm – prichytenie servomotora o držiak kamery
  • 2x M2x8 mm – pripevnenie kamery o upravený držiak na kameru
  • 10x M2 matica – pre všetky skrutky jedna okrem kamery, kde sa používajú na odsadenie od držiaka
  • 22x M3x18mm – prichytenie spínača a všetkých modulov na vrchnom a spodnom podvozku okrem PWM modulu
  • 2x M3x25mm – prichytenie svorkovníc I2C zbernice a napájania
  • 8x M3x35mm – prichytenie jednosmerných motorov
  • 2x M3x6mm – prichytenie IR senzorov rýchlosti o uholník
  • 2x M3x10mm – prichytenie uholníkov o podvozok
  • 40x M3 matica - pre všetky skrutky jedna okrem napäťového meniča, kde sa používajú na odsadenie od podvozku

Analýza

Naše zariadenie kvôli jednoduchosti bude mať diferenciálny podvozok so štyrmi hnacími motormi. Jeho súčasťou bude kamera, ktorá sa vďaka podstavcu a servomotorom bude môcť otáčať. Na zaistenie komunikácie sa použije technológia WiFi. Na ovládanie servomotorov sa použije špeciálny modul, ktorý bude komunikovať s RPI pomocou zbernice I2C. Informáciu o napätí na batérií budeme získavať pomocou napäťového deliča a ADC prevodníka, ktorý sa taktiež nachádza na I2C zbernici. Posledné zariadenie na tejto zbernici je akcelerometer. Zbernica pozostáva z dvoch vodičov - SDA a SCL. Informáciu o rýchlosti otáčania kolies budeme získavať pomocou ikrementálných IR senzorov. Kedže RPI nedokáže dodať dostatočný prúd pre motory, použijeme na to modul, ktorý je na to určený. Rýchlosť sa riadi pomocou PWM signálu, ktorý budeme získavať z modulu na ovládanie servomotorov. Vpredu, vzadu, vľavo aj vpravo sa nachádza IR senzor prekážok.

Popis riešenia

Návrh podvozku

Podvozok sme navrhli tak, aby ho bolo možné vyrezať laserom. Skladá sa z dvoch častí a obsahuje dierky na presných miestach tak, aby sa moduly dali jednoducho zapojiť. Je vyrezaní zo 6mm plexiskla. Súčasťou podvozku T spojky (4 vyrezané z 6 mm plexiskla, ktoré sa vsúvajú do dietok z vnútornej strany, a 4 vyrezané z 3 mm plexiskla, ktoré sa vsúvajú z vonkajšej časti).

Dtv2019 podvozok001.jpeg

Dtv2019 podvozok002.jpeg

Médiá:Dtv2019_sbr_podvozok_rezanie.pdf

Médiá:Dtv2019_sbr_podvozok_rezanie_T.pdf

Návrh držiaka na RPI a batériu, disk s otvormi na meranie rýchlosti

Tieto časti boli navrhnuté na tlač na 3D tlačiarni.

Dtv2019 RPI holder.jpeg

Dtv2019 BATTERY HOLDER.jpeg

Dtv2019 encoder disk.jpeg

Médiá:Dtv2019_sbr_3d_tlac.rar


Postup montáže

1. Pripevníme moduly na spodný podvozok. Všetky moduly sú oddelené od podvozku dištančným stĺpikom. (okrem PWM modulu) Použité skrutky aj miesto ich použitia boli vymenované na začiatku. Dve svorkovnice pripevníme o podvozok pomocou dvoch dierok v strede (svorkovnice nie sú vyznačené na obrázku!).

Dtv2019 postup 01.jpeg

2. Pripevníme moduly na vrchný podvozok.

Dtv2019 postup 02.jpeg

3. Pripevníme RPI na držiak. Spojíme držiak na RPI s držiakom na batériu pomocou skrutiek.

Dtv2019 postup 03.jpeg

4. Pripevníme držiak na baterku a RPI na vrchný podvozok. Pripevníme spínač na držiak RPI.

Dtv2019 postup 04.jpeg

5. Pripevníme disky s otvormi na zadné dva motorčeky.

Dtv2019 postup 05.jpeg

6. Pripevníme T časti a motorčeky na vrchný podvozok.

Dtv2019 postup 06.jpeg

7. Pripravíme si stojan na kameru. (Je potrebné vytvoriť dierky na stojane na pripevnenie kamery a skrátenie nástavca na sevomotor)

Dtv2019 postup 07.jpeg

8. Pripevníme stojan s kamerou na vrchný podvozok.

Dtv2019 postup 08.jpeg

9. Prepojíme jednotlivé moduly presne podla schémy zapojenia.

Dtv2019 postup schema.jpeg

10. Spojíme spodnú časť podvozku s vrchnou.

Dtv2019 postup 09.jpeg

11. Skontrolujeme zapojenie, vložíme baterku a máme hotovo.

Dtv2019 postup 10.jpeg

Algoritmus a program

Program je písaný v jazykoch C++ a C#. Program bežiaci na RPI sa skladá z viacerých projektov. Tieto projekty sú vo forme statických a dynamických knižníc. Súčasťou projektu je aj zdrojový kód na vytvorenie kompilovateľného projektu pomocou programu cmake. Medzi základne projekty patria AI, Modules a Networking. Networking zdieľa program na RPI ako aj užívateľské rozhranie a zabezpečuje komunikáciu pomocou protokolu UDP/IP. Zabezpečuje odosielanie, potvrdzovanie prijatia ako aj znovu vysielanie dát. Nie všetky dáta sa potvrdzujú, len tie potrebné na ovládanie robota. Modules implementuje abstraktné triedy, pomocou ktorých vytvára programové rozhranie k všetkým použitým modulom. Projekt AI je vrstvou medzi operátorom a modulmi. Rieši odosielanie dát zo senzorov. Aktuálne má na starosti len preklad medzi údajmi od operátora na údaje pre moduly, ale v budúcnosti by sa mohla rozšíriť o nejaké funkcie zabezpečujúce autonómnosť robota. Všetky zdrojové súbory sú súčasťou repozitára, kde sa všetky zmeny sa zaznamenávajú. Tento repozitár je vytvorený pomocou programu GIT. Operačný systém na RPI je Raspbian a o spustenie programu sa stará skript, ktorý sa spúšťa po nabehnutí operačného systému. Tento skript okrem spustenia programu spustí aj prednastavený hotspot ak sa nedokáže pripojiť na sieť.

Dtv2019 spustaci script.jpg

Médiá:dtv2019_spustaciscript.sh

Inštalácia programu

Postup inštalácie na RPI (na zariadení):

Skopírovať si priečinok „SurveyRobot“ na plochu (cesta /home/pi/Desktop/). V tomto priečinku vytvoriť priečinok BUILD a použiť príkaz:

cmake ../ -DCLIENT=0 -DPI=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo

Tento príkaz vygeneruje „Makefile“ pomocou ktorého sa dá skompilovať program. Príkaz na kompiláciu (v priečinku BUILD!):

make -j4

Pred spustením je potrebné nastaviť kameru pomocou príkazu:

sudo modprobe bcm2835-v4l2

Po úspešnej kompilácií sa vytvorí priečinok bin, v ktorom bude spustiteľní súbor s názvom „PI“.

Postup inštalácie na windows (operator):

Skopírovať si priložený priečinok „SurveyRobot“ do počítača a spustiť Cmake. V tomto priečinku vytvoriť pod priečinok BUILD. Do riadku „Where is the source code:“ vybrať cestu k priečinku „SurveyRobot“ a do riadku „Where to build the binaries:“ vybrať cestu k priečinku BUILD. V dolnej časti stlačiť tlačidlo „Configure“ a vybrať „Visual Studio 15 2017 Win64“. Potom stlačiť tlačidlo „Generate“, ktoré vygeneruje projekt pre Visual studio. V priečinku BUILD otvoriť vygenerovaný súbor „SurveyRobot.sln“ pomocou Microsoft Visual Studio a skompilovať všetky projekty (v hornej lište vybrať Release ak je tam niečo iné). Po kompilácií v priečinku bin/release/ vznikol súbor Client.exe a PI.exe. PI slúži len na testovanie spojenia a kamery. Užívateľské rozhranie sa spustí pomocou spustiteľného súboru Client.exe.

Zdrojové súbory a CAD súbory

Git repozitár: https://1drv.ms/u/s!AnuRDVVxxeNDgYQcBXLpILl0jdHf4Q

CAD súbory: https://1drv.ms/u/s!AnuRDVVxxeNDgYQdu-rnS8PVis_BsQ

Výsledok

Vytvorené zariadenie sa dokáže pohybovať pomocou kolies a otáčať kamerou. Obraz z kamery ako aj údaje z ostatných senzorov sa pomocou WiFi pripojenia posielajú operátorovi. Zariadenie dokáže plniť svoju úlohu i keď bolo by vhodné pridať nejaký kryt, ktorý by chránil elektroniku. Hrúbka použitého plexiskla sa zdá byť až príliš velká, pravdepodobne by stačilo aj 4-5 mm plexisklo.

Dtv2019 MPR01.jpeg Dtv2019 MPR02.jpeg Dtv2019 MPR03.jpeg