Arduino self balancing robot B-ROBOT EVO 2

Vytisknout
ELEKTRONIKA
Zobrazení: 18421

Již delší dobu jsem si chtěl postavit balancujícího robota (vozítko na dvou kolech) a při brouzdání na webu jsem narazil na stránky http://www.jjrobots.com, kde mají robota EVO 1 a nově bude i EVO 2, který splňuje mé požadavky (ovládání přes telefon - WiFi, snadná montáž) a je kompletně v otevřené platformě (open hardware a open software) - není tedy problém si robůtka upravit k obrazu svému...

DSC 0871

Více informací k tunningu je uvedeno na webu v části tunning...

ZDARMA

(po registraci a přihlášení) komplet dokumentace (fw, hex, Arduino IDE, 3D...)

Video - ukázka funkce robota

Video - ukázka (tunning kola + LiPol + RGB LED)

Z těchto stránek jsem si objednal díly (motory, náklonoměr, Arduino Leonardo, ESP8266, budiče motorů atd...) bez 3D výtisků za 120 Euro (3D díly nabízejí za dalších 20 Euro). Pokud člověk začne díly hledat na webu, tak zjistí, že cena za balíček (kde je kromě 3D vše) je skoro stejná jako při kupování dílů po všech čertech na webu. Po zaplacení kartou na webu JJROBOT mi přišel za 10 dní balíček...

evo2

Popis robota (z webu JJROBOTS)

Popis dílů

Aplikace pro ovládání (pro Android, IOS, Block Programming)

logo GOOGLE PLAY v2 300x129

ios tiny2

 

blockly games

Více informací na webu JJROBOTS...

FREE (v příloze 3D díly pro tiskárnu, Arduino zdrojový kód, touch osc editor, šablona pro toucosc)

Doporučuji zakoupit pro telefon aplikaci Touchosc za cca 130,- a do ni nahrát šablonu pro ovládání robota, kde si můžeme rozložit ovládání dle vlastní fantazie :-)

OSC touch LAYOUT battery monitor 1024x441


DSC 0456

DSC 0457

DSC 0458

DSC 0459

DSC 0460

DSC 0461

DSC 0462

DSC 0463

DSC 0470

DSC 0472

DSC 0464

DSC 0466

DSC 0467

DSC 0468

DSC 0489

DSC 0465

DSC 0469

DSC 0471

DSC 0476

DSC 0603


Na tiskárně Průša I3 jsem si vytiskl z PLA materiálu díly pro robota (PLA gcode pro tiskárnu je v příloze pod článkem).

Díly robota

Tisk z materiálu PLA 210/50 °C

Nastavení tiskárny

Tělo robota se skládá z těchto částí

DSC 0422

DSC 0423

DSC 0554

DSC 0560

DSC 0571

DSC 0591

DSC 0590

DSC 0611

DSC 0557

1x Přední a 1x zadní kryt (Bumper) jsem netisknul, protože byl již v sadě dodán s elektronikou

Celkem tedy budeme 3D díly na robota tisknout cca 675 minut (tedy 11 hodin).

Na tiskárnu Průša I3 používám lepidlo Kores (nanesu před každým tiskem na sklo a dám sklo do tiskárny)

kore


Více informací ohledně tohoto robota na webu JJROBOTS

Stránky projektu: http://www.jjrobots.com/projects-2/b-...
B-robot KIT: http://www.jjrobots.com/product/b-rob...
B-robot GITHUB: https://github.com/jjrobots/B-ROBOT

!!! POZOR - robota skládejte přesně jako je to vidět na videu, pokud například otočíte vodiče k motorům, nebo náklonoměr nebude robot fungovat - nikdy se nenakalibruje !!!

Moje montáž robota

Z obrázků je vidět jak se robot smontuje (dlouhé 4 šrouby jsou pro uchycení 3D horního krytu a 4 pro 3D desku elektroniky, ostatní jsou malé šroubky) - Já mám robota smontovaného opačně, než je vidět na videu (skládal jsem ho v době, když ještě nebylo uveřejněno nové video pro EVO 2) servo na druhé straně a předek robota koukám na vodiče od krok. motorů (správně to má být otočeno, ale na funkci to nemá vliv, pouze vzhled)

DSC 0549

DSC 0550

DSC 0552

DSC 0553

DSC 0558

DSC 0559

DSC 0561

DSC 0562

DSC 0564

DSC 0565

DSC 0570

DSC 0572

DSC 0573

DSC 0574

DSC 0575

 

DSC 0577

DSC 0579

DSC 0580

DSC 0582

DSC 0583

DSC 0584

DSC 0585

DSC 0587

 

DSC 0589

DSC 0592

DSC 0593

DSC 0596

DSC 0597

DSC 0598

DSC 0600

DSC 0602

DSC 0616

DSC 0617

DSC 0618

Poznatky

Je potřeba dodat 5ks šroubků M3x5 + M3 matky (na boční kryty), kterých jsem měl v pytlíku pouze 15ks, ale potřeba je 20ks (možná se jen někdo v JJROBOT seknul, protože jsem byl mezi prvními, kdo objednal EVO 2 verzi. K dnešnímu dni 28. 1. 2017 ještě není na webu JJROBOT EVO2 verze k dispozici :-)

hotovo


schema


funkce

Trochu více do hloubky problematiky...

Problém který B-ROBOT musí řešit se nazývá opačné kyvadlo "Inverted Pendulum". Jedná se o stejný mechanismus jako je potřeba vyvážit deštník nad hlavou pomocí vaší ruky. Otočný bod je pod těžištěm objektu. Více informací o Inverted Pendulum zde. Matematické řešení tohoto problému není snadné. To co potřebujeme vědět je jak to udělat, aby se obnovila rovnováha robota (takže můžeme realizovat řídicí algoritmus pro vyřešení problému).

Řídicí systémy robota jsou velmi podobné principům používaným v průmyslové automatizaci. U robota používáme PID regulátor (P = proporcionální, I = integrační, D = derivační). PID má 3 konstanty pro nastavení KP, KD a KI. PID regulátor patří mezi spojité regulátory, složený z proporcionální, integrační a derivační části. V systémech řízení se řadí před řízenou soustavu. Do regulátoru vstupuje regulační odchylka a vystupuje akční veličina.

Tedy zadáme do PID regulátoru tyto parametry:

Vstup z čidel, Požadovaná hodnota a proměnné, kterými chceme nastavit odezvu systém. PID potom upravuje výstup tak, aby se vstupní hodnoty rovnaly požadavku.

kP je poměrná část a je hlavní součástí kontroly, tato část je úměrná míře chyb - určuje zesílení.

kD je derivační složka. Tato část je závislá na dynamice systému (v závislosti na robotu, jeho hmotnosti, motorech, setrvačné hmotnosti ...) - určuje přesnost.

kI je integrační složka a používá se ke snížení kmitání (kI odstraňuje posun mezi požadovanou a skutečnou hodnotou).

Příklad: Pokud uživatel odešle příkaz řízení 6 odbočit vpravo (od -10 do +10) musíme přidat 6 k hodnotě levého motoru a odečíst 6 z pravého motoru. V případě, že se robot nepohybuje dopředu nebo dozadu.

Pohled na robota shora pro příklad

funkce 2

BROBOT control1

 
Ale věci jsou trochu složitější... Máme v kaskádě dva PID regulátory (výstup z jednoho regulátoru do dalšího regulátoru). Výstupní regulátor je regulátor otáček a vnitřní regulátor je regulátor stability. Dalo by se použít pouze jeden regulátor stability (druhý), ale to by znamenalo, že ovládání výstupu na požadovaný úhel naklonění robota by uživatel ovládal přímo. Problém nastane v případě když těžiště není dokonale umístěno nad osou kola. Robot potřebuje nějaký úhel sklonu pro udržení rovnováhy. V případě, že uživatel odešle příkaz sklonu = 0, tak robot bude udržovat rovnováhu, zatímco se pohybuje... Při přidání druhého regulátoru (regulátoru otáček) systém kompenzuje automaticky tyto změny. Uživatel odešle příkaz k rychlosti robota = 0 a tento regulátor odešle "správný" úhel sklonu do druhého regulátoru (regulátor stability). Robot je vyvážený a nepohybuje se! Pro uživatele je mnohem jednodušší nastavit požadovanou rychlost robota a systém najde ten správný úhel robota k dosažení této rychlosti.

Postup inicializace (je nutné ho přesně dodržet!)

1) Položíme robota vodorovně na místo.

2) Otočíme na robotu spínač baterie na ON (ZAP).

3) Necháme robota 10 vteřin nakalibrovat. Jakmile je robot nakalibrovaný budou se pomálu otáčet kola.

4) Čas vstát! Použijeme ruku na robotu, nebo mu pomůžeme vstát naší rukou.

5) Připojíme se pomocí telefonu (tabletu, notebooku) k Wi-Fi robota

Poznámka: B-robot Brain Shield's má výchozí Wi-Fi heslo 87654321
Existují tři možnosti, jak ovládat B-robota, pomocí softwaru TouchOSC ("lze si přizpůsobit", ale není zdarma), přes JJrobots aplikaci pro iOS nebo Android.

TIP: Pokud nemají krokové motory dostatek energie roztočit kola, tak nastavíme větší výstupní proud v budičích motorů (A4988) pomocí šroubku na desce budičů (doprava větší síla, doleva menší síla)


Tuning část první - kola

3D PLA díly, ze kterých je robot vyroben jsou dobré na plášť (bočnice, podvozek atd.), ale kola nejsou z plastu ideální (provoz na koberci je OK, ale pro linoleum nebo něco tvrdšího - dlaždice není toto řešení vyhovující). Lepší je namísto PLA kol zakoupit v modeláři kola z nějakého autíčka (ala bugina). V kameném krámku http://www.model-fun.cz/ jsem zakoupil 2ks kol 1:10 zadní (pro buggy) za 299,-.

Přesně tato kola v e-shopu kód zboží: HM06026Y zadní, nebo lze použít přední kola (ty jsou o kousek užší) v e-shopu kód zboží: HM06010Y

Kola na buggy (přední i zadní) jsou průměrově stejná (85mm guma čudlík - guma čudlík), ale liší se hloubkou ráfku a gumy (přední: 35mm, zadní: 42mm). Guma je na ráfku nalepená.

DSC 0844

DSC 0845

DSC 0847

DSC 0848

DSC 0855

Proč používat tato kola?

Výsledkem bude daleko lepší odpružení (kola nepůjdou "natvrdo") v terénu (například venku na "asfaltu") a zároveň ložiska motorů nebudou tolik "trpět" jako při použití PLA kol (řemínek, který je nasunut na PLA kolech vůbec netlumí vybrace, pouze brání prokluzu...

Pro montáž kol na robota je potřeba vytisknout 2ks 3D matic z PLA materiálu (v příloze soubor: matky kol pro offroad) a v ráfku kola zvětšit průměr díry z 4 mm na 5 mm (lepší postupně zvětšovat a testovat, aby šel ráfek nasadit "ztuha").

DSC 0857

DSC 0856

DSC 0858

Osu Kolo - motor to chce vymezit například bužírkou (kolo má jinak snahu se posouvat ke středu a následně "drhne o PLA materiál)

DSC 0935

DSC 0936

DSC 0937

 

Tuning část druhá - RGB LED oči

Pokud provozujeme robota na aplikaci od JJrobot (ne na placené osc aplikaci - tam je indikace baterek vyřešena) nepoznáme na první pohled stav baterií robota. Dále je vhodné nějak zobrazit stav kalibrace (že již můžeme robota postavit) po zapnutí robota, když nemáme osazené servo (servo s rukou). Rozhodl jsem se robota doplnit o 2ks RGB LED diod, které jsou umístěné v očích robota. Zakoupil jsem v tomto e-shopu destičky s čipem WS2812, ke kterému je připojena RGB LED dioda. Výhoda tohoto řešení je to, že nám stačí z Arduina pouze jeden vodič (namísto 6 tedy 2x RGB pro každé oko zvlášť) po kterém můžeme ovládat každé oko nezávisle (v RGB podání).

Stav LED očí na robotu

Modul RGB LED s čipem WS2812

WS2812B 13282 03

ws2812

DSC 0859

DSC 0860

DSC 0861

DSC 0866

DSC 0867

DSC 0868

DSC 0869

DSC 0870

DSC 0871

 

Tuning část třetí - NiMH baterie

Provoz robota na baterie je cca 1 hodina. Pokud se spočítá částka za 6ks AA článků 1,5V a doba provozu robota, tak je cenově (i vzhledem eko šetrnosti k přírodě) výhodnější používat nabíjecí baterie. Bateriový blok na 6 tužkových AA baterií 1,5V je možné osadit i nabíjecími bateriemi 6ks 1,2V v mém případě jsem použil baterie Eneloop Pro 2500mAh.

DSC 0802

Pro nabíjení NiMH baterií používám tuto nabíječku za cca 470,- z gesu, kde nastavíme přepínačem 6 článků a 1A nabíjecí proud (Automatický síťový rychlonabíječ NiCd a NiMH akumulátorových sad ze 2-10 článků. Nabíjecí proud volitelný 0,5 nebo 1A. Po ukončení rychlonabíjení automaticky přejde na udržovací nabíjení. Možnost vybití akumulátorů. Kontrola nabíjení tříbarevnou LED.)

mw6168

Výhodou nabíječe je, že se nemusí baterie vyndavat z PVC držáku (odmontovat z robota - tedy povolit šroub, vytáhnout ven, vyndat baterie...), ale stačí odpojit kabel z desky Arduino a připojit ho na vodiče z nabíječky. Pokud si do robota osadíme další konektor (s přepínáním robot/baterie), tak nemusíme rozpojovat ani kabel z Arduina...

Pokud budeme používat můj upravený EVO 2 kód: 24.2.2017 verze 2.7 a vyšší (LiPol, NiMH, RGB LED) pro kontrolu napětí baterie s články NiMH je potřeba v programu nastavit: #define LIPOBATT 0

Aktuální hodnoty pro NiMH: 6.5V varování / 5.5V vypnutí

DSC 0938

Tuning část třetí - LiPol baterie (pouze na Vaše riziko)

Robot jezdí na tuto LiPol baterii cca hodinu.

Li-Pol = Lithium - Polymer

Druhou možností je nahradit baterie AA (ať již nabíjecí AA, nebo alkalické AA) + držák baterií za LiPol článek, který má své výhody :-), ale i nevýhody (bezpečí článků). V kameném krámku http://www.model-fun.cz/ jsem zakoupil tuto LiPol baterii (přesněji akupack - akumulátor) za 420,-

DSC 0849

DSC 0851

DSC 0852

Akku LiPol XPower 1800-2S ECO 25C
je novou řadou LiPol akumulátorů vyrobených při příležitosti desátého výročí od založení firmy Dualsky. Akumulátory této řady jsou lehké, odolné a s výborným poměrem výkon/cena.

K nabíjení tohoto článku nemůžeme z důvodu bezpečnosti použít "samodomo nabíječku co dům dal", ale je nutné mít nabíječku přímo na LiPol články. U LiPol se každý článek při nabíjení kontroluje samostatně. Použil jsem tento nabíječ za 599,-

1407916589b 0

Mikroprocesorový nabíječ 20W s balancerem pro 2-4 čl. Li-poly/Li-Fe s přepínatelným proudem 1, 2 nebo 3A. Napájení 110-230V.

Nabíječ SKY RC e4 s vestavěným balancerem je velmi jednoduchý "krabičkový" nabíječ pro rekreační jezdce a letce se síťovým napájením pro nabíjení Li-poly a Li-Fe akumulátorů. Je ideálním doplňkem "setových" stavebnic umožňující jednoduché nabíjení doma nebo výborným společníkem na cesty, kdy s sebou nechcete "tahat" velký, těžký a drahý nabíječ. Nabíjený akumulátor se připojuje pomocí silových kabelů zapojených do výstupu nabíječe (4 mm banánky) a k vestavěnému balanceru prostřednictvím servisního konektoru; nabíječ je opatřen třemi zásuvkami (2s, 3s a 4s) pro konektory systému JST-XH. V jednu chvíli je možno nabíjet vždy jen jednu sadu - buď dvoučlánkovou, tříčlánkovou, nebo čtyřčlánkovou.

Základní funkce

Síťové napájení 100-230 V/50-60 Hz
Pro nabíjení 2-4s Li-poly nebo Li-Fe článků
Nabíjecí proud přepínatelný 1, 2 nebo 3A
Max. výkon pro nabíjení 20 W
Nabíjení metodou „konstantní proud/konstantní napětí“
Přepínač koncového napětí 3,6 V pro Li-Fe a 4,2 V pro Li-poly na předním panelu nabíječe
Provozní stavy nabíječe signalizovány LED diodami
Hlásí chybové stavy (velký rozdíl napětí jednotlivých článků, přerušení kabelů)
Nabíjecí konektory JST-XH 2s, 3s a 4s, nabíjet je možno vždy jen jednu sadu
Kompaktní plastová skříňka, kapesní rozměry
Sada nabíječe obsahuje: nabíječ SKY RC e4, síťový napájecí kabel, nabíjecí kabel se 4 mm banánky a druhým koncem volným, návod.

Vstupní napětí (síťové - AC) [V] 230
Nabíjecí proud [A] 1 - 3
Li-Pol [čl.] 2 - 4
Li-Fe [čl.] 2 - 4
Balancer Ano
Výkon při nabíjení [W] 20
Délka [mm] 110.7
Šířka [mm] 69.4
Výška [mm] 40.5
Hmotnost [g] 176

Z robota tedy vyjmeme původní držák baterií AA 6ks a na jeho místo (nad motory a pod PLA držák elektroniky) umístíme LiPol akumulátor. Pro přichycení použijeme pásek suchého zipu. Pro propojení LiPol akumulátoru s Arduino deskou potřebujeme zakoupit také protikus konektor Dualsky DC-3A sameconektor Dualsky DC-3A samec za 30,- (dvojice silových konektorů firmy Dualsky. Konektory mají průměr 3,5 mm. Dutinka je trořena pevnou trubičkou, kolík je rozříznut. Kontakt konektorů není pouze kruhový ale plošný, takže spoj má velmi malý ohmický odpor. To je důležité pro správné využití moderních baterií, jejichž vnitřní odpor je velmi nízký. Povrch konektorů je pozlacen. Pár je uzavřen v polarizovaném plastovém pouzdře, takže při spojení nemůže dojít k přepólování.)

konektor dualsky dc 3a kolik 1

Informace o akupacku LiPol 2 články 1800mAh (čtěte!)

Můj zakoupený akumulátor (akupack) má dva články - maximální napětí bude celkem 4,2 + 4,2 = 8,4V tedy o 0,6V méně než při použití 6ks AA 1,5V článků a o 1,2V více než při použití 6ks AA NiMH 1,2V článků. Napětí je tedy v pořádku a robot bude pracovat i s LiPol akumulátorem.

Pokud budeme používat můj upravený EVO 2 kód: 24.2.2017 verze 2.7 a vyšší (LiPol, NiMH, RGB LED) pro kontrolu napětí baterie s články NiMH je potřeba v programu nastavit: #define LIPOBATT 1

Aktuální hodnoty pro LiPol: 6.3V varování / 6.0V vypnutí

Více informací o LiPol článku například na Wiki...

POZOR LiPol opravdu není sranda!

Výhody

Nevýhody

DSC 0862

DSC 0864

Pomocí suchého zipu drží baterie nad motory

DSC 0873

DSC 0874

(Baterka je odpojena - rozpojením konektorů...)

 

Tuning robota

 

Attachments:
Download this file (brobot.pdf)Schéma robota[ ]22 kB489 Downloads2017-01-25 16:30
Download this file (Info_akku.pdf)Informace o bateriích a akumulátorech dle § 31d[ ]204 kB347 Downloads2017-02-21 19:57
Arduino
ESP8266
3D díly