Բովանդակություն:
- Պարագաներ
- Քայլ 1: Ներածություն
- Քայլ 2: Այս նախագծում օգտագործվող նյութեր և փափուկ իրեր
- Քայլ 3: Ի՞նչ անել:
- Քայլ 4: Սխեմաներ
- Քայլ 5: Ինչպե՞ս վարվել:
- Քայլ 6: Կեղծ ծածկագիր
- Քայլ 7: Կոդ
- Քայլ 8: Արտաքին հղումներ
Video: Գնդակին հետևող ռոբոտ ՝ 8 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Այսպիսով, այստեղ ես կպատմեմ, թե ինչպես պատրաստել գնդակին հետևող ռոբոտ, որը ռոբոտը նույնականացնելու է գնդակը և հետևում է դրան: Այն հիմնականում վերահսկման ավտոմատացված տեխնիկա է, որը կարող է օգտագործվել ժամանակակից աշխարհում: Այսպիսով, պարզապես եկեք ներս մտնենք և սկսենք կառուցել…
EԱՆՈԹՈԹՅՈՆ. Սա մասի առաջադրանքն է, որը ներկայացվել է Դիկինի համալսարան, ՏՏ դպրոց, SIT-210 Embedded Systems Development:
Պարագաներ
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Քայլ 1: Ներածություն
Այսօրվա հսկողությունն ապահովում է մի հիմնական թերություն, որն այն է, որ այն հիմնված է մարդկանց ներգրավման վրա, որը, ինչպես բոլորս գիտենք, կարող է հեշտությամբ շեղվել, ուստի մեր կարևորագույն նշանակությունն էր գտնել մի համակարգ, որը կարող է ինքնուրույն և շարունակաբար վերահսկել շրջանները: Եվ նաև մենք ցանկանում ենք որոշումներ կայացնելիս բացահայտել տհաճ կամ անցանկալի իրերն ու վտանգները և համապատասխան արձագանքել դրան: Այսպիսով, խելացի համակարգերի և համակարգիչների օգտագործմամբ օբյեկտներին հետևելը էական և կարևոր է ավտոմատացված վերահսկողության հասնելու համար:
Բացօթյա հսկողության ցանկացած համակարգ պետք է կարողանա հետևել իր տեսադաշտում շարժվող օբյեկտներին, դասակարգել այդ օբյեկտները և հայտնաբերել դրանց որոշ գործունեություն: Ես մշակել եմ այս օբյեկտներին իրատեսական սցենարներում հետևելու և դասակարգելու մեթոդ: Առանձին ֆոտոխցիկում օբյեկտներին հետևելը կատարվում է ֆոնային հանումով, որին հաջորդում է տարածաշրջանի համապատասխանությունը: Սա հաշվի է առնում բազմաթիվ հուշումներ, ներառյալ սահմանափակող տուփերի արագությունները, չափերը և հեռավորությունները:
Քայլ 2: Այս նախագծում օգտագործվող նյութեր և փափուկ իրեր
Օգտագործված ապարատային բաղադրիչներ
- Ազնվամորի Pi (x1)
- Raspberry Pi Camera Module (x1)
- Ուլտրաձայնային տվիչ (x3)
- SparkFun Dual H-Bridge շարժիչով վարորդներ L298 (x1)
- DC շարժիչ (x1)
- Հացաթուղթ (x1)
- Լարերի միացում
Օգտագործված ծրագրակազմ
OpenCV
Ձեռքի գործիքներ:
Պիթոն
Քայլ 3: Ի՞նչ անել:
Բացօթյա հսկողության ցանկացած համակարգ պետք է կարողանա հետևել իր տեսադաշտում շարժվող օբյեկտներին, դասակարգել այդ օբյեկտները և հայտնաբերել դրանց որոշ գործունեություն: Ես մշակել եմ այս օբյեկտներին իրատեսական սցենարներում հետևելու և դասակարգելու մեթոդ: Առանձին ֆոտոխցիկում օբյեկտներին հետևելը կատարվում է ֆոնային հանումով, որին հաջորդում է տարածաշրջանի համապատասխանությունը: Սա հաշվի է առնում բազմաթիվ հուշումներ, ներառյալ սահմանափակող տուփերի արագությունները, չափերը և հեռավորությունները:
Պատկերը շրջանակ առ շրջանակ հայտնաբերելիս ամենակարևորը խուսափելն էր շրջանակի ցանկացած անկումից, քանի որ այդ դեպքում բոտը կարող է մտնել անորոշ վիճակում, եթե շրջանակն ընկնելու պատճառով բոտը չնկատի գնդակի շարժման ուղղությունը: Եթե գնդակը դուրս է գալիս տեսախցիկի տիրույթից, այն մտնում է այն, ինչ մենք անվանում ենք լիմբո վիճակ, այդ դեպքում բոտը շրջում է 360 աստիճանի շրջակայքը ՝ մինչև գնդակը հետ գա շրջանակի մեջ: տեսախցիկը, ապա սկսեք շարժվել դրա ուղղությամբ:
Պատկերի վերլուծության համար ես վերցնում եմ յուրաքանչյուր շրջանակ և այնուհետև դիմակավորում այն անհրաժեշտ գույնով: Հետո գտնում եմ բոլոր ուրվագծերը և գտնում դրանցից ամենամեծը և կապում ուղղանկյունի մեջ: Եվ ցույց տվեք հիմնական պատկերի ուղղանկյունը և գտեք ուղղանկյան կենտրոնի կոորդինատները:
Վերջապես, բոտը փորձում է գնդակի կոորդինատները հասցնել իր կոորդինատային առանցքի կենտրոնին: Այսպես է աշխատում ռոբոտը: Դա կարող է ավելի մեծանալ ՝ օգտագործելով ֆոտոնային մասնիկի նման IoT սարք, որը կարող է ձեզ տեղեկացնել, երբ ինչ -որ բան հայտնաբերվում է, և որ ռոբոտը հետևում է դրան, կամ երբ ռոբոտը կորցրել է դրա հետքը և այժմ վերադառնում է բազա:.
Պատկերի մշակման նպատակով դուք պետք է տեղադրեք OpenCV ծրագրակազմ ձեր ազնվամորու pi- ի վրա, որն ինձ համար բավականին բարդ էր:
OpenCV- ի տեղադրման համար անհրաժեշտ տեղեկատվություն կարող եք ստանալ այս հղման միջոցով. Կտտացրեք այստեղ
Քայլ 4: Սխեմաներ
Վերևում ես տրամադրել եմ իմ նախագծի սխեմաները, իսկ դրա հետ մեկտեղ ՝ Տպագիր տպատախտակները (PCB):
Եվ ահա մի քանի հիմնական կապեր, որոնք դուք պետք է անեք.
• Առաջին հերթին Raspberry Pi Camera մոդուլը անմիջականորեն կապված է Raspberry Pi- ի հետ:
• Ուլտրաձայնային տվիչները VCC- ն միացված են ընդհանուր տերմինալին, նույնը `GND- ով (հիմք), իսկ ուլտրաձայնային տվիչի մնացած երկու նավահանգիստները միացված են Raspberry Pi- ի GPIO կապին:
• Շարժիչները միացված են H-Bridge- ի միջոցով:
• Էլեկտրաէներգիան մատակարարվում է մարտկոցի միջոցով:
Ես նաև ավելացրել եմ տեսանյութը, որը կարող է օգնել հասկանալ ուլտրաձայնային տվիչի աշխատանքի և դրա աշխատանքի մասին:
և նաև կարող եք հետևել այս հղմանը, եթե չեք գտնում վերը նշված տեսանյութը:
Քայլ 5: Ինչպե՞ս վարվել:
Ես պատրաստել եմ այս նախագիծը ՝ պատկերելով հիմնական ռոբոտը, որը կարող է հետևել գնդակին: Ռոբոտը օգտագործում է տեսախցիկ ՝ նկարներ մշակելու համար ՝ շրջանակներ վերցնելով և հետևելով գնդակին: Գնդակին հետևելու համար օգտագործվում են տարբեր հատկություններ, ինչպիսիք են դրա գույնը, չափը, ձևը:
Ռոբոտը գտնում է կոշտ ծածկագրված գույն, այնուհետև փնտրում է այդ գույնի գնդակը և հետևում դրան: Այս նախագծում ես ընտրել եմ Raspberry Pi- ն որպես միկրոկառավարիչ, քանի որ այն մեզ թույլ է տալիս օգտագործել իր տեսախցիկի մոդուլը և մեծ ճկունություն է հաղորդում ծածկագրին, քանի որ այն օգտագործում է Python լեզու, որը շատ օգտագործողի համար հարմար է, ինչպես նաև թույլ է տալիս մեզ օգտագործել OpenCV գրադարանը պատկերները վերլուծելու համար:
H-Bridge- ն օգտագործվել է շարժիչների պտույտի ուղղությունը փոխելու կամ դրանք կանգնեցնելու համար:
Պատկերի վերլուծության համար ես վերցնում եմ յուրաքանչյուր շրջանակ և այնուհետև դիմակավորում այն անհրաժեշտ գույնով: Հետո գտնում եմ բոլոր ուրվագծերը և գտնում դրանցից ամենամեծը և կապում ուղղանկյունի մեջ: Եվ ցույց տվեք հիմնական պատկերի ուղղանկյունը և գտեք ուղղանկյան կենտրոնի կոորդինատները:
Վերջապես, բոտը փորձում է գնդակի կոորդինատները հասցնել իր կոորդինատային առանցքի կենտրոնին: Այսպես է աշխատում ռոբոտը: Դա կարող է ավելի մեծանալ ՝ օգտագործելով ֆոտոնային մասնիկի նման IoT սարք, որը կարող է ձեզ տեղեկացնել, երբ ինչ -որ բան հայտնաբերվում է, և որ ռոբոտը հետևում է դրան, կամ երբ ռոբոտը կորցրել է դրա հետքը և այժմ վերադառնում է բազա:. Եվ դա անելու համար մենք կօգտագործենք առցանց ծրագրային հարթակ, որը միացնում է սարքերը և թույլ է տալիս նրանց որոշակի գործողություններ կատարել հատուկ հրահրիչների վրա, որոնք են IFTTT գործարկիչները:
Քայլ 6: Կեղծ ծածկագիր
Ահա OpenCV- ի միջոցով հայտնաբերման մասի կեղծ ծածկագիրը, որտեղ մենք հայտնաբերում ենք գնդակ:
Քայլ 7: Կոդ
Վերևում կան կոդի հատվածներ, իսկ ներքևում `ծածկագրի մանրամասն նկարագրությունը:
# ներմուծեք անհրաժեշտ փաթեթները
ՆԵՐՄՈՄ ԵՆՔ ԲՈԼՈՐ ՊԱՅՄԱՆ ՓԱԹԵԹԸ
picamera.array ներմուծումից
picamera ներմուծումից PiCamera ներմուծում RPi. GPIO որպես GPIO ներմուծման ժամանակի ներմուծում numpy որպես np
ՀԻՄԱ ԿԱՌԱՎԱՐՈՄ ԵՆՔ ՍԱՐԴԱՎՈՐԸ և Ո ASՇԱԳՐՈՄ ԵՆՔ ՌԵPԲԵՌՆԱՅԻ ԿՐԹՈ CONՄ ՄԻԱՎԱ ՊԻՆԵՐԸ
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 #Եթե այն գտնի գնդակը, ապա այն կլուսավորի led- ը
# Սահմանեք կապում որպես ելք և մուտքագրում
GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Ձգան GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHOIN. PP) GPIO_TRIGGER3, GPIO. OUT) # Գործարկիչ GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# Տեղադրեք ձգանը «Կեղծ» (ցածր)
GPIO.output (GPIO_TRIGGER1, Կեղծ) GPIO.output (GPIO_TRIGGER2, Կեղծ) GPIO.output (GPIO_TRIGGER3, Կեղծ)
ԱՅՍ ԳՈՐՈՆԵՈԹՅՈՆԸ ՕԳՏԱԳՈՐՈ ALLՄ Է ԲՈԼՈR ՈRԼՏՐԱՍՈՆԱԿԱՆ Սենսորները ՝ հավաքելով հեռավորությունը մեր բոտի շուրջը գտնվող օբյեկտներից
# Թույլ տալ, որ մոդուլը կարգավորվի
def sonar (GPIO_TRIGGER, GPIO_ECHO). սկիզբ = 0 կանգառում = 0 # Տեղադրեք կապում որպես ելք և մուտքագրում (Lowածր) GPIO.output (GPIO_TRIGGER, False) #Թույլ տվեք, որ մոդուլը կարգավորի ժամանակը: քուն (0.01) #մինչ հեռավորություն> 5: #Ուղարկեք 10 զարկերակ ՝ GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO գործարկման համար: ելք (GPIO_TRIGGER, Կեղծ) սկիզբ = time.time () մինչ GPIO.input (GPIO_ECHO) == 0 և time.time ()
ՍՏԵԵԼՈ M DC ՄՈՏՈՐՍՆԵՐԻՆ ԱՇԽԱՏԵԼ ՌԵPՊՆԻ ՊԻ -ով
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
ՌՈԲՈՏԻ ԳՈՐՈՆԵՈ ANDԹՅԱՆ ԵՎ ՏԱՐԲԵՐ REԱՌԱՅՈԹՅՈՆՆԵՐՈՄ ԳՈՐՈՆԵԼՈ ԳՈՐՈՆԵՈԹՅՈՆՆԵՐԸ
def առաջ ():
GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def reverse (): GPIO.putput (MOTOR1, 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.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1), 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) GPIO.output (MOTOR2B, GPIO. LOW)
ԿԱՄԵՐԱՅԻ ՄՈԴՈLEԼԻ ԱՇԽԱՏԱՆՔ ԵՎ ԿԱՐԳԱՎՈՐՈՄՆԵՐԻ ԿԱՐԳԱՎՈՐՈՄ
#ԿԱՄԵՐԱ ՍՏԵՈՄ
# սկզբնականացնել տեսախցիկը և վերցնել հղում չմշակված ֆոտոխցիկի նկարահանման տեսախցիկին = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (տեսախցիկ, չափ = = (160, 120)) # թույլ տալ տեսախցիկին տաքացման ժամանակ. քուն (0.001)
ՀԻՄԱ ԻՐԱԿԱՆԱՆԵԼՈIN ՀԻՄՆԱԿԱՆ ԲԱՆԸ, ՈՐՏԵOT ԲՈՏԸ ԳՆԱԴՈՄ Է ANDԱՆԱՊԱՐՀՈՄ AVԱՆԿԱԱ ԽԱOԻ
մինչդեռ (1 <10). { #հեռավորությունը ՝ առջևի ուլտրաձայնային տվիչի հեռավորությունից C = սոնար (GPIO_TRIGGER2, GPIO_ECHO2) #հեռավորություն, որը գալիս է աջ ուլտրաձայնային տվիչի հեռավորությունից, GPIO_ECHO1) եթե (հեռավորությունը C = 8: աջ շրջադարձ () ժամանակ. Քուն (0.00625) կանգ () ժամանակ. Քուն (0.0125) առաջ () ժամանակ. Քուն (0.00625) կանգառ () ժամանակ. Քուն (0.0125) #մինչ հայտնաբերված == 0: leftturn () time.sleep (0.00625) elif distanceL> = 8: leftturn () time.sleep (0.00625) stop () time.sleep (0.0125) առաջ () 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) եթե (distanceC> 10): #այն գնդակի կոորդինատները բերում է տեսախցիկի երևակայական առանցքի կենտրոն: եթե (centre_x = 20): if (centre_x0): flag = 1 leftturn () time.sleep (0.025) forward () time.) կանգ առնել () ժամանակը. քնել (0.00625) այլ `դադարեցնել () ժամանակը: քնել (0.01)
այլ:
#եթե այն գտնում է գնդակը և այն շատ մոտ է, այն լուսավորում է լուսարձակը: GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow («նկարել», շրջանակ) rawCapture.truncate (0) # ջնջել հոսքը նախապատրաստման համար հաջորդ շրջանակ}
ԿԱՏԱՐԵՔ ԱՆՀՐԱԵՇՏ ՄԱՔՈՄԸ
GPIO.cleanup () #անվճար բոլոր GPIO կապում
Քայլ 8: Արտաքին հղումներ
Հղում դեպի ցուցադրական տեսանյութ. Սեղմեք այստեղ (Youtube)
Հղում դեպի Git-hub կոդ. Կտտացրեք այստեղ (Git-Hub)
Խորհուրդ ենք տալիս:
Արդուինո - Լաբիրինթոս լուծող ռոբոտ (MicroMouse) Wall հետևող ռոբոտ. 6 քայլ (նկարներով)
Արդուինո | Maze Solving Robot (MicroMouse) Wall After Robot: Բարի գալուստ, ես Իսահակն եմ, և սա իմ առաջին ռոբոտն է " Striker v1.0 ". Այս ռոբոտը նախատեսված էր պարզ լաբիրինթոս լուծելու համար: Մրցույթում մենք ունեինք երկու լաբիրինթոս և ռոբոտը կարողացավ դրանք բացահայտել: Լաբիրինթոսում ցանկացած այլ փոփոխություն կարող է պահանջել փոփոխություն
Ինչպես կառուցել PHIL - թեթև հետևող ռոբոտ. 6 քայլ (նկարներով)
Ինչպես կառուցել PHIL - թեթև հետևող ռոբոտ. Այս հրահանգում ես ձեզ ցույց կտամ, թե ինչպես եմ ստեղծել այս երկակի առանցքի լուսադիտող ռոբոտը ՝ օգտագործելով Arduino Uno: Ամբողջ CAD- ը և ծածկագիրը ներառված կլինեն, որպեսզի կարողանաք ինքներդ կառուցել այն ՝ առանց ծրագրավորման կամ նախագծման հմտությունների կարիք ունենալու: Այն ամենը, ինչ ձեզ հարկավոր կլինի
Ընդլայնված գծի հետևող ռոբոտ. 22 քայլ (նկարներով)
Ընդլայնված գծի հետևող ռոբոտ. Սա ընդլայնված տող ռոբոտ է, որը հիմնված է Teensy 3.6 և QTRX գծի սենսորի վրա, որը ես կառուցել եմ և աշխատում եմ բավականին երկար ժամանակ: Դիզայնի և կատարման մեջ կան մի քանի կարևոր բարելավումներ իմ նախորդ ռոբոտին հաջորդող շարքում: Տ
Ինչպես դարձնել մարդուն հետևող ռոբոտ Arduino- ով. 3 քայլ
Ինչպես դարձնել մարդուն հետևող ռոբոտին Arduino- ով. Մարդը, ով հետևում է ռոբոտին, զգում և հետևում է մարդուն
Հավասարակշռող ռոբոտ / 3 անիվի ռոբոտ / STEM ռոբոտ ՝ 8 քայլ
Հավասարակշռող ռոբոտ / 3 անիվի ռոբոտ / STEM ռոբոտ. Մենք կառուցել ենք համակցված հավասարակշռող և եռանիվ ռոբոտ `կրթական օգտագործման համար դպրոցներում և դպրոցից հետո կրթական ծրագրերում: Ռոբոտը հիմնված է Arduino Uno- ի, սովորական վահանի վրա (շինարարության բոլոր մանրամասները տրամադրված են), Li Ion մարտկոցի տուփով (բոլորը կառուցված են