Orodha ya maudhui:

Mfuasi wa Mstari wa GiggleBot Kutumia Chatu: Hatua 5
Mfuasi wa Mstari wa GiggleBot Kutumia Chatu: Hatua 5

Video: Mfuasi wa Mstari wa GiggleBot Kutumia Chatu: Hatua 5

Video: Mfuasi wa Mstari wa GiggleBot Kutumia Chatu: Hatua 5
Video: Иностранный легион спец. 2024, Julai
Anonim
Mfuasi wa Mstari wa GiggleBot Kutumia Chatu
Mfuasi wa Mstari wa GiggleBot Kutumia Chatu
Mfuasi wa Mstari wa GiggleBot Kutumia Chatu
Mfuasi wa Mstari wa GiggleBot Kutumia Chatu
Mfuasi wa Mstari wa GiggleBot Kutumia Chatu
Mfuasi wa Mstari wa GiggleBot Kutumia Chatu

Wakati huu kote, tunapanga katika MicroPython Viwanda vya Dexter GiggleBot kufuata laini nyeusi ukitumia sensorer ya mfuatiliaji wa laini iliyojengwa.

GiggleBot inapaswa kuoanishwa na Micro micro: bit ili iweze kudhibitiwa ipasavyo.

Ikiwa mafunzo haya ni ya juu sana kwako na kupanga GiggleBot ni nyingi sana kwa sasa, unaweza kupitia mafunzo ya mwanzo ambayo inakuonyesha jinsi roboti inaweza kusanidiwa katika MakeCode hapa. Mafunzo yaliyounganishwa yatakutembea kupitia misingi.

Hatua ya 1: Vipengele vinavyohitajika

Vipengele vinavyohitajika
Vipengele vinavyohitajika

Vipengele vifuatavyo vya vifaa vinahitajika:

  1. x3 AA betri - kwa upande wangu ninatumia betri zinazoweza kuchajiwa ambazo zina jumla ya voltage ya chini.
  2. Viwanda vya Dexter robot GiggleBot kwa micro: bit.
  3. Kidogo cha BBC: kidogo.

Kwa kweli, unahitaji pia kebo ndogo ya USB kupangilia BBC micro: bit - kebo hii kwa ujumla huja ndani ya kifurushi cha BBC micro: kidogo au unaweza kutumia kila wakati ambayo hutumika kuchaji simu za rununu (Android).

Pata GiggleBot kwa micro: kidogo hapa

Hatua ya 2: Sanidi Nyimbo

Sanidi Nyimbo
Sanidi Nyimbo

Utalazimika kupitia kuchapisha tiles kadhaa na kubuni nyimbo zako mwenyewe. Unaweza kutumia tiles zetu mwenyewe ili uwe na uhakika kwa 100% unaiga hali zetu. Au ikiwa unajisikia kuwa mkali, unaweza kutumia mkanda mweusi na ujitengeneze. Hapa kuna PDF ya vigae ambavyo tumetumia.

Kufuatilia hapo juu kunajumuisha idadi ifuatayo ya vigae tofauti:

  • Matofali 12 ya aina # 1.
  • Matofali 5 ya aina # 2.
  • Violezo 3 vya aina ya tile # 5.
  • Violezo 3 vya aina ya tile # 6 - hapa, utaishia na tile moja ya ziada.

Ifuatayo, ichapishe na uikate. Jaribu kuziweka kama kwenye picha hapo juu na kumbuka kuwa upande wa kulia wa wimbo, tiles 2 zinapaswa kuingiliana - hii inatarajiwa ikiwa unajiuliza ikiwa unafanya kitu kibaya.

Hatua ya 3: 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 4: Kupanga programu ya GiggleBot

Kabla ya kuifikia, wakati wa kukimbia wa GiggleBot MicroPython una wakati wa kukimbia wa kawaida wa BBC ndogo: kidogo na maktaba zingine kusaidia GiggleBot na sensorer zingine za Viwanda vya Dexter.

Baada ya kuiweka, fungua hati ifuatayo katika kihariri cha Mu na bonyeza Flash. Hii itaangazia muda wa Runtime wa GiggleBot MicroPython na hati ambayo umefungua kwa BBC micro: bit. Hati hiyo pia imeonyeshwa hapa chini.

Mara tu mchakato wa kuwasha umekamilika, weka kipaza sauti cha BBC: kidogo kwenye GiggleBot na neopixels za bodi zinatazama mbele, ziweke kwenye wimbo na uiwashe.

Kumbuka kuwa katika hati, PID na vizuizi vingine 2 (setpoint ya kasi na viboreshaji vya kasi ya chini) tayari vimewekwa.

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.

Mfuasi wa Mstari wa GiggleBot PID - Imepangwa w / NeoPixels

kutoka kuagiza microbit *
kutoka kuagiza gigglebot *
kutoka wakati wote kuagiza sleep_ms, ticks_us
kuagiza ustruct
# anzisha neopixels za GB
neo = init ()
majira
sasisha_ kiwango = 50
Faida / vizuizi (kuchukua voltage ya betri iko karibu na volts 4.0)
Kp = 25.0
Ki = 0.5
Kd = 35.0
trigger_point = 0.3
Asilimia_mzito_mwendo = 0.3
kasi_ya kasi = 70
setpoint = 0.5
nafasi ya mwisho = setpoint
ujumuishaji = 0.0
run_neopixels = Kweli
kituo_pikseli = 5 # ambapo pixel ya katikati ya tabasamu iko kwenye GB
# turquoise = tuple (ramani (lambda x: int (x / 5), (64, 224, 208))) # rangi ya kutumia kuteka kosa na neopixels
# turquoise = (12, 44, 41) # ambayo ni turquoise iliyo juu hapo juu
kosa_width_per_pixel = 0.5 / 3 # makosa mengi yamegawanywa na idadi ya sehemu kati ya kila neopixel
defupper_bound_linear_speed_reducer (abs_error, trigger_point, high_bound, ndogo_motor_power, nguvu_motor_power):
kasi ya kimataifa
ikiwa abs_error> = trigger_point:
# x0 = 0.0
# y0 = 0.0
# x1 = juu_bound - trigger_point
# y1 = 1.0
# x = abs_error - alama ya kuchochea
# y = y0 + (x - x0) * (y1 - y0) / (x1 - x0)
# sawa na
y = (abs_error - trigger_point) / (juu_bound - trigger_point)
motor_power = base_speed * (ndogo_motor_power + (1- y) * (high_motor_power - ndogo_motor_power))
kurudi motor_power
mwingine:
kurudi base_speed * highest_motor_power
kukimbia = Uongo
uliopita_error = 0
wakatiKweli:
# ikiwa kifungo ni taabu kisha anza kufuata
ikiwa button_a.is_pressed ():
run = Kweli
# lakini ikiwa kitufe b kimeshinikizwa simama mfuatiliaji wa laini
ikiwa kitufe_b.inashinikizwa ():
kukimbia = Uongo
ujumuishaji = 0.0
uliopita_error = 0.0
pikseli_za ()
simama ()
kulala_ms (500)
ikiwa kukimbia ni Kweli:
# soma sensorer za mstari
kuanza_wakati = ticks_us ()
kulia, kushoto = soma_sauti (LINE_SENSOR, WOTE)
Mstari # uko kushoto wakati nafasi <0.5
# mstari uko kulia wakati nafasi> 0.5
# mstari uko katikati wakati msimamo = 0.5
# ni maana ya hesabu yenye uzito
jaribu:
msimamo = kulia / kuelea (kushoto + kulia)
exceptZeroDivisionError:
nafasi = 0.5
# masafa yanapaswa kuwa (0, 1) na sio [0, 1]
ikiwa msimamo == 0: nafasi = 0.001
ikiwa msimamo == 1: nafasi = 0.999
# tumia kidhibiti PD
kosa = msimamo - setpoint
ujumuishaji + = kosa
marekebisho = Kp * kosa + Ki * muhimu + Kd * (kosa - uliopita_error)
previous_error = kosa
# mahesabu ya kasi ya magari
motor_speed = high_bound_linear_speed_reducer (abs (makosa), setpoint * trigger_point, setpoint, min_speed_percent, 1.0)
leftMotorSpeed = marekebisho ya mwendo wa kasi
rightMotorSpeed = motor_speed - marekebisho
#washa neopixels kulingana na kosa lililopewa
ikiwa run_neopixels isTrueand total_counts% 3 == 0:
kwa i inb '\ x00 / x01 / x02 / x03 / x04 / x05 / x06 / x07 / x08':
neo = (0, 0, 0)
kwa i inb '\ x00 / x01 / x02 / x03':
ifabs (kosa)> kosa_upita_per_pixel * i:
ikiwa kosa <0:
# neo [kituo_pikseli + i] = zumaridi
neo [kituo_pikseli + i] = (12, 44, 41)
mwingine:
# neo [kituo_pikseli - i] = zumaridi
neo [kituo_pikseli + i] = (12, 44, 41)
mwingine:
asilimia = 1 -
#washa pikseli ya sasa
ikiwa kosa <0:
# neo [center_pixel + i] = tuple (ramani (lambda x: int (asilimia x *), zumaridi))
neo [center_pixel + i] = (int (asilimia 64 * / 5), int (asilimia 224 * / 5), int (asilimia 208 * / 5))
mwingine:
# neo [center_pixel - i] = tuple (ramani (lambda x: int (asilimia x *), zumaridi))
neo [kituo_pikseli - i] = (int (asilimia 64 * / 5), int (asilimia 224 * / 5), int (asilimia 208 * / 5))
kuvunja
onyesha ()
jaribu:
# clip kasi ya gari
ikiwa kushotoMotorSpeed> 100:
KushotoMotorSpeed = 100
rightMotorSpeed = hakiMotorSpeed - kushotoMotorSpeed +100
ikiwa sawaMotorSpeed> 100:
kasiMotorSpeed = 100
leftMotorSpeed = leftMotorSpeed - kuliaMotorSpeed +100
ikiwa kushotoMotorSpeed <-100:
kushotoMotorSpeed = -100
ikiwa sawaMotorSpeed <-100:
SawaMotorSpeed = -100
# tengeneza motors
set_speed (kushotoMotorSpeed, kuliaMotorSpeed)
kuendesha ()
# kuchapisha ((kosa, mwendo wa gari))
isipokuwa:
# ikiwa tutaingia kwenye swala lisiloweza kutumiwa
kupita
# na kudumisha mzunguko wa kitanzi
mwisho_wakati = ticks_us ()
kuchelewesha_diff = (muda wa mwisho - wakati wa kuanza) / 1000
ikiwa1000.0 / update_rate - delay_diff> 0:
kulala (1000.0 / update_rate - delay_diff)

tazama rawgigglebot_tuned_line_follower.py iliyoandaliwa na ❤ na GitHub

Hatua ya 5: Kuruhusu Iendeshe

Kuna vifungo 2 kwenye BBC micro: bit: kifungo A na kifungo B:

  • Kubonyeza kitufe A huweka GiggleBot kufuata mstari (ikiwa kuna moja).
  • Kubonyeza kitufe B kunasimamisha GiggleBot na kuweka upya kila kitu ili uweze kuitumia tena.

Inashauriwa sana kuinua GiggleBot wakati inafuata laini kisha kuiweka tena juu yake kwa sababu kosa linalohesabu linaweza kukusanya na kuharibu kabisa njia ya roboti. Ikiwa unataka kuinua, bonyeza kitufe B na kisha ukiirudisha bonyeza A tena.

Ilipendekeza: