Obsah:

Advanced Line Následující Robot: 22 kroků (s obrázky)
Advanced Line Následující Robot: 22 kroků (s obrázky)

Video: Advanced Line Následující Robot: 22 kroků (s obrázky)

Video: Advanced Line Následující Robot: 22 kroků (s obrázky)
Video: JAK NASTAVIT L4D2 2024, Červenec
Anonim
Image
Image
Prototypování - Perfboard
Prototypování - Perfboard

Jedná se o pokročilý robot sledující linii založený na linkovém senzoru Teensy 3.6 a QTRX, který jsem postavil a na kterém již nějakou dobu pracuji. Od mého dřívějšího řádku následujícího robota došlo k několika zásadním vylepšením designu a výkonu. Zlepšila se rychlost a odezva robota. Celková struktura je kompaktní a lehká. Komponenty jsou uspořádány blízko osy kola tak, aby se minimalizoval moment hybnosti. Vysoce výkonné mikrokovové převodové motory poskytují dostatečný točivý moment a silikonová kola s hliníkovým nábojem nabízejí tolik potřebnou trakci při vysokých rychlostech. Krycí štíty a kodéry kol umožňují robotu určit jeho polohu a orientaci. S Teensyview namontovaným na palubě lze zobrazit všechny relevantní informace a důležité parametry programu aktualizovat pomocí tlačítek.

K zahájení stavby tohoto robota budete potřebovat následující zásoby (a spoustu času a trpělivosti, které máte k dispozici).

Zásoby

Elektronika

  • Vývojová rada Teensy 3.6
  • Prop Shield s pohybovými senzory
  • Sparkfun TeensyView
  • Polelu QTRX-MD-16A pole senzoru odrazu
  • 15x20cm oboustranný prototyp DPS
  • Pololu Step-Up/Step-Down regulátor napětí S9V11F3S5
  • Pololu nastavitelný regulátor napětí 4-5-20V U3V70A
  • MP12 6V 1580 ot / min mikro převodový motor s kodérem (x2)
  • Nosič dvojitého motoru DRV8833 (x2)
  • 3,7 V, 750 mAh Li-Po baterie
  • Vypínač ON/OFF
  • Elektrolytický kondenzátor 470uF
  • Elektrolytický kondenzátor 1000uF (x2)
  • Keramický kondenzátor 0,1uF (x5)
  • Tlačítka (x3)
  • 10 mm zelená LED (x2)

Hardware

  • Atom silikonové kolo 37x34mm (x2)
  • Pololu Ball Caster s 3/8”kovovou koulí
  • N20 držák motoru (x2)
  • Šroub a matice

Kabely a konektory

  • Ohebné vodiče 24AWG
  • 24kolíkový přerušovač FFC na DIP a kabel FFC (typ A, délka 150 mm)
  • Kulatá hlavička pinů
  • Kulatý dlouhý konektor s kolíkovou zásuvkou
  • Pravoúhlé dvouřadé ženské záhlaví
  • Pravoúhlé dvouřadé mužské záhlaví
  • Záhlaví mužského kolíku
  • Mužská hlavička jehly

Nástroje

  • Multimetr
  • Páječka
  • Pájecí drát
  • Odstraňovač drátů
  • Štípačky

Krok 1: Přehled systémů

Stejně jako u mého dřívějšího návrhu samovyvažovacího robota je tento robot sestavou odlamovacích desek namontovaných na perfboardu, který také slouží účelu konstrukce.

Hlavní systémy robota jsou popsány níže.

Mikrokontrolér: Vývojová deska Teensy 3.6 s 32bitovým 180MHz procesorem ARM Cortex-M4.

Senzor čáry: Polelu QTRX-MD-16A 16kanálové pole analogových výstupních snímačů v uspořádání se střední hustotou (rozteč 8 mm).

Pohon: 6V, 1580 ot / min, vysoce výkonné mikrokovové převodové motory s magnetickým kodérem kol a silikonovými koly osazenými na hliníkových nábojích.

Odometrie: Páry kodérů magnetických kol pro odhad souřadnic a ujeté vzdálenosti.

Senzor orientace: Ochranný štít s pohybovými senzory pro odhad polohy a směru robota.

Napájení: 3,7V, 750mAh lipo baterie jako zdroj energie. 3,3 V krokový regulátor napájí mikrokontrolér, senzory a zobrazovací zařízení. Nastavitelný regulátor zesílení obou motorů.

Uživatelské rozhraní: Teensyview pro zobrazování informací. Odlomení tří tlačítek pro příjem uživatelských vstupů. Dvě čísla zelených LED diod o průměru 10 mm pro indikaci stavu za běhu.

Krok 2: Začněme s prototypováním

Image
Image

Uvedený obvod budeme implementovat na perfboard. Musíme nejprve připravit naše odlamovací desky tak, že na ně pájíme záhlaví. Video poskytne představu o tom, které záhlaví by mělo být připájeno na které oddělovací desky.

Po pájení záhlaví na rozbíjecích deskách naskládejte Teensyview a rozpojovací tlačítko na Teensy.

Krok 3: Prototypování - Perfboard

Prototypování - Perfboard
Prototypování - Perfboard

Získejte 15x20cm oboustranný prototyp perfboardu a označte hranici trvalou značkou, jak je znázorněno na obrázku. Na místech označených bílým kruhem vyvrtejte otvory velikosti M2 pro montáž pole senzorů, kolečka a mikro kovových převodových motorů. Po pájení a odzkoušení všech součástí později řezáme perfboard podél hranice.

Začneme s prototypováním pájením kolíků a zásuvek záhlaví na perfboardu. Odlamovací desky budou později vloženy do těchto záhlaví. Dávejte pozor na umístění hlaviček na perfboardu. Na základě tohoto rozložení záhlaví připojíme všechny vodiče.

Krok 4: Prototypování - Prop Shield

Prototypování - Prop Shield
Prototypování - Prop Shield
Prototypování - Prop Shield
Prototypování - Prop Shield
Prototypování - Prop Shield
Prototypování - Prop Shield
Prototypování - Prop Shield
Prototypování - Prop Shield

Nejprve připájíme spoje k podpěrnému štítu. Protože používáme pouze pohybová čidla ochranného štítu, musíme kromě 3V a zemních kolíků ochranného štítu připojit pouze piny SCL, SDA a IRQ.

Jakmile je připojení dokončeno, vložte Teensy a vrtulový štít a kalibrujte pohybová čidla podle zde uvedených kroků.

Krok 5: Prototypování - síla a zem

Prototypování - síla a země
Prototypování - síla a země

Pájejte všechna napájecí a zemnící připojení podle obrázku. Vložte všechny odlamovací desky na místo a zajistěte kontinuitu pomocí multimetru. Ověřte různé úrovně napětí na palubě.

  • Výstupní napětí Li-po (obvykle mezi 3V a 4,2V)
  • Výstupní napětí regulátoru zesílení/snížení (3,3 V)
  • Nastavitelné výstupní napětí regulátoru (nastaveno na 6V)

Krok 6: Prototypování - nosič ovladače motoru

Prototypování - nosič řidičů motorů
Prototypování - nosič řidičů motorů
Prototypování - nosič řidičů motorů
Prototypování - nosič řidičů motorů
Prototypování - nosič řidičů motorů
Prototypování - nosič řidičů motorů

Nosná deska dvojitého motoru ovladače DRV8833 může dodávat nepřetržitý 1,2 A a 2A špičkové proudy na kanál. Připojíme dva kanály paralelně k pohonu jednoho motoru. Zapájejte spoje podle následujících kroků.

  • Paralelně dva vstupy a dva výstupy nosiče ovladače motoru, jak je znázorněno na obrázku.
  • Připojte vstupní řídicí vodiče k ovladači motoru.
  • Připojte elektrolytický kondenzátor 1000uF a keramický kondenzátor 0,1uF přes svorky Vin a Gnd obou desek nosiče.
  • Připojte keramický kondenzátor 0,1 uF na výstupní svorky ovladače motoru.

Krok 7: Prototypování - záhlaví pole řádku snímače

Prototypování - záhlaví pole Line Sensor Array
Prototypování - záhlaví pole Line Sensor Array
Prototypování - záhlaví pole Line Sensor Array
Prototypování - záhlaví pole Line Sensor Array
Prototypování - záhlaví pole Line Sensor Array
Prototypování - záhlaví pole Line Sensor Array
Prototypování - záhlaví pole Line Sensor Array
Prototypování - záhlaví pole Line Sensor Array

Teensy 3.6 má dva ADC - ADC0 a ADC1, které jsou multiplexovány na 25 přístupných pinů. Ke dvěma libovolným pinům můžeme přistupovat současně ze dvou ADC. K ADC0 a ADC1 připojíme každý osm linkových senzorů. Čidla sudých čísel budou připojena k ADC1 a čidla lichého čísla k ADC0. Zapájejte spoje podle následujících kroků. Později připojíme linkový senzor pomocí adaptéru a kabelu FFC na DIP.

  • Připojte všechny sudé kolíky senzoru (16, 14, 12, 10, 8, 6, 4, 2) podle obrázku. Protáhněte vodič pro připojení kolíku senzoru 12 přes zadní stranu perfboardu.
  • Připojte ovládací kolík vysílače (EVEN) k pinu Teensy 30.
  • Připojte všechny liché kolíky senzoru (15, 13, 11, 9, 7, 5, 3, 1) podle obrázku.
  • Připojte elektrolytický kondenzátor 470uF přes Vcc a Gnd.

Pokud budete pozorně sledovat kolíky snímačů čar a jim odpovídající kolíky záhlaví na desce, všimnete si, že horní řada snímače čar se mapuje na spodní řadu záhlaví na desce a naopak. Důvodem je, že když připojíme linkový senzor k perfboardu pomocí dvouřadých pravoúhlých záhlaví, řádky se zarovnají správně. Trvalo mi docela dlouho, než jsem na to přišel a opravil přiřazení pinů v programu.

Krok 8: Prototypování - motor s mikro převodovkou a kodér

Prototypování - motor s mikro převodovkou a kodér
Prototypování - motor s mikro převodovkou a kodér
  • Upevněte mikro kovový převodový motor kodérem pomocí držáků motoru N20.
  • Připojte vodiče motoru a kodéru podle obrázku.
  • Levý kodér - Teensy piny 4 a 0
  • Pravý kodér - kolíky Teensy 9 a 27

Krok 9: Prototypování - LED diody

Prototypování - LED
Prototypování - LED
Prototypování - LED
Prototypování - LED

Dvě LED diody indikují, zda robot detekoval obrat nebo ne. Pro připojení LED k Teensy jsem použil odpor řady 470 ohmů.

  • Levá LED anoda na pin Teensy 6
  • Pravá LED anoda na pin Teensy 8

Krok 10: Prototypování - Breakouts

Image
Image
Prototypování - Breakouts
Prototypování - Breakouts

Nyní, když jsme dokončili veškeré pájení na perfboardu, můžeme opatrně proříznout hranici vyznačenou na perfboardu a odstranit další kousky perfboardu. Také připevněte dvě kola a kolečko.

Vložte všechny odlamovací desky do příslušných zásuvek. Informace o vložení odpojovače FFC-DIP a upevnění linkového snímače QTRX-MD-16A najdete ve videu.

Krok 11: Přehled softwarových knihoven

Přehled softwarových knihoven
Přehled softwarových knihoven

Teensy naprogramujeme v Arduino IDE. Než začneme, budeme potřebovat nějaké knihovny. Použijeme tyto knihovny:

  • Kodér
  • Teensyview
  • EEPROM
  • ADC
  • NXPMotionSense

A některé, které byly napsány speciálně pro tohoto robota,

  • Stiskněte tlačítko
  • LineSensor
  • Nabídka Teensyview
  • Motory

Knihovny specifické pro tohoto robota jsou podrobně probrány a jsou k dispozici ke stažení v dalších krocích.

Krok 12: Vysvětlené knihovny - tlačítko

Tato knihovna slouží k propojení rozpojovací desky tlačítka s Teensy. Použité funkce jsou

PushButton (int leftButtonPin, int centerButtonPin, int rightButtonPin);

Voláním tohoto konstruktoru vytvořením objektu se konfigurují kolíky tlačítka do režimu INPUT_PULLUP.

int8_t waitForButtonPress (neplatné);

Tato funkce čeká, dokud není tlačítko stisknuto a uvolněno, a vrátí kód klíče.

int8_t getSingleButtonPress (neplatné);

Tato funkce kontroluje, zda je tlačítko stisknuto a uvolněno. Pokud ano, vrátí kód klíče, jinak vrátí nulu.

Krok 13: Vysvětleny knihovny - linkový snímač

LineSensor je knihovna pro propojení pole linkových senzorů s Teensy. Níže jsou uvedeny použité funkce.

LineSensor (neplatné);

Volání tohoto konstruktoru vytvořením objektu inicializuje ADC0 a ADC1, čte prahové, minimální a maximální hodnoty z EEPROM a konfiguruje piny senzoru do vstupního režimu a ovládací pin emitoru do výstupního režimu.

neplatná kalibrace (uint8_t calibrationMode);

Tato funkce kalibruje čidla linky. CalibrationMode může být buď MIN_MAX nebo MEDIAN_FILTER. Tato funkce je podrobně vysvětlena v dalším kroku.

void getSensorsAnalog (uint16_t *sensorValue, režim uint8_t);

Čte pole senzorů v kterémkoli ze tří režimů předaných jako argument. Režim je stav zářičů a může být ZAPNUT, VYPNUT nebo PŘEPNUT. Režim TOGGLE kompenzuje naměřené hodnoty odrazivosti senzoru v důsledku okolního světla. Senzory připojené k ADC0 a ADC1 jsou čteny synchronně.

int getLinePosition (uint16_t *sensorValue);

Vypočítá polohu pole senzoru přes čáru metodou váženého průměru.

uint16_t getSensorsBinary (uint16_t *sensorValue);

Vrátí 16bitovou reprezentaci stavu senzorů. Binární indikuje, že senzor je nad čárou a binární nula znamená, že senzor je mimo linku.

uint8_t countBinary (uint16_t binaryValue);

Předáním 16bitové reprezentace hodnot senzorů této funkci se vrátí počet senzorů, které jsou přes čáru.

void getSensorsNormalized (uint16_t *sensorValue, uint8_t mode);

Načte hodnoty senzorů a omezí každou hodnotu senzoru na odpovídající minimální a maximální hodnotu. Hodnoty senzorů jsou pak mapovány z jejich odpovídajícího minimálního až maximálního rozsahu na 0 až 1000 rozsahů.

Krok 14: Vysvětlení knihoven - TeensyviewMenu

TeensyviewMenu je knihovna, kde jsou přístupné funkce pro nabídku zobrazení. Níže jsou uvedeny použité funkce.

TeensyViewMenu (neplatné);

Voláním tohoto konstruktoru se vytvoří objekt třídy LineSensor, PushButton a TeensyView.

void intro (prázdno);

Slouží k procházení nabídky.

prázdný test (prázdný);

Toto se nazývá interně v nabídce, když mají být hodnoty snímačů linky zobrazeny na Teensyview pro testování.

Krok 15: Vysvětlené knihovny - motory

Motors je knihovna sloužící k pohonu dvou motorů. Níže jsou uvedeny použité funkce.

Motory (prázdné);

Voláním tohoto konstruktoru vytvořením objektu se konfiguruje řízení směru motoru a řídicí piny PWM do výstupního režimu.

void setSpeed (int leftMotorSpeed, int rightMotorSpeed);

Volání této funkce pohání dva motory rychlostí předanou jako argumenty. Hodnota rychlosti se může pohybovat od -255 do +255 se záporným znaménkem indikujícím, že směr otáčení je obrácen.

Krok 16: Testování - Odometrie kodéru

Otestujeme kodéry magnetických kol a zobrazíme polohu a vzdálenost, kterou robot urazí.

Nahrajte DualEncoderTeensyview.ino. Program zobrazí zaškrtnutí kodéru na Teensyview. Kodér zatrhává přírůstky, pokud pohybujete robotem vpřed, a snižování, pokud jej pohybujete dozadu.

Nyní nahrajte soubor EncoderOdometry.ino. Tento program zobrazuje polohu robota v souřadnicích x-y, zobrazuje celkovou ujetou vzdálenost v centimetrech a úhel otočený ve stupních.

Doporučil jsem implementaci Dead Reckoning by Odometry na robotu s R/C Servo Differential Drive od Seattle Robotics Society pro určení polohy z klíšťat kodéru.

Krok 17: Testování - pohybové senzory Prop Shield

Ujistěte se, že jste zkalibrovali pohybové senzory podle zde uvedených kroků.

Nyní nahrajte PropShieldTeensyView.ino. Na Teensyview byste měli vidět hodnoty akcelerometru, gyroskopu a magnetometru všech tří os.

Krok 18: Přehled programu

Program pro pokročilé sledovače řádků je napsán v Arduino IDE. Program funguje v následujícím pořadí vysvětleném níže.

  • Hodnoty uložené v EEPROM se načtou a zobrazí se nabídka.
  • Po stisknutí LAUNCH program vstoupí do smyčky.
  • Načtou se normalizované hodnoty čidel.
  • Binární hodnota polohy linky je získána pomocí normalizovaných hodnot senzorů.
  • Počet senzorů, které jsou nad čárou, se vypočítá z binární hodnoty polohy linky.
  • Zaškrtnou se kodéry a aktualizuje se celková ujetá vzdálenost, souřadnice x-y a úhel.
  • Pro různé hodnoty binárního počtu v rozsahu od 0 do 16 se provede sada instrukcí. Pokud je binární počet v rozsahu 1 až 5 a pokud jsou senzory, které jsou nad čárou, vedle sebe, je vyvolána rutina PID. Rotace se provádí v jiných kombinacích binární hodnoty a binárního počtu.
  • V rutině PID (což je v podstatě rutina PD) jsou motory poháněny otáčkami vypočítanými na základě chyby, změny chyby, hodnot Kp a Kd.

Program v současné době neměřuje hodnoty orientace ze štítu vrtule. Toto je nedokončená práce a probíhá její aktualizace.

Nahrajte TestRun20.ino. V dalších krocích, po kterých budeme testovat našeho robota, uvidíme, jak se pohybovat v nabídce, upravovat nastavení a jak kalibrovat linkové senzory.

Krok 19: Pohyb v nabídce a nastavení

Nabídka má následující nastavení, která lze procházet pomocí levého a pravého tlačítka a vybírat pomocí středového tlačítka. Nastavení a jejich funkce jsou popsány níže.

  1. CALIBRATE: Ke kalibraci linkových senzorů.
  2. TEST: K zobrazení hodnot snímačů čáry.
  3. SPUŠTĚNÍ: Začněte následováním řádku.
  4. MAXIMÁLNÍ RYCHLOST: Nastavení horní hranice rychlosti robota.
  5. OTOČENÍ RYCHLOSTI: Nastavení horní hranice rychlosti robota při otáčení, tj. Když se obě kola otáčí stejnou rychlostí v opačných směrech.
  6. KP: Proporcionální konstanta.
  7. KD: Derivační konstanta.
  8. RUN MODE: Volba mezi dvěma provozními režimy - NORMÁLNÍ a ACCL. V NORMÁLNÍM režimu robot běží předdefinovanými rychlostmi odpovídajícími hodnotám polohy linky. V režimu ACCL je MAX RYCHLOST robota v předdefinovaných fázích dráhy nahrazena RYCHLOSTÍ ACCL. Toho lze využít ke zrychlení robota v přímých úsecích trati. Následující nastavení jsou přístupná pouze v případě, že je RUN MODE nastaven jako ACCL.
  9. LAP DISTANCE: Nastavení celkové délky závodní dráhy.
  10. RYCHLOST ACCL: Nastavení rychlosti zrychlení robota. Tato rychlost nahrazuje MAX RYCHLOST v různých fázích trati, jak je definováno níže.
  11. NE. OF STAGES: Nastavení počtu stupňů, ve kterých se používá ACCL SPEED.
  12. FÁZE 1: Nastavení počátečních a koncových vzdáleností etapy, ve které je MAXIMÁLNÍ RYCHLOST nahrazena RYCHLOSTÍ ACCL. Počáteční a koncovou vzdálenost lze pro každou fázi nastavit samostatně.

Krok 20: Kalibrace linkového snímače

Image
Image

Kalibrace linkového senzoru je proces, kterým se určuje prahová hodnota každého ze 16 senzorů. Tato prahová hodnota se používá k rozhodnutí, zda je konkrétní snímač přes čáru nebo ne. Ke stanovení prahových hodnot 16 senzorů používáme některou ze dvou metod.

MEDIAN FILTER: Při této metodě jsou liniové senzory umístěny nad bílý povrch a pro všech 16 senzorů je odebrán předem definovaný počet naměřených hodnot. Jsou stanoveny mediánové hodnoty všech 16 senzorů. Stejný postup se opakuje po umístění čidel na černý povrch. Prahová hodnota je průměrem středních hodnot černých a bílých povrchů.

MIN MAX: Při této metodě se hodnoty senzorů čtou opakovaně, dokud uživatel nevyzve k zastavení. Uloží se maximální a minimální hodnoty, se kterými se každý senzor setká. Prahová hodnota je průměrem minimálních a maximálních hodnot.

Takto získané prahové hodnoty jsou mapovány do rozsahu 0 až 1000.

Kalibrace linkových senzorů metodou MIN MAX je zobrazena na videu. Po kalibraci linkových senzorů lze data vizualizovat, jak je znázorněno na obrázku. Zobrazí se následující informace.

  • 16bitová binární reprezentace polohy linky s binární 1 indikující, že odpovídající linkový senzor je nad linkou a binární 0 indikující, že linkový senzor je mimo linku.
  • Počet z celkového počtu senzorů, které jsou přes čáru.
  • Minimální, maximální a hodnoty senzorů (surové a normalizované) ze 16 senzorů, vždy po jednom senzoru.
  • Pozice čáry v rozsahu -7500 až +7500.

Minimální a maximální hodnoty snímače linky jsou poté uloženy do EEPROM.

Krok 21: Testovací běh

Image
Image

Video je ze zkušebního provozu, ve kterém je robot naprogramován tak, aby se zastavil poté, co dokončí jedno kolo.

Krok 22: Závěrečné myšlenky a vylepšení

Soutěž robotů
Soutěž robotů

Hardware, který je sestaven k sestavení tohoto robota, není plně využíván programem, který jej spouští. V programové části by bylo možné provést mnoho vylepšení. Pohybové senzory vrtulového štítu se v současné době nepoužívají k určování polohy a orientace. Data odometrie z kodérů lze kombinovat s údaji o orientaci z vrtule, aby bylo možné přesně určit polohu a směr robota. Tato data pak mohou být použita k programování robota, aby se naučil stopu ve více kolech. Doporučuji vám v této části experimentovat a podělit se o své výsledky.

Hodně štěstí.

Soutěž robotů
Soutěž robotů

Druhá cena v soutěži robotů

Doporučuje: