সুচিপত্র:

A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত: Ste টি ধাপ
A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত: Ste টি ধাপ

ভিডিও: A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত: Ste টি ধাপ

ভিডিও: A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত: Ste টি ধাপ
ভিডিও: Building the MeArm Robotic Arm 2024, জুলাই
Anonim
A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত
A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত
A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত
A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত
A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত
A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত
A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত
A Hearing MeArm, Google কোরাল TPU এক্সিলারেটর চালিত

নিম্নলিখিতটিতে আমি MeArm এর একটি ভয়েস-নিয়ন্ত্রিত সংস্করণ বর্ণনা করতে চাই, একটি ছোট xyz রোবট বাহু যার একটি গ্রিপার। আমি MIME শিল্প থেকে MeArm Pi ব্যবহার করেছি, কিন্তু সিস্টেমটি MeArm, অথবা অনুরূপ সার্ভো-চালিত ডিভাইসের যেকোন সংস্করণে প্রযোজ্য হওয়া উচিত।

গুগল কোরাল টিপিইউ এক্সিলারেটর ব্যবহার করে রাস্পবেরি পাই -তে দ্রুত অফলাইন টেন্সরফ্লো ভয়েস রিকগনিশন স্ক্রিপ্ট চালানোর অনুমতি দেওয়া হয় এবং এর মাধ্যমে এক সেকেন্ডের নিচে বিলম্ব সহ কথ্য আদেশ দ্বারা শারীরিক যন্ত্রগুলি নিয়ন্ত্রণ করা যায়।

এখানে বর্ণিত ডিভাইসটি দুটি পূর্ববর্তী নির্দেশাবলীতে বর্ণিত ধারণার সমন্বয় এবং সম্প্রসারণ। এটি এখানে বর্ণিত গুগল কোরাল ভয়েস কন্ট্রোল, জাম্পিং জ্যাকের পূর্বের বাস্তবায়ন এবং এখানে বর্ণিত গুগল এআইওয়াই ভয়েস নিয়ন্ত্রিত MeArm এর ব্যাপক উন্নতি।

গুগল ভয়েস এআইওয়াই সিস্টেম ব্যবহার করে ভয়েস-নিয়ন্ত্রিত MeArm অনলাইন অ্যাক্সেসের প্রয়োজন ছিল, এটি বাস্তবায়ন করা সহজ ছিল না, ভয়েস অর্ডারের জন্য শোনা সক্রিয় করার জন্য একটি বোতাম টিপতে হয়েছিল এবং একটি দীর্ঘ বিলম্বিত সময় ছিল। এখন ব্যবহৃত গুগল কোরাল টিপিইউ এক্সিলারেটর রাস্পবেরি পাই বা অন্যান্য লিনাক্স ডিভাইসে উচ্চ গতি সহ অফলাইনে টেনসরফ্লো লাইট মডেল চালানোর অনুমতি দেয়। গুগল কোরাল গিথুব পৃষ্ঠার উদাহরণগুলির মধ্যে একটি ভয়েস রিকগনিশন সিস্টেমের জন্য "শ্রবণ সাপ" নামে একটি উদাহরণ রয়েছে যা 140 টি মূল বাক্যাংশ (সেপ্টেম্বর 2019) বুঝতে পারে, যা পরে ভার্চুয়াল কীস্ট্রোকের সাথে ম্যাপ করা হয়। পাইথনে প্রোগ্রাম করা কিছু ফাংশনের বাস্তবায়নের সাথে এই "কীস্ট্রোকগুলি" সংযুক্ত করলে ভয়েস কমান্ড নিয়ন্ত্রিত ডিভাইস তৈরি করা সম্ভব হয়। আমি সম্প্রতি একটি প্রথম বাস্তবায়ন, একটি ভয়েস-নিয়ন্ত্রিত ইলেক্ট্রোমেকানিক্যাল জাম্পিং জ্যাক বর্ণনা করেছি এখানে বাস্তবায়ন একটু বেশি জটিল এবং MeArm এর চারটি সার্ভসকে নিয়ন্ত্রণ করতে দেয় যাতে হয় MeArm ক্রমাগত সরানো যায় বা এটিকে পূর্বনির্ধারিত সংখ্যায় সরানো যায় অবস্থান, অথবা আরো কিছু জটিল কাজ সম্পাদন করতে।

উদাহরণস্বরূপ এখানে প্রদত্ত স্ক্রিপ্ট ব্যবহার করে, অন্যান্য ভয়েস-নিয়ন্ত্রিত ডিভাইসগুলি তৈরি করা তুলনামূলকভাবে সহজ হওয়া উচিত, যেমন রোবোটিক গাড়ি বা সহায়ক প্রযুক্তি ইউনিট।

সরবরাহ

  • MeArm। এখানে ব্যবহার করা হয়েছে: MIME ইন্ডাস্ট্রিজ থেকে MeArm Pi
  • রাস্পবেরি পাই 4
  • গুগল কোরাল টিপিইউ এক্সিলারেটর
  • Adafruit 16 চ্যানেল servo bonnet
  • কিছু জাম্পার তার
  • alচ্ছিক: servo bonnet জন্য ক্যাপাসিটর, 4 servos জন্য প্রায় 400 µF (Adafruit দ্বারা প্রস্তাবিত)
  • Servo bonnet জন্য 5-6 V শক্তি উৎস। আমি এখানে একটি পুরানো 6V চার্জার ব্যবহার করেছি, একটি 4x AA ব্যাটারি প্যাকও কাজ করে
  • মাইক্রোফোন। আমি মাইক্রোফোন হিসেবে একটি পুরনো মাইক্রোসফট HD3000 ওয়েবক্যাম ব্যবহার করেছি।

ধাপ 1: সিস্টেম সেট আপ

সিস্টেম সেট আপ করা হচ্ছে
সিস্টেম সেট আপ করা হচ্ছে
সিস্টেম সেট আপ করা হচ্ছে
সিস্টেম সেট আপ করা হচ্ছে

গুগল কোরাল গিথুব পৃষ্ঠা থেকে গুগল কোরাল টিপিইউ এক্সিলারেটরের জন্য পূর্বনির্ধারিত রাস্পিয়ান ছবিটি ডাউনলোড করুন এবং এটি একটি D এসডি কার্ডে ইনস্টল করুন। ইমেজ এছাড়াও উদাহরণ স্ক্রিপ্ট একটি সংখ্যা রয়েছে। নির্দেশিত হিসাবে Pi সেট আপ করুন।

গুগল কোরাল গিটহাব সাইট থেকে উদাহরণ কীওয়ার্ড স্পটার ইনস্টল করুন, যদি ছবিতে অন্তর্ভুক্ত না হয় এবং সমস্ত প্রয়োজনীয় প্রোগ্রাম। পাই এর সাথে মাইক্রোফোন সংযুক্ত করুন। সবকিছু কাজ করছে কিনা তা নিশ্চিত করার জন্য আমি "হিয়ারিং সাপ" উদাহরণের সাথে খেলার সুপারিশ করব।

অ্যাডাফ্রুট 16 চ্যানেলের বনেট সফটওয়্যারটি ডাউনলোড করুন এবং ইনস্টল করুন, যেমন এখানে বর্ণিত হয়েছে। সবকিছু সঠিকভাবে কাজ করছে তা নিশ্চিত করার জন্য বনেট ইনস্টল করুন এবং অ্যাডাফ্রুট উদাহরণগুলির সাথে খেলুন।

এই নির্দেশের সাথে সংযুক্ত ফাইলগুলি ডাউনলোড করুন এবং সেগুলি "প্রকল্প কীওয়ার্ড স্পটার" ফোল্ডারে অনুলিপি করুন। "Commands_v1_MeArm.txt" ফাইলটি অবশ্যই "কনফিগ" সাবফোল্ডারে অনুলিপি করতে হবে।

নির্দেশিত হিসাবে আপনার MeArm এর servos কে servo bonnet এর সাথে সংযুক্ত করুন। আমি আপ/ডাউন এর জন্য পোর্ট 15, ফরওয়ার্ড/ব্যাকওয়ার্ডের জন্য পোর্ট 11, টার্নের জন্য পোর্ট 7 এবং গ্রিপার সার্ভিসের জন্য পোর্ট 3 ব্যবহার করেছি।

স্ক্রিপ্টের মধ্যে আপনাকে আপনার কনফিগারেশনে প্রতিটি সার্ভোর জন্য ন্যূনতম/কেন্দ্র/সর্বোচ্চ মানগুলি সামঞ্জস্য করতে হতে পারে, এই সেটিংস সার্ভোসের ক্ষতি এড়াতে সাহায্য করে। আপনাকে অন্তর্ভুক্ত "অবস্থান", "পরিবহন 1" এবং "পরিবহন 2" তালিকাগুলিও সংশোধন করতে হতে পারে।

স্ক্রিপ্ট চালান। এখন পর্যন্ত আমি এটি IDE থেকে চালাচ্ছিলাম।

যদি আপনি আপনার প্রয়োজনীয়তা অনুসারে একটি নির্দিষ্ট ফাংশন তৈরি করে এমন মূল বাক্যাংশগুলি সংশোধন করতে চান।

সিস্টেমের প্রায় 1 সেকেন্ডের বিলম্বের সময় রয়েছে, তবে কোনটি সম্পাদিত হয় তার উপর নির্ভর করে। কিছু ক্ষেত্রে মূল পর্যায়টি পুনরাবৃত্তি করতে হয়, স্বীকৃতির নির্ভুলতা সবসময় 100%হয় না।

ধাপ 2: ডিভাইস ব্যবহার করে

সবকিছু সেট আপ এবং চেক করা হলে, আপনি ডিভাইস চালাতে পারেন।

একটি বর্তমান সীমাবদ্ধতা হল যে একটি প্রদত্ত আদেশ পুনরাবৃত্তিমূলকভাবে কার্যকর করা হয় যতক্ষণ না এটি বন্ধ করা হয় ("স্টপ গেম" ব্যবহার করে) বা অন্য আদেশ দেওয়া হয়। জটিল মাল্টিস্টেপ কাজ, যেমন "পরিবহন 1" ("লঞ্চ গেম" শব্দটি দ্বারা উদ্ভূত) সর্বদা চূড়ান্ত ধাপে কার্যকর করা হয়।

সুতরাং "ডানদিকে ঘুরুন" দ্বারা ডিভাইসটি ছোট ধাপে ডানদিকে চলে যাবে যতক্ষণ না থামে, অথবা প্রিসেট সর্বোচ্চ মান পৌঁছায়। "লঞ্চ গেম", "নেক্সট গেম" বা "স্টার্ট_ভিডিও" চলার একটি সিরিজ শুরু করবে যা একটি নির্দিষ্ট ধাপে প্রতিটি সার্ভোর সেটিং ধারণকারী তালিকা দ্বারা সংজ্ঞায়িত করা হবে। "এলোমেলো খেলা" ডিভাইসটি এক থেকে আরেক ধাপে লাফিয়ে উঠবে, সেটিংসের তালিকা থেকে এলোমেলোভাবে বাছাই করা হবে।

আপনি যেমন ভিডিওতে দেখতে পাচ্ছেন, আমি লেগো থেকে একটি ডায়াবোলো আকৃতির বস্তু তৈরি করেছি যা MeArm দ্বারা বাছাই করা যেতে পারে এবং একটি পূর্বনির্ধারিত গতিবিধি দ্বারা এক স্থান থেকে অন্য স্থানে পরিবহন করা যেতে পারে। আপনি 'পরিবহন 1' বা 'পরিবহন 2' তালিকা পরিবর্তন করে আপনার নিজের কাজগুলি সংজ্ঞায়িত করতে পারেন।

ধাপ 3: স্ক্রিপ্ট

এখানে তালিকাভুক্ত স্ক্রিপ্টটি "প্রজেক্ট কিওয়ার্ড স্পটার" থেকে "হিয়ারিং স্নেক" উদাহরণের একটি পরিবর্তন। উদাহরণটি সর্বনিম্ন থেকে সরিয়ে ফেলা হয়েছে, তারপর সার্ভার চালানোর জন্য অংশটি যোগ করা হয়েছিল, সফ্টওয়্যার এবং Adafruit servo bonnet এর জন্য প্রদত্ত উদাহরণের উপর ভিত্তি করে।

স্ক্রিপ্টটি এখন পর্যন্ত অপ্টিমাইজ করা হয়নি। আপনার নিজের ঝুঁকিতে ব্যবহার করুন, বিনা দ্বিধায় সংশোধন এবং অপ্টিমাইজ করুন।

পাইথন স্ক্রিপ্ট ছাড়াও কমান্ড-ফাইল এবং ব্যবহৃত লেবেল-ফাইল রয়েছে। এটি কনফিগ-সাবফোল্ডারে রাখুন।

যেমনটি আগে উল্লেখ করা হয়েছে, আপনার বিশেষ MeArm বা অন্য কোনো ডিভাইসের জন্য স্ক্রিপ্টটি খাপ খাইয়ে নিতে প্যারামিটারের বেশ কিছু সমন্বয় প্রয়োজন হতে পারে।

# কপিরাইট 2019 গুগল এলএলসি#

# অ্যাপাচি লাইসেন্সের অধীনে লাইসেন্স, সংস্করণ 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" ভিত্তিতে বিতরণ করা হয়, # ওয়ারেন্টি বা শর্ত ছাড়াই কোন ধরনের, হয় প্রকাশ বা অন্তর্নিহিত। # লাইসেন্সের অধীনে নির্দিষ্ট ভাষা পরিচালনার অনুমতি এবং # সীমাবদ্ধতার জন্য লাইসেন্স দেখুন। # ড hearing এইচ দ্বারা MeArm এর বাস্তবায়নের জন্য মূল "শ্রবণ_স্নেক" কোডটি সংশোধন করা হয়েছিল। একটি MeArm (MIME শিল্প) এর সার্ভিসগুলি বনেটের 3, 7, 11 এবং 15 পোর্টের সাথে সংযুক্ত ছিল। বিস্তারিত জানার জন্য অনুগ্রহ করে "Hearing MeArm" Instructable দেখুন। কমান্ড: "অবস্থান x", x = 0 থেকে 9, ডিভাইসটিকে একটি পূর্বনির্ধারিত অবস্থানে নিয়ে যায়। "সরান/উপরে যান", "সরান/নিচে যান", "এগিয়ে যান/সামনের দিকে যান", "যান/পিছন দিকে যান", "বাঁকুন/বামে যান" এবং "বাঁকুন/যান ডান" প্রদত্ত একটি ধীর, ধাপে ধাপে আন্দোলন দিক, "স্টপ গেম" আন্দোলনগুলি বন্ধ করে দেয়। "ওপেন ট্যাব" এবং "ক্লোজ ট্যাব" গ্রিপার খোলে বা বন্ধ করে। "স্টার্ট ভিডিও" ডিভাইসটিকে পজিশনের একটি পূর্বনির্ধারিত ক্রম অনুসরণ করতে নির্দেশ করে, তালিকা 'অবস্থান' দ্বারা সংজ্ঞায়িত। "এলোমেলো খেলা" আন্দোলনের একটি এলোমেলো প্যাটার্নের ফলাফল, "স্টপ গেম" এটি শেষ করে। "লঞ্চ গেম" তালিকা 'ট্রান্সপোর্ট 1' দ্বারা পূর্বনির্ধারিত মুভের আরেকটি সিরিজ শুরু করে, 'নেক্সট গেম' 'ট্রান্সপোর্ট 2' দ্বারা পূর্বনির্ধারিত বিপরীত অপারেশন আপনার নিজের ঝুঁকিতে ব্যবহার করুন। _future_ থেকে _future_ আমদানি পরম_মিপোর্ট _future_ থেকে আমদানি বিভাগ _future_ থেকে আমদানি print_function আমদানি argparse আমদানি os থেকে এলোমেলো আমদানি র্যান্ডিন থেকে থ্রেডিং আমদানি থ্রেড আমদানি সময় edgetpu.basic.basic_engine আমদানি থেকে বেসিক ইঞ্জিন আমদানি মডেল আমদানি pygame. queocals থেকে আমদানি পাইগাম * adafruit_servokit আমদানি থেকে ServoKit আমদানি বোর্ড আমদানি busio আমদানি 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) # 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 # গ্রিপার ক্লোজড ভার্ট = 15 # সার্ভো পোর্টের সংখ্যা, সার্ভো আপ/ডাউন ফরও = 11 # সার্ভো পোর্টের সংখ্যা, ফরোয়ার্ড/ব্যাকওয়ার্ড মুভিং সার্ভো টার্ন = 7 # সার্ভো গ্রিপ ঘুরানোর জন্য সার্ভো পোর্ট = 3 # সার্ভ পোর্ট 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_r, dn_r), (dn_l, dn_r, le_t, md_g)] # 10 টি বেস পজিশন সংজ্ঞায়িত করে, পূর্ণসংখ্যা 0-9 # পরিবহন পদ্ধতি দ্বারা নির্দেশিত [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), #get অবজেক্ট (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)]

transport2 = [(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)]

dance1 = (0, 8, 7, 4, 1, 2, 3, 6, 9, 8, 5, 2, 1, 4, 7, 8, 9, 6, 3, 2, 0) # একটি "নাচ"

#MeArm কে জিরো পজিশন স্ট্যাটাসে সরানো হচ্ছে কোণ = স্থিতি [2] kit.servo [খপ্পর। কমান্ড): self। (self, event): if event.type == pygame. QUIT: self._running = False def MeArmPos (self, keys): # MeArm কে প্রিসেট পজিশনে নিয়ে যায়, কীওয়ার্ড: "পজিশন x" কী = int (কী) p = অবস্থান [কী] a = p [0] b = p [1] c = p [2] d = p [3] মুদ্রণ ("অবস্থান:", কী, "vert/forw/turn/grip:", a, "/", বি, "/", সি, "/", ডি, "ডিগ্রী") অবস্থা = [a, b, c, d] # নথি বর্তমান অবস্থা মুদ্রণ (অবস্থা) # sys.stdout.write ("অবস্থান: ", কী," বাম/ডান: ", a,"/", b," ডিগ্রী ") 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 (self): # MeArm dance নিয়ন্ত্রণ করে, কীওয়ার্ড: "start_video" dnce = dance1 sp = (len (dnce)) r in range (sp): #পজিশনের ক্রমবর্ধমান ক্রম, sp ধাপ dc = dnce [r] p = position [dc] 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) # গতিবেগের সময় নির্ধারণ করে। ঘুম (0.5) # প্রক্রিয়া শেষে বিরতি TransMeArm1 (স্ব): # নিয়ন্ত্রণ MeArm পরিবহন 1, কীওয়ার্ড: "লঞ্চ গেম" tr1 = transport1 sp = (len (tr1)) #পরিসরের মধ্যে r এর জন্য ধাপের সংখ্যা গণনা করুন: #যেকোনো ধাপে যান p = tr1 [r] a = p [0] b = p [1] c = p [2] d = p [3] কিট। 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 TransMeArm2 (স্বয়ং): # MeArm নৃত্য নিয়ন্ত্রণ করে, কীওয়ার্ড: "পরবর্তী খেলা" tr2 = transport2 sp = (len (tr2)) in 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) # আন্দোলনের গতি সেট করে time.sleep (0.5)) def RandomMoves (self): # পূর্বনির্ধারিত অবস্থানের মধ্যে এলোমেলোভাবে ঝাঁপ দাও, কীওয়ার্ড: "এলোমেলো খেলা" dr = randrange (9) #randomly একটি অবস্থান 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) # আন্দোলনের গতি সেট করে MoveUp (self): # ছোট ধাপে উত্তোলনকারী গ্রিপার > up_l): # টেস্ট যদি সর্বনিম্ন/সর্বোচ্চ প্যারামিটার না থাকে u1 = up_l # অন্যথায় মিনি/সর্বোচ্চ মান kit.servo [vert].angle = u1 # move servo status [0] = u1 # set status value print (" up ", status) time.sleep (1) # set defosocity def MoveDown (self): d 0 = অবস্থা [0] d1 = d0 - 5 #minus x ডিগ্রী যদি (d1 up_r): f1 = up_r kit.servo [forw].angle = f1 # move servo status [1] = f1 print ("forward", status) time.sleep (1) def MoveBack (self): b0 = status [1] b1 = b0 - 5 #minus x degree if (b1 le_t): l1 = le_t kit.servo [turn].angle = l1 # move servo অবস্থা [2] = l1 মুদ্রণ ("বাম", স্থিতি) time.sleep (0.2) def MoveRight (self): r0 = status [2] r1 = r0 - 2 #minus x degree if (r1 <ri_t): r1 = ri_t kit.servo [turn].angle = r1 # move servo status [2] = r1 print ("right", status) time.sleep (0.2) def OpenGrip (self): kit.servo [grip].angle = op_g # ওপেন পজিশনে গ্রিপ সেট করুন: "open_tab" time.sleep (0.5) status [3] = op_g def CloseGrip (self): kit.servo [grip].angle = cl_g # set grip to "close" position: " close_tab "time.sleep (0.5) status [3] = cl_g def StopMove (self): # কিছুই করে না, কিন্তু স্টপ মুভমেন্ট প্রিন্ট (" স্টপ ", স্ট্যাটাস) টাইম স্লিপ (0.25) ডিফ স্পটার (সেলফ, আর্গস): ইঞ্জিন = BasicEngine (args.model_file) mic = args.mic যদি args.mic অন্য কোন int (args.mic) model.classify_audio (mic, engine, labels_file = "config/labels_gc2.raw.txt", commands_file = "config/commands_v1_MeArm.txt", dectection_callback = self._controler.callback, sample_rate_hz = int (args.sample_sample int- = থ্রেড (লক্ষ্য = 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 (সত্য, 0.1) সারি ছাড়া। শূন্য: new_item = None যদি new_item হয় না None: item = new_item if (args.debug_keyboard and key [pygame. K_ESCAPE]) or item == "stop": self._running = false # if (args.debug_keyboard and keys [pygame. K_SPACE]) or item == "go": # self. MeArmPos (7) # if (args.debug_keyboard and keys [pygame. K_RIGHT]) অথবা আইটেম == "ডান": # ডানদিকে ঘুরুন। MovRight () if (args.debug_ke yboard এবং কী [pygame. K_LEFT]) অথবা আইটেম == "বাম": # বাম দিকে নিজেকে ঘুরিয়ে নিন। MovLeft () যদি (args.debug_keyboard এবং কী [pygame. K_UP]) অথবা item == "up": self. MoveUp () if (args.debug_keyboard and keys [pygame. K_DOWN]) or item == "down": self. MoveDown () if (args.debug_keyboard and keys [pygame. K_B]) or item == "b": # backwards self. MoveBack () if (args.debug_keyboard and key [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": # স্টপ মুভমেন্ট: "start_game" self. StopMove () if (args.debug_keyboard and keys [pygame. K_0]) or item == "0": self. MeArmPos (0) if (args.debug_keyboard and key [pygame. K_1]) or item == "1": self. MeArmPos (1) if (args.debug_keyboard and key [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 key [pygame। K_5]) অথবা আইটেম == "5": self. MeArmPos (5) if (args.debug_keyboard and keys [pygame. K_6]) or item == "6": self. MeArmPos (6) if (args.debug_keyboard and কীগুলি 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 (#নৃত্য MeArm, "next_game" এ যদি (args.debug_keyboard এবং কী [pygame. K_r]) অথবা item == "r": self. RandomMoves () #random dance "random game" if (args.debug_keyboard and key [pygame. K_j]) অথবা item == "j": self. TransMeArm1 () # পরিবহন বস্তু: "লাঞ্চ_গেম" যদি (args.debug_keyboard এবং কী [pygame. K_k]) অথবা item == "k": self. TransMeArm2 () # পরিবহন বস্তুর বিপরীত দিক: "next_game" '' 'যদি (args.debug_keyboard এবং কীগুলি = argparse. ArgumentParser () parser.add_argument ('-debug_keyboard', help = 'MeArm নিয়ন্ত্রণ করতে কীবোর্ড ব্যবহার করুন।', অ্যাকশন = 'store_true', ডিফল্ট = মিথ্যা) মডেল। () the_app = App () the_app.on_execute (args)

প্রস্তাবিত: