Мазмуну:
- Жабдуулар
- 1 -кадам: Киришүү
- 2-кадам: Бул долбоордо колдонулган материалдар жана жумшак буюмдар
- 3 -кадам: Эмне кылыш керек?
- 4 -кадам: схемалар
- 5 -кадам: Кантип кылыш керек?
- 6-кадам: Псевдо-код
- 7 -кадам: Код
- 8 -кадам: Тышкы шилтемелер
Video: Ball Tracking робот: 8 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Ошентип, мен топту көзөмөлдөөчү роботту кантип жасоону айтып берейин, ал робот, ал топту аныктайт жана анын артынан ээрчийт. Бул негизинен заманбап дүйнөдө колдонула турган автоматташтырылган байкоо ыкмасы. Ошентип, жөн эле секирип, курулушту баштайлы …
ЭСКЕРТҮҮ: Бул бөлүк тапшырмасы Дикин университетине, 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 -кадам: схемалар
Жогоруда мен долбоорумдун схемаларын бергем жана аны менен бирге Басылган схема (ПХБ) бар.
Жана бул жерде сиз эмне кылышыңыз керек болгон негизги байланыштар:
• Биринчиден, Raspberry Pi Camera модулу Raspberry Pi менен түз байланышта.
• Ultrasonic сенсорлор VCC жалпы терминалга GND (жер) менен туташкан жана УЗИ сенсорунун калган эки порту Raspberry Piдеги GPIO казыктарына туташкан.
• Моторлор H-Bridge аркылуу туташтырылган.
• Кубат Батарейка аркылуу берилет.
Мен ошондой эле УЗИ сенсорунун иштешин жана анын кантип иштээрин түшүнүүгө жардам бере турган видеону коштум.
жана эгер сиз жогорудагы видеону таба албасаңыз, бул шилтемени караңыз.
5 -кадам: Кантип кылыш керек?
Мен бул долбоордо топту көздөй ала турган негизги роботту чагылдырдым. Робот камераны колдонуп, кадрларды тартып, топту көзөмөлдөө менен сүрөттү иштетет. Топту көзөмөлдөө үчүн анын түсү, өлчөмү, формасы сыяктуу ар кандай өзгөчөлүктөр колдонулат.
Робот катуу коддолгон түстү табат, анан ошол түстөгү топту издеп, анын артынан ээрчийт. Мен бул долбоордо Raspberry Pi'ни микро контроллер катары тандап алдым, анткени ал бизге камера модулун колдонууга мүмкүндүк берет жана кодго чоң ийкемдүүлүктү берет, анткени ал питон тилин колдонот жана колдонуучуларга абдан ыңгайлуу, ошондой эле сүрөттөрдү талдоо үчүн OpenCV китепканасын колдонууга мүмкүнчүлүк берет.
H-Bridge моторлордун айлануу багытын которуу же токтотуу үчүн колдонулган.
Сүрөттү талдоо үчүн, мен ар бир кадрды алып, анан аны керектүү түс менен маскировкалап жатам. Анан мен бардык контурларды таап, алардын ичинен эң чоңун таап, аны тик бурчтукка байладым. Жана негизги сүрөттө тик бурчтукту көрсөтүп, тик бурчтуктун борборунун координаттарын табыңыз.
Акыры, бот топтун координаттарын анын координат огунун борборуна алып келүүгө аракет кылат. Робот мына ушундай иштейт. Муну Ion аппаратын фотон бөлүкчөсүнүн жардамы менен өркүндөтсө болот, ал сизге бир нерсе табылганда жана робот анын артынан ээрчип жүргөндө же робот анын изин жоготуп, эми базага кайтып келе жатканда кабарлоого мүмкүндүк берет.. Бул үчүн биз түзмөктөрдү туташтыруучу жана IFTTT триггерлери болгон конкреттүү триггерлер боюнча белгилүү бир аракеттерди жасоого мүмкүндүк бере турган онлайн программалык платформаны колдонобуз.
6-кадам: Псевдо-код
Бул жерде биз топту ачкан OpenCV аркылуу аныктоо бөлүгүнүн жасалма коду.
7 -кадам: Код
Жогоруда коддун үзүндүлөрү, ал эми коддун деталдуу сүрөттөлүшү.
# керектүү пакеттерди импорттоо
БАРДЫК КЕРЕКТҮҮ ПАКЕТТЕРДИ ИМПОРТТОЙБУЗ
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)
Сунушталууда:
LED стол тенниси Ball-Ball: 16 кадам (Сүрөттөр менен)
LED стол тенниси боюнча топ-топ: Backstory Бир аз убакыт мурун стол тенниси топторунун жалпак панелин кургандан кийин, стол теннисинин топторунан 3D панелин жасоого болобу деп ойлоно баштадым. Менин " искусство " кайталануучу геометриялык фигуралардан I
DIY Smart Robot Tracking Car Kitts Tracking Car Photosensitivity: 7 кадам
DIY Smart Robot Tracking Car Kitts Tracking Car Photosensitivity: Дизайн SINONING ROBOTтун көзөмөлүнөн робот автомобилин сатып алсаңыз болот TheMeLM393 чипи эки фоторезисторду салыштырып көрүңүз, бир жагында фоторезистор бар болсо, мотордун капталы дароо токтойт, мотордун экинчи тарабы айлануу, ошентип
Баланстоочу робот / 3 дөңгөлөк робот / STEM робот: 8 кадам
Баланстоочу робот / 3 дөңгөлөктүү робот / STEM роботу: Биз мектептерде жана мектептен кийинки билим берүү программаларында билим берүү үчүн аралаш балансташтырууну жана 3 дөңгөлөктүү роботту курдук. Робот Arduino Unoго негизделген, колдонуучу калкан (курулуштун бардык деталдары келтирилген), Li Ion батарейкаларынын пакети (бардык курулуш
Таасирдүү жыгач роботту кантип чогултуу керек (Part1: Line-tracking үчүн робот)-Micro: Bit: 9 Steps негизинде
Кантип таасирдүү жыгач робот колун чогултуу керек (1-бөлүк: Line-tracking үчүн робот)-Micro: Bit негизделген: Бул жыгач жигиттин үч формасы бар, ал такыр башкача жана таасирдүү. Анда келгиле, ага бирден кирели
Ball Tracking 180 ° Камера: 5 кадам (Сүрөттөр менен)
Ball Tracking 180 ° Камера: Менин биринчи долбоорума кош келиңиз! Мен жасаган нерселерим менен бөлүшүүгө кубанычтамын жана сизге өзүңүздүн көзөмөл камераңызды куруу кадамдарын көрсөтүп жатам. Бул долбоор Python менен бирдикте OpenCV китепканасынын жардамы менен мүмкүн болду