ዝርዝር ሁኔታ:

የመስማት ችሎታ መሣሪያ ፣ ጉግል ኮራል TPU አፋጣኝ የሚነዳ - 3 ደረጃዎች
የመስማት ችሎታ መሣሪያ ፣ ጉግል ኮራል TPU አፋጣኝ የሚነዳ - 3 ደረጃዎች

ቪዲዮ: የመስማት ችሎታ መሣሪያ ፣ ጉግል ኮራል TPU አፋጣኝ የሚነዳ - 3 ደረጃዎች

ቪዲዮ: የመስማት ችሎታ መሣሪያ ፣ ጉግል ኮራል TPU አፋጣኝ የሚነዳ - 3 ደረጃዎች
ቪዲዮ: Let's Chop It Up (Episode 27) - Saturday April 17, 2021 2024, ሀምሌ
Anonim
የማዳመጥ መሣሪያ ፣ የጉግል ኮራል TPU አፋጣኝ ነጂ
የማዳመጥ መሣሪያ ፣ የጉግል ኮራል TPU አፋጣኝ ነጂ
የማዳመጥ መሣሪያ ፣ የጉግል ኮራል TPU አፋጣኝ ተነዳ
የማዳመጥ መሣሪያ ፣ የጉግል ኮራል TPU አፋጣኝ ተነዳ
የማዳመጥ መሣሪያ ፣ የጉግል ኮራል TPU አፋጣኝ ተነዳ
የማዳመጥ መሣሪያ ፣ የጉግል ኮራል TPU አፋጣኝ ተነዳ
የማዳመጥ መሣሪያ ፣ የጉግል ኮራል TPU አፋጣኝ ነጂ
የማዳመጥ መሣሪያ ፣ የጉግል ኮራል TPU አፋጣኝ ነጂ

በሚከተለው ውስጥ በድምጽ ቁጥጥር የሚደረግበትን የ MeArm ስሪት ፣ ትንሽ የ xyz ሮቦት ክንድ ከመያዣ ጋር መግለፅ እፈልጋለሁ። እኔ ከ MIME ኢንዱስትሪዎች ውስጥ MeArm Pi ን እጠቀም ነበር ፣ ግን ስርዓቱ ለማንኛውም የ MeArm ስሪት ወይም ተመሳሳይ በ servo የሚነዱ መሣሪያዎች ላይ ተፈጻሚ መሆን አለበት።

የጉግል ኮራል TPU አፋጥን በመጠቀም Raspberry Pi ላይ ፈጣን ከመስመር ውጭ የ TensorFlow የድምፅ ማወቂያ እስክሪፕቶችን ለማሄድ እና በዚህ ምክንያት አካላዊ መሣሪያዎችን በንግግር ትዕዛዞች ለመቆጣጠር ፣ ከአንድ ሰከንድ በታች መዘግየት።

በዚህ ውስጥ የተገለጸው መሣሪያ በሁለት ቀደምት አስተማሪዎች ውስጥ የተገለጹ ጽንሰ -ሀሳቦች ጥምረት እና ቅጥያ ነው። እሱ እዚህ የተገለጸው የ Google ኮራል የድምፅ መቆጣጠሪያ ፣ የጃምፕ ጃክ ፣ የቀደመ ትግበራ እና እዚህ የተገለጸውን የ Google AIY ድምጽ የሚቆጣጠረው MeArm ሰፊ ማሻሻያ ነው።

የ Google Voice AIY ስርዓትን በመጠቀም በድምፅ የሚቆጣጠረው MeArm የመስመር ላይ ተደራሽነትን ይፈልጋል ፣ ለመተግበር ቀላል አልነበረም ፣ ለድምጽ ትዕዛዞችን ማዳመጥን ለማግበር ቁልፍን መጫን እና ረጅም የመዘግየት ጊዜ ነበረው። አሁን ጥቅም ላይ የዋለው የ Google ኮራል TPU አፋጣኝ የ ‹TensorFlowLite› ሞዴሎችን በ Raspberry Pi ወይም በሌሎች የሊኑክስ መሣሪያዎች ላይ በከፍተኛ ፍጥነት ከመስመር ውጭ ለማሄድ ያስችላል። በ Google ኮራል ጊቱብ ገጽ ላይ ከሚገኙት ምሳሌዎች መካከል 140 ቁልፍ ሐረጎችን (ሴፕቴም 2019) ሊረዳ ለሚችል የድምፅ ማወቂያ ስርዓት “የመስማት እባብ” የሚባል ምሳሌ አለ ፣ ከዚያ በኋላ ወደ ምናባዊ የቁልፍ ጭነቶች የተቀረጹ። በ ‹Python› ውስጥ ከተዘጋጁት አንዳንድ ተግባራት አፈፃፀም ጋር እነዚህን “የቁልፍ ጭነቶች” ማጣመር የድምፅ ትዕዛዝ መቆጣጠሪያ መሣሪያን መገንባት ያስችላል። እኔ በቅርቡ የመጀመሪያውን ትግበራ ፣ በድምጽ ቁጥጥር የሚደረግበት የኤሌክትሮ መካኒካል ዝላይ መሰኪያ ገልጫለሁ። እዚህ ያለው ትግበራ ትንሽ የበለጠ የተወሳሰበ ነው እና MeArm ን ያለማቋረጥ ለማንቀሳቀስ ወይም ወደ ብዙ ቅድመ-የተገለጸ ቁጥር እንዲንቀሳቀስ ለማድረግ የ MeArm አራቱን ሰርቮስ ለመቆጣጠር ያስችላል። ቦታዎችን ፣ ወይም አንዳንድ በጣም ውስብስብ ተግባሮችን ለማከናወን።

እዚህ የቀረበውን ስክሪፕት እንደ ምሳሌ በመጠቀም ፣ ሌሎች በድምጽ ቁጥጥር የሚደረግባቸው መሣሪያዎችን ለመገንባት በአንፃራዊነት ቀላል መሆን አለበት ፣ ለምሳሌ። ሮቦቲክ መኪናዎች ወይም ረዳት የቴክኖሎጂ ክፍሎች።

አቅርቦቶች

  • የጦር መሣሪያ እዚህ ጥቅም ላይ የዋለው - ሚአርኤም ፒ ከ MIME ኢንዱስትሪዎች
  • Raspberry Pi 4
  • ጉግል ኮራል TPU አፋጣኝ
  • Adafruit 16 ሰርጥ servo bonnet
  • አንዳንድ ዝላይ ኬብሎች
  • አማራጭ -ለሴሮ ቦኖኔት capacitor ፣ ለ 400 forF ለ 4 servos (በአዳፍ ፍሬ የሚመከር)
  • ለ servo bonnet 5-6 V የኃይል ምንጭ። እኔ እዚህ የድሮ 6V ባትሪ መሙያ እጠቀማለሁ ፣ 4x AA የባትሪ ጥቅል እንዲሁ ይሠራል
  • ማይክሮፎን። አሮጌ ማይክሮሶፍት ኤች 3000 ዌብካም እንደ ማይክሮፎን ተጠቅሜ ነበር።

ደረጃ 1 - ስርዓቱን ማዋቀር

ስርዓቱን ማዋቀር
ስርዓቱን ማዋቀር
ስርዓቱን ማዋቀር
ስርዓቱን ማዋቀር

ለ Google Coral TPU Accelerator ከ Google Coral Github ገጽ ቀድሞ የተዋቀረውን የራስፒያን ምስል ያውርዱ እና በ µSD ካርድ ላይ ይጫኑት። ምስሉ እንዲሁ በርካታ የምሳሌ ስክሪፕቶችን ይ containsል። በተጠቀሰው መሠረት Pi ን ያዋቅሩ።

ምሳሌውን ከ Google Coral GitHub ጣቢያ የቁልፍ ቃል ጠቋሚውን ይጫኑ ፣ በምስሉ ውስጥ ካልተካተቱ እና ሁሉም አስፈላጊ ፕሮግራሞች። ማይክሮፎኑን ከ Pi ጋር ያያይዙ። ሁሉም ነገር እየሰራ መሆኑን ለማረጋገጥ በ ‹መስማት እባብ› ምሳሌ እንዲጫወቱ እመክራለሁ።

እዚህ እንደተገለፀው የ Adafruit 16 ሰርጥ ቦኖ ሶፍትዌርን ያውርዱ እና ይጫኑ። ሁሉም ነገር በትክክል እየሰራ መሆኑን ለማረጋገጥ ቦኖውን ይጫኑ እና ከአዳፍሬዝ ምሳሌዎች ጋር ይጫወቱ።

ከዚህ መመሪያ ጋር የተያያዙትን ፋይሎች ያውርዱ እና ወደ “የፕሮጀክት ቁልፍ ቃል ስፖንሰር” አቃፊ ይቅዱ። የ “command_v1_MeArm.txt” ፋይል ወደ “ውቅረት” ንዑስ አቃፊ መቅዳት አለበት።

በተጠቀሰው መሠረት የ MeArm's servos ን ከ servo bonnet ጋር ያገናኙ። እኔ ወደብ 15 ወደ ላይ/ታች ፣ ወደብ 11 ወደ ፊት/ወደ ኋላ ፣ ወደብ 7 ለመዞሪያ እና ወደብ 3 ለጠለፋው ሰርቮስ እጠቀም ነበር።

በስክሪፕቱ ውስጥ ለእያንዳንዱ አገልጋይ የሚኒ/ማእከል/ከፍተኛ እሴቶችን ወደ ውቅረትዎ ማስተካከል አለብዎት ፣ እነዚህ ቅንብሮች በ servos ላይ ጉዳት እንዳይደርስ ይረዳሉ። እንዲሁም የተካተቱትን “አቀማመጥ” ፣ “ትራንስፖርት 1” እና “ትራንስፖርት 2” ዝርዝሮችን ማሻሻል ሊኖርብዎት ይችላል።

ስክሪፕቱን ያሂዱ። እስካሁን ድረስ እኔ ከ IDE አሂድ ነበር።

በፍላጎትዎ መሠረት አንድን ተግባር የሚቀሰቅሱትን ቁልፍ ሐረጎች ማሻሻል ከፈለጉ። የተገኙ የቁልፍ ሐረጎች ሙሉ ዝርዝር በማዋቀሪያ ንዑስ አቃፊው ውስጥ ባለው “labels_gc2 raw.txt” ፋይል ውስጥ ይገኛል።

ስርዓቱ 1 ሰከንድ ያህል የመዘግየት ጊዜ አለው ፣ ግን በየትኛው እርምጃዎች እንደሚከናወኑ ላይ በመመስረት። በአንዳንድ ሁኔታዎች የቁልፍ ደረጃው መደገም አለበት ፣ የእውቅና ትክክለኛነት ሁል ጊዜ 100%አይደለም።

ደረጃ 2 መሣሪያውን መጠቀም

ሁሉም ነገር ከተዋቀረ እና ከተረጋገጠ መሣሪያውን ማስኬድ ይችላሉ።

የአሁኑ ገደብ እስካልቆመ ድረስ (“የማቆሚያ ጨዋታ” በመጠቀም) ወይም ሌላ ትዕዛዝ እስካልተሰጠ ድረስ የተሰጠው ትእዛዝ ተደጋጋሚ መፈጸሙ ነው። የተወሳሰቡ ባለብዙ ደረጃ ተግባራት ፣ ለምሳሌ። “transport1” (“የማስነሻ ጨዋታ” በሚለው ሐረግ የተነሳ) ሁል ጊዜ ወደ መጨረሻው ደረጃ ይገደላሉ።

ስለዚህ በ “ቀኝ መታጠፍ” መሣሪያው እስኪያቆም ድረስ በትንሽ ደረጃዎች ወደ ቀኝ ይንቀሳቀሳል ፣ ወይም የቅድመ -ይሁንታ ከፍተኛው እሴት ደርሷል። “የማስነሻ ጨዋታ” ፣ “ቀጣዩ ጨዋታ” ወይም “start_video” በተወሰነ ደረጃ ለእያንዳንዱ ሰርቪስ ቅንብሩን በያዙ ዝርዝሮች የሚገለጹ ተከታታይ እርምጃዎችን ይጀምራሉ። “የዘፈቀደ ጨዋታ” መሣሪያው ከቅንብሮች ዝርዝር በዘፈቀደ የተመረጠ ከአንዱ ወደ ሌላ ደረጃ እንዲዘል ያደርጋል።

በአጃቢው ቪዲዮ ላይ እንደሚመለከቱት ፣ ከኤግኦ (LEGO) በዲያአርቦ ቅርጽ ያለው ነገር ሠርቻለሁ እና አስቀድሞ በተወሰነው የእንቅስቃሴዎች ስብስብ ከአንድ ቦታ ወደ ሌላ ማጓጓዝ የሚችል ነበር። የ ‹ትራንስፖርት1› ወይም ‹የትራንስፖርት2› ዝርዝሮችን በማሻሻል የእራስዎን ተግባራት መግለፅ ይችላሉ።

ደረጃ 3 ስክሪፕቱ

እዚህ የተዘረዘረው ስክሪፕት ከ ‹ፕሮጀክት ቁልፍ ቃል ስፖንሰር› የ ‹የመስማት እባብ› ምሳሌ ማሻሻያ ነው። ምሳሌው በትንሹ ተገለበጠ ፣ ከዚያ ለአዳፍ ፍሬው ሰርቮን ቦኖ በተሰጡት ሶፍትዌሮች እና ምሳሌዎች ላይ በመመርኮዝ ሰርቪዶቹን ለመንዳት ክፍሉ ተጨምሯል።

እስክሪፕቱ አሁን አልተሻሻለም። በራስዎ አደጋ ላይ ይጠቀሙ ፣ ለመቀየር እና ለማመቻቸት ነፃነት ይሰማዎ።

ከፓይዘን ስክሪፕት በተጨማሪ ትዕዛዞች-ፋይል እና ያገለገሉ መለያዎች-ፋይል አለ። በማዋቀሪያ-ንዑስ አቃፊ ውስጥ ያስቀምጡት።

ቀደም ሲል እንደተገለፀው ለልዩ MeArm ወይም ለሌላ ሌላ መሣሪያ ስክሪፕቱን ለማስተካከል በርካታ የግቤቶች ማስተካከያዎች ሊያስፈልጉ ይችላሉ።

# የቅጂ መብት 2019 Google LLC#

# በአፓቼ ፈቃድ ፣ ስሪት 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 # # በሚመለከተው ሕግ ካልተጠየቀ ወይም በጽሑፍ እስካልተስማማ ድረስ ፣ በፍቃዱ ስር የተሰራጨው ሶፍትዌር # ያለ “ዋስትናዎች” ወይም “ሁኔታዎች” ሳይኖሩት በ “AS IS” መሠረት ላይ ይሰራጫል። ማንኛውም ዓይነት ፣ ይግለጹ ወይም በተዘዋዋሪ። # ፈቃዱን ለሚገዛው የተወሰነ ቋንቋ ፈቃዱን እና በፈቃዱ ስር # ገደቦችን ይመልከቱ። # የመጀመሪያው “የመስማት_እባብ” ኮድ በዶ / ር ኤች '' መመሪያዎችን ለመተግበር የተቀየረው በዶ / ር ኤች '' መመሪያዎች የእኔ ትግበራ ከጉግል ኮራል አፋጣኝ እና ከአዳፍ ፍሬዝ 16 ሰርጥ servo bonnet ጋር ተያይዞ Raspbery Pi 4 ን ይጠቀማል። የ MeArm (MIME ኢንዱስትሪዎች) አገልጋዮች ከቦኖቹ 3 ፣ 7 ፣ 11 እና 15 ጋር ተያይዘዋል። ለዝርዝሮች እባክዎን “የመስማት መሣሪያ” አስተማሪውን ይመልከቱ። ትዕዛዞች - “አቀማመጥ x” ፣ x = 0 ወደ 9 ፣ መሣሪያውን ወደተወሰነ ቅድመ ሁኔታ ያንቀሳቅሳል። “ተንቀሳቀስ/ውጣ” ፣ “ውሰድ/ውረድ” ፣ “ሂድ/ወደፊት አስተላልፍ” ፣ “ሂድ/ወደ ኋላ ዞር” ፣ “ዞር/ሂድ” እና “ወደ ቀኝ/ዞር/ሂድ” በተጠቀሰው ውስጥ ቀርፋፋ ፣ ደረጃ በደረጃ እንቅስቃሴን ያስነሳል። አቅጣጫ ፣ “ጨዋታ አቁም” እንቅስቃሴዎቹን ያቆማል። “ክፍት ትር” እና “ዝጋ ትር” መያዣውን ይከፍታል ወይም ይዘጋዋል። በዝርዝሩ ‹አቀማመጥ› የተገለጸውን የቅድመ -አቀማመጥ አቀማመጥ ለመከተል መሣሪያውን ‹ቪዲዮ ጀምር› ያስነሳል። “የዘፈቀደ ጨዋታ” የዘፈቀደ የእንቅስቃሴ ዘይቤን ያስከትላል ፣ “አቁም ጨዋታ” ያበቃል። “የማስነሻ ጨዋታ” በዝርዝሩ ‹ትራንስፖርት1› ፣ ‹ቀጣዩ ጨዋታ› የተገመተው የ ‹transport2›› የተገደበ የተገላቢጦሽ እንቅስቃሴን በራስዎ አደጋ ላይ አስቀድሞ የተገለጸ ሌላ ተከታታይ እንቅስቃሴዎችን ይጀምራል። '' 'ከ _future_ ማስመጣት ፍፁም_ኤምፖርት ከ _future_ ማስመጣት ክፍል ከ _future_ ማስመጣት የህትመት_ስራ ማስመጣት የአርፐርስ ማስመጣት os ከ የዘፈቀደ አስመጪ ራንዲንት ከውጪ ማስመጣት ክር የማስመጣት ጊዜ ከ edgetpu.basic.basic_engine ማስመጣት መሰረታዊ የእንግሊዝን የማስመጣት ሞዴል አስመጪ ፒጋሜ ከፒጋሜ። የዘፈቀደ ማስመጣት randrange ከ adafruit_servokit ማስመጣት ServoKit የማስመጣት ቦርድ ማስመጣት አውቶቡስ ማስመጣት adafruit_pca9685 የማስመጣት ጊዜ i2c = busio. I2C (board. SCL ፣ board. SDA) hat = adafruit_pca9685. PCA9685 (i2c) hat.frequency = 60 kit = ServoKit (ሰርጦች = 16) # የሰርጦች ብዛት # kit.servo [0].actuation_range = 160 # kit.servo [0].set_pulse_width_range (1000, 2000) # ደቂቃ ፣ ማዕከላዊ እና ከፍተኛ ቅንብሮች up_l = 145 # servo up/down: up md_l = 95 dn_l = 45 up_r = 135 # servo ወደፊት/ወደ ኋላ md_r = 90 dn_r = 50 ri_t = 30 # ወደ ቀኝ ወይም ወደ ግራ መዞር ቀኝ ቦታ md_t = 90 # ወደ ቀኝ ወይም ወደ ግራ መዞር - የመሃል አቀማመጥ le_t = 150 op_g = 65 # መያዣው ክፍት ነው md_g = 90 # gripper centered cl _g = 130 # ግሪፐር የተዘጋ vert = 15 # የ servo ወደብ ቁጥር ፣ servo ወደ ላይ/ታች forw = 11 # የ servo ወደብ ቁጥር ፣ ወደ ፊት/ወደኋላ የሚንቀሳቀስ servo turn = 7 # servo port ን ለማዞር = 3 # servo ወደብ ለመያዝ 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)] # 10 የመሠረት ቦታዎችን ይገልጻል ፣ በቁጥር 0-9 # የትራንስፖርት ሂደቶች [vert/ወደፊት/መዞር/መያዝ] ትራንስፖርት 1 = [(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]። አንግል = ሁኔታ [2] kit.servo [መያዣ] ትዕዛዝ): self._q.put (ትእዛዝ) ክፍል መተግበሪያ: def _init _ (ራስን): self._running = True def on_init (self): pygame.init () self.game_started = True self._running = True return True def on_event (እራስ ፣ ክስተት) ፦ ክስተት ከሆነ። አቀማመጥ [ቁልፍ] a = p [0] b = p [1] c = p [2] d = p [3] ህትመት ("አቀማመጥ:", ቁልፍ, "vert/forw/turn/hold:", a, "/", ለ, "/", ሐ, "/", መ, "ዲግሪዎች") ሁኔታ = [a, b, c, d] # ሰነዶች የአሁኑ ሁኔታ ህትመት (ሁኔታ) # sys.stdout.write ("አቀማመጥ: ", ቁልፍ," ግራ/ቀኝ: ", ሀ,"/", ለ," ዲግሪ ") kit.servo [vert].angle = kit.servo [forw].angleangle = b kit.servo [turn].angle = c kit.servo [መያዣ] ሌን (dnce)) ለ r ውስጥ በክልል (sp): #የዳንስ የአቀማመጥ ቅደም ተከተል ፣ sp ደረጃዎች dc = dnce [r] p = አቀማመጥ [dc] a = p [0] b = p [1] c = p [2] d = p [3] kit.servo [vert].angle = kit kit ሰርቨር [ፎር] (1) # የእንቅስቃሴዎች ጊዜ ፍጥነትን ያዘጋጃል። እንቅልፍ (0.5) በስርዓቱ መጨረሻ ላይ TransMeArm1 (ራስን): # MeArm ትራንስፖርት 1 ን ይቆጣጠራል ፣ ቁልፍ ቃል - “የማስነሻ ጨዋታ” tr1 = transport1 sp = (ሌን (tr1)) በክልል (sp) ውስጥ የርምጃዎችን ቁጥር ያስሉ - #ወደ ማንኛውም ደረጃ ይሂዱ p = tr1 [r] a = p [0] b = p [1] c = p [2] d = p [3] ኪት። servo [vert].angle = a kit.servo [forw].angleangle = b kit.servo [turn].angle = c kit.servo [grip].angle = d print (p) time.sleep (1) # ስብስቦች የእንቅስቃሴዎች ፍጥነት ፍጥነት እንቅልፍ።): #የአቀማመጥ አቀማመጥ ፣ 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 [ያዝ]) 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 [ያዝ].angle = d time. እንቅልፍ (1) # የእንቅስቃሴዎችን ፍጥነት ያዘጋጃል def MoveUp (ራስን) ፦ # በጥቃቅን ደረጃዎች ውስጥ ማንሻ ማንሻ u0 = ሁኔታ [0] # የአሁኑን ሁኔታ ያንብቡ u1 = u0 + 5 # ሲደመር x ዲግሪ ከሆነ (u1 > up_l): ከደቂቃ/ከፍተኛ መለኪያዎች የማይበልጥ ከሆነ # ሙከራዎች u1 = up_l # አለበለዚያ ወደ ደቂቃ/ከፍተኛ እሴት kit.servo [vert].angle = u1 # servo ሁኔታ ያንቀሳቅሱ [0] = u1 # የሁኔታ እሴት ህትመትን ያስተካክሉ (" ወደ ላይ”፣ ሁኔታ) ጊዜ። እንቅልፍ (1) # የፍጥነት ፍጥነት def MoveDown (ራስን): መ 0 = ሁኔታ [0] d1 = d0 - 5 # minus x ዲግሪ ከሆነ (d1 up_r): f1 = up_r kit.servo [forw].angle = f1 # servo status ይውሰዱ [1] = f1 ህትመት (“ወደፊት” ፣ ሁኔታ)) ጊዜ.sleep (1) def MoveBack (ራስን): b0 = ሁኔታ [1] b1 = b0 - 5 # minus x ዲግሪ ከሆነ (b1 le_t): l1 = le_t kit.servo [turn].angle = l1 # servo አንቀሳቅስ ሁኔታ [2] = l1 ህትመት (“ግራ” ፣ ሁኔታ) ጊዜ። እንቅልፍ (0.2) def MoveRight (ራስን): r0 = ሁኔታ [2] r1 = r0 - 2 #minus x ዲግሪ ከሆነ (r1 <ri_t): r1 = ri_t kit.servo [ዞር] # ወደ “ክፍት” አቀማመጥ ያዝ - “ክፍት_ታብ” ጊዜ። እንቅልፍ (0.5) ሁኔታ [3] = op_g def CloseGrip (ራስን): kit.servo [መያዣ] close_tab "time.sleep (0.5) status [3] = cl_g def StopMove (self): # ምንም አያደርግም ፣ ነገር ግን እንቅስቃሴዎችን ማተም ያቆማል (" ማቆሚያ "፣ ሁኔታ) ጊዜ። እንቅልፍ (0.25) def spotter (self, args): engine = BasicEngine (args.model_file) mic = args.mic args.mic ሌላ ማንም የለም (args.mic) ሞዴል int (args.num_frames_hop)) def on_execute (ራስን ፣ args) ፦ ካልሆነ ራስን። = ክር (ዒላማ = self.spotter, args = (args,)) t.daemon = እውነተኛ t.start () ንጥል = -1 ራስን በሚሆንበት ጊዜ: pygame.event.pump () args..key.get_pressed () ሌላ ፦ ይሞክሩ ፦ new_item = q.get (እውነት ፣ 0.1) ከወረፋ በስተቀር። ባዶ - new_item = አዲስ_ኢቲም ካልሆነ ምንም የለም - ንጥል = new_item (args.debug_keyboard እና ቁልፎች [pygame. K_ESCAPE]) ወይም ንጥል == "አቁም": ራስን [pygame. K_RIGHT]) ወይም ንጥል == "ቀኝ": # ወደ ቀኝ መታጠፍ MoveRight () ከሆነ (args.debug_ke yboard እና ቁልፎች [pygame. K_LEFT]) ወይም ንጥል == "ግራ": # ወደ ግራ ዞር. MoveLeft () ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_UP]) ወይም ንጥል == "ወደላይ": self. MoveUp () ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_DOWN]) ወይም ንጥል == "ታች": self. MoveDown () ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_B]) ወይም ንጥል == "ለ": # ወደ ኋላ self. MoveBack () ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_F]) ወይም ንጥል == "ረ": # አስተላለፈ self. MoveForw () ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_O]) ወይም ንጥል == "o": # ክፍት መያዣ - ራስን ።OpenGrip () ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_C]) ወይም ንጥል == "ሐ": # የቅርብ መያዣ ፦ self. CloseGrip () ከሆነ (args.debug_keyboard እና ቁልፎች) [pygame. (0) ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_1]) ወይም ንጥል == "1": self. MeArmPos (1) ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_2]) ወይም ንጥል == "2": self. MeArmPos (2) ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_3]) ወይም እሱ em == "3": self. MeArmPos (3) ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_4]) ወይም ንጥል == "4": self. MeArmPos (4) ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_5]) ወይም ንጥል == "5": self. MeArmPos (5) ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_6]) ወይም ንጥል == "6": self. MeArmPos (6) ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_7]) ወይም ንጥል == "7": self. MeArmPos (7) ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_8]) ወይም ንጥል == "8": self. MeArmPos (8) ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_9]) ወይም ንጥል == "9": self. MeArmPos (9) ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_a]) ወይም ንጥል == "መ": self. DancingMeArm ((#args.debug_keyboard እና ቁልፎች [pygame. K_r]) ወይም ንጥል == "r": #ዳንስ MeArm, ከሆነ (args.debug_keyboard እና ቁልፎች [) pygame.) # የትራንስፖርት ነገር የተገላቢጦሽ አቅጣጫ - “ቀጣዩ_ጨዋታ””” ከሆነ (args.debug_keyboard እና ቁልፎች [pygame. K_l]) ወይም ንጥል == "l": self. JumpingJack2 (1) #LED ብልጭ ድርግም ይላል "ኢላማ" '' '' ጊዜ.sleep (0.05) self.on_cleanup () _name_ == '_main_': parser = argparse. () the_app = መተግበሪያ () the_app.on_execute (args)

የሚመከር: