Სარჩევი:

რობოტული ხელის კონტროლი EMG– ით: 7 ნაბიჯი
რობოტული ხელის კონტროლი EMG– ით: 7 ნაბიჯი

ვიდეო: რობოტული ხელის კონტროლი EMG– ით: 7 ნაბიჯი

ვიდეო: რობოტული ხელის კონტროლი EMG– ით: 7 ნაბიჯი
ვიდეო: კახი კალაძე დატროლეს 😀🤣🤣 2024, ივლისი
Anonim
Image
Image
სიგნალის შეძენა
სიგნალის შეძენა

ეს პროექტი აჩვენებს რობოტული ხელის კონტროლს (MooVs in open source in Mooov) 3 ღია წყაროს uECG მოწყობილობით, რომლებიც გამოიყენება კუნთების აქტივობის გასაზომად და დასამუშავებლად (ელექტრომიოგრაფია, EMG). ჩვენს გუნდს აქვს გრძელი ისტორია ხელებითა და მათი კონტროლით და ეს არის კარგი ნაბიჯი სწორი მიმართულებით:)

მარაგები

3x uECG მოწყობილობები 1x Arduino (მე ვიყენებ ნანოს, მაგრამ სხვები იმუშავებენ) 1x nRF24 მოდული (ნებისმიერი ზოგადი იქნებოდა) 1x PCA9685 ან მსგავსი სერვო დრაივერი 1x inMoov hand5x დიდი სერვისი (იხ. InMoov ინსტრუქციები თავსებადი ტიპებისთვის) 1x 5V დენის წყაროს შეუძლია 5A ან მეტი მიმდინარე

ნაბიჯი 1: სიგნალის შეძენა

კონტროლი ემყარება EMG - კუნთების ელექტრულ აქტივობას. EMG სიგნალი მიიღება სამი uECG მოწყობილობით (ვიცი, ეს უნდა იყოს ეკგ მონიტორი, მაგრამ რადგან ის ემყარება ზოგად ADC- ს, მას შეუძლია გაზომოთ ნებისმიერი ბიოსიგნალი - მათ შორის EMG). EMG დამუშავებისათვის uECG- ს აქვს სპეციალური რეჟიმი, რომელშიც ის აგზავნის 32-ბინიანი სპექტრის მონაცემებს და საშუალო "კუნთების ფანჯარას" (საშუალო სპექტრალური ინტენსივობა 75-დან 440 ჰერცამდე). სპექტრის სურათები ჰგავს ლურჯ-მწვანე შაბლონებს, რომლებიც დროთა განმავლობაში იცვლება. აქ სიხშირე არის ვერტიკალურ ღერძზე (თითოეულ 3 ნაკვეთზე, დაბალი სიხშირე ქვედა ნაწილში, მაღალი - 0 - დან 488 ჰც - მდე steps 15 ჰერცი საფეხურით), დრო ჰორიზონტალურ დონეზეა (ძველი მონაცემი მარცხენა ჯამში აქ ეკრანზე დაახლოებით 10 წამია). ინტენსივობა დაშიფრულია ფერით: ლურჯი - დაბალი, მწვანე - საშუალო, ყვითელი - მაღალი, წითელი - კიდევ უფრო მაღალი.

ნაბიჯი 2: გამარტივებული სიგნალი

გამარტივებული სიგნალი
გამარტივებული სიგნალი

ჟესტების საიმედო ამოცნობისთვის საჭიროა ამ სპექტრალური სურათების კომპიუტერის სწორი დამუშავება. მაგრამ რობოტული ხელის თითების მარტივი გააქტიურების მიზნით, საკმარისია მხოლოდ საშუალო არხის გამოყენება 3 არხზე - uECG მოხერხებულად იძლევა მას გარკვეულ პაკეტ ბაიტებში, ასე რომ Arduino სკეტჩს შეუძლია მისი ანალიზი. ეს ღირებულებები ბევრად უფრო მარტივად გამოიყურება - მე დავამატე ნედლეულის ღირებულებების სქემა არდუინოს სერიული შეთქმულებიდან. წითელი, მწვანე, ლურჯი დიაგრამები არის ნედლი ღირებულებები 3 uECG მოწყობილობიდან კუნთების სხვადასხვა ჯგუფზე, როდესაც მე ვჭერ ცერა, ბეჭედს და შუა თითებს შესაბამისად. ჩვენი თვალით ეს შემთხვევები აშკარად განსხვავებულია, მაგრამ ჩვენ ეს მნიშვნელობები უნდა გადავაქციოთ "თითის ქულაში", რათა პროგრამამ შეძლოს სერვისების ღირებულებების გამომუშავება. პრობლემა ის არის, რომ კუნთების ჯგუფების სიგნალები "შერეულია": 1 და 3 შემთხვევაში ლურჯი სიგნალის ინტენსივობა დაახლოებით იგივეა - მაგრამ წითელი და მწვანე განსხვავებულია. მე –2 და მე –3 შემთხვევაში მწვანე სიგნალები ერთნაირია - მაგრამ ლურჯი და წითელი განსხვავებულია.

ნაბიჯი 3: სიგნალის დამუშავება

Სიგნალი მუშავდება
Სიგნალი მუშავდება

ამ სიგნალების "გასაზავებლად", მე გამოვიყენე შედარებით მარტივი ფორმულა:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), სადაც S0 - ანგარიში არხისთვის 0, V0, V1, V2 - ნედლეულის მნიშვნელობა 0, 1, 2 და a არხებისთვის, b, c, d - კოეფიციენტები, რომლებსაც ხელით ვარეგულირებ (a და c იყო 0.3 -დან 2.0 -მდე, b და d იყო 15 და 20, თქვენ უნდა შეცვალოთ ისინი თქვენი სენსორის განლაგებისთვის მაინც). იგივე ქულა გამოითვალა 1 და 2 არხებზე. ამის შემდეგ დიაგრამები თითქმის შესანიშნავად გამოეყო. ერთი და იგივე ჟესტებისათვის (ამჯერად ბეჭედი, შუა და შემდეგ ცერა თითი) სიგნალები ნათელია და მათი მარტივად თარგმნა შესაძლებელია სერვო მოძრაობებში, მხოლოდ ზღურბლთან შედარების გზით.

ნაბიჯი 4: სქემა

სქემატიკა
სქემატიკა

სქემა საკმაოდ მარტივია, თქვენ გჭირდებათ მხოლოდ nRF24 მოდული, PCA9685 ან მსგავსი I2C PWM კონტროლერი და მაღალი ამპერიანი 5V კვების ბლოკი, რაც საკმარისი იქნება ყველა ამ სერვისის ერთდროულად გადასატანად (ასე რომ ის მოითხოვს მინიმუმ 5A რეიტინგულ ენერგიას სტაბილური მუშაობისთვის).

კავშირების სია: nRF24 pin 1 (GND) - Arduino's GNDnRF24 pin 2 (Vcc) - Arduino's 3.3vnRF24 pin 3 (Chip Enable) - Arduino's D9nRF24 pin 4 (SPI: CS) - Arduino's D8nRF24 pin 5 (SPI: SCK) - Arduino D13nRF24 pin 6 (SPI: MOSI) - Arduino's D11nRF24 pin 7 (SPI: MISO) - Arduino's D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5vPCA9685 GNDPC9985 Gnd PCA არხები 0-4, ჩემი აღნიშვნის ცერა თითი - არხი 0, საჩვენებელი თითი - არხი 1 და ა.

ნაბიჯი 5: EMG სენსორების განთავსება

EMG სენსორების განთავსება
EMG სენსორების განთავსება
EMG სენსორების განთავსება
EMG სენსორების განთავსება

იმისათვის, რომ მიიღოთ გონივრული კითხვა, მნიშვნელოვანია uECG მოწყობილობების განთავსება, რომლებიც აფიქსირებენ კუნთების აქტივობას, სწორ ადგილას. მიუხედავად იმისა, რომ აქ შესაძლებელია მრავალი განსხვავებული ვარიანტი, თითოეული მოითხოვს სიგნალის დამუშავების განსხვავებულ მიდგომას - ასე რომ, ჩემი კოდისთვის უმჯობესია გამოიყენოთ ჩემი ფოტოების მსგავსი განთავსება. ეს შეიძლება იყოს ინტუიტიური, მაგრამ ცერა თითის სიგნალი უკეთ ჩანს მკლავის მოპირდაპირე მხარეს ასე რომ, ერთი სენსორი მოთავსებულია იქ და ყველა მათგანი იდაყვის მახლობლად არის განთავსებული (კუნთებს აქვთ მათი სხეულის უმეტესი ნაწილი ამ მხარეში, მაგრამ თქვენ გინდათ შეამოწმოთ სად მდებარეობს ზუსტად თქვენი - არის საკმაოდ დიდი ინდივიდუალური განსხვავება)

ნაბიჯი 6: კოდი

ძირითადი პროგრამის გაშვებამდე, თქვენ უნდა გაარკვიოთ თქვენი კონკრეტული uECG მოწყობილობების ერთეულის ID (ეს კეთდება 101 – ე ხაზის კომენტარის გარეშე და მოწყობილობების სათითაოდ ჩართვით, თქვენ სხვა მოწყობილობებთან ერთად იხილავთ ID– ს) და შეავსეთ ისინი unit_ids მასივი (სტრიქონი 37). ამის გარდა, თქვენ გინდათ ითამაშოთ ფორმულის კოეფიციენტებით (სტრიქონები 129-131) და შეამოწმეთ როგორ გამოიყურება სერიულ პლოტერზე, სანამ მას რობოტულ ხელზე მიამაგრებთ.

ნაბიჯი 7: შედეგები

რამდენიმე ექსპერიმენტით, რომელიც დაახლოებით 2 საათს გაგრძელდა, მე შევძელი საკმაოდ საიმედო ოპერაციის გაკეთება (ვიდეო გვიჩვენებს ტიპიურ შემთხვევას). ის არ იქცევა სრულყოფილად და ამ დამუშავებით მხოლოდ ღია და დახურული თითების ამოცნობაა შესაძლებელი (და არც თითოეული 5 – დან, ის მხოლოდ კუნთების 3 ჯგუფს აღმოაჩენს: ცერა თითი, ინდექსი და შუა ერთად, ბეჭედი და პატარა თითები ერთად). მაგრამ "AI", რომელიც აანალიზებს სიგნალს, იღებს კოდის 3 ხაზს და იყენებს ერთ მნიშვნელობას თითოეული არხიდან. მე მჯერა, რომ ბევრად მეტი შეიძლება გაკეთდეს კომპიუტერში ან სმარტფონზე 32-ბინიანი სპექტრალური სურათების გაანალიზებით. ასევე, ეს ვერსია იყენებს მხოლოდ 3 uECG მოწყობილობას (EMG არხები). მეტი არხის საშუალებით შესაძლებელი უნდა იყოს მართლაც რთული ნიმუშების ამოცნობა - მაგრამ კარგად, ეს არის პროექტის მთავარი მიზანი, ნებისმიერი დაინტერესებული პირისთვის ამოსავალი წერტილი:) ხელის კონტროლი ნამდვილად არ არის ერთადერთი პროგრამა ასეთი სისტემისთვის.

გირჩევთ: