Агуулгын хүснэгт:

Бөмбөг хянах робот: 8 алхам
Бөмбөг хянах робот: 8 алхам

Видео: Бөмбөг хянах робот: 8 алхам

Видео: Бөмбөг хянах робот: 8 алхам
Видео: Камера ANBIUX ДВУГЛАЗКА УДИВИЛА после ОБНОВЛЕНИЯ!!! 2024, Арваннэгдүгээр
Anonim
Бөмбөг хянах робот
Бөмбөг хянах робот
Бөмбөг хянах робот
Бөмбөг хянах робот
Бөмбөг хянах робот
Бөмбөг хянах робот

Тиймээс, би хэрхэн бөмбөг мөрдөх робот болох талаар робот бол бөмбөгийг тодорхойлж, түүнийг дагах болно. Энэ нь үндсэндээ орчин үеийн ертөнцөд ашиглаж болох автомат тандалтын техник юм. Тиймээс, зүгээр л үсрээд барилга барьж эхэлцгээе …

ТАЙЛБАР: Энэхүү даалгаврыг Deakin их сургууль, Мэдээллийн технологийн сургууль, SIT-210 Embedded System 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 төхөөрөмжийг ашиглан сайжруулах боломжтой бөгөөд энэ нь ямар нэгэн зүйл илрэх, робот түүнийг дагаж байгаа эсвэл робот замаа алдаж, одоо бааз руугаа буцаж ирэх үед танд мэдэгдэх боломжийг танд олгоно..

Зураг боловсруулахын тулд та миний бөөрөлзгөнө pi дээр OpenCV програм суулгах хэрэгтэй бөгөөд энэ нь надад маш хэцүү байсан.

OpenCV -ийг суулгахын тулд шаардлагатай бүх мэдээллийг энэ линкээр дамжуулан авах боломжтой: энд дарна уу

Алхам 4: Схем

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

Дээрх би төслийнхөө схемийг өгсөн бөгөөд түүнтэй хамт Хэвлэсэн хэлхээний самбар (ПХБ) байна.

Таны хийх ёстой гол холболтуудын заримыг энд оруулав.

• Юуны өмнө Raspberry Pi Camera модуль нь Raspberry Pi -тэй шууд холбогддог.

• Хэт авианы мэдрэгч VCC нь GND (газардуулгатай) ердийн терминал руу холбогдсон бөгөөд хэт авианы мэдрэгчийн үлдсэн хоёр порт нь Raspberry Pi дээрх GPIO зүүтэй холбогдсон байна.

• Моторуудыг H-Bridge ашиглан холбосон.

• Эрчим хүчийг батерей ашиглан нийлүүлдэг.

Би хэт авианы мэдрэгчийн ажиллах, хэрхэн ажилладаг талаар ойлгоход туслах видеог нэмж оруулсан болно.

мөн хэрэв та дээрх видеог олж чадахгүй бол энэ линкийг дагаж болно.

Алхам 5: Хэрхэн хийх вэ?

Би бөмбөг дагаж чаддаг үндсэн роботыг дүрсэлсэн энэхүү төслийг хийсэн. Робот нь камер ашиглан дүрс боловсруулж, жааз авч бөмбөгийг ажигладаг. Бөмбөгийг хянахын тулд түүний өнгө, хэмжээ, хэлбэр гэх мэт янз бүрийн онцлог шинж чанаруудыг ашигладаг.

Робот нь хатуу кодтой өнгийг олж, дараа нь тэр өнгийн бөмбөгийг хайж, түүнийг дагаж мөрддөг. Би энэ төсөлд Raspberry Pi-ийг микро хянагчаар сонгосон, учир нь энэ нь камерын модулийг ашиглах боломжийг олгодог бөгөөд хэрэглэгчид ээлтэй питон хэлийг ашигладаг тул кодонд маш уян хатан байдлыг өгдөг бөгөөд мөн зургийг шинжлэхэд OpenCV номын санг ашиглах боломжийг олгодог.

H-Bridge нь моторын эргэлтийн чиглэлийг өөрчлөх эсвэл зогсооход ашиглагддаг.

Зургийн дүн шинжилгээ хийхийн тулд би хүрээ бүрийг авч, дараа нь шаардлагатай өнгөөр будаж байна. Дараа нь би бүх контурыг олж, хамгийн томыг нь олж, тэгш өнцөгтөөр боож өгнө. Мөн үндсэн дүрс дээр тэгш өнцөгтийг үзүүлээд тэгш өнцөгтийн төвийн координатыг олоорой.

Эцэст нь бот нь координатын тэнхлэгийнхээ төвд бөмбөгний координатыг авчрахыг хичээдэг. Робот ингэж ажилладаг. Үүнийг фотон тоосонцор гэх мэт IoT төхөөрөмжийг ашиглан сайжруулах боломжтой бөгөөд энэ нь ямар нэгэн зүйл илрэх, робот түүнийг дагаж байгаа эсвэл робот замаа алдаж, одоо сууриндаа буцаж ирэх үед танд мэдэгдэх боломжийг олгодог.. Үүнийг хийхийн тулд бид төхөөрөмжийг холбосон онлайн IFTTT триггер дээр тодорхой үйлдэл хийх боломжийг олгодог програм хангамжийн платформыг ашиглах болно.

Алхам 6: Псевдо код

Хуурамч код
Хуурамч код

OpenCV ашиглан бөмбөг илрүүлэх хэсгийн хуурамч кодыг энд харуулав.

Алхам 7: Код

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

Дээрх кодын хэсгүүд, доорх кодын дэлгэрэнгүй тайлбар байна.

# шаардлагатай багцуудыг импортлох

Бид хэрэгцээтэй бүх багцыг импортлодог

picamera.array импортоос PiRGBArray #Бөөрөлзгөнө pi -д шийдвэрлэх асуудал гардаг тул VideoCapture -ээр жааз авах боломжгүй болно.

пикамерын импортоос PiCamera импортлох RPi. GPIO GPIO импортын цаг 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. тохиргоо (GPIO_TRIGGER1, GPIO. OUT) # GPIO. тохиргоог өдөөх (GPIO_ECHO1, GPIO. IN) # Цуурай GPIO. тохиргоо (GPIO_TRIGGER2, GPIO. OUT) GPIO_TRIGGER3, GPIO. OUT) # GPIO. тохиргоог өдөөх (GPIO_ECHO3, GPIO. IN) GPIO. тохиргоо (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.output (GPIO_TRIGGER, False) #Модулийг цагийг тохируулахыг зөвшөөрөх. Унтах (0.01) #зай> 5: #GPIO.output (GPIO_TRIGGER, Үнэн) цагийг эхлүүлэхийн тулд 10us импульс илгээнэ. Унтах (0.00001) GPIO. гаралт (GPIO_TRIGGER, False) эхлэх = time.time () байхад GPIO.input (GPIO_ECHO) == 0 ба time.time ()

DC MOTORS -ийг Raspberberry PI -тэй ажиллахад хүргэж байна

GPIO. тохиргоо (MOTOR1B, GPIO. OUT)

GPIO. тохиргоо (MOTOR1E, GPIO. OUT)

GPIO. тохиргоо (MOTOR2B, GPIO. OUT) GPIO. тохиргоо (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 урвуу GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.utput (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, 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 (camera, size = (160, 120)) # камерыг зөвшөөрөх дулаарах цаг. унтах (0.001)

ОДОО БӨМБӨГИЙН ДАГААР ХААГДАХ ҮНДСЭН ЗҮЙЛИЙГ ХЭРЭГЖҮҮЛЖ, АРГА ХЭРЭГТЭЙ СОДОЛГООСООС ОРОЛЦОХГҮЙ.

while (1 <10): { #урд хэт авианы мэдрэгчийн зайнаас ирж буй зайC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #баруун хэт авианы мэдрэгчийн зайнаас ирж буй зайR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #зүүн хэт авианы мэдрэгчийн зай, GPIO_ECHO1) if (distanceC = 8: rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) урагш () time.sleep (0.00625) stop () time.sleep (0.0125) #while found == 0: зүүн тийш эргэх () цаг. Унтах (0.00625) elif зай (0.0125) rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) other: stop () time.sleep (0.01) other: #other aks it it's forward урагшлах () time.sleep (0.00625) if (зай C> 10): #Энэ нь бөмбөгний координатыг камерын төсөөллийн тэнхлэгийн төвд авчирдаг. if (centre_x = 20): if (centre_x0): flag = 1 leftturn () time.sleep (0.025) урагш () time.sleep (0.00003125)) stop () time.sleep (0.00625) other: 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)

Зөвлөмж болгож буй: