Obsah:

Zostavte si vlastného robota Turtlebot!: 7 krokov
Zostavte si vlastného robota Turtlebot!: 7 krokov

Video: Zostavte si vlastného robota Turtlebot!: 7 krokov

Video: Zostavte si vlastného robota Turtlebot!: 7 krokov
Video: 5 лучших STEM-игрушек для детей в 2024 году 2024, Júl
Anonim
Zostavte si svojho vlastného robota Turtlebot!
Zostavte si svojho vlastného robota Turtlebot!
Zostavte si vlastného robota Turtlebot!
Zostavte si vlastného robota Turtlebot!
Zostavte si svojho vlastného robota Turtlebot!
Zostavte si svojho vlastného robota Turtlebot!

UPRAVIŤ:

Ďalšie informácie o softvéri a ovládaní sú k dispozícii na tomto odkaze:

hackaday.io/project/167074-build-your-own-turtlebot-3-backbone

Priamy odkaz na kód je:

github.com/MattMgn/foxbot_core

Prečo tento projekt?

Turtlebot 3 je perfektnou platformou pre hĺbku elektroniky, robotiky a dokonca aj AI! Navrhujem, aby ste si krok za krokom zostavili vlastnú korytnačku s cenovo dostupnými komponentmi bez toho, aby ste obetovali funkcie a výkon. S jednou vecou na pamäti: udržať to najlepšie z počiatočného robota, jeho modularitu, jednoduchosť a obrovské množstvo balíkov pre autonómnu navigáciu a AI z komunity open source.

Tento projekt je príležitosťou pre začiatočníkov získať znalosti o elektronike, mechanike a počítačových vedách a pre skúsenejších získať výkonnú platformu na testovanie a vývoj algoritmov umelej inteligencie.

Čo v tomto projekte zistíte?

Chystáte sa zistiť, ktoré základné mechanické a elektronické súčiastky je potrebné uchovávať u pôvodného robota, aby bola zaručená úplná kompatibilita.

Celý proces zostavenia bude podrobný: od tlače 3D dielov, montáže a niekoľkých komponentov, spájkovania a integrácie elektroniky až po kompiláciu kódu na Arduine. Tento návod bude zakončený príkladom „ahoj sveta“, aby vás zoznámil s ROS. Ak sa vám zdá niečo nejasné, pokojne sa pýtajte!

Zásoby

Elektronika:

1 x počítač s jednou doskou na spustenie ROS, môže to byť napríklad Raspberry Pi alebo Jetson Nano

1 x Arduino DUE, môžete tiež použiť UNO alebo MEGA

1 x proto-board, ktorý vyhovuje pin-out Arduino DUE, je k dispozícii tu

2 x 12V DC motory s enkodérmi (možnosť 100 ot / min)

1 x ovládač motora L298N

2 x 5V regulátor

1 x batéria (napríklad 3S/4S LiPo batéria)

2 x prepínač ON/OFF

2 x LED

Rezistory 2 x 470 kOhm

3 x 4 piny JST konektory

1 x kábel USB (najmenej jeden medzi SBC a Arduino)

Senzory:

1 x prúdový senzor (voliteľné)

1 x 9 stupňov slobody IMU (voliteľné)

1 x LIDAR (voliteľné)

Podvozok:

16 x modulárne platne Turtlebot (ktoré je možné vytlačiť aj 3D)

2 x kolieska s priemerom 65 mm (možnosť šírky 6 mm)

4 x nylonové rozpery 30 mm (voliteľné)

20 x vložky M3 (voliteľné)

Iní:

Drôty

Skrutky a vložky M2,5 a M3

3D tlačiareň alebo niekto, kto vám môže diely vytlačiť

Ručná vŕtačka so súpravou vrtákov ako je táto

Krok 1: Popis

Popis
Popis
Popis
Popis

