Агуулгын хүснэгт:

Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг: 3 алхам
Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг: 3 алхам

Видео: Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг: 3 алхам

Видео: Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг: 3 алхам
Видео: OST. Pearl Harbor - Faith Hill - There You ll Be 2024, Долдугаар сарын
Anonim
Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг
Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг
Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг
Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг
Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг
Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг
Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг
Google Шүрэн TPU хурдасгуураар ажилладаг сонсголын зэвсэг

Дараахь зүйлд би бариултай жижиг xyz робот MeArm-ийн дуут удирдлагатай хувилбарыг тайлбарлахыг хүсч байна. Би MIME-ийн салбаруудаас MeArm Pi-ийг ашиглаж байсан боловч уг систем нь түүний MeArm-ийн аль ч хувилбар эсвэл ижил төстэй servo удирдлагатай төхөөрөмжүүдэд хамааралтай байх ёстой.

Google Coral TPU Accelerator -ийг ашигласнаар Raspberry Pi дээр офлайн TensorFlow дуу таних скриптүүдийг хурдан ажиллуулах боломжтой бөгөөд ингэснээр бие махбодийн төхөөрөмжийг нэг секундын дотор хоцрогдолтойгоор ярианы захиалгаар удирдах боломжтой болно.

Энд тайлбарласан төхөөрөмж нь өмнөх хоёр зааварт тайлбарласан ойлголтуудын хослол ба өргөтгөл юм. Энэ бол Google Coral дуут удирдлагын өмнөх үсрэлтийн өргөтгөл бөгөөд энд тайлбарласан Jumping Jack бөгөөд энд тайлбарласан Google AIY дуут удирдлагатай MeArm -ийн сайжруулалт юм.

Google Voice AIY системийг ашигладаг дуут удирдлагатай MeArm нь онлайн хандалтыг шаарддаг, хэрэгжүүлэхэд тийм ч хялбар биш, дуут захиалгыг сонсохыг идэвхжүүлэхийн тулд товчлуур дарах шаардлагатай бөгөөд удаан хүлээх хугацаатай байсан. Одоо ашиглаж буй Google Coral TPU Accelerator нь Raspberry Pi эсвэл бусад Линукс төхөөрөмж дээр TensorFlowLite загварыг офлайн горимд ажиллуулах боломжийг олгодог. Google Coral Github хуудсан дээрх жишээнүүдийн дунд "сонсох могой" нэртэй дуу хоолойг таних системийн 140 жишээ (2019 оны 9 -р сар) -ийг ойлгох чадвартай жишээ байдаг бөгөөд дараа нь виртуал товчлуур дээр буулгадаг. Эдгээр "товчлууруудыг" Python -д програмчлагдсан зарим функцийг гүйцэтгэхтэй хослуулан ашиглах нь дуут команд удирддаг төхөөрөмж бүтээх боломжийг олгодог. Би саяхан анхны хэрэгжүүлэлт болох дуут удирдлагатай цахилгаан механик үсрэх үүргийг тайлбарласан болно. Энэ хэрэгжилт нь арай илүү төвөгтэй бөгөөд MeArm-ийн бүх дөрвөн servo-ийг хянах боломжийг олгодог бөгөөд энэ нь MeArm-ийг тасралтгүй хөдөлгөж эсвэл хэд хэдэн урьдчилан тодорхойлсон руу шилжүүлэх боломжийг олгодог. албан тушаал, эсвэл илүү нарийн төвөгтэй ажлуудыг гүйцэтгэх.

Энд өгсөн скриптийг ашиглавал дуу хоолойгоор удирддаг бусад төхөөрөмжийг бүтээх нь харьцангуй энгийн байх ёстой. робот машин эсвэл туслах технологийн нэгжүүд.

Хангамж

  • MeArm. Энд ашигласан: MIME Industries -аас MeArm Pi
  • Raspberry Pi 4
  • Google Шүрэн TPU хурдасгуур
  • Adafruit 16 сувгийн servo капот
  • зарим холбогч кабель
  • нэмэлт: servo капотын конденсатор, 4 servo -ийн хувьд 400 µF орчим (Adafruit -ээс санал болгосон)
  • Серво капотын 5-6 В-ийн тэжээлийн эх үүсвэр. Би энд хуучин 6V цэнэглэгч ашигласан, 4х АА батерейны багц бас ажилладаг
  • Микрофон. Би хуучин Microsoft HD3000 вэбкамерыг микрофон болгон ашигласан.

Алхам 1: Системийг тохируулах

Системийг тохируулж байна
Системийг тохируулж байна
Системийг тохируулж байна
Системийг тохируулж байна

Google Coral Github хуудаснаас Google Coral TPU Accelerator -д зориулж урьдчилан тохируулсан Raspian зургийг татаж аваад µSD картанд суулгана уу. Энэ зураг нь хэд хэдэн жишээ скриптүүдийг агуулдаг. Pi -ийг зааж өгсөн байдлаар тохируулна уу.

Google Coral GitHub сайтаас, хэрэв зурагт ороогүй бол шаардлагатай бүх програмыг ашиглан Түлхүүр үг илрүүлэгчийг суулгаарай. Микрофоныг Pi -д холбоно уу. Бүх зүйл ажиллаж байгаа эсэхийг шалгахын тулд би "Сонсогч могой" жишээн дээр тоглохыг зөвлөж байна.

Adafruit 16 сувгийн капот програмыг энд тайлбарласны дагуу татаж аваад суулгана уу. Бүх зүйл зөв ажиллаж байгаа эсэхийг шалгахын тулд капотоо суулгаад Adafruit -ийн жишээнүүдээр тоглоорой.

Энэхүү зааварчилгаанд хавсаргасан файлуудыг татаж аваад "Project Keyword Spotter" фолдерт хуулна уу. "Commands_v1_MeArm.txt" файлыг "config" дэд хавтас руу хуулах ёстой.

MeArm -ийн servos -ийг servo капотт заасны дагуу холбоно уу. Би 15 -р портыг дээш/доош, 11 -ийг урагш/хойш, 7 -р эргэлтийг, 3 -р портыг бариулын servo -г ашигласан.

Скриптийн хүрээнд та servo бүрийн min/center/max утгыг өөрийн тохиргоонд тохируулах шаардлагатай болж магадгүй бөгөөд эдгээр тохиргоо нь servo -г гэмтээхээс зайлсхийхэд тусална. Та мөн оруулсан "албан тушаал", "тээвэр1", "тээвэр2" жагсаалтыг өөрчлөх шаардлагатай болж магадгүй юм.

Скриптийг ажиллуулна уу. Би үүнийг IDE -аас ажиллуулж байсан.

Хэрэв та тодорхой функцийг өдөөх түлхүүр үгсийг өөрийн хэрэгцээнд нийцүүлэн өөрчлөхийг хүсч байвал тохиргооны дэд хавтасны "labels_gc2 raw.txt" файлд байгаа түлхүүр үгсийн бүрэн жагсаалтыг олж болно.

Систем нь ойролцоогоор 1 секундын хоцрогдолтой байдаг боловч ямар үйлдэл хийхээс ихээхэн хамаардаг. Зарим тохиолдолд гол үе шатыг давтах шаардлагатай байдаг тул хүлээн зөвшөөрөх нарийвчлал нь үргэлж 100%байдаггүй.

Алхам 2: Төхөөрөмжийг ашиглах

Хэрэв бүх зүйл тохируулагдсан бөгөөд шалгагдсан бол та төхөөрөмжийг ажиллуулж болно.

Одоогийн хязгаарлалт бол тухайн захиалгыг зогсоохгүй бол ("тоглоомыг зогсоох" ашиглан) эсвэл өөр захиалга өгсөн тохиолдолд л давтагдах болно. Олон үе шаттай нарийн төвөгтэй ажлууд, жишээ нь. "transport1" ("хөөргөх тоглоом" гэсэн хэллэгээр өдөөгдсөн) үргэлж эцсийн шат хүртэл гүйцэтгэгддэг.

Тиймээс "баруун тийш эргэх" замаар төхөөрөмж нь жижиг алхамаар баруун тийш зогсох хүртэл, эсвэл урьдчилан тохируулсан хамгийн дээд утгад хүрэх болно. "эхлүүлэх тоглоом", "дараагийн тоглоом" эсвэл "эхлэх_видео" нь тухайн алхам дээр servo бүрийн тохиргоог агуулсан жагсаалтаар тодорхойлогддог хэд хэдэн хөдөлгөөнийг эхлүүлэх болно. "Санамсаргүй тоглоом" нь тохиргооны жагсаалтаас санамсаргүй байдлаар сонгосон төхөөрөмжийг нэг алхамаас нөгөө алхам руу шилжүүлэх болно.

Та дагалдах видеоноос харж байгаа шиг би LEGO -ээс Diabolo хэлбэртэй объектыг барьсан бөгөөд үүнийг MeArm -ээр авч, урьдчилан тодорхойлсон хөдөлгөөнөөр нэг газраас нөгөөд шилжүүлж болно. Та 'transport1' эсвэл 'transport2' жагсаалтыг өөрчлөх замаар өөрийн чиг үүргийг тодорхойлж болно.

Алхам 3: Скрипт

Энд жагсаасан скрипт нь "Төслийн түлхүүр үг хайгч" -аас "Сонсогч могой" жишээний өөрчлөлт юм. Энэ жишээг хамгийн бага хэмжээнд хүртэл хуулж авсны дараа Adafruit servo капотт зориулагдсан програм хангамж, жишээн дээр үндэслэн servo жолоодох хэсгийг нэмж оруулав.

Скриптийг одоогоор оновчтой болгоогүй байна. Өөрсдийн эрсдэл дээр ашигла, өөрчилж, оновчтой болгоорой.

Питон скриптээс гадна команд файл болон ашигласан шошго файл байдаг. Үүнийг тохиргооны дэд хавтсанд байрлуулна уу.

Өмнө дурьдсанчлан, тусгай MeArm эсвэл бусад төхөөрөмжийн скриптийг дасан зохицохын тулд хэд хэдэн параметрүүдийг тохируулах шаардлагатай байж магадгүй юм.

# Зохиогчийн эрх 2019 Google LLC#

# Apache лицензийн дагуу лицензтэй, хувилбар 2.0 ("Лиценз"); # та энэ файлыг Лицензийг дагаж мөрдөхөөс бусад тохиолдолд ашиглаж болохгүй. # Та Лицензийн хуулбарыг # # href = "https://www.apache.org/licenses/LICENSE-2.0" href = "https://www.apache.org/licenses/LICENSE-2.0" хаягаар авах боломжтой. https://www.apache.org/licenses/LICENSE-2.0 # # Холбогдох хуульд заагаагүй эсвэл бичгээр зөвшөөрөөгүй бол Лицензийн дагуу тараасан програм хангамжийг "БАЙГАЛЬ" ҮНДСЭН, # БАТАЛГАА, НӨХЦӨЛГҮЙгээр тараана. Ямар ч төрлийн илэрхий, далд хэлбэрээр. # Тусгай хэлийг зохицуулах тусгай зөвшөөрлүүд болон Лицензийн доорх # хязгаарлалтыг Лицензээс үзнэ үү. # анхны "сонсох_могой" кодыг MeArm -ийг хэрэгжүүлэх зорилгоор өөрчилсөн. "" Зааварчилгаа Миний хэрэгжүүлэлт нь Google Coral хурдасгуур, Adafruit 16 сувгийн servo капоттой Raspbery Pi 4 ашигладаг. MeArm (MIME -ийн үйлдвэрүүд) -ийн servo -ийг капотын 3, 7, 11, 15 -р портод холбосон. Дэлгэрэнгүй мэдээллийг "Сонсох төхөөрөмж" гарын авлагаас үзнэ үү. Командууд: "байрлал x", x = 0 -ээс 9 хүртэл, төхөөрөмжийг урьдчилан тодорхойлсон байрлал руу шилжүүлнэ. "хөдлөх/өгсөх", "хөдлөх/уруудах", "урагш явах/урагшлах", "буцах/эргэх", "зүүн тийш эргэх/явах", "баруун тийш эргэх" нь өгөгдсөн хөдөлгөөнд аажмаар аажмаар хөдөлгөөнийг өдөөдөг. чиглэл, "тоглоомыг зогсоох" нь хөдөлгөөнийг зогсооно. "нээлттэй таб" ба "хаах таб" нь бариулыг нээж эсвэл хаадаг. "Видео эхлүүлэх" нь төхөөрөмжийг "байрлал" жагсаалтаар тодорхойлсон байрлалын урьдчилсан дарааллыг дагаж мөрдөхөд хүргэдэг. "Санамсаргүй тоглоом" нь санамсаргүй хөдөлгөөний хэлбэрийг бий болгодог бөгөөд "тоглоомыг зогсоох" нь үүнийг дуусгадаг. "launch game" нь "transport1" жагсаалтаар урьдчилан тодорхойлсон өөр нэг алхамыг эхлүүлж, "transport2" гэж тодорхойлсон урвуу үйлдлийг өөрийн эрсдэл дээр ашиглах болно. _future_ -аас _future_ импортын абсолют_импорт _future_ -аас импорт print_function импортлох санамсаргүй импорт randint -аас argparse импортлох os adafruit_servokit импортоос санамсаргүй импорт randrange # багц сувгийн тоо # kit.servo [0].actuation_range = 160 # kit.servo [0].set_pulse_width_range (1000, 2000) # min, center and max settings up_l = 145 # servo up/down: up md_l = 95 dn_l = 45 up_r = 135 # servo forward/back md_r = 90 dn_r = 50 ri_t = 30 # баруун эсвэл зүүн эргэх гар: баруун байрлал md_t = 90 # баруун эсвэл зүүн эргэх гар: төвийн байрлал le_t = 150 op_g = 65 # бариул нээлттэй md_g = 90 # бариул төвтэй cl _g = 130 # бариул хаалттай vert = 15 # servo портын тоо, servo дээш/доош forw = 11 # servo портын тоо, урагш/арагш хөдөлж буй servo turn = 7 # servo port эргэх servo порт = 3 # servo port servo #есөн байрлал дахь гарын тохиргооны жагсаалт = [(md_l, md_r, md_t, op_g), (up_l, md_r, ri_t, op_g), (up_l, md_r, md_t, cl_g), (up_l, md_r, le_t, cl_g), (md_l, md_r, md_t, op_g), (md_l, md_r, md_t, md_g), (md_l, md_r, md_t, cl_g), (dn_l, dn_r, ri_t, op_g), (dn_l, dn_r,), (dn_l, dn_r, le_t, md_g)] # нь 0-9 бүхэл тоогоор заасан 10 үндсэн байрлалыг тодорхойлдог # тээврийн журам [vert/forward/turn/grip] transport1 = [(140, 70, 65, op_g), (110, 50, 65, op_g), (65, 50, 65, op_g), (65, 70, 65, cl_g), (120, 70, 65, cl_g), #объект (100, 70, 135, cl_g)), (100, 80, 135, cl_g), (100, 80, 135, md_g), (100, 80, 135, op_g), (140, 70, 135, op_g), (140, 70, 90, op_g), (140, 70, 65, op_g)]

тээвэр2 = [(140, 70, 65, op_g), (140, 70, 135, op_g), (95, 70, 135, op_g), (95, 80, 135, op_g), (95, 80, 135, cl_g), (110, 70, 135, cl_g), (110, 70, 65, cl_g), (70, 70, 65, cl_g), (70, 70, 65, op_g), (80, 50, 65, op_g)]

бүжиг1 = (0, 8, 7, 4, 1, 2, 3, 6, 9, 8, 5, 2, 1, 4, 7, 8, 9, 6, 3, 2, 0) # "бүжиг"

MeArm -ийг тэг байрлалд шилжүүлэх төлөв = [md_l, md_r, md_t, md_g] kit.servo [vert].angle = status [0] kit.servo [forw].angle = status [1] kit.servo [turn]. angle = status [2] kit.servo [grip].angle = status [3] print (status) class Controler (object): #Callback function def _init _ (self, q): self._q = q def callback (өөрөө, command): self._q.put (command) class App: def _init _ (self): self._running = True def on_init (self): pygame.init () self.game_started = True self._running = True return on_event (өөрөө, үйл явдал): хэрэв event.type == pygame. QUIT: self._running = False def MeArmPos (өөрөө, түлхүүрүүд): # нь MeArm -ийг урьдчилан тохируулсан байрлал руу түлхүүр үгс: "position x" key = int (key) p = байрлал [түлхүүр] a = p [0] b = p [1] c = p [2] d = p [3] хэвлэх ("Албан тушаал:", түлхүүр, "vert/forw/turn/grip:", a, "/", b, "/", c, "/", d, "градус") төлөв = [a, b, c, d] # баримт бичгийн одоогийн статусыг хэвлэх (төлөв) # sys.stdout.write ("Албан тушаал: ", түлхүүр," зүүн/баруун: ", а,"/", б," зэрэг ") kit.servo [vert].angle = a kit.servo [forw].angle = b kit.servo [turn].angle = c kit.servo [grip].angle = d time.sleep (0.5) def DancingMeArm (өөрөө): # удирдлага MeArm бүжиг, түлхүүр үг: "start_video" dnce = dance1 sp = (l -ийн хувьд] d = p [3] kit.servo [vert].angle = a kit.servo [forw].angle = b kit.servo [turn].angle = c kit.servo [grip].angle = d time.sleep (1) # хөдөлгөөний хурдыг тохируулдаг. Унтах (0.5) # процедурын төгсгөлд завсарлага Def TransMeArm1 (өөрөө): # MeArm тээвэрлэлт 1 -ийг хянадаг, түлхүүр үг: "launch game" tr1 = transport1 sp = (len (tr1)) (sp) муж дахь r алхамуудын тоог тооцоолох: #ямар ч алхам руу оч p = tr1 [r] a = p [0] b = p [1] c = p [2] d = p [3] kit. servo [vert].angle = a kit.servo [forw].angle = b kit.servo [turn].angle = c kit.servo [grip].angle = d print (p) time.sleep (1) # set хөдөлгөөний хурд time.sleep (0.5) def TransMeArm2 (өөрөө): # MeArm бүжгийг хянадаг, түлхүүр үг: "next game" tr2 = transport2 sp = (len (tr2)) for r in range (sp): байрлалыг бүжиглэх дараалал, sp алхам p = tr2 [r] a = p [0] b = p [1] c = p [2] d = p [3] kit.servo [vert].angle = a kit.servo [forw].angle = b kit.servo [turn].angle = c kit.servo [grip].angle = d print (p) time.sleep (1) # хөдөлгөөний хурдыг тохируулдаг. унтах (0.5)) def RandomMoves (өөрөө): # урьдчилан тодорхойлсон байрлалын хооронд санамсаргүй байдлаар үсрэх, түлхүүр үг: "санамсаргүй тоглоом" dr = randrange (9) # санамсаргүй байдлаар байрлалыг сонгох p = байрлал [dr] # байрлалын параметрүүдийг уншдаг a = p [0] b = p [1] c = p [2] d = p [3] kit.servo [vert].angle = a kit.servo [forw].angle = b kit.servo [turn].angle = c kit.servo [grip].angle = d time.sleep (1) # хөдөлгөөний хурдыг тохируулна def MoveUp (өөрөө): # бариулыг жижиг алхамаар өргөх u0 = төлөв [0] # одоогийн төлөвийг унших u1 = u0 + 5 # нэмэх x градус бол (u1 > up_l): min/max параметрүүдээс хэтрэхгүй бол # туршилт u1 = up_l # өөрөөр хэлбэл min/max утга kit.servo [vert].angle = u1 # servo status -ийг зөөх [0] = u1 # төлөвийн утгыг тохируулах хэвлэх (" up ", status) time.sleep (1) # нь defD -ийн хурдыг тодорхойлдог MoveDown (өөрөө): d 0 = төлөв [0] d1 = d0 - 5 # хасах градус бол (d1 дээш_р): f1 = дээш_р kit.servo [forw].angle = f1 # servo төлөвийг шилжүүлэх [1] = f1 хэвлэх ("урагш", төлөв) time.sleep (1) def MoveBack (self): b0 = status [1] b1 = b0 - 5 # min x x if if (b1 le_t): l1 = le_t kit.servo [turn].angle = l1 # servo шилжих төлөв [2] = l1 хэвлэх ("зүүн", төлөв) цаг. унтах (0.2) def MoveRight (өөрөө): r0 = төлөв [2] r1 = r0 - 2 #хасах градус бол (r1 <ri_t): r1 = ri_t kit.servo [эргэх].angle = r1 # servo статусыг шилжүүлэх [2] = r1 хэвлэх ("баруун", төлөв) цаг. унтах (0.2) def OpenGrip (өөрөө): kit.servo [атгах].angle = op_g бариулыг "нээлттэй" байрлалд тохируулах: "open_tab" time.sleep (0.5) төлөв [3] = op_g def CloseGrip (өөрөө): kit.servo [grip].angle = cl_g # бариулыг "хаалттай" байрлалд тохируулах: " close_tab "time.sleep (0.5) status [3] = cl_g def StopMove (өөрөө): # юу ч хийхгүй боловч хэвлэх хөдөлгөөнийг зогсооно (" зогсоох ", төлөв) time.sleep (0.25) def spotter (өөрөө, args): хөдөлгүүр = BasicEngine (args.model_file) mic = args.mic бол args.mic бол None өөр int (args.mic)) model.classify_audio (микрофон, хөдөлгүүр, labels_file = "config/labels_gc2.raw.txt", commands_file = "config/commands_v1_MeArm.txt", dectection_callback = self._controler.callback, sample_rate_hzz = num (args_sram_) int (args.num_frames_hop)) def on_execute (өөрөө, args): хэрэв үгүй бол self.on_init (): self._running = Худал q = model.get_queue () self._controler = Хянагч (q) биш бол args.debug_keyboard: t = Thread (target = self.spotter, args = (args,)) t.daemon = True t.start () item = -1 while self._running: pygame.event.pump () if args.debug_keyboard: keys = pygame.key.get_pressed () else: try: new_item = q.get (True, 0.1) from queue. Empty: new_item = new_item биш бол None: item = new_item if (args.debug_keyboard болон түлхүүрүүд [pygame. K_ESCAPE]) эсвэл item == "stop": self._running = False # if (args.debug_keyboard and keys [pygame. K_SPACE]) эсвэл item == "go": # self. MeArmPos (7) # if (args.debug_keyboard and keys [pygame. K_RIGHT]) эсвэл зүйл == "баруун": # өөрөө баруун тийш эргэ. MoveRight () if (args.debug_ke yboard болон түлхүүрүүд [pygame. K_LEFT]) эсвэл зүйл == "зүүн": # зүүн тийш өөрөө эргэх. MoveLeft () хэрэв (args.debug_keyboard болон түлхүүрүүд [pygame. K_UP]) эсвэл зүйл == "дээш": self. MoveUp () бол (args.debug_keyboard болон түлхүүрүүд [pygame. K_DOWN]) эсвэл item == "down": self. MoveDown () if (args.debug_keyboard and keys [pygame. K_B]) or item == "b": # backwards self. MoveBack () if (args.debug_keyboard and keys [pygame. K_F]) or item == "f": # forwards self. MoveForw () if (args.debug_keyboard and keys [pygame. K_O]) or item == "o": # open grip: self. OpenGrip () if (args.debug_keyboard and keys [pygame. K_C]) or item == "c": # close grip: self. CloseGrip () if (args.debug_keyboard and keys) [pygame. K_S]) эсвэл item == "s": # stop motion: "start_game" self. StopMove () if (args.debug_keyboard and keys [pygame. K_0]) or item == "0": self. MeArmPos (0) if (args.debug_keyboard and keys [pygame. K_1]) or item == "1": self. MeArmPos (1) if (args.debug_keyboard and keys [pygame. K_2]) or item == "2": self. MeArmPos (2) хэрэв (args.debug_keyboard болон түлхүүрүүд [pygame. K_3]) эсвэл em == "3": self. MeArmPos (3) if (args.debug_keyboard and keys [pygame. K_4]) or item == "4": self. MeArmPos (4) if (args.debug_keyboard and keys [pygame. K_5]) эсвэл item == "5": self. MeArmPos (5) if (args.debug_keyboard and keys [pygame. K_6]) or item == "6": self. MeArmPos (6) if (args.debug_keyboard and түлхүүрүүд [pygame. K_7]) эсвэл item == "7": self. MeArmPos (7) if (args.debug_keyboard and keys [pygame. K_8]) or item == "8": self. MeArmPos (8) if (args.debug_keyboard болон түлхүүрүүд [pygame. K_9]) эсвэл item == "9": self. MeArmPos (9) if (args.debug_keyboard and keys [pygame. K_a]) or item == "d": self. DancingMeArm () #dansing MeArm, on "next_game" if (args.debug_keyboard and keys [pygame. K_r]) or item == "r": self. RandomMoves () #санамсаргүй бүжиг "санамсаргүй тоглоом" бол (args.debug_keyboard болон түлхүүрүүд [pygame. K_j]) эсвэл item == "j": self. TransMeArm1 () # transport object: "lunch_game" if (args.debug_keyboard and keys [pygame. K_k]) or item == "k": self. TransMeArm2 () # тээврийн объектын урвуу чиглэл: "next_game" '' 'if (args.debug_keyboard and түлхүүрүүд [pygame. K_l]) эсвэл item == "l": self. JumpingJack2 (1) #LED анивчих "зорилтот '' 'цаг = argparse. ArgumentParser () parser.add_argument ('-debug_keyboard', help = 'MeArm-ийг удирдахын тулд гарыг ашиглана уу.', action = 'store_true', default = False) model.add_model_flags (parser) args = parser.parse_args () the_app = Апп () the_app.on_execute (args)

Зөвлөмж болгож буй: