Სარჩევი:
- მარაგები
- ნაბიჯი 1: სიგნალის შეძენა
- ნაბიჯი 2: გამარტივებული სიგნალი
- ნაბიჯი 3: სიგნალის დამუშავება
- ნაბიჯი 4: სქემა
- ნაბიჯი 5: EMG სენსორების განთავსება
- ნაბიჯი 6: კოდი
- ნაბიჯი 7: შედეგები
ვიდეო: რობოტული ხელის კონტროლი EMG– ით: 7 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
ეს პროექტი აჩვენებს რობოტული ხელის კონტროლს (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 სენსორების განთავსება
იმისათვის, რომ მიიღოთ გონივრული კითხვა, მნიშვნელოვანია uECG მოწყობილობების განთავსება, რომლებიც აფიქსირებენ კუნთების აქტივობას, სწორ ადგილას. მიუხედავად იმისა, რომ აქ შესაძლებელია მრავალი განსხვავებული ვარიანტი, თითოეული მოითხოვს სიგნალის დამუშავების განსხვავებულ მიდგომას - ასე რომ, ჩემი კოდისთვის უმჯობესია გამოიყენოთ ჩემი ფოტოების მსგავსი განთავსება. ეს შეიძლება იყოს ინტუიტიური, მაგრამ ცერა თითის სიგნალი უკეთ ჩანს მკლავის მოპირდაპირე მხარეს ასე რომ, ერთი სენსორი მოთავსებულია იქ და ყველა მათგანი იდაყვის მახლობლად არის განთავსებული (კუნთებს აქვთ მათი სხეულის უმეტესი ნაწილი ამ მხარეში, მაგრამ თქვენ გინდათ შეამოწმოთ სად მდებარეობს ზუსტად თქვენი - არის საკმაოდ დიდი ინდივიდუალური განსხვავება)
ნაბიჯი 6: კოდი
ძირითადი პროგრამის გაშვებამდე, თქვენ უნდა გაარკვიოთ თქვენი კონკრეტული uECG მოწყობილობების ერთეულის ID (ეს კეთდება 101 – ე ხაზის კომენტარის გარეშე და მოწყობილობების სათითაოდ ჩართვით, თქვენ სხვა მოწყობილობებთან ერთად იხილავთ ID– ს) და შეავსეთ ისინი unit_ids მასივი (სტრიქონი 37). ამის გარდა, თქვენ გინდათ ითამაშოთ ფორმულის კოეფიციენტებით (სტრიქონები 129-131) და შეამოწმეთ როგორ გამოიყურება სერიულ პლოტერზე, სანამ მას რობოტულ ხელზე მიამაგრებთ.
ნაბიჯი 7: შედეგები
რამდენიმე ექსპერიმენტით, რომელიც დაახლოებით 2 საათს გაგრძელდა, მე შევძელი საკმაოდ საიმედო ოპერაციის გაკეთება (ვიდეო გვიჩვენებს ტიპიურ შემთხვევას). ის არ იქცევა სრულყოფილად და ამ დამუშავებით მხოლოდ ღია და დახურული თითების ამოცნობაა შესაძლებელი (და არც თითოეული 5 – დან, ის მხოლოდ კუნთების 3 ჯგუფს აღმოაჩენს: ცერა თითი, ინდექსი და შუა ერთად, ბეჭედი და პატარა თითები ერთად). მაგრამ "AI", რომელიც აანალიზებს სიგნალს, იღებს კოდის 3 ხაზს და იყენებს ერთ მნიშვნელობას თითოეული არხიდან. მე მჯერა, რომ ბევრად მეტი შეიძლება გაკეთდეს კომპიუტერში ან სმარტფონზე 32-ბინიანი სპექტრალური სურათების გაანალიზებით. ასევე, ეს ვერსია იყენებს მხოლოდ 3 uECG მოწყობილობას (EMG არხები). მეტი არხის საშუალებით შესაძლებელი უნდა იყოს მართლაც რთული ნიმუშების ამოცნობა - მაგრამ კარგად, ეს არის პროექტის მთავარი მიზანი, ნებისმიერი დაინტერესებული პირისთვის ამოსავალი წერტილი:) ხელის კონტროლი ნამდვილად არ არის ერთადერთი პროგრამა ასეთი სისტემისთვის.
გირჩევთ:
რობოტული მკლავი გრიპით: 9 ნაბიჯი (სურათებით)
რობოტული მკლავი გრიპით: ლიმონის ხეების მოყვანა რთულ სამუშაოდ ითვლება, ხეების დიდი ზომის გამო და ასევე იმ რეგიონების ცხელი კლიმატის გამო, სადაც ლიმონის ხეები დარგეს. ამიტომ ჩვენ გვჭირდება სხვა რამ, რაც სოფლის მეურნეობის მუშაკებს დაეხმარება სამუშაოს უფრო დაასრულებლად
სიკაშკაშის კონტროლი PWM დაფუძნებული LED კონტროლი Push ღილაკების, ჟოლოს Pi და Scratch გამოყენებით: 8 ნაბიჯი (სურათებით)
სიკაშკაშის კონტროლი PWM დაფუძნებული LED კონტროლი Push Buttons, Raspberry Pi და Scratch გამოყენებით: მე ვცდილობდი მეპოვა გზა იმის ახსნა, თუ როგორ მუშაობდა PWM ჩემს მოსწავლეებზე, ამიტომ მე დავაყენე საკუთარი თავი ამოცანა ვცდილობდი გავაკონტროლო LED სიკაშკაშე 2 ღილაკის გამოყენებით - ერთი ღილაკი გაზრდის LED- ს სიკაშკაშეს და მეორე აფერხებს მას. წინსვლისთვის
ESP8266 RGB LED STRIP WIFI კონტროლი - NODEMCU როგორც IR დისტანციური მართვის წამყვანი ზოლისთვის, რომელიც კონტროლდება Wifi - RGB LED STRIP სმარტფონის კონტროლი: 4 ნაბიჯი
ESP8266 RGB LED STRIP WIFI კონტროლი | NODEMCU როგორც IR დისტანციური მართვის წამყვანი ზოლები Wifi- ზე კონტროლირებადი | RGB LED STRIP სმარტფონის კონტროლი: გამარჯობა ბიჭებო, ამ სახელმძღვანელოში ჩვენ ვისწავლით თუ როგორ გამოიყენოთ nodemcu ან esp8266 როგორც IR დისტანციური მართვა RGB LED ზოლის გასაკონტროლებლად და Nodemcu კონტროლდება სმარტფონის მიერ wifi– ზე. ასე რომ, ძირითადად თქვენ შეგიძლიათ აკონტროლოთ RGB LED STRIP თქვენი სმარტფონით
მარტივი რობოტული მკლავი, რომელიც კონტროლდება ხელის რეალური მოძრაობით: 7 ნაბიჯი (სურათებით)
უბრალო რობოტული მკლავი, რომელიც კონტროლდება ხელის რეალური მოძრაობით: ეს არის ძალიან მარტივი ერთი DOF რობოტული ხელი დამწყებთათვის. მკლავი კონტროლდება არდუინოს მიერ. ის დაკავშირებულია სენსორთან, რომელიც მიმაგრებულია ოპერატორის ხელში. ამიტომ ოპერატორს შეუძლია აკონტროლოს მკლავის იდაყვი საკუთარი იდაყვის მოძრაობის მოხრით
რობოტული მანქანის ნაკრები PS2 უკაბელო დისტანციური მართვის საშუალებით აწყობა და კონტროლი: 6 ნაბიჯი
Robotic Car Kit აწყობა და კონტროლი PS2 უკაბელო დისტანციური მართვის საშუალებით: ეს პროექტი დაკავშირებულია რობოტიკის სამყაროში არსებულ ძირითად საფეხურებთან, თქვენ ისწავლით 4WD Robotic მანქანის ნაკრების აწყობას, აპარატურის განთავსებას და კონტროლს უკაბელო PS2 დისტანციური მართვის საშუალებით