Tento robot je jednoduchý diferenciálny pohon, ktorý používa 2 kolesá priamo namontované na motore a kolieskové koliesko umiestnené vzadu, aby sa zabránilo pádu robota. Robot je rozdelený do dvoch vrstiev:

Spodná vrstva: so skupinou pohonu (batéria, ovládač motora a motory) a „nízka úroveň“elektroniky: mikrokontrolér Arduino, regulátor napätia, spínače …

horná vrstva: s „vysokou úrovňou“elektroniky, konkrétne s jediným palubným počítačom a systémom LIDAR

Tieto vrstvy sú spojené s potlačenými časťami a skrutkami, aby sa zaistila robustnosť konštrukcie.

Elektronická schéma

Schéma môže pôsobiť trochu chaoticky. Je to schematický nákres a nereprezentuje všetky vodiče, konektory a proto-dosku, ale dá sa čítať nasledovne:

3S Litihum iónová polymérová batéria s kapacitou 3000 mAh napája prvý obvod, napája dosku radiča motora (L298N) a prvý 5V regulátor pre enkodéry motora a Arduino. Tento obvod je aktivovaný spínačom s LED diódou, ktorá indikuje jeho stav ZAPNUTIE/VYPNUTIE.

Tá istá batéria napája druhý obvod, vstupné napätie sa premení na 5 V na napájanie jednodoskového počítača. Tu je tiež obvod povolený pomocou spínača a LED diódy.

Ďalšie senzory, ako napríklad LIDAR alebo fotoaparát, je potom možné pridať priamo na Raspberry Pi cez USB alebo port CSI.

Mechanické prevedenie

Rám robota sa skladá zo 16 rovnakých častí, ktoré tvorili 2 štvorcové vrstvy (šírka 28 cm). Mnoho otvorov umožňuje namontovať ďalšie diely, kdekoľvek ich potrebujete, a ponúka kompletný modulárny dizajn. Pre tento projekt som sa rozhodol získať originály dosiek TurtleBot3, ale môžete ich tiež vytlačiť 3D, pretože ich dizajn je open source.

Krok 2: Zostava bloku motora

Zostava bloku motora
Zostava bloku motora
Zostava bloku motora
Zostava bloku motora
Zostava bloku motora
Zostava bloku motora

Príprava motora

Prvým krokom je pridať okolo každého motora penovú pásku s hrúbkou 1 mm, aby sa zabránilo vibráciám a hluku pri otáčaní motora.

Tlačené diely

Výsledkom držiaka motora sú dve časti, ktoré zvierajú motor ako zverák. Na dotiahnutie motora v držiaku boli dosiahnuté 4 skrutky.

Každý držiak sa skladá z niekoľkých otvorov, v ktorých sú vložky M3 určené na montáž na konštrukciu. Existuje viac otvorov, ako je skutočne potrebné, dodatočné otvory je možné nakoniec použiť na montáž ďalších dielov.

Nastavenia 3D tlačiarne: všetky diely sa vytlačia s nasledujúcimi parametrami

  • Tryska s priemerom 0,4 mm
  • 15% výplň materiálu
  • 0,2 mm vysoká vrstva

Koleso

Vybrané kolesá sú potiahnuté gumou, aby sa maximalizovala priľnavosť a zaistil bezšmykový chod. Upínacia skrutka udržuje koleso namontované na hriadeli motora. Priemer kolesa by mal byť dostatočne veľký na to, aby prešiel menšími nerovnosťami schodu a terénu (tieto kolesá majú priemer 65 mm).

Fixácia

Keď ste hotoví s jedným blokom motora, zopakujte predchádzajúce operácie a potom ich jednoducho zafixujte do vrstvy pomocou skrutiek M3.

Krok 3: Prepínače a príprava kábla

Prepínače a príprava káblov
Prepínače a príprava káblov
Prepínače a príprava káblov
Prepínače a príprava káblov
Prepínače a príprava káblov
Prepínače a príprava káblov

Príprava kábla motora

Motorový snímač je spravidla dodávaný s káblom, ktorý obsahuje na jednej strane 6-kolíkový konektor, ktorý spája zadnú stranu dosky plošných spojov snímača, a voľné vodiče na druhej strane.

Máte možnosť ich priamo spájkovať na svojej doske alebo dokonca na Arduine, ale odporúčam vám namiesto toho použiť zásuvkové kolíkové zásuvky a konektory JST-XH. Môžete ich teda zapojiť/odpojiť na doske a uľahčiť vám tak montáž.

Tipy: Okolo vodičov môžete pridať roztiahnuteľný lem rukávov a v blízkosti konektorov kúsky zmršťovacej trubice, čím získate „čistý“kábel.

Prepínač a LED

Aby ste povolili dva výkonové obvody, pripravte si 2 LED a prepínacie káble: najskôr spájkujte odpor 470 kOhm na jeden z pinov LED, potom spájkujte LED na jeden prepínací kolík. Aj tu môžete použiť kus zmršťovacej trubice na skrytie odporu vo vnútri. Dávajte pozor, aby ste LED spájkovali správnym smerom! Opakovaním tejto operácie získate dva káble prepínača/LED.

zhromaždenie

Zostavte predtým vyrobené káble na zodpovedajúcu 3D tlačenú časť. Na udržanie spínača použite maticu, LED diódy nevyžadujú lepidlo, stačí, aby boli dostatočne silné, aby sa zmestili do otvoru.

Krok 4: Zapojenie elektronických dosiek

Zapojenie elektronických dosiek
Zapojenie elektronických dosiek
Zapojenie elektronických dosiek
Zapojenie elektronických dosiek
Zapojenie elektronických dosiek
Zapojenie elektronických dosiek

Rozloženie dosiek

Na zníženie počtu vodičov sa používa proto-board, ktorý zodpovedá rozloženiu dosky Arduino. Na vrchu proto-dosky je L298N naskladaný so samičou hlavičkou Dupont (Dupont sú hlavičky „podobné Arduinu“).

Príprava L298N

Pôvodne nebola doska L298N dodávaná so zodpovedajúcou hlavičkou Dupont mužského pohlavia, pod tabuľu musíte pridať riadok s 9 kolíkmi. Musíte vidieť 9 otvorov s vrtákom s priemerom 1 mm rovnobežne s existujúcimi otvormi, ako vidíte na obrázku. Potom prepojte zodpovedajúce kolíky 2 radov s spájkovacími materiálmi a krátkymi vodičmi.

Vývod L298N

L298N sa skladá z 2 kanálov, ktoré umožňujú ovládanie rýchlosti a smeru:

smer cez 2 digitálne výstupy, nazývané IN1, IN2 pre prvý kanál a IN3 a IN4 pre druhý

rýchlosť prostredníctvom 1 digitálnych výstupov, nazývaných ENA pre prvý kanál a ENB pre druhý

S Arduino som si vybral nasledujúci pin-out:

ľavý motor: IN1 na pine 3, IN2 na pine 4, ENA na pine 2

pravý motor: IN3 na pine 5, IN4 na pine 6, ENB na pine 7

5V regulátor

Aj keď je l298N normálne schopný poskytnúť 5V, stále pridávam malý regulátor. Napája Arduino cez port VIN a 2 kodéry na motoroch. Tento krok môžete preskočiť priamo pomocou vstavaného regulátora L298N 5V.

Konektory JST a pinový výstup kodéra

Použite 4 kolíkové adaptéry konektora JST-XH, každý konektor je potom prepojený s:

  • 5V z regulátora
  • zem
  • dva digitálne vstupné porty (napríklad 34 a 38 pre pravý kodér a 26 a 30 pre ľavý)

Extra I2C

Ako ste si mohli všimnúť, na proto-doske je ďalší 4pin konektor JST. Slúži na pripojenie zariadenia I2C ako IMU, môžete urobiť to isté a dokonca pridať svoj vlastný port.

Krok 5: Motorová skupina a Arduino v spodnej vrstve

Motor Group a Arduino v spodnej vrstve
Motor Group a Arduino v spodnej vrstve
Motor Group a Arduino v spodnej vrstve
Motor Group a Arduino v spodnej vrstve
Motor Group a Arduino v spodnej vrstve
Motor Group a Arduino v spodnej vrstve

Upevnenie blokov motora

Akonáhle je spodná vrstva zostavená s 8 platničkami Turtlebot, jednoducho použite 4 skrutky M3 priamo vo vložkách na údržbu blokov motora. Potom môžete zapojiť napájacie vodiče motora do výstupov L298N a predtým vyrobené káble do konektorov JST na doske.

Rozvod energie

Rozvod energie je jednoducho realizovaný pomocou bariérovej svorkovnice. Na jednej strane bariéry je naskrutkovaný kábel so zásuvkou XT60 na pripojenie k batérii LiPo. Na druhej strane sú naše dva predtým spájkované káble LED/prepínače priskrutkované. Každý obvod (motor a Arduino) tak mohol byť aktivovaný vlastným spínačom a zodpovedajúcou zelenou diódou LED.

Správa káblov

Rýchlo sa budete musieť vysporiadať s mnohými káblami! Na zníženie chaotického aspektu môžete použiť „tabuľku“, ktorá bola predtým vytlačená 3D. Na stole udržujte svoje elektronické dosky obojstrannou páskou a pod stolom nechajte vodiče voľne prúdiť.

Údržba batérie

Aby ste sa vyhli vysunutiu batérie pri riadení robota, môžete jednoducho použiť gumičku do vlasov.

Kolieskové koliesko

Nie je to vlastne kolieskové koliesko, ale jednoduchá polovičná guľa upevnená 4 skrutkami v spodnej vrstve. Stačí to na zaistenie stability robota.

Krok 6: Jednodeskový počítač a senzory v hornej vrstve

Jednodoskový počítač a senzory na hornej vrstve
Jednodoskový počítač a senzory na hornej vrstve
Jednodoskový počítač a senzory na hornej vrstve
Jednodoskový počítač a senzory na hornej vrstve
Jednodoskový počítač a senzory na hornej vrstve
Jednodoskový počítač a senzory na hornej vrstve

Ktorý jednodoskový počítač si vybrať?

Slávny Raspberry Pi vám nemusím predstavovať, jeho počet prípadov použitia do značnej miery presahuje pole robotiky. Ale pre Raspberry Pi existuje oveľa silnejší vyzývateľ, ktorý by ste mohli ignorovať. Jetson Nano od spoločnosti Nvidia skutočne okrem procesora obsahuje aj výkonnú 128-jadrovú grafickú kartu. Táto konkrétna grafická karta bola vyvinutá s cieľom urýchliť náročné výpočtové úlohy, ako je spracovanie obrazu alebo odvodenie neurónovej siete.

Pre tento projekt som vybral Jetson Nano a medzi priloženými súbormi nájdete zodpovedajúcu 3D časť, ale ak chcete ísť s Raspberry Pi, je tu veľa puzdier na tlač.

5V regulátor

Bez ohľadu na to, akú dosku ste sa rozhodli priniesť na svojho robota, potrebujete 5V regulátor. Najnovší Raspberry Pi 4 vyžaduje max. 1,25 A, ale Jetson Nano vyžaduje pri napätí až 3 A, takže som sa rozhodol pre Pololu 5V 6A, aby mal výkonovú rezervu pre budúce komponenty (senzory, svetlá, stepery …), ale každý lacný 5V 2A by mal stačiť práca. Jetson používa 5,5 mm DC hlaveň a Pi micro USB, uchopte príslušný kábel a spájkujte ho s výstupom regulátora.

Rozloženie LIDAR

Tu použitý LIDAR je LDS-01, existuje niekoľko ďalších 2D LIDAR, ktoré je možné použiť ako RPLidar A1/A2/A3, YDLidar X4/G4 alebo dokonca Hokuyo LIDAR. Jedinou požiadavkou je, aby bol zapojený cez USB a umiestnený v strede nad konštrukciou. V prípade, že LIDAR nie je dobre vycentrovaný, mapa vytvorená algoritmom SLAM môže posunúť odhadovanú polohu stien a prekážok z ich skutočnej polohy. Ak laserový lúč prekročí aj nejaké prekážky robota, zníži sa dosah a zorné pole.

Montáž LIDAR

LIDAR je namontovaný na 3D tlačenej časti, ktorá kopíruje jeho tvar, pričom samotná časť je držaná na obdĺžnikovej doske (v skutočnosti je na obrázku preglejka, ale dá sa vytlačiť aj 3D). Potom časť adaptéra umožňuje upevnenie zostavy na hornú dosku korytnačky nylonovými rozperami.

Fotoaparát ako dodatočný snímač alebo náhrada za LIDAR

Ak nechcete utrácať príliš veľa peňazí za LIDAR (ktorý stojí okolo 100 dolárov), siahnite po fotoaparáte: existujú aj algoritmy SLAM, ktoré fungujú iba s monokulárnou kamerou RGB. Obe SBC akceptujú USB alebo CSI kameru.

Kamera vám navyše umožní spustiť skripty počítačového videnia a detekcie objektov!

zhromaždenie

Pred zatvorením robota prevlečte káble väčšími otvormi v hornej doske:

  • zodpovedajúci kábel z 5V regulátora do vášho SBC
  • kábel USB z programovacieho portu Arduino DUE (najbližšie k DC valcu) do USB portu vášho SBC

Potom držte hornú dosku na mieste pomocou tucta skrutiek. Váš robot je teraz pripravený na programovanie, DOBRE HOTOVO!

Krok 7: Nechajte sa hýbať

Zostavte Arduino

Otvorte svoje obľúbené Arduino IDE a importujte priečinok projektu s názvom own_turtlebot_core, potom vyberte svoju dosku a príslušný port, môžete sa obrátiť na tento vynikajúci návod.

Upravte základné nastavenia

Projekt sa skladá z dvoch súborov a jeden je potrebné prispôsobiť vášmu robotovi. Otvorme teda own_turtlebot_config.h a zistíme, ktoré riadky si vyžadujú našu pozornosť:

#define ARDUINO_DUE // ** KOMENTUJTE TENTO RIADOK, AK NEPOUŽÍVAJETE SPRÁVNU **

Mali by byť použité iba s Arduino DUE, ak nie, komentujte riadok.

#define RATE_CONTROLLER_KP 130.0 // ** VYLADIŤ TÚTO HODNOTU **

#define RATE_CONTROLLER_KD 5000000000000.0 // ** TUNE THIS VALUE ** #define RATE_CONTROLLER_KI 0.00005 // ** TUNE THIS VALUE **

Tieto 3 parametre zodpovedajú ziskom regulátora rýchlosti používaným PID na udržanie požadovanej rýchlosti. V závislosti od napätia batérie, hmotnosti robota, priemeru kolesa a mechanického prevodu vášho motora budete musieť prispôsobiť ich hodnoty. PID je klasický ovládač a nebudete tu podrobne rozvedení, ale tento odkaz by vám mal poskytnúť dostatok vstupov na vyladenie vášho vlastného.

/ * Definujte piny */

// motor A (vpravo) const byte motorRightEncoderPinA = 38; // ** ZMENIŤ SVOJIM PINOM NB ** konštantný bajt motorRightEncoderPinB = 34; // ** ZMENIŤ SVOJIM PINOM ** ** bajt enMotorRight = 2; // ** ZMENIŤ SVOJIM PINOM POZN. ** konštantný bajt in1MotorRight = 4; // ** ZMENIŤ SVOJIM PINOM POZN. ** konštantný bajt in2MotorRight = 3; // ** ZMENI SVOJIM PINOM NB ** // motor B (vľavo) const byte motorLeftEncoderPinA = 26; // ** ZMENIŤ SVOJIM PINOM NB ** konštantný bajt motorLeftEncoderPinB = 30; // ** ZMENIŤ SVOJIM PINOM POZN. ** const byte enMotorLeft = 7; // ** ZMENIŤ SVOJIM PINOM POZN. ** konštantný bajt in1MotorLeft = 6; // ** ZMENIŤ SVOJIM PINOM POZN. ** konštantný bajt in2MotorLeft = 5; // ** ÚPRAVA SO SVOJIM PINOM **

Tento blok definuje vývod medzi L298N a Arduino, jednoducho upravte číslo PIN tak, aby zodpovedalo vášmu. Keď ste s konfiguračným súborom hotoví, skompilovajte a nahrajte kód!

Nainštalujte a nakonfigurujte ROS

Akonáhle dosiahnete tento krok, pokyny sú úplne rovnaké ako tie, ktoré sú uvedené vo vynikajúcej príručke TurtleBot3, musíte ich dôsledne dodržiavať.

dobre urobený TurtleBot 3 je teraz váš a všetky existujúce balíky a tutoriály môžete spúšťať pomocou systému ROS.

Dobre, ale čo je ROS?

ROS znamená operačný systém robotov, na prvý pohľad sa to môže zdať dosť zložité, ale nie je to tak, predstavte si spôsob komunikácie medzi hardvérom (senzory a akčné členy) a softvérom (navigačné, ovládacie, počítačové videnie …). Napríklad môžete svoj súčasný LIDAR ľahko vymeniť za iný model bez toho, aby ste museli prerušiť nastavenie, pretože každý LIDAR publikuje rovnakú správu LaserScan. ROS je široko používaný v robotike, Ukážte svoj prvý príklad

Ekvivalent „ahoj sveta“pre ROS spočíva v teleoperácii vášho robota prostredníctvom vzdialeného počítača. To, čo chcete urobiť, je odoslať príkazy rýchlosti, aby sa motory roztočili, príkazy nasledujú po tomto potrubí:

  • uzol turtlebot_teleop spustený na vzdialenom počítači zverejní tému „/cmd_vel“vrátane správy Twist
  • táto správa je odoslaná prostredníctvom siete správ ROS do SBC
  • sériový uzol umožňuje príjem „/cmd_vel“na Arduino
  • Arduino prečíta správu a nastaví uhlovú rýchlosť na každom motore tak, aby zodpovedala požadovanej lineárnej a uhlovej rýchlosti robota.

Táto operácia je jednoduchá a dá sa dosiahnuť spustením vyššie uvedených príkazových riadkov! Ak chcete podrobnejšie informácie, pozrite si video.

[SBC]

roscore

[SBC]

rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200

[Vzdialený počítač]

exportovať TURTLEBOT3_MODEL = $ {TB3_MODEL}

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Ísť ďalej

Predtým, ako vyskúšate všetky oficiálne príklady, musíte v manuáli vždy, keď narazíte na tento príkaz:

roslaunch turtlebot3_bringup turtlebot3_robot.launch

namiesto toho musíte na svojom SBC spustiť tento príkaz:

rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200

A ak máte LIDAR, spustite príslušný príkaz na vašom SBC, v mojom prípade spustím LDS01 s nasledujúcim riadkom:

roslaunch hls_lfcd_lds_driver hlds_laser.launch

A to je všetko, definitívne ste si vytvorili vlastného korytnačku:) Ste pripravení objaviť fantastické schopnosti ROS a kódovať algoritmy vízie a strojového učenia.

Odporúča: