Orodha ya maudhui:

Tengeneza Roboti inayoongozwa na Lidar na GiggleBot: Hatua 8
Tengeneza Roboti inayoongozwa na Lidar na GiggleBot: Hatua 8

Video: Tengeneza Roboti inayoongozwa na Lidar na GiggleBot: Hatua 8

Video: Tengeneza Roboti inayoongozwa na Lidar na GiggleBot: Hatua 8
Video: 弹指一挥四十年中美畸恋一个在哄一个在骗,房贷利率触底户外用餐中招风险也不低 Forty years of Sino-US relationship with coaxing and cheating. 2024, Novemba
Anonim
Tengeneza Roboti inayoongozwa na Lidar na GiggleBot
Tengeneza Roboti inayoongozwa na Lidar na GiggleBot
Tengeneza Roboti inayoongozwa na Lidar na GiggleBot
Tengeneza Roboti inayoongozwa na Lidar na GiggleBot
Tengeneza Roboti inayoongozwa na Lidar na GiggleBot
Tengeneza Roboti inayoongozwa na Lidar na GiggleBot

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

Vipengele vinavyohitajika
Vipengele vinavyohitajika

Tutahitaji:

  1. GiggleBot.
  2. Kifurushi cha betri kwa BBC ndogo: kidogo. Inakuja pamoja na ndogo ya BBC: kidogo katika kifurushi chake.
  3. x3 AA betri za GiggleBot.
  4. Cable ya Grove kuunganisha sensor ya umbali na GiggleBot.
  5. Kitanda cha Servo kutoka kwa DexterIndustries.
  6. x3 BBC ndogo: bits. Moja ya GiggleBot na moja ilitumika kudhibiti roboti kutoka mbali.
  7. Sensorer ya Umbali kutoka kwa DexterIndustries.

Pata roboti ya GiggleBot kwa BBC ndogo: kidogo hapa!

Hatua ya 2: Kukusanya Robot

Kukusanya Robot
Kukusanya Robot
Kukusanya Robot
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

Unda Maze Yako Mwenyewe - Hiari
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

Kuweka Mazingira
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:

  1. Bonyeza kitufe cha A na kitufe B ili kusongesha GiggleBot mbele.
  2. Bonyeza kitufe A ili kuzunguka GiggleBot kushoto.
  3. 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: