Բովանդակություն:
- Քայլ 1: Պահանջվող բաղադրիչներ
- Քայլ 2: Ռոբոտի հավաքում
- Քայլ 3. Ստեղծեք ձեր սեփական լաբիրինթոսը `ըստ ցանկության
- Քայլ 4: Շրջակա միջավայրի ստեղծում
- Քայլ 5. GiggleBot- ի ծրագրավորում - մաս I
- Քայլ 6. Հեռակառավարման ծրագրավորում - Մաս II
- Քայլ 7: Հեռակա էկրանը մեկնաբանելը
Video: GiggleBot- ով պատրաստեք Lidar- ով առաջնորդվող ռոբոտ ՝ 8 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
Այս ձեռնարկում մենք GiggleBot- ին ստիպում ենք լուծել լաբիրինթոսի դժվարությունները:
Մենք սերվո ենք տեղադրում GiggleBot- ի վրա, որի վրա մենք կցում ենք հեռավորության տվիչ: Վազելիս servo- ն պատրաստվում է պտտվել այս ու այն կողմ, որպեսզի հեռավորության սենսորը կարողանա չափել հեռավորությունը մինչև յուրաքանչյուր խոչընդոտ: Սա շատ նման է LIDAR սենսորին, որը սովորաբար շատ ավելի թանկ է:
Միևնույն ժամանակ, GiggleBot- ն այս տվյալները ուղարկում է BBC- ի հեռավոր միկրո.
Ձեր խնդիրն այն է, որ կարողանաք նավարկել GiggleBot- ում ՝ միայն նայելով այն, ինչ ցուցադրված է BBC- ի մյուս միկրո -բիտում: bit: GiggleBot- ը վերահսկելու համար օգտագործվում են հեռակա BBC micro: bit կոճակները:
Դա շատ զվարճալի է թվում! Եկեք անցնենք դրան, այնպես չէ՞:
Քայլ 1: Պահանջվող բաղադրիչներ
Մեզ պետք կլինի.
- GiggleBot:
- BBC մարտկոցի մարտկոց ՝ բիթ: Այն գալիս է BBC- ի միկրո.
- x3 AA մարտկոցներ GiggleBot- ի համար:
- Grove մալուխ ՝ հեռավորության սենսորը GiggleBot- ին միացնելու համար:
- Servo հավաքածու DexterIndustries- ից:
- x3 BBC միկրո. բիթեր: Մեկը GiggleBot- ի համար, իսկ մեկը օգտագործվում էր ռոբոտին հեռվից կառավարելու համար:
- Հեռավորության սենսոր DexterIndustries- ից:
Ձեռք բերեք GiggleBot ռոբոտը BBC- ի միկրոյի համար. Քիչ այստեղ:
Քայլ 2: Ռոբոտի հավաքում
Որպեսզի GiggleBot- ը պատրաստ լինի ծրագրավորման, մենք պետք է հավաքենք այն, չնայած որ շատ բան պետք չէ անել:
Տեղադրեք 3 AA մարտկոցներ իր խցիկում ՝ GiggleBot- ի ներքևում:
Հավաքեք servo փաթեթը: Servo- ի պտտվող թևի համար օգտագործեք դրա վերջին անցքը `servo- ն ամրացնելու GiggleBot- ի առջևի միակցիչների վրա: Դուք կարող եք օգտագործել պտուտակ և (կամ) մի մետաղալար `այն իր տեղում ավելի կայուն դարձնելու համար: Կամ կարող եք տաք սոսնձել այն տախտակին: Իմ դեպքում ես պտուտակով և կարճ մետաղալարով կապեցի սերվոյի թևը GiggleBot տախտակին:
Servo թևը servo- ի վրա ամրացնելիս համոզվեք, որ servo- ն արդեն դրված է 80 դիրքի վրա: Դա կարող եք անել `զանգահարելով gigglebot.set_servo (gigglebot. RIGHT, 80): Այդ մասին ավելին կարող եք կարդալ այստեղ:
Հաջորդը, տեղադրեք հեռավորության սենսորը servo փաթեթի առջևի մասում և ամրացրեք այն, ինչպես վերը նշված օրինակում:
Ի վերջո, Grove մալուխով հեռավորության տվիչը միացրեք 2 I2C պորտերից որևէ մեկին, իսկ սերվո շարժիչը ՝ GiggleBot- ի վրա նստած աջ նավահանգստին. Դրա վրա նշված է աջ նավահանգիստը:
Քայլ 3. Ստեղծեք ձեր սեփական լաբիրինթոսը `ըստ ցանկության
Այս դեպքում, ես օգտագործել եմ մի փունջ տուփեր ՝ փակ հանգույց ստեղծելու համար, որը նման է NASCAR- ին:
Այս քայլով դուք կարող եք իսկապես ստեղծագործել և դարձնել այն, ինչ ուզում եք, կամ դարձնել այն չափազանց երկար, քանի որ դա իսկապես ձեզանից է կախված:
Կամ, եթե ընդհանրապես հետք չեք ուզում, կարող եք GiggleBot- ը տեղադրել խոհանոցում կամ հյուրասենյակում, օրինակ. Դա պետք է բավական լավ լինի, քանի որ կան շատ պատեր և խոչընդոտներ, որոնցից դեռ պետք է խուսափել:
Քայլ 4: Շրջակա միջավայրի ստեղծում
Որպեսզի կարողանաք ծրագրավորել BBC micro: bit- ը MicroPython- ում, դուք պետք է դրա համար խմբագիր ստեղծեք (Mu Editor) և դրա գործարկման ժամանակը սահմանեք GiggleBot MicroPython Runtime- ը: Դրա համար պետք է հետևել այս էջի հրահանգներին: Այս պահի դրությամբ օգտագործվում է գործարկման ժամանակի v0.4.0 տարբերակը:
Քայլ 5. GiggleBot- ի ծրագրավորում - մաս I
Նախ, եկեք ստեղծենք GiggleBot- ի սցենարը: Այս սցենարը կստիպի GiggleBot- ին պտտել իր servo շարժիչը 160 աստիճանով (յուրաքանչյուր ուղղությամբ 80 աստիճան), մինչդեռ միաժամանակ յուրաքանչյուր հեռավորության սենսորից վերցնում է 10 ընթերցում:
Երբ միացված է, GiggleBot- ը կանգնած կլինի մինչև հեռակառավարման վահանակից հրաման չստանա: Կարող է լինել ընդամենը 3 հրաման ՝ առաջ շարժվել ՝ ձախ կամ աջ:
Նշում. Հետևյալ սցենարի վրա կարող են բաց թողնվել սպիտակ տարածքներ, և դա, ըստ երևույթին, պայմանավորված է GitHub Gists- ի ցուցադրման որոշ խնդիրներով: Կտտացրեք բովանդակությունը ՝ ձեզ GitHub էջ տանելու համար, որտեղ կարող եք պատճենել-տեղադրեք ծածկագիրը:
Հեռակառավարվող LIDAR- ի վրա հիմնված GiggleBot
gigglebot ներմուծումից* |
distance_sensor ներմուծումից DistanceSensor |
microbit ներմուծման քնից |
ծայրահեղ ներմուծումից ticks_us, sleep_us |
ներմուծել ustruct |
ռադիո ներմուծել |
# կանգնեցրեք ռոբոտին, եթե այն արդեն շարժվում է |
կանգ առնել () |
# միացնել ռադիոն |
radio.on () |
# հեռավորության սենսորային օբյեկտ |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0.7# չափվում է վայրկյաններով |
պտտել_սպան = 160# չափված աստիճաններով |
պտտվող_քայլեր = 10 |
overhead_compensation = 1.05# սահմանված տոկոսներով |
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
ռադար = բայթերեյ (պտտել_քայլեր) |
servo_rotate_direction = 0# 0 դեպի վեր գնալու համար (0-> 160) և 1 այլ դեպքում |
ռադիոտեղորոշիչ = 0 |
set_servo (Աջ, 0) |
իսկ ճշմարիտ: |
# կարդալ ռադարից |
եթե ticks_us () - last_read_time> time_per_step: |
# կարդալ հեռավորության սենսորից |
ռադար [radar_index] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
տպել (radar_index) |
# կատարեք սերվոն ձախից աջ պտտելու տրամաբանությունը |
եթե radar_index == rotate_steps -1 և servo_rotate_direction == 0: |
set_servo (Աջ, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0 և servo_rotate_direction == 1: |
set_servo (RIGHT, rotate_span) |
servo_rotate_direction = 0 |
այլ: |
ռադիոտեղորոշիչ += 1 եթե servo_rotate_direction == 0else-1 |
# և ուղարկեք ռադիոտեղորոշիչ արժեքները |
radio.send_bytes (ռադար) |
փորձել: |
# կարդալ ռոբոտների հրամաններ |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# և գործարկեք շարժիչները, եթե կան ստացված հրամաններ |
set_speed (lmotor, rmotor) |
քշել () |
përjashtTypeError: |
անցնել |
դիտել rawgigglebot_lidar_robot.py- ն, որը տեղակայված է it -ի կողմից GitHub- ի կողմից
Քայլ 6. Հեռակառավարման ծրագրավորում - Մաս II
Մնում է անելը BBC- ի 2 -րդ միկրո ծրագրավորումն է. Բիթը, որը գործում է որպես հեռակառավարիչ:
Հեռակառավարիչը օգտագործվում է իր 5-ից 5 պիքսելներով պատրաստված էկրանին խոչընդոտների հարաբերական հեռավորությունը ցուցադրելու համար: Առավելագույնը միացված 10 պիքսել կլինի:
Միևնույն ժամանակ, հեռակառավարիչը ձեզ հնարավորություն է տալիս հեռակառավարել GiggleBot- ը ՝ սեղմելով նրա 2 կոճակները ՝ առաջ շարժվել ՝ ձախ և աջ:
Նշում. Հետևյալ սցենարի վրա կարող են բաց թողնվել սպիտակ տարածքներ, և դա, ըստ երևույթին, պայմանավորված է GitHub Gists- ի ցուցադրման որոշ խնդիրներով: Կտտացրեք բովանդակությունը ՝ ձեզ GitHub էջ տանելու համար, որտեղ կարող եք պատճենել-տեղադրեք ծածկագիրը:
Հեռակառավարվող LIDAR- ի վրա հիմնված GiggleBot - Հեռակա կոդ
microbit ներմուծման քուն, ցուցադրում, button_a, button_b |
ներմուծել ustruct |
ռադիո ներմուծել |
ներմուծել մաթեմատիկա |
radio.on () |
պտտվող_քայլեր = 10 |
պտտել_սպան = 160# աստիճան |
պտտել_քայլ = պտտել_սպան / պտտել_քայլեր |
max_distance = 50# սանտիմետր |
side_length_leds = 3 # չափված պիքսելների # -ով |
ռադար = բայթերեյ (պտտել_քայլեր) |
xar = bytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
save_xar = բայթերեյ (պտտել_քայլեր) |
փրկված_յար = բայթերեյ (պտտել_քայլեր) |
շարժիչի_արագություն = 50 |
իսկ ճշմարիտ: |
կարգավիճակ = radio.receive_bytes_into (ռադար) |
եթե կարգավիճակը ոչ մեկը չէ |
# ցուցադրում: հստակ () |
c- ի համար, val inenumerate (ռադար): |
եթե ռադար [c] <= max_distance: |
# հաշվեք յուրաքանչյուր հեռավորության 2 դ կոորդինատները |
անկյուն = պտտել_քայլեր / (պտտել_քայլեր -1) * պտտել_քայլ * գ |
անկյուն += (180- պտտել_պսան) /2.0 |
x_c = math.cos (անկյուն * math.pi /180.0) * ռադար [c] |
y_c = math.sin (անկյուն * math.pi /180.0) * ռադար [c] |
# չափեք 5x5 միկրոբիթանոց էկրանին տեղավորելու հեռավորությունները |
x_c = x_c * (side_length_leds -1) / առավելագույն_հեռավորություն |
y_c = y_c * (side_length_leds +1) / առավելագույն_հեռավորություն |
# փոխատեղման կոորդինատներ |
x_c += (side_length_leds -1) |
y_c = (side_length_leds +1) - y_c |
# կլորդը կոորդինացնում է այն տեղը, որտեղ գտնվում են LED- ները |
եթե x_c - math.floor (x_c) <0.5: |
x_c = մաթեմատիկա. հարկ (x_c) |
այլ: |
x_c = math.ceil (x_c) |
եթե y_c - math.floor (y_c) <0.5: |
y_c = մաթեմատիկա. հարկ (y_c) |
այլ: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
յար [c] = y_c |
այլ: |
xar [c] = 0 |
յար [c] = 0 |
ցուցադրում: հստակ () |
x, y inzip- ի համար (xar, yar): |
display.set_pixel (x, y, 9) |
# տպել (ցուցակ (zip (xar, yar, radar))) |
վիճակ A = button_a. սեղմված է () |
վիճակ B = button_b. սեղմված () |
եթե stateA և stateB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
տպել («առաջ») |
եթե վիճակ Ա և ոչ վիճակ Բ: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
տպել («ձախ») |
եթե ոչ վիճակ Ա և վիճակ Բ: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
տպել («աջ») |
եթե ոչ վիճակ Ա և ոչ վիճակ Բ: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
տպել («կանգառ») |
դիտել rawgigglebot_lidar_remote.py- ն, որը տեղակայված է it -ի կողմից GitHub- ի կողմից
Քայլ 7: Հեռակա էկրանը մեկնաբանելը
"loading =" lazy "վերահսկել GiggleBot- ը, դուք ունեք հետևյալ ընտրանքները.
- Սեղմեք A և B կոճակները ՝ GiggleBot- ն առաջ տանելու համար:
- Սեղմեք A կոճակը ՝ GiggleBot- ը ձախ պտտելու համար:
- Սեղմեք B կոճակը ՝ GiggleBot- ը աջ պտտելու համար:
Տեսնելու համար, թե որ ուղղությամբ են հայտնաբերվում ամենամոտ խոչընդոտները, պարզապես նայեք հեռակառավարման վահանակի (հեռավոր BBC միկրո. Դուք պետք է կարողանաք վերահսկել GiggleBot- ը հեռվից ՝ առանց դրան նայելու:
Խորհուրդ ենք տալիս:
Արդուինո - Լաբիրինթոս լուծող ռոբոտ (MicroMouse) Wall հետևող ռոբոտ. 6 քայլ (նկարներով)
Արդուինո | Maze Solving Robot (MicroMouse) Wall After Robot: Բարի գալուստ, ես Իսահակն եմ, և սա իմ առաջին ռոբոտն է " Striker v1.0 ". Այս ռոբոտը նախատեսված էր պարզ լաբիրինթոս լուծելու համար: Մրցույթում մենք ունեինք երկու լաբիրինթոս և ռոբոտը կարողացավ դրանք բացահայտել: Լաբիրինթոսում ցանկացած այլ փոփոխություն կարող է պահանջել փոփոխություն
Արդուինո Նանոյի հետ պատրաստեք ուտող ռոբոտ - Ոսկու պտուտակ `5 քայլ
Արդուինո Նանոյի միջոցով պատրաստեք ուտող ռոբոտ | Ոսկու պտուտակ. Այս նախագծի գաղափարն իմ դստեր մոտ էր: Նա ռոբոտ է ուզում, և այս ռոբոտը կարող է բացել իր բերանը, որպեսզի սնունդ դնի իր բերանում: Այսպիսով, ես ներսում փնտրեցի մատչելի իրեր ՝ ստվարաթուղթ, արդուինո նանո, ուլտրաձայնային տվիչ, սերվո շարժիչ
Պատրաստեք պարող ռոբոտ առանց 3D տպիչի և Arduino/#խելացի ստեղծագործության. 11 քայլ (նկարներով)
Պատրաստեք պարող ռոբոտ առանց 3D տպիչի և Arduino/#smartcreativity. Բարև ընկերներ, այս ձեռնարկում ես ձեզ ցույց կտամ, թե ինչպես պատրաստել պարող ռոբոտ տանը առանց 3D տպիչի և առանց Arduino- ի: Այս ռոբոտը ունակ է պարել, ավտոմատ հավասարակշռել, երաժշտություն արտադրել և քայլել: Եվ Robot- ի դիզայնը նույնպես այնքան թույն տեսք ունի
Տանը պատրաստեք էժան հակահրդեհային ռոբոտ: 6 քայլ
Պատրաստեք էժան հրդեհաշիջման ռոբոտ տանը. Ուզու՞մ եք անվտանգության նախագիծ պատրաստել քոլեջի ներկայացման կամ գուցե ձեր անձնական օգտագործման համար: Հետո հրդեհաշիջման ռոբոտը հիանալի տարբերակ է: Ես այս նախատիպը պատրաստեցի որպես վերջին տարվա նախագիծ `մոտ 50 ԱՄՆ դոլարով (3500 INR): Տես վերևի ցուցադրական տեսանյութը: Այս ռոբոտը գործում է
Հավասարակշռող ռոբոտ / 3 անիվի ռոբոտ / STEM ռոբոտ ՝ 8 քայլ
Հավասարակշռող ռոբոտ / 3 անիվի ռոբոտ / STEM ռոբոտ. Մենք կառուցել ենք համակցված հավասարակշռող և եռանիվ ռոբոտ `կրթական օգտագործման համար դպրոցներում և դպրոցից հետո կրթական ծրագրերում: Ռոբոտը հիմնված է Arduino Uno- ի, սովորական վահանի վրա (շինարարության բոլոր մանրամասները տրամադրված են), Li Ion մարտկոցի տուփով (բոլորը կառուցված են