Съдържание:

Изградете свой собствен самоуправляващ се автомобил - (Тази инструкция работи в процес на работа): 7 стъпки
Изградете свой собствен самоуправляващ се автомобил - (Тази инструкция работи в процес на работа): 7 стъпки

Видео: Изградете свой собствен самоуправляващ се автомобил - (Тази инструкция работи в процес на работа): 7 стъпки

Видео: Изградете свой собствен самоуправляващ се автомобил - (Тази инструкция работи в процес на работа): 7 стъпки
Видео: The Choice is Ours (2016) Official Full Version 2024, Ноември
Anonim
Image
Image

Здравейте, Ако погледнете другия ми робот с инструкции на диск с дистанционен USB геймпад, този проект е подобен, но в по -малък мащаб. Можете също така да следвате или да получите помощ или вдъхновение от роботите, домашното разпознаване на глас или плейлистите за самостоятелно управление на автомобили в Youtube.

Започнах с големия робот (Wallace 4), но тъй като създадох местна група Meetup, имах нужда от нещо в по -малък мащаб и групата се интересуваше много от компютърното зрение.

Така попаднах на този курс на Udemy: Изградете своя собствена самоуправляваща се кола, който ми даде идеята за този проект.

Ако се интересувате от курса Udemy, можете да продължите да проверявате обратно; той се продава от време на време с огромна отстъпка. Забележка: има част 1 и част 2 - трябва да направите известно проучване как да получите двата курса като пакет (с отстъпка).

Целта на тази инструкция е двойна. Първо, да дадем някои насоки и алтернативи на определени части от курса (като части и хардуер). И второ, да разширим курса.

Основната цел на курса Udemy:

е да можете да накарате малка кола-кола да се управлява самостоятелно по намален двулентов път.

Той трябва да разпознае лентите на лентата и когато достигне края на пътя.

Той трябва да разпознае стоп (и стоп).

Също така ЧЕРВЕН и ЗЕЛЕН светофар.

Той също така трябва да разпознава и да маневрира около препятствие (друга кола).

Какво добавя този Instructable към курса:

Карайте малката кола с отдалечен USB геймпад, почти по същия начин, както в този друг Instructable.

Дайте някои алтернативи на това, което предлага курсът.

Може дори да не се наложи да купувате курса:

Този Instructable може да е всичко, от което се нуждаете, за да започнете.

Консумативи

Основните (предложени) части:

Роботно шаси

Четири двигателя

Arduino

Raspberry Pi (3, 3B+, 4)

Камера (USB уеб камера или модул Picamera)

Захранване на батерията

Превключватели за включване/изключване

джъмперни проводници

отстоявания (пластмасови и може би метални също)

Моля, прегледайте целия Instructable, както и видеоклиповете, преди да опитате да закупите части.

След като направих този проект, осъзнавам, че точните части не са толкова критични.

Стъпка 1: Повече подробности за частите …

Image
Image
Повече подробности за частите …
Повече подробности за частите …
Повече подробности за частите …
Повече подробности за частите …

Свързаното видео влиза в някои подробности за частите и някои проблеми, които открих.

  • Огледайте наоколо за различни шасита / двигатели
  • Двигателите вече трябва да имат запоени проводници към тях
  • Може да искате да имате бормашина и свредла, ИЛИ шаси с повече отвори
  • Имайте предвид, че теглото е проблем. Всичко трябва да е възможно най -леко.
  • Драйверът на двигателя L298 H-Bridge работи отлично. ЗАБЕЛЕЖКА: вземете един с винтовите клеми (вижте снимката)
  • Вероятно ще искате както пластмасови, така и метални стойки, размер M3 е може би най -добрият избор.

Пластмасовите стойки са добри за монтиране на дъските върху шасито (драйвер на мотор, Arduino, Raspberry, захранваща печатна платка, превключвател за включване/изключване и т.н.).

Металните стойки са добри за сглобяване на шасито (здравина), а също и особено когато се разработвате (програмиране, тестване). За развитие металните стойки могат да служат като кокили. Точно както ако работите върху истинска кола, искате да повдигнете колата, така че колелата да са във въздуха и да могат да се движат свободно. Това е много важно! Ще правите грешки и не искате колата просто да излети и да катастрофира.

Свредло + свредла

Наистина искам да подчертая използването на бормашина, ако можете, и използването на стойки вместо двустранна лепкава лента. Много е вероятно в крайна сметка да премахнете и пренасочите дъските си и т.н. няколко пъти по време на този проект и използването на лентата става много объркано.

Използването на бормашина прави много лесно повторното позициониране (особено ако шасито е пластмасово) и изглежда по-професионално.

Стъпка 2: Захранване на автомобила по време на разработката

Захранване на автомобила по време на разработката
Захранване на автомобила по време на разработката
Захранване на колата по време на разработката
Захранване на колата по време на разработката

Според мен най -бързият и лесен начин да започнете с този проект е:

  • за разработване на скици на софтуер Arduino, просто свържете Arduino към вашия компютър чрез USB
  • за софтуер Raspberry Pi, трябва да имате 5V USB захранване, което може да захранва поне 3 ампера. И трябва да има превключвател за включване/изключване. Освен ако нямате добър захранван USB хъб, свързан към компютъра ви, вероятно няма да можете да захранвате малината директно от компютъра си.
  • Защото, когато сте готови да тествате двигателите/колелата, най -лесното е (вижте снимката) добро захранване. Те обаче не са евтини.

Моят смисъл с този раздел е да кажа, че не искате да използвате енергия от батерията по време на разработката, защото това значително ще забави напредъка ви.

Също така, като правите нещо подобно на горните предложения, не трябва да се притеснявате (все още) за това как точно ще захранвате колата. Можете да отложите това решение за по -късно в проекта.

Стъпка 3: Захранване на автомобила по време на действителна употреба

Захранване на автомобила по време на действителна употреба
Захранване на автомобила по време на действителна употреба
Захранване на автомобила по време на действителна употреба
Захранване на автомобила по време на действителна употреба

Ако решите да следвате курса (или това, което направих) за 5V захранване според логиката, тогава имайте предвид, че не всички 5V USB захранващи батерии са добри за този проект.

Основното тук е, че имате нужда от 5V, но имате нужда от поне 3 ампера! Помислете за това по този начин - искате powerbank, която ще захранва преносим компютър (може би).

Ако живеете в САЩ, мисля, че един от най -добрите начини да направите това е да купувате от Best Buy. Защо? Поради 14-дневната им политика за връщане на парите.

Всъщност трябваше да опитам три различни powerbank, преди да намеря такъв, който да работи. Другите карат Raspberry Pi да се оплаква от под напрежение.

Бях започнал с най -евтината powerbank и продължавах да опитвам следващия модел (който струваше повече), докато не намерих този, който работи.

Как да захранваме Arduino

В курса Udemy авторът избра да захранва Arduino директно от powerbank (чрез персонализирана печатна платка, която направи) и използва захранващи щифтове на GPIO конектора на Arduino.

Избрах обаче просто да захранвам Arduino директно от Raspberry Pi, чрез USB кабела.

Ще трябва да решите кое е по -добро.

Как да захранваме двигателите/драйвера на двигателя

В курса Udemy авторът избра да захранва двигателите/драйвера директно от 5V powerbank. Има два съображения, ако използвате този подход.

  1. Когато двигателите за първи път започнат да се въртят, те извличат най -тока. Това може (ще) доведе до провисване на захранващото напрежение (потапяне) под 5V и ще доведе до нулиране на малината.
  2. Използването само на 5V за захранване на двигателите означава, че не предоставяте толкова мощност, колкото бихте могли на моторите, а колата ще се движи по -бавно (по -бавно). Тествал съм двигателите (с това захранване) (виж снимката) до поне 9V. Те работят добре при 9V.

Наблюдения за 9V (или повече)

Ако разгледате всички снимки и видеоклипове за този Instructable, забелязахте, че сглобих персонализирана печатна платка, за да създам свой собствен 9V източник на захранване. Научих няколко неща по пътя.

В момента използвам няколко (3) 9V батерийни клетки паралелно, за да захранвам двигателите. Използвал съм както алкални, така и NiMH акумулаторни батерии.

Опитен опит #1: Отнема много време (много часове) за правилното зареждане на NiMH 9V батерии.

Възможно решение: Инвестирайте в NiMH зарядно устройство с много батерии. Трябва да е "умно" зарядно устройство.

Недостатък: Те не са евтини.

Учебен опит #2: 9V батериите всъщност се състоят от няколко малки вътрешни клетки. Ако една от тези клетки умре, цялата батерия е безполезна. НЕ съм имал този проблем, но четох за него.

Обучение #3: Не всички 9V батерии са с едно и също напрежение. Този е важен. Тъй като колкото по -високо е напрежението, толкова по -голяма скорост е възможна. Някои акумулаторни клетки (и зарядни устройства) са само 8.4V. Някои дори по -малко. Някои са 9.6V.

Учебен опит #4: 9V батериите, особено NiMH, са с леко тегло. Хубаво нещо. Повечето от тях обаче осигуряват само mA изходен ток. Ето защо трябваше да ги поставя паралелно. Нуждаете се от общ токов капацитет от почти 2 ампера, дори за кратки периоди от време.

Учебен опит #5: Съществуват 9,6V батерии, използвани за неща като автомобили с радиоуправление. Все още не съм използвал такава, но вярвам, че те осигуряват по -голям ток, отколкото правите паралелните 9V батерии, както направих аз. Също така можете да зареждате единичното устройство. Опаковките се предлагат в различни размери. И има съображение за теглото. И тогава, използвате ли опаковката за захранване на цялата кола или само на двигателите? Ако за цялата кола, тогава ще ви е необходим регулатор за понижаване 5V за Raspberry Pi.

L298 H-Bridge наистина има възможност за извеждане на 5V за тази цел, но съм загрижен за това колко ток може да произведе за Raspberry Pi и дали това ще бъде прекалено голямо напрежение върху платката L298.

Ако решите да имате два отделни източника на захранване, може да имате проблем с теглото (твърде тежък).

Стъпка 4: Софтуерно програмиране за управление на геймпад

Мисля, че обхванах много от този раздел вече в Robot Driven Via Remote USB Gamepad Instructable, така че няма да повтарям това тук.

Разделите за програмиране/софтуер в тази друга инструкция са само предложения. Мисля, че човек научава повече чрез опит и грешка.

Стъпка 5: Добавяне на камера

Добавяне на камера
Добавяне на камера
Добавяне на камера
Добавяне на камера
Добавяне на камера
Добавяне на камера

В курса Udemy вярвам, че авторът използва кръгли дървени дюбели и пистолет за лепило, за да конструира начин за издигане на камерата.

Вие ще искате да повдигнете камерата така, че да гледа надолу към пътя с две ленти, за да може по-лесно да разпознава лентите.

Там, където живея в САЩ, дървените дюбели бяха много евтини. Можете да ги купите в Lowe's или Home Depot. Избрах квадратни дюбели вместо кръгли дюбели.

Аз също избрах да направя по -здрава основа за камерата и направих цялата кула сваляща се от колата, за да мога да си играя и да експериментирам кое е най -доброто положение за нея в колата.

Също така направих кулата с идеята, че ще започна с USB уеб камера, но вероятно по -късно ще премина към използването на модула Picamera.

Може да искате да инвестирате в камера тип „рибешко око“.

Купих много евтин пистолет за горещо лепило, но исках да подсиля по-добре основата на кулата, затова предварително пробих няколко отвора за винтове и добавих винтове, за да задържам всичко по-добре.

След това закрепих основата към шасито на колата.

Ако по-късно искам да преместя нещата, просто откопчавам основата от шасито, пробивам нови дупки в новото местоположение на шасито и отново закрепвам кулата към шасито.

Пренесох кода на Python и Node.js „follow-me“от големия робот (Wallace Robot 4) като начин да тествам всичко. Моля, вижте снимките в този раздел за списъка с youtubes, които дават много повече подробности за „follow-me“.

Както споменах, беше по -лесно първо да монтирате USB уеб камера. По -късно мога да монтирам модула Picamera.

Стъпка 6: Разпознаване на лица - Определете позицията

Image
Image

Тази част не е във фокуса на курса Udemy, но беше забавно упражнение.

Ако потърсите в мрежата за „python opencv разпознаване на лица“, ще намерите много добри примери за това как да го направите и всички те следват почти същите стъпки.

  1. заредете файла с лице "haar"
  2. инициализирайте камерата
  3. започнете цикъл, където хващате рамка
  4. преобразувайте цветното изображение в сиво
  5. подайте го на opencv, за да намери лицето (ите)
  6. стартирайте вътрешен цикъл (за всяко намерено лице) (в моя случай добавям код за прекъсване, ако има повече от 1 лице)

За тази цел тук, след като открием лице, знаем X, Y, W и H на въображаемия квадрат, който очертава лицето.

Ако искате роботът да се движи напред или назад, просто трябва да вземете предвид W. Ако W е твърде голям (твърде близо), накарайте робота да се върне назад. Ако W е твърде малък (твърде далеч), накарайте робота да се придвижи напред.

Движението наляво/надясно е малко по -сложно, но не и лудо. Разгледайте изображението за този раздел, което подробно описва как да определите лявата и дясната позиция на лицето.

ЗАБЕЛЕЖКА:

Ако изпълните някой от примерите за уеб OpenCV, всички те показват действителния изглед на това, което opencv „вижда“, с лице, очертано в квадрат. Ако наблюдавате, този квадрат не е постоянен (постоянен), дори и да не се движите.

Тези променящи се стойности биха накарали робота да бъде постоянно в движение, напред или назад, наляво или надясно.

По този начин ще трябва да имате някаква делта както напред/назад, така и за ляво/дясно.

Нека вземем ляво срещу дясно:

След като сте изчислили ляво и дясно, тогава вземете разликата (делта):

делта = абс (ляво - дясно)

Трябва да вземете абсолюта, защото не знаете кое ще бъде по -голямото число.

След това добавяте условен код, за да се опитате да се движите само ако делтата е по -голяма от някакъв минимум.

Бихте направили същото за напред срещу заден ход.

Стъпка 7: Положение на лицето - движещ се робот

След като разберете, че имате нужда от робота, за да се движите наляво или надясно, напред или назад, как го правите?

Тъй като този Instructable е в процес на работа, в момента просто копирах кода от големия си робот, който да използвам за този проект. Моля, вижте моя плейлист за роботика в youtube, където подробно описва всичко това.

Накратко, имам кода на слоеве.

Скриптът за разпознаване на лица на Python прави http заявки към Node.js сървър

Сървърът Node.js слуша http заявки за насоки за преместване, превръща ги в персонализиран сериен протокол

Персонализиран сериен протокол между сървъра Node.js и Arduino

Скица на Arduino, която изпълнява действителните команди за преместване на робота

Курсът Udemy не го прави както по -горе. Но тъй като исках да постигна добър напредък и да се съсредоточа върху действителното разпознаване на изображения, за сега използвах отново предишния си код.

Препоръчано: