Obsah:

Postavte si vlastní auto s vlastním řízením - (tento pokyn se právě zpracovává): 7 kroků
Postavte si vlastní auto s vlastním řízením - (tento pokyn se právě zpracovává): 7 kroků

Video: Postavte si vlastní auto s vlastním řízením - (tento pokyn se právě zpracovává): 7 kroků

Video: Postavte si vlastní auto s vlastním řízením - (tento pokyn se právě zpracovává): 7 kroků
Video: Žižkovské nádraží: druhý život? Urbanistická studie území 2024, Červenec
Anonim
Image
Image

Ahoj, Pokud se podíváte na můj další Instructable on Drive Robot With Remote USB Gamepad, tento projekt je podobný, ale v menším měřítku. Můžete také sledovat nebo získat pomoc nebo inspiraci ze seznamů skladeb Robotics, Home-Grown Voice-Recognition nebo Self-Driving Car na Youtube.

Začal jsem velkým robotem (Wallace 4), ale protože jsem založil místní skupinu Meetup, potřeboval jsem něco v menším měřítku a skupinu velmi zajímalo počítačové vidění.

A tak jsem narazil na tento kurz Udemy: Postavte si své vlastní auto, které mi dalo nápad na tento projekt.

Pokud vás kurz Udemy zajímá, můžete se tam nadále vracet; jde čas od času do prodeje za obrovskou slevu. Poznámka: existuje část 1 a část 2 - musíte provést nějaké šetření, jak tyto dva kurzy získat jako balíček (zlevněné).

Účel tohoto pokynu je dvojí. Za prvé, dát nějaké odkazy a alternativy k určitým částem kurzu (jako jsou součásti a hardware). A za druhé, rozšířit kurz.

Hlavní účel kurzu Udemy:

je mít možnost přimět malé kolové robotické auto k samostatnému řízení na zmenšené dvouproudé silnici.

Musí rozpoznat pruhy pruhů a když dosáhne konce silnice.

Musí rozpoznat stopku (a zastavit).

Také ČERVENÝ a ZELENÝ dopravní signál.

Musí také rozpoznat a manévrovat kolem překážky (jiné auto).

Co tento Instructable přidává do kurzu:

Řiďte malé auto pomocí vzdáleného USB gamepadu, podobně jako v tomto jiném Instructable.

Uveďte nějaké alternativy k tomu, co kurz nabízí.

Kurz možná ani nebudete muset koupit:

Tento Instructable může být vše, co potřebujete, abyste mohli začít.

Zásoby

Základní (doporučené) části:

Robotický podvozek

Čtyři motory

Arduino

Raspberry Pi (3, 3B+, 4)

Fotoaparát (webová kamera USB nebo modul Picamera)

Síla baterie

Přepínače zapnutí/vypnutí

propojovací vodiče

distanční sloupky (plastové a možná i kovové)

Před zakoupením dílů si prosím přečtěte celý Instructable a také videa.

Poté, co jsem udělal tento projekt, jsem si uvědomil, že přesné části nejsou tak kritické.

Krok 1: Další podrobnosti o součástech…

Image
Image
Další podrobnosti o součástkách…
Další podrobnosti o součástkách…
Další podrobnosti o součástkách…
Další podrobnosti o součástkách…

Přidružené video jde do některých podrobností o částech a některých problémech, které jsem našel.

  • Rozhlédněte se po různých podvozcích / motorech
  • Motory by již měly mít k sobě připájené vodiče
  • Možná budete chtít mít vrták a vrtáky, NEBO podvozek s více otvory
  • Mějte na paměti, že váha je problém. Všechno by mělo být co nejlehčí.
  • Ovladač motoru L298 H-Bridge funguje skvěle. POZNÁMKA: získejte jeden se šroubovými svorkami (viz foto)
  • Pravděpodobně budete chtít plastové i kovové distanční sloupky, velikost M3 je pravděpodobně nejlepší volbou.

Plastové distanční sloupky jsou dobré pro montáž desek na šasi (ovladač motoru, Arduino, Raspberry, napájecí PCB, vypínač on/off atd.).

Kovové distanční sloupky jsou dobré pro montáž podvozku (pevnost) a také zvláště při vývoji (programování, testování). Pro vývoj mohou kovové podpěry sloužit jako chůdy. Stejně jako kdybyste pracovali na skutečném autě, chcete zvednout auto tak, aby kola byla ve vzduchu a mohla se volně pohybovat. Tohle je velmi důležité! Budete dělat chyby a nechcete, aby auto jen vzlétlo a havarovalo.

Vrták + vrtáky

Opravdu chci zdůraznit použití vrtačky, pokud to dokážete, a použití distančních tyčí místo oboustranné lepicí pásky. Je velmi pravděpodobné, že během tohoto projektu několikrát vyjmete a znovu umístíte desky atd. A používání pásky se stane velmi nepohodlným.

Použití vrtačky umožňuje velmi snadné přemístění (zvláště pokud je podvozek plastový) a vypadá profesionálněji.

Krok 2: Napájení auta během vývoje

Napájení vozu během vývoje
Napájení vozu během vývoje
Napájení vozu během vývoje
Napájení vozu během vývoje

Podle mého názoru nejrychlejší a nejsnadnější způsob, jak s tímto projektem začít, je:

  • pro vývoj skic softwaru Arduino stačí připojit Arduino k počítači přes USB
  • pro software Raspberry Pi byste měli mít 5V USB napájení, které může dodávat alespoň 3 ampéry. A měl by mít vypínač. Pokud k počítači nemáte připojený dobrý napájený rozbočovač USB, pravděpodobně nebudete moci napájet Raspberry přímo z počítače.
  • Když jste připraveni vyzkoušet motory/kola, nejjednodušší je (viz foto) dobré napájení. Ty však nejsou levné.

Jde mi o to, říci v této části, že nechcete během vývoje používat energii z baterie, protože to značně zpomalí váš postup.

Také tím, že uděláte něco podobného výše uvedeným návrhům, si nemusíte (zatím) dělat starosti s tím, jak přesně budete auto pohánět. Toto rozhodnutí můžete odložit na později v projektu.

Krok 3: Napájení automobilu během skutečného používání

Napájení vozu během skutečného používání
Napájení vozu během skutečného používání
Napájení vozu během skutečného používání
Napájení vozu během skutečného používání

Pokud se rozhodnete sledovat kurz (nebo to, co jsem udělal) pro 5V napájení logiky, pak si uvědomte, že ne všechny 5V USB powerbanky jsou pro tento projekt dobré.

Hlavním bodem je, že potřebujete 5V, ale potřebujete alespoň 3 ampéry! Přemýšlejte o tom takto - chcete powerbanku, která (možná) napájí přenosný počítač.

Pokud žijete v USA, domnívám se, že jedním z nejlepších způsobů, jak toho dosáhnout, je nákup prostřednictvím Best Buy. Proč? Kvůli jejich 14denní politice vrácení peněz.

Vlastně jsem musel vyzkoušet tři různé powerbanky, než jsem našel tu, která bude fungovat. Ty ostatní způsobují, že si Raspberry Pi stěžuje na podpětí.

Začal jsem s nejméně nákladnou powerbankou a zkoušel jsem další model (který stál víc), dokud jsem nenašel ten, který fungoval.

Jak napájet Arduino

V kurzu Udemy se autor rozhodl napájet Arduino přímo z powerbanky (prostřednictvím vlastní PCB, kterou vyrobil) a použil napájecí piny na GPIO konektoru Arduina.

Rozhodl jsem se však napájet Arduino přímo z Raspberry Pi prostřednictvím kabelu USB.

Budete se muset rozhodnout, co je lepší.

Jak napájet motory/ovladač motoru

V kurzu Udemy se autor rozhodl napájet motory/ovladač přímo z 5V powerbanky. Pokud tento přístup použijete, existují dvě skutečnosti.

  1. Když se motory poprvé začnou otáčet, odebírají nejvíce proudu. To může (způsobí) pokles napájecího napětí (pokles) pod 5 V a způsobí reset Raspberry.
  2. Použití pouze 5 V k napájení motorů znamená, že motorům neposkytujete tolik energie, kolik byste mohli, a auto se bude pohybovat pomaleji (pomaleji). Zkoušel jsem motory (s tím napájecím zdrojem) (viz foto) alespoň na 9V. Fungují dobře na 9V.

Pozorování 9V (nebo více)

Pokud jste se podívali na všechny fotografie a videa pro tento Instructable, všimli jste si, že jsem sestavil vlastní desku plošných spojů, abych vytvořil svůj vlastní 9V napájecí zdroj. Cestou jsem se naučil pár věcí.

Právě teď paralelně používám několik (3) 9V bateriových článků k napájení motorů. Použil jsem alkalické i NiMH nabíjecí baterie.

Učební zkušenost č. 1: Správné nabití 9V baterií NiMH trvá dlouho (mnoho hodin).

Možné řešení: Investujte do nabíječky NiMH s více bateriemi. Měla by to být „chytrá“nabíječka.

Nevýhoda: Nejsou levné.

Učební zkušenost č. 2: 9V baterie jsou ve skutečnosti tvořeny několika malými vnitřními články. Pokud jeden z těchto článků zemře, je celá baterie k ničemu. NEMAL jsem tento problém, ale četl jsem o tom.

Učební zkušenost č. 3: Ne všechny 9V baterie mají stejné napětí. Tenhle je důležitý. Protože čím vyšší napětí, tím vyšší rychlost. Některé články baterie (a nabíječky) mají pouze 8,4 V. Někteří ještě méně. Některé mají napětí 9,6 V.

Learning Experience #4: 9V baterie, zejména ty NiMH, mají nízkou hmotnost. Dobrá věc. Většina z nich však poskytuje pouze výstupní proud mA. Proto jsem je musel umístit souběžně. Potřebujete celkovou proudovou kapacitu téměř 2 ampéry, a to i na krátkou dobu.

Učební zkušenost č. 5: Existují baterie 9,6 V, které se používají pro věci, jako jsou rádiem řízená auta. Ještě jsem žádnou nepoužil, ale věřím, že poskytují větší proud než paralelní 9V baterie jako já. Můžete také nabíjet jednu jednotku. Balení se dodává v různých velikostech. A tam je zvážení hmotnosti. A pak použijete balíček k napájení celého auta nebo jen motorů? Pokud pro celé auto, pak budete potřebovat 5V krokový regulátor pro Raspberry Pi.

L298 H-Bridge má pro tento účel schopnost výstupu 5V, ale mám obavy z toho, jaký proud může produkovat pro Raspberry Pi, a jestli to nebude příliš zatěžovat desku L298.

Pokud se rozhodnete mít dva samostatné zdroje energie, můžete mít problém s hmotností (příliš těžký).

Krok 4: Softwarové programování pro řízení gamepadem

Myslím, že jsem hodně z této sekce probral již v Robot Driven Via Remote USB Gamepad Instructable, takže to tady nebudu opakovat.

Sekce programování/softwaru v tomto jiném Instructable jsou jen návrhy. Myslím, že člověk se naučí více metodou pokus-omyl.

Krok 5: Přidání kamery

Přidání kamery
Přidání kamery
Přidání kamery
Přidání kamery
Přidání kamery
Přidání kamery

V kurzu Udemy se domnívám, že autor používá kulaté dřevěné hmoždinky a lepicí pistoli k vytvoření způsobu, jak zvednout kameru.

Budete chtít kameru pozvednout tak, aby se dívala dolů na dvouproudovou silnici, aby mohla snáze rozpoznat jízdní pruhy.

Tam, kde žiji v USA, byly dřevěné hmoždinky velmi levné. Můžete si je koupit buď v Lowe's nebo Home Depot. Místo kulatých hmoždinek jsem zvolil hranaté hmoždinky.

Také jsem se rozhodl vytvořit robustnější základnu pro kamerovou věž a celou věž jsem nechal vyjmout z auta, abych si mohl hrát a experimentovat, jaká je pro něj nejlepší pozice v autě.

Také jsem vytvořil věž s myšlenkou, že začnu s webovou kamerou USB, ale později možná přejdu k používání modulu Picamera.

Možná budete chtít investovat do fotoaparátu typu rybí oko.

Koupil jsem si velmi levnou horkou lepicí pistoli, ale chtěl jsem lépe zpevnit základnu věže, a tak jsem předvrtal několik otvorů pro šrouby a přidal šrouby, aby vše lépe drželo pohromadě.

Poté jsem přišrouboval základnu k podvozku auta.

Pokud později chci věci přemístit, jednoduše odšroubuji základnu ze šasi, vyvrtám nové otvory v novém umístění šasi a znovu přišroubuji věž k šasi.

Přenesl jsem kód „follow-me“Pythonu a Node.js z velkého robota (Wallace Robot 4) jako způsob testování všeho. Seznam youtubů, které poskytují mnohem více podrobností o „follow-me“, najdete na fotografiích v této sekci.

Jak jsem zmínil, bylo jednodušší nejprve připojit webovou kameru USB. Později mohu připojit modul Picamera.

Krok 6: Rozpoznání tváře - určete polohu

Image
Image

Tato část není předmětem kurzu Udemy, ale bylo to zábavné cvičení.

Pokud na webu vyhledáváte „rozpoznávání obličejů python opencv“, najdete mnoho dobrých příkladů, jak na to, a všichni do značné míry postupují podle stejných kroků.

  1. načtěte soubor obličeje „haar“
  2. inicializujte kameru
  3. spusťte smyčku, kde uchopíte rámeček
  4. převést barevný obrázek na stupnici šedi
  5. nakrmit do opencv, aby našel tváře
  6. spustit vnitřní smyčku (pro každý nalezený obličej) (v mém případě přidám kód pro přerušení, pokud je více než 1 obličej)

Za tímto účelem zde, jakmile jsme detekovali obličej, známe X, Y, W a H imaginárního čtverce, který vykresluje obličej.

Pokud chcete, aby se robot pohyboval vpřed nebo vzad, musíte vzít v úvahu W. Pokud je W příliš velký (příliš blízko), nechte robota pohybovat se zpět. Pokud je W příliš malý (příliš daleko), dejte robota pohyb vpřed.

Pohyb doleva/doprava je trochu komplikovanější, ale ne šílený. Podívejte se na obrázek této části, který podrobně popisuje, jak určit polohu obličeje vlevo vs.

POZNÁMKA:

Pokud spustíte některý z webových příkladů OpenCV, všechny ukazují skutečný pohled na to, co opencv „vidí“, s obličejem naznačeným ve čtverci. Pokud budete pozorovat, tento čtverec není stálý (konstantní), i když se nepohybujete.

Tyto měnící se hodnoty by způsobily, že by byl robot neustále v pohybu, dopředu nebo dozadu, doleva nebo doprava.

Budete tedy muset mít nějaký druh delty pro dopředu/dozadu a doleva/doprava.

Vezměme si vlevo vs vpravo:

Jakmile vypočítáte doleva a doprava, získáte rozdíl (delta):

delta = abs (vlevo - vpravo)

Musíte vzít absolutní, protože nevíte, které z nich bude větší číslo.

Poté přidáte nějaký podmíněný kód, který se pokusí přesunout pouze v případě, že delta je větší než nějaké minimum.

Totéž byste udělali pro vpřed vs vzad.

Krok 7: Poloha obličeje - pohybující se robot

Jakmile víte, že se robot potřebuje pohybovat doleva nebo doprava, dopředu nebo dozadu, jak to uděláte?

Vzhledem k tomu, že tento Instructable je nedokončenou prací, v tuto chvíli jsem jen zkopíroval kód ze svého velkého robota a použil jej pro tento projekt. Podívejte se prosím na můj seznam skladeb Robotics na youtube, kde to vše podrobně popisuje.

Stručně řečeno, mám kód ve vrstvách.

Skript rozpoznávání obličeje v Pythonu vytváří požadavky http na server Node.js

Server Node.js naslouchá požadavkům HTTP na směry přesunu a převádí je na vlastní sériový protokol

Vlastní sériový protokol mezi serverem Node.js a Arduino

Skica Arduino, která provádí skutečné příkazy k pohybu robota

Kurz Udemy to nedělá jako výše. Ale protože jsem chtěl udělat dobrý pokrok a soustředit se na skutečné rozpoznávání obrazu, prozatím jsem znovu použil svůj předchozí kód.

Doporučuje: