Оглавление:

Создайте свой собственный самоуправляемый автомобиль - (эта инструкция находится в процессе): 7 шагов
Создайте свой собственный самоуправляемый автомобиль - (эта инструкция находится в процессе): 7 шагов

Видео: Создайте свой собственный самоуправляемый автомобиль - (эта инструкция находится в процессе): 7 шагов

Видео: Создайте свой собственный самоуправляемый автомобиль - (эта инструкция находится в процессе): 7 шагов
Видео: Самодельный ламборгини 2024, Ноябрь
Anonim
Image
Image

Привет, Если вы посмотрите на мою другую «Инструкцию по работе с роботом-приводом с удаленным USB-геймпадом», то этот проект похож на него, но в меньшем масштабе. Вы также можете подписаться на плейлисты «Робототехника», «Домашнее распознавание голоса» или «Самоуправляемый автомобиль» на Youtube, получить помощь или вдохновение.

Я начал с большого робота (Уоллес 4), но с тех пор, как я начал местную группу Meetup, мне нужно было что-то меньшего масштаба, и группа очень интересовалась компьютерным зрением.

Итак, я наткнулся на курс Udemy: «Создайте свой собственный самоуправляемый автомобиль», который дал мне идею этого проекта.

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

У этого руководства двоякая цель. Во-первых, чтобы дать некоторые указания и альтернативы определенным частям курса (например, деталям и оборудованию). А во-вторых, расширить курс.

Основная цель курса Удеми:

Это возможность заставить небольшой колесный робот-автомобиль самостоятельно двигаться по уменьшенной в масштабе двухполосной дороге.

Он должен распознавать полосы движения и когда он достиг конца дороги.

Он должен распознавать знак остановки (и останавливаться).

А также КРАСНЫЙ и ЗЕЛЕНЫЙ светофор.

Он также должен распознавать препятствие (другую машину) и объезжать его.

Что это Учебное пособие добавляет к курсу:

Управляйте маленькой машинкой с помощью удаленного USB-геймпада, почти так же, как в этом другом руководстве.

Дайте несколько альтернатив тому, что предлагает курс.

Возможно, вам даже не придется покупать курс:

Это руководство может быть всем, что вам нужно для начала.

Запасы

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

Шасси робота

Четыре мотора

Ардуино

Малина Pi (3, 3B +, 4)

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

Заряд батареи

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

перемычки

стойки (пластиковые и, возможно, металлические)

Пожалуйста, просмотрите все инструкции, а также видеоролики, прежде чем пытаться покупать детали.

После завершения этого проекта я понимаю, что точные детали не так важны.

Шаг 1. Дополнительные сведения о деталях…

Image
Image
Подробнее о деталях…
Подробнее о деталях…
Подробнее о деталях…
Подробнее о деталях…

В связанном видео подробно рассказывается о деталях и некоторых обнаруженных мною проблемах.

  • Посмотрите вокруг на предмет различных шасси / двигателей.
  • К моторам уже должны быть припаяны провода.
  • Вы можете иметь дрель и сверла ИЛИ шасси с большим количеством отверстий.
  • Имейте в виду, что вес - это проблема. Все должно быть максимально легким.
  • Драйвер мотора L298 H-Bridge работает отлично. ПРИМЕЧАНИЕ: приобретите один с винтовыми клеммными колодками (см. Фото)
  • Вам, вероятно, понадобятся как пластиковые, так и металлические стойки, размер M3, вероятно, лучший выбор.

Пластиковые стойки хороши для установки плат на шасси (драйвер двигателя, Arduino, Raspberry, силовая плата, переключатель включения / выключения и т. Д.).

Металлические стойки хороши для сборки шасси (прочность), а также особенно при разработке (программирование, тестирование). Металлические стойки для развития могут служить ходулями. Точно так же, как если бы вы работали над реальной машиной, вы хотите поднять ее так, чтобы колеса находились в воздухе и могли свободно двигаться. Это очень важно! Вы будете делать ошибки и не хотите, чтобы машина просто взлетела и разбилась.

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

Я действительно хочу подчеркнуть использование дрели, если вы можете, и использование стоек вместо двусторонней липкой ленты. Скорее всего, вы в конечном итоге несколько раз будете снимать и перемещать свои доски и т. Д. В течение этого проекта, и использование ленты становится очень беспорядочным.

Использование дрели позволяет очень легко изменить положение (особенно, если шасси пластиковое), и это выглядит более профессионально.

Шаг 2: Электропитание автомобиля во время разработки

Питание автомобиля во время разработки
Питание автомобиля во время разработки
Питание автомобиля во время разработки
Питание автомобиля во время разработки

На мой взгляд, самый быстрый и простой способ начать работу с этим проектом:

  • для разработки эскизов программного обеспечения Arduino просто подключите Arduino к компьютеру через USB.
  • для программного обеспечения Raspberry Pi у вас должен быть USB-источник питания 5 В, который может обеспечивать не менее 3 А. И у него должен быть переключатель включения / выключения. Если у вас нет хорошего USB-концентратора с питанием, подключенного к вашему компьютеру, вы, вероятно, не сможете подключать Raspberry напрямую к компьютеру.
  • Когда вы готовы проверить моторы / колеса, проще всего (см. Фото) использовать хороший источник питания. Однако это не дешево.

В этом разделе я хочу сказать, что вы не хотите использовать питание от батареи во время разработки, потому что это значительно замедлит ваш прогресс.

Кроме того, выполнив что-то подобное приведенным выше советам, вам не нужно (пока) беспокоиться о том, как именно вы будете приводить в действие автомобиль. Вы можете отложить это решение на потом в проекте.

Шаг 3: Электропитание автомобиля во время фактического использования

Питание автомобиля во время фактического использования
Питание автомобиля во время фактического использования
Питание автомобиля во время фактического использования
Питание автомобиля во время фактического использования

Если вы решите следовать курсу (или тому, что я сделал) для питания логики 5 В, то имейте в виду, что не все блоки питания 5 В USB подходят для этого проекта.

Главное здесь то, что вам нужно 5 В, но вам нужно как минимум 3 А! Подумайте об этом так - вам нужен внешний аккумулятор, который будет питать портативный компьютер (возможно).

Если вы живете в США, я думаю, что один из лучших способов сделать это - купить в Best Buy. Почему? Из-за их 14-дневной политики возврата денег.

На самом деле мне пришлось попробовать три разных powerbank, прежде чем я нашел тот, который будет работать. Другие заставляют Raspberry Pi жаловаться на пониженное напряжение.

Я начал с наименее дорогого павербанка и продолжал пробовать следующую модель (которая стоит дороже), пока не нашла ту, которая работает.

Как запитать Arduino

В курсе Udemy автор решил запитать Arduino напрямую от powerbank (через изготовленную им специальную печатную плату) и использовал выводы питания на разъеме GPIO Arduino.

Однако я решил просто запитать Arduino напрямую от Raspberry Pi через USB-кабель.

Вам нужно будет решить, что лучше.

Как запитать моторы / драйвер мотора

В курсе Udemy автор решил запитать двигатели / драйвер напрямую от 5-вольтового блока питания. Если вы воспользуетесь этим подходом, есть два соображения.

  1. Когда моторы только начинают вращаться, они потребляют наибольший ток. Это может (приведет) к тому, что напряжение питания упадет (упадет) ниже 5 В и приведет к перезагрузке Raspberry.
  2. Использование только 5 В для питания двигателей означает, что вы не обеспечиваете столько мощности, сколько могли бы, и автомобиль будет двигаться медленнее (более вялым). Я проверил двигатели (с этим источником питания) (см. Фото) как минимум на 9 В. Они отлично работают на 9В.

Наблюдения около 9В (и более)

Если вы просмотрели все фотографии и видео для этого руководства, вы заметили, что я собрал специальную печатную плату для создания собственного источника питания 9 В. По пути я узнал несколько вещей.

Сейчас я использую несколько (3) батарейных элементов на 9 В параллельно для питания двигателей. Я использовал как щелочные, так и никель-металлгидридные аккумуляторные батареи.

Опыт обучения №1: Чтобы правильно зарядить NiMH 9-вольтовые аккумуляторы, требуется много времени (много часов).

Возможное решение: приобретите NiMH зарядное устройство для нескольких аккумуляторов. Это должно быть «умное» зарядное устройство.

Недостаток: они недешевы.

Учебный опыт № 2: батареи 9 В на самом деле состоят из нескольких небольших внутренних ячеек. Если одна из этих ячеек умирает, вся батарея становится бесполезной. У меня НЕ было этой проблемы, но я читал об этом.

Опыт обучения № 3: Не все батареи 9 В имеют одинаковое напряжение. Это важно. Потому что чем выше напряжение, тем выше скорость. Некоторые аккумуляторные батареи (и зарядные устройства) имеют напряжение всего 8,4 В. Некоторые даже меньше. Некоторые - 9,6 В.

Опыт обучения №4: 9-вольтовые батареи, особенно никель-металлгидридные, легкие. Хорошая вещь. Однако большинство из них обеспечивают выходной ток только мА. Поэтому пришлось разместить их параллельно. Вам нужна общая текущая мощность почти 2 ампера, даже на короткие периоды времени.

Опыт обучения № 5: Существуют аккумуляторные батареи на 9,6 В, используемые для таких вещей, как радиоуправляемые автомобили. Я еще не использовал их, но я считаю, что они обеспечивают больший ток, чем параллельные 9-вольтовые батареи, как я. Также вы можете заряжать одиночный блок. Пакеты бывают разных размеров. И есть соображение веса. И затем, вы используете батарею для питания всей машины или только двигателей? Если для всей машины, вам понадобится понижающий регулятор на 5 В для Raspberry Pi.

L298 H-Bridge действительно имеет возможность выводить 5 В для этой цели, но меня беспокоит, какой ток он может выдавать для Raspberry Pi, и не будет ли это слишком большой нагрузкой на плату L298.

Если вы решите использовать два отдельных источника питания, у вас может возникнуть проблема с весом (слишком большой).

Шаг 4: Программирование программного обеспечения для вождения геймпада

Я думаю, что большую часть этого раздела я уже рассмотрел в руководстве «Робот, управляемый через удаленный USB-геймпад», поэтому я не буду повторять это здесь.

Разделы программирования / программного обеспечения в этом другом Instructable - это просто предложения. Я думаю, что можно узнать больше методом проб и ошибок.

Шаг 5: добавление камеры

Добавление камеры
Добавление камеры
Добавление камеры
Добавление камеры
Добавление камеры
Добавление камеры

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

Вам нужно будет поднять камеру так, чтобы она смотрела вниз на дорогу с двумя полосами движения, чтобы было легче распознавать полосы движения.

Там, где я живу в США, деревянные дюбели были очень недорогими. Вы можете купить их в Lowe's или Home Depot. Я выбрала квадратные дюбели вместо круглых.

Я также решил сделать более прочную основу для башни камеры, и я сделал всю башню съемной с автомобиля, чтобы я мог поэкспериментировать и поэкспериментировать с тем, как лучше всего разместить ее на машине.

Кроме того, я сделал башню с мыслью, что начну с веб-камеры USB, но, возможно, позже перейду к использованию модуля Picamera.

Возможно, вы захотите приобрести камеру типа «рыбий глаз».

Я купил очень недорогой пистолет для горячего клея, но я хотел лучше укрепить основание башни, поэтому предварительно просверлил несколько отверстий под винты и добавил винты, чтобы все лучше скрепить.

Затем я прикрутил базу к шасси автомобиля.

Если позже я захочу переставить вещи, я просто откручиваю основание от шасси, просверливаю новые отверстия в новом месте шасси и снова прикручиваю башню к шасси.

Я взял код «следуй за мной» на Python и Node.js от большого робота (Wallace Robot 4) как способ все протестировать. Пожалуйста, посмотрите фотографии в этом разделе, чтобы увидеть список YouTube-каналов, в которых подробно рассказывается о «Follow-Me».

Как я уже упоминал, было проще сначала подключить веб-камеру USB. Позже смогу смонтировать модуль Picamera.

Шаг 6: Распознавание лиц - определение положения

Image
Image

Эта часть не является основной в курсе Udemy, но это было забавное упражнение.

Если вы выполните поиск в Интернете по запросу «распознавание лиц python opencv», вы найдете много хороших примеров того, как это сделать, и все они в значительной степени следуют одним и тем же шагам.

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

Для этой цели здесь, как только мы обнаружили лицо, мы знаем X, Y, W и H воображаемого квадрата, очерчивающего лицо.

Если вы хотите, чтобы робот двигался вперед или назад, вам просто нужно учитывать W. Если W слишком велико (слишком близко), заставьте робота двигаться назад. Если W слишком мало (слишком далеко), пусть робот двинется вперед.

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

ЗАМЕТКА:

Если вы запустите любой из веб-примеров OpenCV, все они покажут реальное представление о том, что opencv «видит», с лицом, обведенным квадратом. Если вы заметите, этот квадрат не является устойчивым (постоянным), даже если вы не двигаетесь.

Эти изменяющиеся значения заставят робота постоянно двигаться вперед или назад, влево или вправо.

Таким образом, вам понадобится какая-то дельта для движения вперед / назад и влево / вправо.

Давайте возьмем левое против правого:

После того, как вы вычислили левую и правую стороны, получите разницу (дельту):

дельта = абс (слева - справа)

Вам нужно взять абсолют, потому что вы не знаете, какой из них будет большим.

Затем вы добавляете некоторый условный код, чтобы пытаться переместиться только в том случае, если дельта больше некоторого минимума.

Вы бы сделали то же самое для прямого и обратного.

Шаг 7: положение лица - движущийся робот

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

Поскольку эта инструкция находится в стадии разработки, на данный момент я просто скопировал код из своего большого робота, чтобы использовать его в этом проекте. Пожалуйста, посмотрите мой плейлист Robotics на YouTube, где все это подробно описано.

Короче говоря, код у меня послойно.

Скрипт распознавания лиц Python делает http-запросы к серверу Node.js

Сервер Node.js прослушивает HTTP-запросы для направления движения, преобразует их в собственный последовательный протокол.

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

Скетч Arduino, который выполняет фактические команды для перемещения робота

Курс Udemy не делает этого, как указано выше. Но поскольку я хотел добиться хороших результатов и сосредоточиться на фактическом распознавании изображений, я пока повторно использовал свой предыдущий код.

Рекомендуемые: