Obsah:

Sestavte si vlastního robota Turtlebot!: 7 kroků
Sestavte si vlastního robota Turtlebot!: 7 kroků

Video: Sestavte si vlastního robota Turtlebot!: 7 kroků

Video: Sestavte si vlastního robota Turtlebot!: 7 kroků
Video: MaDe® Robotruck návod na sestavení robota 2024, Červenec
Anonim
Sestavte si vlastního robota Turtlebot!
Sestavte si vlastního robota Turtlebot!
Sestavte si vlastního robota Turtlebot!
Sestavte si vlastního robota Turtlebot!
Sestavte si vlastního robota Turtlebot!
Sestavte si vlastního robota Turtlebot!

UPRAVIT:

Další informace týkající se softwaru a ovládání jsou k dispozici na tomto odkazu:

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

Přímý odkaz na kód je:

github.com/MattMgn/foxbot_core

Proč tento projekt?

Turtlebot 3 je perfektní platformou pro hloubku elektroniky, robotiky a dokonce i AI! Navrhuji, abyste si krok za krokem vytvořili vlastní turtlebot s cenově dostupnými komponenty, aniž byste obětovali funkce a výkon. S jednou věcí na paměti: udržet to nejlepší z počátečního robota, jeho modularitu, jednoduchost a obrovské množství balíků pro autonomní navigaci a AI z open-source komunity.

Tento projekt je příležitostí pro začátečníky získat představy o elektronice, mechanice a počítačových vědách a pro zkušenější získat výkonnou platformu pro testování a vývoj algoritmů umělé inteligence.

Co v tomto projektu objevíte?

Chystáte se zjistit, které základní mechanické a elektronické části musí být uchovávány u původního robota, aby byla zaručena úplná kompatibilita.

Celý proces sestavení bude podrobný: od tisku 3D dílů, montáže a několika komponent, pájení a integrace elektroniky až po kompilaci kódu na Arduinu. Tento návod bude zakončen příkladem „ahoj světa“, který vás seznámí s ROS. Pokud se vám zdá něco nejasného, klidně se ptejte!

Zásoby

Elektronika:

1 x jednodeskový počítač pro běh ROS, může to být například Raspberry Pi nebo Jetson Nano

1 x Arduino DUE, můžete také použít UNO nebo MEGA

Zde je k dispozici 1 x proto deska, která vyhovuje pin-out Arduino DUE

2 x 12V stejnosměrné motory s kodéry (možnost 100 ot / min)

1 x ovladač motoru L298N

2 x 5V regulátor

1 x baterie (například 3S/4S LiPo baterie)

2 x přepínače ON/OFF

2 x LED

2 x 470 kOhm rezistory

3 x 4 piny JST konektory

1 x kabel USB (alespoň jeden mezi SBC a Arduino)

Senzory:

1 x proudový senzor (volitelně)

1 x 9 stupňů svobody IMU (volitelně)

1 x LIDAR (volitelně)

Podvozek:

16 x modulární desky Turtlebot (které lze také vytisknout 3D)

2 x kolečka o průměru 65 mm (možnost šířky 6 mm)

4 x nylonové podložky 30 mm (volitelně)

20 x vložky M3 (volitelně)

Ostatní:

Dráty

Šrouby a vložky M2,5 a M3

3D tiskárna nebo někdo, kdo vám může díly vytisknout

Ruční vrtačka se sadou vrtáků, jako je tato

Krok 1: Popis

Popis
Popis
Popis
Popis

Tento robot je jednoduchý diferenciální pohon, který využívá 2 kola přímo namontovaná na jejich motoru a kolečko, které je umístěno vzadu, aby se robot nepřevrátil. Robot je rozdělen do dvou vrstev:

spodní vrstva: se skupinou pohonu (baterie, ovladač motoru a motory) a elektronikou „nízké úrovně“: mikrokontrolér Arduino, regulátor napětí, spínače …

horní vrstva: s „vysokou úrovní“elektroniky, konkrétně s jednodeskovým počítačem a LIDARem

Tyto vrstvy jsou spojeny tištěnými částmi a šrouby, aby byla zajištěna robustnost konstrukce.

Elektronické schéma

Schéma může vypadat trochu chaoticky. Je to schematický nákres a nereprezentuje všechny vodiče, konektory a proto desku, ale lze jej číst následovně:

3S Litihum iontová polymerová baterie s kapacitou 3000 mAh napájí první obvod, napájí jak desku řadiče motoru (L298N), tak první 5V regulátor pro enkodéry motoru a Arduino. Tento obvod je aktivován spínačem s LED diodou, která indikuje jeho stav ON/OFF.

Stejná baterie napájí druhý obvod, vstupní napětí je převedeno na 5 V pro napájení jednodeskového počítače. Zde je také obvod povolen pomocí spínače a LED.

Další senzory jako LIDAR nebo kameru pak lze přidat přímo na Raspberry Pi přes USB nebo CSI port.

Mechanické provedení

Rám robota se skládá ze 16 identických částí, které tvořily 2 čtvercové vrstvy (šířka 28 cm). Mnoho otvorů umožňuje namontovat další díly kamkoli potřebujete a nabízí kompletní modulární design. Pro tento projekt jsem se rozhodl získat originály desek TurtleBot3, ale můžete je také vytisknout 3D, protože jejich design je open source.

Krok 2: Sestava bloku motoru

Sestava bloku motoru
Sestava bloku motoru
Sestava bloku motoru
Sestava bloku motoru
Sestava bloku motoru
Sestava bloku motoru

Příprava motoru

Prvním krokem je přidání 1 mm silné pěnové pásky kolem každého motoru, aby se zabránilo vibracím a hluku při otáčení motoru.

Tištěné díly

Výsledkem držáku motoru jsou dvě části, které drží motor jako svěrák. K utažení motoru v držáku byly dosaženy 4 šrouby.

Každý držák se skládá z několika otvorů, ve kterých jsou vložky M3, které mají být namontovány na konstrukci. Existuje více otvorů, než je ve skutečnosti potřeba, další otvory by nakonec mohly být použity k montáži dalšího dílu.

Nastavení 3D tiskárny: všechny součásti jsou vytištěny s následujícími parametry

  • Tryska o průměru 0,4 mm
  • 15% výplň materiálu
  • 0,2 mm vysoká vrstva

Kolo

Vybraná kola jsou potažena gumou, aby se maximalizovala přilnavost a zajistily neklouzavé podmínky. Upínací šroub udržuje kolo namontované na hřídeli motoru. Průměr kola by měl být dostatečně velký, aby překonal drobné nerovnosti a nerovnosti terénu (tato kola mají průměr 65 mm).

Fixace

Až budete hotovi s jedním blokem motoru, zopakujte předchozí operace a poté je jednoduše zafixujte do vrstvy pomocí šroubů M3.

Krok 3: Přepínače a příprava kabelu

Přepínače a příprava kabelu
Přepínače a příprava kabelu
Přepínače a příprava kabelu
Přepínače a příprava kabelu
Přepínače a příprava kabelu
Přepínače a příprava kabelu

Příprava kabelu motoru

Motorový kodér je obvykle dodáván s kabelem, který obsahuje na jedné straně 6pinový konektor, který spojuje zadní stranu desky plošných spojů kodéru, a nahé vodiče na druhé straně.

Máte možnost je přímo pájet na protokolové desce nebo dokonce na Arduinu, ale doporučuji místo toho použít zásuvkové kolíkové konektory a konektory JST-XH. Můžete je tedy zapojit/odpojit na protokolové desce a usnadnit si tak montáž.

Tipy: kolem vodičů můžete přidat roztažitelné opletení a v blízkosti konektorů kousky smršťovací bužírky, čímž získáte „čistý“kabel.

Přepínač a LED

Chcete -li povolit dva napájecí obvody, připravte si 2 LED a spínací kabely: nejprve připájejte odpor 470 kOhm na jeden z LED kolíků, poté pájejte LED na jeden spínací kolík. Zde také můžete použít kousek smršťovací trubice a skrýt odpor uvnitř. Buďte opatrní při pájení LED ve správném směru! Opakováním této operace získáte dva kabely přepínačů/LED.

Shromáždění

Sestavte dříve vyrobené kabely na odpovídající 3D tištěný díl. Přepínač udržujte pomocí matice, LED diody nevyžadují lepidlo, stačí použít dostatečnou sílu, aby se vešly do otvoru.

Krok 4: Zapojení elektronických desek

Zapojení elektronických desek
Zapojení elektronických desek
Zapojení elektronických desek
Zapojení elektronických desek
Zapojení elektronických desek
Zapojení elektronických desek

Rozložení desek

Ke snížení počtu vodičů se používá proto deska, která odpovídá rozvržení desky Arduino. Na horní straně proto desky je L298N naskládán se samičí hlavičkou Dupont (Dupont jsou záhlaví typu „Arduino“).

Příprava L298N

Deska L298N původně nebyla dodávána s odpovídajícím samčím Dupont záhlavím, pod desku je třeba přidat řádek s 9 piny. Musíte vidět 9 otvorů s vrtákem o průměru 1 mm paralelně se stávajícími otvory, jak vidíte na obrázku. Poté propojte odpovídající kolíky 2 řad s pájecími materiály a krátkými dráty.

L298N pin-out

L298N se skládá ze 2 kanálů umožňujících ovládání rychlosti a směru:

směr přes 2 digitální výstupy, nazývané IN1, IN2 pro první kanál a IN3 a IN4 pro druhý

rychlost přes 1 digitální výstup, nazývaný ENA pro první kanál a ENB pro druhý

Pro Arduino jsem zvolil následující pin-out:

levý motor: IN1 na pinu 3, IN2 na pinu 4, ENA na pinu 2

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

5V regulátor

I když je l298N normálně schopen poskytovat 5V, stále přidávám malý regulátor. Napájí Arduino přes VIN port a 2 kodéry na motorech. Tento krok můžete přeskočit přímo pomocí vestavěného regulátoru L298N 5V.

Konektory JST a pinový výstup kodéru

Použijte 4pinové adaptéry konektoru JST-XH, každý konektor je poté propojen s:

  • 5V z regulátoru
  • zem
  • dva digitální vstupní porty (například: 34 a 38 pro pravý kodér a 26 a 30 pro levý)

Extra I2C

Jak jste si možná všimli, na proto-board je další 4pin JST konektor. Slouží k připojení zařízení I2C jako IMU, můžete udělat totéž a dokonce přidat vlastní port.

Krok 5: Motorová skupina a Arduino ve spodní vrstvě

Motor Group a Arduino ve spodní vrstvě
Motor Group a Arduino ve spodní vrstvě
Motor Group a Arduino na spodní vrstvě
Motor Group a Arduino na spodní vrstvě
Motor Group a Arduino ve spodní vrstvě
Motor Group a Arduino ve spodní vrstvě

Upevnění bloků motoru

Jakmile je spodní vrstva smontována s 8 destičkami Turtlebot, jednoduše použijte 4 šrouby M3 přímo v vložkách k údržbě bloků motoru. Poté můžete zapojit napájecí vodiče motoru do výstupů L298N a dříve vyrobené kabely do konektorů JST na desce proto.

Distribuce energie

Distribuce energie je jednoduše realizována s bariérovou svorkovnicí. Na jedné straně bariéry je přišroubován kabel s vidlicí XT60 pro připojení k LiPo baterii. Na druhé straně jsou naše dva dříve připájené kabely LED/spínače přišroubovány. Každý obvod (motor a Arduino) tak mohl být aktivován vlastním spínačem a odpovídající zelenou LED.

Správa kabelů

Rychle se budete muset vypořádat s mnoha kabely! Chcete -li omezit chaotický vzhled, můžete použít „tabulku“, která byla dříve vytištěna na 3D obrazovce. Na stole udržujte své elektronické desky oboustrannou páskou a pod stolem nechte vodiče volně protékat.

Údržba baterie

Abyste se vyhnuli vysunutí baterie při řízení robota, můžete jednoduše použít gumičku do vlasů.

Válečkové kolečko

Ne opravdu válečkové kolo, ale jednoduchá poloviční koule upevněná 4 šrouby na spodní vrstvě. Stačí to k zajištění stability robota.

Krok 6: Jednodeskový počítač a senzory na horní vrstvě

Jednodeskový počítač a senzory na horní vrstvě
Jednodeskový počítač a senzory na horní vrstvě
Jednodeskový počítač a senzory na horní vrstvě
Jednodeskový počítač a senzory na horní vrstvě
Jednodeskový počítač a senzory na horní vrstvě
Jednodeskový počítač a senzory na horní vrstvě

Který jednodeskový počítač si vybrat?

Nepotřebuji vám představovat slavný Raspberry Pi, jeho počet případů použití do značné míry přesahuje pole robotiky. Ale pro Raspberry Pi existuje mnohem silnější vyzyvatel, kterého byste mohli ignorovat. Jetson Nano od společnosti Nvidia ve skutečnosti kromě procesoru obsahuje také výkonnou 128jádrovou grafickou kartu. Tato konkrétní grafická karta byla vyvinuta s cílem urychlit výpočetně náročné úlohy, jako je zpracování obrazu nebo odvození neuronové sítě.

Pro tento projekt jsem vybral Jetson Nano a mezi připojenými soubory najdete odpovídající 3D část, ale pokud chcete jít s Raspberry Pi, je zde mnoho potisknutelných pouzder.

5V regulátor

Ať už jste se rozhodli přinést na svého robota jakoukoli desku, potřebujete 5V regulátor. Nejnovější Raspberry Pi 4 vyžaduje max. 1,25 A, ale Jetson Nano vyžaduje na napětí až 3 A, takže jsem se rozhodl pro Pololu 5V 6A, aby měl rezervu napájení pro budoucí komponenty (senzory, světla, steppery …), ale každý levný 5V 2A by měl stačit práce. Jetson používá 5,5 mm DC barel a Pi micro USB, uchopte odpovídající kabel a připájejte jej k výstupu regulátoru.

Rozložení LIDAR

Zde je použit LIDAR LDS-01, existují různé další 2D LIDAR, které lze použít jako RPLidar A1/A2/A3, YDLidar X4/G4 nebo dokonce Hokuyo LIDAR. Jediným požadavkem je, že musí být připojen přes USB a umístěn uprostřed nad strukturou. Pokud LIDAR není dobře vystředěn, mapa vytvořená algoritmem SLAM může posunout odhadovanou polohu stěn a překážek ze své skutečné polohy. Také pokud překážky robota překročí laserový paprsek, sníží dosah a zorné pole.

Montáž LIDAR

LIDAR je upevněn na 3D tištěné části, která sleduje svůj tvar, samotná část je držena na obdélníkové desce (ve skutečnosti v překližce na obrázku, ale může být také vytištěna 3D). Poté část adaptéru umožňuje upevnění sestavy na horní desku želvy pomocí nylonových rozpěr.

Fotoaparát jako přídavný snímač nebo náhrada LIDAR

Pokud nechcete utrácet příliš mnoho peněz za LIDAR (který stojí kolem 100 $), jděte na kameru: existují také algoritmy SLAM, které běží pouze s monokulární kamerou RGB. Oba SBC přijímají USB nebo CSI kameru.

Kamera vám navíc umožní spouštět skripty pro počítačové vidění a detekci objektů!

Shromáždění

Před zavřením robota protáhněte kabely většími otvory v horní desce:

  • odpovídající kabel z 5V regulátoru do vašeho SBC
  • kabel USB z programovacího portu Arduino DUE (nejblíže k DC barelu) k USB portu vašeho SBC

Poté přidržte horní desku na místě pomocí tuctu šroubů. Váš robot je nyní připraven k programování, DOBŘE HOTOVO!

Krok 7: Přesuňte se

Zkompilovat Arduino

Otevřete své oblíbené Arduino IDE a importujte složku projektu s názvem own_turtlebot_core, poté vyberte svou desku a odpovídající port, můžete se podívat na tento vynikající tutoriál.

Upravte základní nastavení

Projekt se skládá ze dvou souborů a jeden je třeba přizpůsobit vašemu robotovi. Pojďme tedy otevřít own_turtlebot_config.h a zjistit, které řádky vyžadují naši pozornost:

#define ARDUINO_DUE // ** KOMENTUJTE TENTO ŘÁDEK, POKUD NEPOUŽÍVÁTE DOBU **

Měl by být použit pouze s Arduino DUE, pokud nekomentujte řádek.

#define RATE_CONTROLLER_KP 130,0 // ** TUNE TUTO HODNOTU **

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

Tyto 3 parametry odpovídají ziskům regulátoru rychlosti používaným PID k udržení požadované rychlosti. V závislosti na napětí baterie, hmotnosti robota, průměru kola a mechanickém převodu vašeho motoru budete muset upravit jejich hodnoty. PID je klasický řadič a nebudete zde podrobně popsáni, ale tento odkaz by vám měl poskytnout dostatek vstupů k vyladění vašeho vlastního.

/ * Definujte piny */

// motor A (vpravo) const byte motorRightEncoderPinA = 38; // ** ZMĚNIT SVÝM PINEM ** konstantní bajt motorRightEncoderPinB = 34; // ** ZMĚNIT SVÝM PINEM ** ** konstantní bajt enMotorRight = 2; // ** ZMĚNIT SVÝM PINEM ** ** bajt in1MotorRight = 4; // ** ZMĚNIT SVÝM PINEM ** ** bajt in2MotorRight = 3; // ** ZMĚNIT SVÝM PINEM NB ** // motor B (vlevo) const byte motorLeftEncoderPinA = 26; // ** ZMĚNIT SVÝM PINEM ** konstantní byte motorLeftEncoderPinB = 30; // ** ZMĚNIT SVÝM PINEM ** konstantní bajt enMotorLeft = 7; // ** ZMĚNIT SVÝM PINEM ** ** bajt in1MotorLeft = 6; // ** ZMĚNIT SVÝM PINEM ** ** bajt in2MotorLeft = 5; // ** ZMĚNIT SVÝM PINEM **

Tento blok definuje pinout mezi L298N a Arduino, jednoduše upravte číslo PIN tak, aby odpovídalo vašemu. Až budete hotovi s konfiguračním souborem, zkompilujte a nahrajte kód!

Nainstalujte a nakonfigurujte ROS

Jakmile dosáhnete tohoto kroku, pokyny jsou přesně stejné jako ty, které jsou popsány ve skvělé příručce TurtleBot3, musíte je pečlivě dodržovat

dobře udělaný TurtleBot 3 je nyní váš a můžete spustit všechny stávající balíčky a návody s ROS.

Dobře, ale co je ROS?

ROS je zkratka pro Robots Operating System, na první pohled se to může zdát docela složité, ale není, jen si představte způsob komunikace mezi hardwarem (senzory a akční členy) a softwarem (navigační, řídicí, počítačové vidění …). Například můžete snadno vyměnit aktuální LIDAR za jiný model, aniž byste museli přerušit nastavení, protože každý LIDAR publikoval stejnou zprávu LaserScan. ROS je široce používán v robotice, Spusťte svůj první příklad

Ekvivalent „ahoj světa“pro ROS spočívá v teleoperaci vašeho robota prostřednictvím vzdáleného počítače. To, co chcete udělat, je poslat příkazy rychlosti, aby se motory roztočily, příkazy se řídí tímto potrubím:

  • uzel turtlebot_teleop běžící na vzdáleném počítači a publikuje téma „/cmd_vel“včetně zprávy Twist
  • tato zpráva je přeposlána přes síť zpráv ROS do SBC
  • sériový uzel umožňuje příjem „/cmd_vel“na Arduino
  • Arduino přečte zprávu a nastaví úhlovou rychlost na každém motoru tak, aby odpovídala požadované lineární a úhlové rychlosti robota

Tato operace je jednoduchá a lze ji dosáhnout spuštěním výše uvedených příkazových řádků! Pokud chcete podrobnější informace, stačí se podívat na video.

[SBC]

roscore

[SBC]

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

[Vzdálený počítač]

exportovat TURTLEBOT3_MODEL = $ {TB3_MODEL}

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Jít dál

Než vyzkoušíte všechny oficiální příklady v manuálu pokaždé, když narazíte na tento příkaz, musíte vědět poslední věc:

roslaunch turtlebot3_bringup turtlebot3_robot.launch

místo toho musíte na SBC spustit tento příkaz:

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

A pokud máte LIDAR, spusťte související příkaz na vašem SBC, v mém případě spustím LDS01 s níže uvedeným řádkem:

roslaunch hls_lfcd_lds_driver hlds_laser.launch

A to je vše, s konečnou platností jste si vytvořili vlastní želvovinu:) Jste připraveni objevit fantastické schopnosti ROS a kódovat algoritmy vidění a strojového učení.

Doporučuje: