Мазмуну:

Ball Tracking робот: 8 кадам
Ball Tracking робот: 8 кадам

Video: Ball Tracking робот: 8 кадам

Video: Ball Tracking робот: 8 кадам
Video: KUKA KR240 L210 Robot System Demo - Available at Ballard International 2024, Ноябрь
Anonim
Ball Tracking роботу
Ball Tracking роботу
Ball Tracking роботу
Ball Tracking роботу
Ball Tracking роботу
Ball Tracking роботу

Ошентип, мен топту көзөмөлдөөчү роботту кантип жасоону айтып берейин, ал робот, ал топту аныктайт жана анын артынан ээрчийт. Бул негизинен заманбап дүйнөдө колдонула турган автоматташтырылган байкоо ыкмасы. Ошентип, жөн эле секирип, курулушту баштайлы …

ЭСКЕРТҮҮ: Бул бөлүк тапшырмасы Дикин университетине, IT мектебине, SIT-210 камтылган тутумдарды иштеп чыгууга тапшырылган

Жабдуулар

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 градуска бурулуп, топтун алкагына кайтып келгиче айланасындагы мейкиндикти көрөт. камера, анан анын багыты боюнча жыла баштайт.

Сүрөттү талдоо үчүн, мен ар бир кадрды алып, анан аны керектүү түс менен маскировкалап жатам. Анан мен бардык контурларды таап, алардын эң чоңун таап, аны тик бурчтукка байладым. Жана негизги сүрөттө тик бурчтукту көрсөтүп, тик бурчтуктун борборунун координаттарын табыңыз.

Акыры, бот топтун координаттарын анын координат огунун борборуна алып келүүгө аракет кылат. Робот мына ушундай иштейт. Муну Ion аппаратын фотон бөлүкчөсүнүн жардамы менен өркүндөтсө болот, ал сизге бир нерсе табылганда жана робот анын артынан ээрчип жүргөндө же робот анын изин жоготуп, эми базага кайтып келе жатканда кабарлоого мүмкүндүк берет..

Сүрөттү иштетүү үчүн, малина пиңизге OpenCV программасын орнотушуңуз керек, бул мен үчүн өтө татаал болчу.

Бул шилтеме аркылуу OpenCV орнотуу үчүн керектүү маалыматты ала аласыз: бул жерди басыңыз

4 -кадам: схемалар

Image
Image
Схемалар
Схемалар
Схемалар
Схемалар

Жогоруда мен долбоорумдун схемаларын бергем жана аны менен бирге Басылган схема (ПХБ) бар.

Жана бул жерде сиз эмне кылышыңыз керек болгон негизги байланыштар:

• Биринчиден, Raspberry Pi Camera модулу Raspberry Pi менен түз байланышта.

• Ultrasonic сенсорлор VCC жалпы терминалга GND (жер) менен туташкан жана УЗИ сенсорунун калган эки порту Raspberry Piдеги GPIO казыктарына туташкан.

• Моторлор H-Bridge аркылуу туташтырылган.

• Кубат Батарейка аркылуу берилет.

Мен ошондой эле УЗИ сенсорунун иштешин жана анын кантип иштээрин түшүнүүгө жардам бере турган видеону коштум.

жана эгер сиз жогорудагы видеону таба албасаңыз, бул шилтемени караңыз.

5 -кадам: Кантип кылыш керек?

Мен бул долбоордо топту көздөй ала турган негизги роботту чагылдырдым. Робот камераны колдонуп, кадрларды тартып, топту көзөмөлдөө менен сүрөттү иштетет. Топту көзөмөлдөө үчүн анын түсү, өлчөмү, формасы сыяктуу ар кандай өзгөчөлүктөр колдонулат.

Робот катуу коддолгон түстү табат, анан ошол түстөгү топту издеп, анын артынан ээрчийт. Мен бул долбоордо Raspberry Pi'ни микро контроллер катары тандап алдым, анткени ал бизге камера модулун колдонууга мүмкүндүк берет жана кодго чоң ийкемдүүлүктү берет, анткени ал питон тилин колдонот жана колдонуучуларга абдан ыңгайлуу, ошондой эле сүрөттөрдү талдоо үчүн OpenCV китепканасын колдонууга мүмкүнчүлүк берет.

H-Bridge моторлордун айлануу багытын которуу же токтотуу үчүн колдонулган.

Сүрөттү талдоо үчүн, мен ар бир кадрды алып, анан аны керектүү түс менен маскировкалап жатам. Анан мен бардык контурларды таап, алардын ичинен эң чоңун таап, аны тик бурчтукка байладым. Жана негизги сүрөттө тик бурчтукту көрсөтүп, тик бурчтуктун борборунун координаттарын табыңыз.

Акыры, бот топтун координаттарын анын координат огунун борборуна алып келүүгө аракет кылат. Робот мына ушундай иштейт. Муну Ion аппаратын фотон бөлүкчөсүнүн жардамы менен өркүндөтсө болот, ал сизге бир нерсе табылганда жана робот анын артынан ээрчип жүргөндө же робот анын изин жоготуп, эми базага кайтып келе жатканда кабарлоого мүмкүндүк берет.. Бул үчүн биз түзмөктөрдү туташтыруучу жана IFTTT триггерлери болгон конкреттүү триггерлер боюнча белгилүү бир аракеттерди жасоого мүмкүндүк бере турган онлайн программалык платформаны колдонобуз.

6-кадам: Псевдо-код

Жасалма коду
Жасалма коду

Бул жерде биз топту ачкан OpenCV аркылуу аныктоо бөлүгүнүн жасалма коду.

7 -кадам: Код

Code
Code
Code
Code
Code
Code
Code
Code

Жогоруда коддун үзүндүлөрү, ал эми коддун деталдуу сүрөттөлүшү.

# керектүү пакеттерди импорттоо

БАРДЫК КЕРЕКТҮҮ ПАКЕТТЕРДИ ИМПОРТТОЙБУЗ

picamera.array импортунан PiRGBArray #Малина пи боюнча чечилүү көйгөйү болгондуктан, VideoCapture менен кадрларды тарта албайт

пикамерадан импорттон PiCamera импорттоо RPi. GPIO катары GPIO импорттоо убактысы

Азыр биз жабдууну орнотуп, RASPBERRY PIге туташкан PIN коддорду дайындайбыз

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.set GPIO_TRIGGER3, GPIO. OUT) # Trigger 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): баштоо = 0 токтотуу = 0 # Чыккычтарды чыгаруу жана киргизүү катары коюу GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Exo # Set trigger in False (Төмөн) GPIO.output (GPIO_TRIGGER, False) #Модулга убакытты жөнгө салууга уруксат берүү.уюу (0.01) #аралыкта> 5: #GPus.output (GPIO_TRIGGER, Чыныгы) time.sleep (0.00001) GPIO. чыгаруу (GPIO_TRIGGER, False) баштоо = time.time () GPIO.input (GPIO_ECHO) == 0 жана time.time ()

DC MOTORSту Raspberbery PI менен иштөөгө алуу

GPIO.setup (MOTOR1B, GPIO. OUT)

GPIO.setup (MOTOR1E, GPIO. OUT)

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

РОБОТТУ ИШТЕТҮҮ ҮЧҮН ФУНКЦИЯЛАРЫН АНЫКТОО

def forward ():

GPIO.utput (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH), GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) defthturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.put (MOTOR1E, GPIO. HIGH), 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)

КАМЕРА МОДУЛУН ИШТЕТҮҮ ЖАНА ЖӨНДӨӨЛӨРДҮ ТҮЗӨТҮҮ

#КАМЕРА тартуу

# камераны баштоо жана чийки камераны тартуу камерасына = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (камера, өлчөм = (160, 120)) # шилтемени алыңыз жылытуу убактысына.уйку (0.001)

ЭМИ БАШКЫ ИШТИ ИШКЕ АШЫРЫҢЫЗ, БУТ БОЛГОНДО ЖАНА ЭЧ КАНДАЙ БУТКУЛДУКТАН ЖОК.

while (1 <10): { #алыскы ультрадыбыштуу сенсор аралыктан келе жататC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #расстояние ультразвуковый сенсор аралыгыR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #сол аралыктан келген аралык, GPIO_ECHO1) if (қашықтықC = 8: оңго () 0: солго () убакыт.уйку (0,00625) элиф расстояние L> = 8: солго () убакыт. (0.0125) оңго () убакыт.уйку (0.00625) токтоо () убакыт.уйку (0.0125) башка: токтотуу () убакыт.уктоо (0.01) башка: #башкача айтканда алдыга жылат () убакыт.уйку (0.00625) эгер (расстояние C> 10): #it шардын координаттарын камеранын элестүү огунун борборуна алып келет. if (centre_x = 20): if (centre_x0): flag = 1 leftturn () time.yleep (0.025) алдыга () time.sleep (0.00003125)) токтоо () убакыт.уйку (0.00625) башка: токтотуу () убакыт.уктоо (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)

Сунушталууда: