Оглавление:
- Запасы
- Шаг 1. Введение
- Шаг 2: Материалы и программное обеспечение, использованные в этом проекте
- Шаг 3: что делать?
- Шаг 4: Схема
- Шаг 5: Как это сделать?
- Шаг 6: Псевдокод
- Шаг 7: Код
- Шаг 8: внешние ссылки
Видео: Робот для отслеживания мяча: 8 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Итак, в этой статье я расскажу, как сделать робота для отслеживания мяча, который будет распознавать мяч и следовать за ним. По сути, это автоматизированный метод наблюдения, который можно использовать в современном мире. Итак, давайте просто запрыгнем и начнем строить…
ПРИМЕЧАНИЕ. Это задание на деталь, представленное в Школу информационных технологий Университета Дикин, SIT-210 Embedded Systems Development
Запасы
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Шаг 1. Введение
Сегодняшнее наблюдение имеет серьезный недостаток, заключающийся в том, что оно основывается на участии людей, которых, как мы все знаем, можно легко отвлечь, поэтому крайне важно было найти систему, которая может контролировать регионы автономно и непрерывно. А также мы хотим выявлять неприятные или нежелательные вещи и опасности, одновременно принимая решения и реагировать соответствующим образом. Таким образом, отслеживание объектов с использованием интеллектуальных систем и компьютеров имеет решающее значение для достижения автоматизированного наблюдения.
Любая система наружного наблюдения должна иметь возможность отслеживать объекты, движущиеся в ее поле зрения, классифицировать эти объекты и обнаруживать некоторые из их действий. Я разработал метод отслеживания и классификации этих объектов в реалистичных сценариях. Слежение за объектом в одной камере выполняется с использованием вычитания фона с последующим соответствием регионов. При этом учитываются несколько сигналов, включая скорости, размеры и расстояния ограничивающих прямоугольников.
Шаг 2: Материалы и программное обеспечение, использованные в этом проекте
Используемые аппаратные компоненты:
- Малина Пи (x1)
- Модуль камеры Raspberry Pi (1 шт.)
- Ультразвуковой датчик (x3)
- Драйверы двигателя SparkFun Dual H-Bridge L298 (x1)
- Двигатель постоянного тока (x1)
- Макетная плата (x1)
- Подключение проводов
Используемое программное обеспечение:
OpenCV
Ручные инструменты:
Python
Шаг 3: что делать?
Любая система наружного наблюдения должна иметь возможность отслеживать объекты, движущиеся в ее поле зрения, классифицировать эти объекты и обнаруживать некоторые из их действий. Я разработал метод отслеживания и классификации этих объектов в реалистичных сценариях. Слежение за объектом в одной камере выполняется с использованием вычитания фона с последующим соответствием регионов. При этом учитываются несколько сигналов, включая скорости, размеры и расстояния ограничивающих прямоугольников.
Решающим моментом при покадровом обнаружении изображений было избегать выпадения кадров, так как тогда бот может перейти в состояние неопределенности, если бот не сможет заметить направление движения мяча из-за выпадения кадров. Если мяч выходит из зоны действия камеры, он переходит в то, что мы называем неопределенным состоянием, в этом случае бот делает поворот на 360 градусов, чтобы осмотреть пространство вокруг него, пока мяч не вернется в кадр. камеру, а затем начните движение в ее направлении.
Для анализа изображения я беру каждый кадр и затем маскирую его нужным цветом. Затем я нахожу все контуры, нахожу самый крупный из них и заключаю его в прямоугольник. И покажите прямоугольник на основном изображении и найдите координаты центра прямоугольника.
Наконец, бот пытается вывести координаты мяча в центр его координатной оси. Так работает робот. Это может быть дополнительно улучшено с помощью устройства IoT, такого как фотонная частица, которое может позволить вам быть в курсе, когда объект обнаружен и что робот следует за ним, или когда робот потерял его след и теперь возвращается на базу..
Для обработки изображений вам нужно установить программное обеспечение OpenCV на свой raspberry pi, что для меня было довольно сложно.
Вы можете получить любую необходимую информацию для установки OpenCV по этой ссылке: нажмите здесь
Шаг 4: Схема
Выше я предоставил схему для своего проекта, а также печатную плату (PCB).
И вот некоторые из основных подключений, которые вам нужно сделать:
• Прежде всего, модуль камеры Raspberry Pi напрямую подключен к Raspberry Pi.
• Ультразвуковые датчики VCC подключены к общему выводу, так же как и к GND (земле), а оставшиеся два порта ультразвукового датчика подключены к контактам GPIO на Raspberry Pi.
• Двигатели подключаются с помощью H-образного моста.
• Питание осуществляется от аккумулятора.
Я также добавил видео, которое может помочь понять принцип работы ультразвукового датчика.
а также вы можете перейти по этой ссылке, если не можете найти видео выше.
Шаг 5: Как это сделать?
Я сделал этот проект с изображением простого робота, который может отслеживать мяч. Робот использует камеру для обработки изображений, снимая кадры и отслеживая мяч. Для отслеживания мяча используются различные характеристики, такие как его цвет, размер, форма.
Робот находит жестко запрограммированный цвет, а затем ищет шарик этого цвета и следует за ним. Я выбрал Raspberry Pi в качестве микроконтроллера в этом проекте, потому что он позволяет нам использовать его модуль камеры и дает большую гибкость в коде, поскольку он использует язык Python, который очень удобен для пользователя, а также позволяет нам использовать библиотеку OpenCV для анализа изображений.
H-образный мост используется для переключения направления вращения двигателей или их остановки.
Для анализа изображения я беру каждый кадр и затем маскирую его нужным цветом. Затем я нахожу все контуры, нахожу самый крупный из них и заключаю его в прямоугольник. И покажите прямоугольник на основном изображении и найдите координаты центра прямоугольника.
Наконец, бот пытается вывести координаты мяча в центр его координатной оси. Так работает робот. Это может быть дополнительно улучшено с помощью устройства IoT, такого как фотонная частица, которое может позволить вам быть в курсе, когда объект обнаружен и что робот следует за ним, или когда робот потерял его след и теперь возвращается на базу.. И для этого мы будем использовать онлайн-платформу программного обеспечения, которая соединяет устройства и позволяет им выполнять определенные действия с определенными триггерами, то есть триггерами IFTTT.
Шаг 6: Псевдокод
Вот псевдокод для части обнаружения с использованием OpenCV, где мы обнаруживаем мяч.
Шаг 7: Код
Выше приведены фрагменты кода, а ниже - подробное описание кода.
# импортируем необходимые пакеты
ИМПОРТИРУЕМ ВСЕ НЕОБХОДИМЫЕ ПАКЕТЫ
from picamera.array import PiRGBArray # Поскольку в Raspberry Pi есть проблема с разрешением, не удастся захватить кадры с помощью VideoCapture
from picamera import PiCamera import RPi. GPIO as GPIO import time import numpy as np
ТЕПЕРЬ УСТАНАВЛИВАЕМ ОБОРУДОВАНИЕ И НАЗНАЧАЕМ ПИН-коды, ПОДКЛЮЧЕННЫЕ НА МАЛИНОВОМ ПИ.
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 # Левый ультразвуковой датчик
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 # Передний ультразвуковой датчик
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 # Правый ультразвуковой датчик
GPIO_ECHO3 = 35
MOTOR1B = 18 # Левый двигатель
MOTOR1E = 22
MOTOR2B = 21 # Правый двигатель
MOTOR2E = 19
LED_PIN = 13 # Если мяч найдет, то загорится светодиод
# Установить контакты как выход и вход
GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Запуск GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Запуск GPIO.setup (GPIO_ECHO2, GPIO. IN) GPIO.setup (GPIO_TRIGGER3, GPIO. OUT) # Запуск GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# Установите для триггера значение False (Low)
GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)
В ЭТОЙ ФУНКЦИИ ИСПОЛЬЗУЮТСЯ ВСЕ УЛЬТРАЗВУКОВЫЕ ДАТЧИКИ.
# Разрешить модулю урегулировать
def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Установить контакты как выход, а вход GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Триггер GPIO.setup (GPIO_ECHO, GPIO. IN) # Эхо # Установить триггер на False (Низкий) GPIO.output (GPIO_TRIGGER, False) # Разрешить модулю установить time.sleep (0,01) # на расстоянии> 5: # Отправить импульс 10us для запуска GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO. output (GPIO_TRIGGER, False) begin = time.time (), а GPIO.input (GPIO_ECHO) == 0 и time.time ()
НАСТРОЙКА ДВИГАТЕЛЕЙ ПОСТОЯННОГО ТОКА ДЛЯ РАБОТЫ С МАЛИНЫМИ
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
ОПРЕДЕЛЕНИЕ ФУНКЦИЙ ДЛЯ УПРАВЛЕНИЯ РОБОТОМ И ПРИВОДА ЕГО ДВИЖЕНИЯ В РАЗНЫХ НАПРАВЛЕНИЯХ
def forward ():
GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def reverse (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH)
def stop ():
GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW)
ПРИНЦИП ДЕЙСТВИЯ МОДУЛЯ КАМЕРЫ И НАСТРОЙКА НАСТРОЕК
# КАМЕРНЫЙ ЗАХВАТ
# инициализировать камеру и получить ссылку на необработанный снимок камеры camera = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (camera, size = (160, 120)) # разрешить камеру к времени разогрева. сна (0,001)
СЕЙЧАС ВЫПОЛНЯЙТЕ ГЛАВНОЕ, КОГДА БОТ СЛЕДУЕТ ЗА МЯЧОМ, И ИЗБЕГАЙТЕ ЛЮБЫХ ПРЕПЯТСТВИЙ НА ПУТИ.
while (1 <10): {# расстояние от переднего ультразвукового датчика distanceC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) # расстояние от правого ультразвукового датчика distanceR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) # расстояние от левого ультразвукового датчика distanceL = сонар (GPIO_TRIGGER1, GPIO_ECHO1) if (distanceC = 8: rightturn () time.sleep (0,00625) stop () time.sleep (0,0125) forward () time.sleep (0,00625) stop () time.sleep (0,0125) # пока найдено == 0: leftturn () time.sleep (0,00625) elif distanceL> = 8: leftturn () time.sleep (0,00625) stop () time.sleep (0,0125) вперед () time.sleep (0,00625) stop () time.sleep (0,0125) rightturn () time.sleep (0,00625) stop () time.sleep (0,0125) else: stop () time.sleep (0,01) else: # в противном случае он двигается вперед () time.sleep (0,00625) if (distanceC> 10): # он переносит координаты шара в центр воображаемой оси камеры. if (centre_x = 20): if (centre_x0): flag = 1 leftturn () time.sleep (0.025) forward () time.sleep (0.00003125)) stop () time.sleep (0,00625) иначе: stop () time.sleep (0,01)
еще:
# Если он находит мяч и находится слишком близко, загорается светодиод. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # очистить поток для подготовки к следующий кадр}
ПРОВОДИТЕ НЕОБХОДИМЫЕ ЧИСТКИ
GPIO.cleanup () # освободить все контакты GPIO
Шаг 8: внешние ссылки
Ссылка на демонстрационное видео: нажмите здесь (Youtube)
Ссылка на код на Git-hub: нажмите здесь (Git-Hub)
Рекомендуемые:
Призрак мяча для пинг-понга: 4 шага
Призрак мяча для пинг-понга: Создайте простого светящегося призрака, используя мяч для пинг-понга, светодиод и принадлежности для рукоделия. Это отличная недорогая поделка на Хэллоуин для классных комнат, клубов и рабочих мест. Помимо того, что это увлекательный и творческий проект, он учит основам того, как
Робот для отслеживания цвета на основе всенаправленного колеса и OpenCV: 6 шагов
Робот с отслеживанием цвета на основе всенаправленного колеса и OpenCV: я использую шасси с всенаправленным колесом для реализации своего отслеживания цвета, и я использую мобильное программное обеспечение под названием OpenCVBot. Спасибо разработчикам программного обеспечения здесь, спасибо. OpenCV Bot на самом деле обнаруживает или отслеживает любой объект в реальном времени с помощью обработки изображений в
Датчик скорости мяча для гольфа: 5 шагов
Датчик скорости мяча для гольфа: я не играю в гольф, но время от времени играю. Я слышал, что удар по мячу дальше зависит от скорости клюшки и мяча для гольфа, но понятия не имел, с какой скоростью я бью. У меня был радарный датчик OmniPreSense от Mouser, и я загрузил приложение, которое они
Автоматический метатель мяча для собак: 6 шагов
Автоматический метатель мяча для собак: у нас обоих есть собаки, и, как всем известно, собаки могут проводить весь день, играя в мяч. Вот почему мы придумали способ построить автоматический метатель мячей
Как собрать впечатляющую деревянную руку робота (Часть 1: Робот для отслеживания линии) - на основе Micro: Bit: 9 шагов
Как собрать впечатляющую деревянную руку робота (Часть 1: Робот для отслеживания линии) - На основе Micro: Bit: Этот деревянный парень имеет три формы, он очень отличается и впечатляет. Тогда давайте займемся этим один за другим