Orodha ya maudhui:
- Hatua ya 1: Vipengele vinavyohitajika
- Hatua ya 2: Kukusanya Robot
- Hatua ya 3: Unda Maze yako mwenyewe - Hiari
- Hatua ya 4: Kuweka Mazingira
- Hatua ya 5: Kupanga programu ya GiggleBot - Sehemu ya I
- Hatua ya 6: Kupanga Programu ya Kijijini - Sehemu ya II
- Hatua ya 7: Ukalimani wa Skrini ya mbali
Video: Tengeneza Roboti inayoongozwa na Lidar na GiggleBot: Hatua 8
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:52
Katika mafunzo haya, tunafanya GiggleBot kukabiliana na shida za maze.
Tunasimamisha servo kwenye GiggleBot ambayo tunaambatisha sensa ya umbali. Wakati wa kukimbia, servo itaenda kuzunguka na kurudi ili sensor ya umbali iweze kupima umbali hadi kila kikwazo. Hii inafanya kazi kama sensa ya LIDAR ambayo kawaida ni ghali zaidi.
Wakati huo huo, GiggleBot inapeleka data hii kwa Micro Micro ya mbali: ambayo inaonyesha kwenye tumbo lake la 5-by-5 la LEDs msimamo wake wa karibu na vizuizi.
Kazi yako ni kuwa na uwezo wa kuvinjari GiggleBot tu kwa kuangalia kile kinachoonyeshwa kwenye kidude kingine cha BBC: kidogo. Kudhibiti GiggleBot, vifungo kwenye micro Micro: bit hutumiwa.
Hiyo inaonekana kama ya kufurahisha! Wacha tuifikie, je!
Hatua ya 1: Vipengele vinavyohitajika
Tutahitaji:
- GiggleBot.
- Kifurushi cha betri kwa BBC ndogo: kidogo. Inakuja pamoja na ndogo ya BBC: kidogo katika kifurushi chake.
- x3 AA betri za GiggleBot.
- Cable ya Grove kuunganisha sensor ya umbali na GiggleBot.
- Kitanda cha Servo kutoka kwa DexterIndustries.
- x3 BBC ndogo: bits. Moja ya GiggleBot na moja ilitumika kudhibiti roboti kutoka mbali.
- Sensorer ya Umbali kutoka kwa DexterIndustries.
Pata roboti ya GiggleBot kwa BBC ndogo: kidogo hapa!
Hatua ya 2: Kukusanya Robot
Ili kufanya GiggleBot iwe tayari kusanidiwa, tunahitaji kukusanyika, ingawa hakuna mengi inahitajika kufanywa.
Ingiza betri 3 AA kwenye chumba chake chini ya GiggleBot.
Kukusanya kifurushi cha servo. Kwa mkono wake unaozunguka wa servo, tumia shimo la mwisho kurekebisha servo kwenye viunganisho vya mbele vya GiggleBot. Unaweza kutumia bisibisi na / au waya kuifanya iwe thabiti zaidi mahali pake. Au unaweza kuifunga gundi kwenye bodi. Kwa upande wangu, nilitumia screw na waya mfupi kufunga mkono wa servo kwenye bodi ya GiggleBot.
Wakati wa kuweka mkono wa servo kwenye servo, hakikisha servo tayari imewekwa kwenye nafasi ya 80. Unaweza kufanya hivyo kwa kupiga simu gigglebot.set_servo (gigglebot. RIGHT, 80). Unaweza kusoma zaidi juu ya hiyo hapa.
Ifuatayo, weka sensor ya umbali upande wa mbele wa kifurushi cha servo na uirekebishe kama katika mfano hapo juu.
Mwishowe, unganisha sensa ya umbali na kebo ya Grove kwa bandari yoyote ya 2 I2C na servo motor kwenye bandari ya kulia iliyokaa kwenye GiggleBot - bandari ya kulia imetajwa juu yake.
Hatua ya 3: Unda Maze yako mwenyewe - Hiari
Katika kesi hii, nimetumia rundo la masanduku kuunda wimbo wa kitanzi uliofungwa, sawa na ile ya NASCAR.
Katika hatua hii, unaweza kupata ubunifu wa kweli na kuifanya iwe iliyopotoka unavyotaka au kuifanya iwe ndefu sana kwa sababu ni juu yako.
Au ikiwa hautaki wimbo hata kidogo, unaweza kuweka GiggleBot jikoni au sebuleni kwa mfano - hiyo inapaswa kuwa ya kutosha kwa sababu kuna kuta nyingi na vizuizi bado unahitaji kuepukana.
Hatua ya 4: Kuweka Mazingira
Ili uweze kupanga programu ndogo ya BBC: katika MicroPython, lazima uianzishie mhariri (Mu Mhariri) na uweke muda wa Runtime wa GiggleBot MicroPython kama wakati wake wa kukimbia. Kwa hilo, lazima ufuate maagizo kwenye ukurasa huu. Kufikia wakati huu, toleo la v0.4.0 la wakati wa kukimbia linatumika.
Hatua ya 5: Kupanga programu ya GiggleBot - Sehemu ya I
Kwanza, wacha tuanzishe hati ya GiggleBot. Hati hii itafanya GiggleBot kuzungusha servo motor yake digrii 160 (digrii 80 kwa kila mwelekeo) wakati huo huo kuchukua masomo 10 kutoka kwa sensa ya umbali kwa zamu.
Inapowashwa, GiggleBot itakuwa imesimama hadi itakapopokea amri kutoka kwa rimoti. Kunaweza kuwa na amri 3 tu: songa mbele, kushoto au kulia.
Kumbuka: Hati ifuatayo inaweza kuwa na nafasi nyeupe na hii inaonekana kuwa ni kwa sababu ya suala fulani katika kuonyesha GitHub Gists. Bonyeza kwenye kiini kukupeleka kwenye ukurasa wake wa GitHub ambapo unaweza kunakili-kubandika nambari.
GiggleBot inayodhibitiwa kwa mbali ya LIDAR
kutoka kuagiza gigglebot * |
kutoka umbali_sensor kuagiza umbaliSensor |
kutoka kwa microbit kuagiza usingizi |
kutoka wakati wote kuagiza ticks_us, sleep_us |
kuagiza ustruct |
kuagiza redio |
# simama roboti ikiwa tayari inasonga |
simama () |
# wezesha redio |
redio. kwenye () |
# kitu cha sensa ya umbali |
ds = umbaliSensor () |
ds.art_continuous () |
zungusha_wakati = 0.7 # kipimo kwa sekunde |
zungusha_span = 160 # kipimo kwa digrii |
zungusha_ hatua = 10 |
overhead_compensation = 1.05 # imeainishwa kwa asilimia |
time_per_step = 10 ** 6 * zungusha_ wakati / (zungusha_maguu * malipo ya juu) |
mwisho_read_time = 0 |
rada = bytearray (mzunguko_steps) |
servo_rotate_direction = 0 # 0 kwa kwenda juu (0-> 160) na 1 vinginevyo |
radar_index = 0 |
set_servo (KULIA, 0) |
wakatiKweli: |
# soma kutoka kwa rada |
ikiwa ticks_us () - wakati wa mwisho_usoma> saa_pita_katika: |
# soma kutoka kwa sensa ya umbali |
rada [radar_index] = int (ds.read_range_continuous () / 10) |
mwisho_read_time = ticks_us () |
chapisha (rada_index) |
# fanya mantiki ya kuzungusha servo kutoka kushoto kwenda kulia |
ikiwa radar_index == mzunguko_steps -1and servo_rotate_direction == 0: |
set_servo (KULIA, 0) |
mwelekeo wa servo_rotate = 1 |
elif radar_index == 0and servo_rotate_direction == 1: |
set_servo (KULIA, zungusha_span) |
mwelekeo wa servo_rotate = 0 |
mwingine: |
radar_index + = 1if servo_rotate_direction == 0else-1 |
# na tuma maadili ya rada |
redio.send_bytes (rada) |
jaribu: |
# soma amri za robot |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# na kuendesha motors iwapo kutakuwa na amri zozote zilizopokelewa |
set_speed (lmotor, rmotor) |
kuendesha () |
isipokuwaTypeError: |
kupita |
tazama rawgigglebot_lidar_robot.py iliyohifadhiwa na ❤ na GitHub
Hatua ya 6: Kupanga Programu ya Kijijini - Sehemu ya II
Kilichobaki kufanywa ni kupanga programu ndogo ya 2 ya BBC: ambayo hufanya kama kijijini.
Kijijini hutumiwa kuonyesha kwenye skrini iliyotengenezwa na saizi 5-kwa-5 umbali wa karibu wa vizuizi. Kwa jumla, kutakuwa na saizi 10 zilizowashwa.
Wakati huo huo, kijijini kinakupa uwezo wa kudhibiti kijijini GiggleBot kwa kubonyeza vifungo vyake 2: songa mbele, kushoto na kulia.
Kumbuka: Hati ifuatayo inaweza kuwa na nafasi nyeupe na hii inaonekana kuwa ni kwa sababu ya suala fulani katika kuonyesha GitHub Gists. Bonyeza kwenye kiini kukupeleka kwenye ukurasa wake wa GitHub ambapo unaweza kunakili-kubandika nambari.
GiggleBot ya Kudhibiti Kijijini inayodhibitiwa kijijini - Msimbo wa Kijijini
kutoka kwa microbit kuagiza usingizi, onyesho, kifungo_a, kifungo_b |
kuagiza ustruct |
kuagiza redio |
kuagiza hesabu |
redio. kwenye () |
zungusha_ hatua = 10 |
zungusha_span = 160 # kwa digrii |
zungusha_step = zungusha_span / zungusha_steps |
upeo wa umbali = 50 # kwa sentimita |
side_length_leds = 3 # kipimo katika saizi # |
rada = bytearray (mzunguko_steps) |
xar = bytearray (zunguka_steps) |
mwaka = bytearray (zunguka_steps) |
saved_xar = bytearray (mzunguko_steps) |
saved_yar = bytearray (mzunguko_steps) |
mwendo_moto = 50 |
wakatiKweli: |
hadhi = redio.pokea_byte_into (rada) |
ikiwa hali sioNo: |
Uonyesho # wazi () |
kwa c, val inenumerate (rada): |
ikiwa rada [c] <= upeo wa umbali: |
# hesabu kuratibu 2d za kila umbali |
pembe = zunguka_steps / (zungusha_matembezi -1) * zungusha_mkato * c |
angle + = (180- zungusha_span) /2.0 |
x_c = math.cos (angle * math.pi / 180.0) * rada [c] |
y_c = math.sin (angle * math.pi / 180.0) * rada [c] |
# pima umbali kutoshea kwenye onyesho la microbit ya 5x5 |
x_c = x_c * (side_length_leds -1) / max_distance |
y_c = y_c * (side_length_leds +1) / max_distance |
# kuratibu upya |
x_c + = (urefu wa urefu_mipando -1) |
y_c = (urefu wa urefu_kuweka +1) - y_c |
# pande zote zinaratibu mahali LED zinapatikana |
ikiwa x_c - math.floor (x_c) <0.5: |
x_c = hesabu.floor (x_c) |
mwingine: |
x_c = math.ceil (x_c) |
ikiwa y_c - math.floor (y_c) <0.5: |
y_c = math.floor (y_c) |
mwingine: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
mwingine: |
xar [c] = 0 |
mwaka [c] = 0 |
onyesha wazi () |
kwa x, y inzip (xar, yar): |
onyesha.set_pixel (x, y, 9) |
# kuchapisha (orodha (zip (xar, yar, rada))) |
haliA = kifungo_a.ni_mebanwa () |
haliB = kitufe_b. imesisitizwa () |
ikiwa haliA na serikaliB: |
redio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
chapisha ('mbele') |
ikiwa haliAna sio haliB: |
redio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
chapisha ('kushoto') |
hali ya hali na haliB: |
redio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
chapisha ('kulia') |
hali ya hali na haliB: |
redio.send_bytes (ustruct.pack ('bb', 0, 0)) |
chapisha ('stop') |
tazama rawgigglebot_lidar_remote.py iliyohifadhiwa na ❤ na GitHub
Hatua ya 7: Ukalimani wa Skrini ya mbali
"loading =" wavivu "kudhibiti GiggleBot, una chaguzi zifuatazo:
- Bonyeza kitufe cha A na kitufe B ili kusongesha GiggleBot mbele.
- Bonyeza kitufe A ili kuzunguka GiggleBot kushoto.
- Bonyeza kitufe B ili kuzunguka GiggleBot kulia.
Kuona ni mwelekeo upi vizuizi vya karibu vimegunduliwa, angalia tu kijijini (skrini ya mbali ya BBC: kidogo ambayo umeshikilia). Unapaswa kudhibiti GiggleBot kutoka mbali bila kuiangalia.
Ilipendekeza:
Tengeneza Roboti ya kucheza bila Printa ya 3d na Arduino / # ujanja: hatua 11 (na Picha)
Tengeneza Roboti ya kucheza bila Printer ya 3d na Arduino / # smartcreativity: Halo marafiki, katika mafunzo haya nitakuonyesha jinsi ya kutengeneza roboti ya kucheza nyumbani bila printa ya 3D na bila Arduino. Roboti hii ina uwezo wa kucheza, kusawazisha kiotomatiki, utengenezaji wa muziki na kutembea. Na muundo wa Robot pia unaonekana mzuri sana
Nguvu ya jua inayoongozwa: 3 Hatua (na Picha)
Nguvu ya jua inayoongozwa: sistem rahisi ya kupona nishati kwa kutumia paneli za jua na kuongozwa (bila betri) Paneli za jua kwa ujumla zinazojumuisha tabaka mbili za vifaa vya silicon - semiconcuctor na safu ya kujitenga, zimeunganishwa pamoja na kukusanywa kwenye paneli au moduli. Tupate
Kudhibiti Matrix inayoongozwa kutumia Arduino: Hatua 5
Kudhibiti Matrix ya Led Kutumia Arduino: Halo, rafiki.Katika kifungu hiki nitakuonyesha jinsi ya kutumia Matrix ya Led ukitumia Arduino. Matri zilizoongozwa zina safu na safu anuwai, kulingana na aina. Kwa kuwasilisha taa kadhaa za LED na hakikisho
Arduino - Inayozunguka inayoongozwa kwenye Harakati - Bidhaa inayoweza kuvaliwa (iliyoongozwa na Chronal Accelerator Tracer Overwatch): Hatua 7 (na Picha)
Arduino - Inayozunguka inayoongozwa kwenye Harakati - Bidhaa inayoweza Kuvaa (iliyoongozwa na Chronal Accelerator Tracer Overwatch): Hii inaweza kufundishwa kukusaidia kuunganisha Accelerometer na pete ya Led ya Neopixel. uhuishaji.Kwa mradi huu nilitumia pete ya Adafruit 24bit Neopixel, na mbunge
Sauti Tendaji inayoongozwa: Hatua 5
Sauti Tendaji inayoongozwa: Hii inaweza kufundishwa jinsi ya kurekebisha jozi ya spika ili pia kupiga LED (au vichwa vingi, chaguo) kwa mpigo