Съдържание:

Робот за проследяване на топка: 8 стъпки
Робот за проследяване на топка: 8 стъпки

Видео: Робот за проследяване на топка: 8 стъпки

Видео: Робот за проследяване на топка: 8 стъпки
Видео: Lesson 8: PICAR-X Robot Stares at you | Raspberry Pi Smart Robot car by SunFounder 2024, Ноември
Anonim
Робот за проследяване на топки
Робот за проследяване на топки
Робот за проследяване на топки
Робот за проследяване на топки
Робот за проследяване на топки
Робот за проследяване на топки

Така че в това, аз ще разкажа как да направя робот за проследяване на топка, който е робот, който ще идентифицира топка и ще я следва. По същество това е автоматизирана техника за наблюдение, която може да се използва в съвременния свят. Така че, просто нека се качим и започнем да изграждаме …

ЗАБЕЛЕЖКА: Това задание за част е изпратено до университета Deakin, IT School, SIT-210 Embedded Systems Development

Консумативи

www.hackster.io/junejarohan/ball-tracking-robot-7a9865

Стъпка 1: Въведение

Въведение
Въведение

Днешното наблюдение осигурява основен недостатък, който се основава на участието на хора, които, както всички знаем, могат лесно да бъдат разсеяни, така че беше от изключителна важност да открием система, която да наблюдава регионите автономно и непрекъснато. Също така искаме да идентифицираме отвратителни или нежелани неща и опасности, като същевременно вземаме решения и съответно реагираме. Следователно проследяването на обекти с използването на интелигентни системи и компютри е от съществено значение и е от решаващо значение за постигане на автоматизирано наблюдение.

Всяка външна система за наблюдение трябва да може да проследява движещи се в нейното зрително поле обекти, да класифицира тези обекти и да открива някои от техните дейности. Разработил съм метод за проследяване и класифициране на тези обекти в реалистични сценарии. Проследяването на обекти в една камера се извършва с помощта на изваждане на фона, последвано от съответствие на региона. Това взема предвид множество сигнали, включително скорости, размери и разстояния на ограничаващите кутии.

Стъпка 2: Материали и меки изделия, използвани в този проект

Материали и меки изделия, използвани в този проект
Материали и меки изделия, използвани в този проект
Материали и меки изделия, използвани в този проект
Материали и меки изделия, използвани в този проект
Материали и меки изделия, използвани в този проект
Материали и меки изделия, използвани в този проект

Използвани хардуерни компоненти:

  • Raspberry Pi (x1)
  • Модул за камера на Raspberry Pi (x1)
  • Ултразвуков сензор (x3)
  • SparkFun Dual H-Bridge драйвери на двигатели L298 (x1)
  • DC мотор (x1)
  • Платформа (x1)
  • Свързване на проводници

Използван софтуер:

OpenCV

Ръчни инструменти:

Python

Стъпка 3: Какво да правите?

Всяка външна система за наблюдение трябва да може да проследява движещи се в нейното зрително поле обекти, да класифицира тези обекти и да открива някои от техните дейности. Разработил съм метод за проследяване и класифициране на тези обекти в реалистични сценарии. Проследяването на обекти в една камера се извършва с помощта на изваждане на фона, последвано от съответствие на региона. Това взема предвид множество сигнали, включително скорости, размери и разстояния на ограничаващите кутии.

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

За анализ на изображението вземам всеки кадър и след това го маскирам с необходимия цвят. След това намирам всички контури и намирам най -големия сред тях и го свързвам в правоъгълник. И покажете правоъгълника на основното изображение и намерете координатите на центъра на правоъгълника.

Накрая ботът се опитва да донесе координатите на топката до центъра на нейната координатна ос. Ето как работи роботът. Това може да бъде допълнително подобрено чрез използване на IoT устройство като фотонна частица, което може да ви информира, когато нещо бъде открито и че роботът го следва или когато роботът е загубил следата му и сега се връща в базата.

За целите на обработката на изображения, трябва да инсталирате софтуер OpenCV на вашето малиново пи, което беше доста сложно за мен.

Можете да получите необходимата информация за инсталиране на OpenCV чрез тази връзка: щракнете тук

Стъпка 4: Схеми

Image
Image
Схеми
Схеми
Схеми
Схеми

По -горе съм предоставил схемите за моя проект и заедно с него е печатната платка (PCB).

И ето някои от основните връзки, които трябва да направите:

• На първо място модулът на Raspberry Pi Camera е директно свързан към Raspberry Pi.

• Ултразвуковите сензори VCC са свързани към общия терминал, същото е с GND (земята), а останалите два порта на ултразвуковия сензор са свързани към GPIO щифтовете на Raspberry Pi.

• Двигателите са свързани чрез H-Bridge.

• Захранването се захранва от батерията.

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

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

Стъпка 5: Как да постъпя?

Направих този проект, изобразяващ основен робот, който може да проследи топка. Роботът използва камера за обработка на изображения, като взема рамки и проследява топката. За проследяване на топката се използват различни функции като нейния цвят, размер, форма.

Роботът намира твърдо кодиран цвят и след това търси топката с този цвят и я следва. Избрах Raspberry Pi като микроконтролер в този проект, защото ни позволява да използваме модула на камерата и дава голяма гъвкавост в кода, тъй като използва език на python, който е много удобен за потребителя, а също така ни позволява да използваме OpenCV библиотека за анализ на изображенията.

H-Bridge е използван за превключване на посоката на въртене на двигателите или за спирането им.

За анализ на изображението вземам всеки кадър и след това го маскирам с необходимия цвят. След това намирам всички контури и намирам най -големия сред тях и го свързвам в правоъгълник. И покажете правоъгълника на основното изображение и намерете координатите на центъра на правоъгълника.

Накрая ботът се опитва да донесе координатите на топката до центъра на нейната координатна ос. Ето как работи роботът. Това може да бъде допълнително подобрено чрез използване на IoT устройство като фотонна частица, което може да ви позволи да бъдете информирани, когато нещо бъде открито и че роботът го следва или когато роботът е загубил следата му и сега се връща в базата. И за да направим това, ще използваме онлайн софтуерна платформа, която свързва устройствата и им позволява да извършват определени действия върху конкретни тригери, които са задействащи IFTTT.

Стъпка 6: Псевдокод

Псевдокод
Псевдокод

Ето псевдокода за частта за откриване, използваща OpenCV, където откриваме топка.

Стъпка 7: Код

Код
Код
Код
Код
Код
Код
Код
Код

По -горе са фрагментите на кода, а по -долу е подробното описание на кода.

# импортирайте необходимите пакети

ВНОСИМ ВСИЧКИ НЕОБХОДИМИ ПАКЕТИ

от picamera.array import PiRGBArray #Тъй като има проблем с разрешаването в малиново пи, няма да може да заснема кадри чрез VideoCapture

от пикамера импортиране PiCamera внос RPi. GPIO като GPIO време за импортиране импортиране numpy като np

СЕГА НАСТРОЙВАМЕ ХАРАКТЕРИСТИКАТА И НАЗНАЧАВАМЕ ПИН -кодовете, свързани към PI от малина

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) # Trigger GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO2, GPIO. IN) 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) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Задайте тригера на False (Нисък) GPIO.output (GPIO_TRIGGER, False) #Разрешете на модула да уреди time.sleep (0.01) #while distance> 5: #Изпратете 10us импулс за задействане на GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO. изход (GPIO_TRIGGER, False) begin = time.time () докато GPIO.input (GPIO_ECHO) == 0 и time.time ()

ПОЛУЧАВАНЕ НА ДВИГАТЕЛИТЕ НА ЕЛЕКТРОПОТРЕБА ДА РАБОТЯТ С PI НА МАЛИНАТА

GPIO.setup (MOTOR1B, GPIO. OUT)

GPIO.setup (MOTOR1E, GPIO. OUT)

GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)

ОПРЕДЕЛЯНЕ НА ФУНКЦИИТЕ ЗА РАБОТА НА РОБОТА И НАПРАВЯНЕТО ДВИЖЕНЕ В РАЗЛИЧНИ ПОСОКИ

def forward ():

GPIO.изход (MOTOR1B, GPIO. HIGH) GPIO.изход (MOTOR1E, GPIO. LOW) GPIO.изход (MOTOR2B, GPIO. HIGH) GPIO.изход (MOTOR2E, GPIO. LOW) деф., 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. (MOTOR1E, GPIO. HIGH), GPIO. LOW) GPIO.изход (MOTOR2B, GPIO. LOW) GPIO.изход (MOTOR2E, GPIO. HIGH)

def stop ():

GPIO.изход (MOTOR1E, GPIO. LOW) GPIO.изход (MOTOR1B, GPIO. LOW) GPIO.изход (MOTOR2E, GPIO. LOW) GPIO.изход (MOTOR2B, GPIO. LOW)

РАБОТА НА МОДУЛА НА КАМЕРАТА И РЕГУЛИРАНЕ НА НАСТРОЙКИТЕ

#КАМЕРА ЗАХВЪРЛЯНЕ

# инициализирайте камерата и вземете препратка към необработената камера за заснемане на камера = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (камера, размер = (160, 120)) # разрешете камерата до време за загряване.сън (0.001)

СЕГА ИЗПЪЛНЯВАЙТЕ ГЛАВНОТО НЕЩОТО БОТЪТ СЛЕДВА ТОПКАТА И ИЗБЯГВА ВСЕКИ ПРЕПЪЛНЕНИЯ ПО НАЧИНА

докато (1 <10): { #разстояние, идващо от разстоянието на предния ултразвуков сензор C = сонар (GPIO_TRIGGER2, GPIO_ECHO2) #разстояние, идващо от разстоянието на десния ултразвуков сензор R = сонар (GPIO_TRIGGER3, GPIO_ECHO3) #разстояние, идващо от лявото ултразвуково разстояние на сензора L = сонар (GPIO_TRIGER1, 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) #while found == 0: leftturn () time.sleep (0.00625) elif distanceL> = 8: leftturn () time.sleep (0.00625) stop () time.sleep (0.0125) forward () 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): #it носи координати на топката към центъра на въображаемата ос на камерата. if (centre_x = 20): if (centre_x0): flag = 1 leftturn () time.sleep (0.025) forward () time.sleep (0.00003125) stop () time.sleep (0.00625) else: 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)

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