Агуулгын хүснэгт:
- Хангамж
- Алхам 1: Танилцуулга
- Алхам 2: Энэхүү төсөлд ашигласан материал ба зөөлөн эд зүйлс
- Алхам 3: Юу хийх вэ?
- Алхам 4: Схем
- Алхам 5: Хэрхэн хийх вэ?
- Алхам 6: Псевдо код
- Алхам 7: Код
- Алхам 8: Гадаад холбоосууд
Видео: Бөмбөг хянах робот: 8 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:01
Тиймээс, би хэрхэн бөмбөг мөрдөх робот болох талаар робот бол бөмбөгийг тодорхойлж, түүнийг дагах болно. Энэ нь үндсэндээ орчин үеийн ертөнцөд ашиглаж болох автомат тандалтын техник юм. Тиймээс, зүгээр л үсрээд барилга барьж эхэлцгээе …
ТАЙЛБАР: Энэхүү даалгаврыг 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: Схем
Дээрх би төслийнхөө схемийг өгсөн бөгөөд түүнтэй хамт Хэвлэсэн хэлхээний самбар (ПХБ) байна.
Таны хийх ёстой гол холболтуудын заримыг энд оруулав.
• Юуны өмнө 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)
Зөвлөмж болгож буй:
DIY ухаалаг робот хянах машины иж бүрдэл Машины гэрэл мэдрэмтгий байдлыг хянах: 7 алхам
DIY ухаалаг робот хянах машины иж бүрдэл Машины гэрэл мэдрэмтгий байдлыг хянах: SINONING ROBOT -ийн загвараар та робот машиныг онлайнаар худалдаж авах боломжтой TheoryLM393 чип нь хоёр фоторезисторыг харьцуулж үзээрэй. эргэх, ингэснээр
Гэрийн тэжээвэр робот бөмбөг: 10 алхам (зурагтай)
Гэрийн тэжээвэр робот бөмбөг: Миний гэрийн тэжээвэр нохой хөөж чадах тоглоомоор тоглох дуртай! Би робот бөмбөг бүтээсэн бөгөөд тэр түүнтэй харилцах бүрт автоматаар эргэж, гар утсаараа дамжуулан надад мэдэгдэж, дараа нь үүнийг WiFi болон сэрвээ ашиглан удирдах боломжтой болно
Гайхамшигтай модон робот гарыг хэрхэн яаж угсрах вэ (1-р хэсэг: Шугамыг хянах робот)-Микро: Бит: 9 алхам
Гайхамшигтай модон робот гарыг хэрхэн яаж угсрах вэ (1-р хэсэг: Шугамыг хянах робот)-Micro: Bit дээр үндэслэсэн: Энэ модон залуу гурван хэлбэртэй бөгөөд энэ нь маш өөр бөгөөд гайхалтай. Дараа нь үүнийг нэг нэгээр нь оруулцгаая
Бичил замгийн энгийн булингартай байдлыг хянах, хянах систем: 4 алхам
Бичил замагны энгийн булингартай байдлыг хянах, хянах систем: Булингарыг хэмжихийн тулд уснаас дээж авах нь уйтгартай байдаг гэж хэлэх нь энгийн бөгөөд энэ нь усан дахь жижиг, түдгэлзсэн тоосонцорыг илэрхийлдэг бөгөөд энэ нь гэрлийн замыг нэмэгдүүлэх эсвэл илүү их тоосонцор бүхий гэрлийн эрчмийг бууруулдаг. төвлөрөл эсвэл хоёулаа
Бөмбөг хянах 180 ° камер: 5 алхам (зурагтай)
Бөмбөгийг хянах 180 ° камер: Миний анхны төсөлд тавтай морил! Би хийсэн зүйлээ хуваалцаж, танд өөрийн хянах камерыг бий болгох алхмуудыг үзүүлж байгаадаа баяртай байна. Энэ төслийг Python -тэй хамтран OpenCV номын санг ашиглан хийх боломжтой болсон