Оглавление:
- Шаг 1. Необходимые компоненты
- Шаг 2: Строение тела
- Шаг 3. Подключение и кодирование
- Шаг 4: Raspberry Pi и распознавание изображений
- Шаг 5: ЖК-дисплей и динамик
- Шаг 6: Заключительные шаги
Видео: NAIN 1.0 - базовый робот-гуманоид, использующий Arduino: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Nain 1.0 будет иметь в основном 5 съемных модулей -
1) Arm - которым можно управлять с помощью сервоприводов.
2) Колеса - которыми можно управлять с помощью двигателей постоянного тока.
3) Нога - Наин сможет переключаться между колесами или ногами для движения.
4) Голова - ее головой можно управлять для различных кивков.
5) Модуль камеры - который может быть подключен для доступа к распознаванию лиц.
Наряду с этим NAIN сможет разговаривать и взаимодействовать с пользователями и может показывать вам время по встроенным часам. У него будет беспроводное управление с помощью Wi-Fi / Bluetooth.
Шаг 1. Необходимые компоненты
- Серводвигатели -4
- Ардуино Мега - 1
- Малина Пи - 1
- USB-камера -1
- Спикер -1
- Двигатели постоянного тока -2
- L293D -1
- Аккумулятор - 1
- Колеса -2
- Колеса - 2 шт.
Наряду с этим вам понадобятся алюминиевые квадратные полоски для изготовления корпуса, а также винты и гайки, чтобы они правильно поместились.
Шаг 2: Строение тела
Конструкция кузова будет изготовлена из легких алюминиевых стержней квадратного сечения, что облегчит его сборку.
На данный момент соберите их, как показано на рисунке, а также вырежьте необходимые места для серводвигателей, которые будут прикреплены к рычагам.
Снизу прикрепите шестигранную деревянную основу.
Под деревянным основанием прикрепите двигатели постоянного тока и колеса, как мы делаем с любым роботом-повторителем линии.
Интересно, что добавьте два поворотных колеса - одно спереди, а другое сзади.
Шаг 3. Подключение и кодирование
Чтобы подключить различные модули, обратитесь к кодам, прилагаемым в этой части.
Сначала мы протестировали каждый модуль, используя отдельные коды, а затем объединили их все в один и контролировали движение колес и рычагов с помощью модуля Bluetooth.
Шаг 4: Raspberry Pi и распознавание изображений
Распознавание изображений выполняется с помощью USB-камеры и Raspberry Pi.
Для этого вам нужно будет установить библиотеку OPEN CV на свой Pi.
Вы можете сделать это здесь -
Затем вам нужно будет выполнить распознавание изображений с помощью каскада хаара.
Вы можете сделать это отсюда -
Изучив приведенную выше ссылку и следуя ей, я внес некоторые изменения в окончательный код, который я использовал, который я вставляю ниже -
ГЕНЕРАТОР НАБОРА ДАННЫХ:
importcv2
cam = cv2. VideoCapture (0)
детектор = cv2. CascadeClassifier ('Классификаторы / face.xml')
я = 0
смещение = 50
name = raw_input ('введите свой идентификатор')
в то время как True:
ret, im = cam.read ()
серый = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
Faces = Detect.detectMultiScale (серый, scaleFactor = 1.2, minNeighbors = 5, minSize = (100, 100), flags = cv2. CASCADE_SCALE_IMAGE)
для (x, y, w, h) в гранях:
я = я + 1
cv2.imwrite ("dataSet / face." + name + '.' + str (i) + ".jpg", серый [y-смещение: y + h + смещение, x-смещение: x + w + смещение])
cv2.rectangle (im, (x-50, y-50), (x + w + 50, y + h + 50), (225, 0, 0), 2)
cv2.imshow ('im', im [y-смещение: y + h + смещение, x-смещение: x + w + смещение])
если cv2.waitKey (100) & 0xFF == ord ('q'):
перерыв
# прервать, если количество отсчетов больше 20
элиф (я> 20):
перерыв
cam.release ()
cv2.destroyAllWindows ()
Он создаст набор данных ваших фотографий, который будет использоваться для аутентификации.
ТРЕНЕР:
importcv2, ОС
импортировать numpy как np
из PIL импорта изображения
распознаватель = cv2.face.createLBPHFaceRecognizer ()
cascadePath = "Классификаторы / face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
путь = 'набор данных'
def get_images_and_labels (путь):
image_paths = [os.path.join (путь, f) для f в os.listdir (путь)]
# изображения будут содержать изображения лиц
images =
# метки будут содержать метку, назначенную изображению
label =
для image_path в image_paths:
# Прочитать изображение и преобразовать его в оттенки серого
image_pil = Image.open (image_path).convert ('L')
# Преобразовать формат изображения в массив numpy
изображение = np.array (image_pil, 'uint8')
# Получить метку изображения
nbr = int (os.path.split (image_path) [- 1].split (".") [1].replace ("face-", ""))
# nbr = int (''. join (str (ord (c)) для c в nbr))
распечатать номер
# Определить лицо на изображении
Faces = faceCascade.detectMultiScale (изображение)
# Если лицо обнаружено, добавить лицо к изображениям и метку к этикеткам
для (x, y, w, h) в гранях:
images.append (изображение [y: y + h, x: x + w])
label.append (число)
cv2.imshow («Добавление лиц в обучающий набор…», изображение [y: y + h, x: x + w])
cv2.waitKey (10)
# вернуть список изображений и список ярлыков
вернуть изображения, ярлыки
изображения, метки = get_images_and_labels (путь)
cv2.imshow ('тест', изображения [0])
cv2.waitKey (1)
распознаватель.train (изображения, np.array (метки))
распознаватель.save ('трейнер / трейнер.yml')
cv2.destroyAllWindows ()
ДЕТЕКТОР
importcv2
импортировать numpy как np
импорт ОС
с = 0
распознаватель = cv2.face.createLBPHFaceRecognizer ()
распознаватель.load ('trainer / trainer.yml')
cascadePath = "Классификаторы / face.xml"
faceCascade = cv2. CascadeClassifier (cascadePath);
cam = cv2. VideoCapture (0)
fontface = cv2. FONT_HERSHEY_SIMPLEX
fontscale = 1
fontcolor = (255, 255, 255)
в то время как True:
ret, im = cam.read ()
серый = cv2.cvtColor (im, cv2. COLOR_BGR2GRAY)
Faces = faceCascade.detectMultiScale (серый, 1,2, 5)
для (x, y, w, h) в гранях:
cv2.rectangle (im, (x-50, y-50), (x + w + 50, y + h + 50), (225, 0, 0), 2)
Id = распознаватель.predict (серый [y: y + h, x: x + w])
если (Id <70):
если (Id == 1):
Id = "Шашанк"
elif (Id == 2):
если (c == 0):
Id = "Шивам"
с = с + 1
os.system («espeak 'Добро пожаловать в Shivam Access Granted'»)
еще:
Id = "Шивам"
еще:
Id = "Неизвестно"
cv2.putText (im, str (Id), (x, y + h), fontface, fontscale, fontcolor)
cv2.imshow ('им', им)
если cv2.waitKey (10) & 0xFF == ord ('q'):
перерыв
cam.release ()
cv2.destroyAllWindows ()
Шаг 5: ЖК-дисплей и динамик
Я также использовал светодиодный дисплей I2C и динамик.
Светодиод управляется через Arduino Mega, и его код указан в окончательном коде.
Что касается динамика, он подключен к Raspberry Pi и использует утилиту eSpeak.
Вы можете найти его ссылку здесь -
Шаг 6: Заключительные шаги
Соберите все и приготовьтесь к взрыву.
Рекомендуемые:
Робот, избегающий препятствий, использующий Arduino Nano: 5 шагов
Робот, избегающий препятствий, использующий Arduino Nano: в этой инструкции я собираюсь описать, как вы можете сделать робота, избегающего препятствий, с помощью Arduino
Робот, следующий за человеком, использующий Arduino Uno ниже 20 $: 9 шагов
Человек следует за роботом с использованием Arduino Uno Ниже 20 $: я сделал этого робота около года назад, и мне он очень понравился, он может следовать за вами где угодно и где угодно. это лучшая альтернатива для собаки. он все еще со мной до сих пор. У меня также есть канал на YouTube, где вы можете увидеть процесс создания в vi
Робот с уклонением от ультразвука, использующий Arduino: 7 шагов
Робот Utrasonic Avoidance с использованием Arduino: В этом уроке я покажу вам, как создать своего собственного робота, избегающего препятствий! Мы будем использовать плату Arduino UNO и ультразвуковой датчик. Если робот обнаруживает объект перед собой, с помощью небольшого серводвигателя он сканирует область слева от
Робот с дистанционным управлением, использующий Arduino и ТВ-пульт: 11 шагов
Робот с дистанционным управлением с использованием Arduino и TV Remote: этот автомобиль с дистанционным управлением можно перемещать с помощью практически любого пульта дистанционного управления, такого как телевизор, кондиционер и т. Д., Он использует тот факт, что пульт излучает ИК (инфракрасный). из-за использования ИК-приемника, который является очень дешевым датчиком. В
Робот для объезда препятствий, использующий привод двигателя L298n: 5 шагов
Робот для обхода препятствий, использующий драйвер двигателя L298n: привет, ребята, сегодня мы сделаем этого робота .. надеюсь, вам понравится