قصة إنشاء مترجم لغة الإشارة

الخلفية


في بداية هذا العام الدراسي (17-18) ، أخبرتنا إدارة المدرسة الحبيبة : "في نهاية العام ، يجب على كل واحد منكم حماية مشروع فردي. أولئك الذين لا يحمون المشروع سيكون لديهم أكاديمي. الدين والفجوة (GIA-9) لن يسمح لهم ". اتضح شيء مثل أطروحة (في الصف التاسع ، مجرد عظمى). من حوالي سبتمبر إلى ديسمبر ، قررت أنا وصديقي كيريل ( kkirra ) نوع المشروع الذي سنفعله: كنت أرغب في تنفيذ شيء ليس صعبًا جدًا ، ولكن في الوقت نفسه شيء مذهل وأصلي. في النهاية ، قررنا: قررنا إنشاء نموذج ليد بشرية ، وحتى أنه كان يعمل بنظام Android (هذا العام ، دخلت أنا وسيريل عن طريق الخطأ في مدرسة IT-samsung بناءً على المدرسة الثانوية ، لذلك أردنا استخدام المعرفة المكتسبة في المشروع) ترجمت النص المدخل إلى لغة الإشارة.

جزء البرنامج


تطبيق Android


قبل شهر من الموعد النهائي ، بدأنا العمل في المشروع. كانت المرحلة الأولى من العمل هي تطوير تطبيق android.

لنكون صادقين ، كان تخطيط التطبيق ولا يزال الأكثر صعوبة بالنسبة لي: لدي مشاكل مع هذه التنسيقات وأنواعها (ما زلت في الصف التاسع ، وحتى من الفيزياء والرياضيات). من الصعب جدًا أيضًا جعل التطبيق يبدو جميلًا على جميع الأجهزة.

كانت المهمة الصعبة الأخرى ، بالإضافة إلى الترميز ، هي تمرير البلوتوث إلى التطبيق (قررنا تنفيذ الاتصال بين جهاز Android والطراز عبر البلوتوث): لم يتم تدريسنا هذا في دورات مدرسة Samsung ، ولكن لا توجد معلومات كثيرة حول ذلك على الإنترنت ( أعني معلومات حول تنفيذ الاتصال بين جهاز android واردوينو ، والذي كان يتحكم فيه النموذج).

الآن القليل عن الكود نفسه (رابط إلى GitHub في نهاية المقالة). يتكون البرنامج من أربعة أنشطة: شاشة البدء ونشاط واحد لكل وضع تحكم.

  • وضع التحكم الأول هو وضع إدخال النص ، عندما يدخل المستخدم النص يدويًا
  • والثاني - بمساعدة الصوت ، يتعرف التطبيق على كلام المستخدم.
  • والثالث هو الوضع اليدوي. يمكن للمستخدم تغيير موضع الأصابع يدويًا لتصوير الإيماءات التي لا يوفرها البرنامج.

لأكون صريحًا ، أشعر بالخجل من الرمز الخاص بي: يبدو غير مكتمل. والحقيقة هي أنني أستطيع تغليف اتصال البلوتوث في فصل منفصل ، وإنشاء طريقة الاتصال ، وإرسال البيانات ، وقطع الاتصال ، وما إلى ذلك ، ولكن بدلاً من ذلك ، في كل نشاط ، قمت بتسجيل كل ما سبق مرة أخرى ، لأن التغليف أدى إلى بعض (ليست كبيرة) مشاكل. ومع ذلك ، لحلها ، كان من الضروري قضاء بعض الوقت في دراسة عمل البلوتوث ، وأنا ، على سبيل المثال ، كنت في عجلة من أمرنا لكتابة الرمز بحيث يكون هناك وقت لتطوير الأجهزة وتنفيذها.

برمجة اردوينو


في عملية تنفيذ جزء البرنامج ، كان من الضروري برمجة وحدة التحكم الدقيقة Arduino ، التي تتلقى بيانات من هاتف ذكي وتتحكم في المعالج. تمت كتابة مكتبة تحتوي على بيانات حول توصيل الماكينات بـ Arduino (جهات الاتصال التي يتم توصيل الماكينات بها) وطرق ترجمة النص إلى لغة الإشارة. الجزء الرئيسي من المكتبة هو مصفوفة ، تحتوي على معلومات حول موضع كل إصبع ، والأحرف المقابلة من الأبجدية الروسية وطرق مختلفة لتبسيط الرمز. المصفوفة معطاة أدناه.

const int navigate [Hand::n][Hand::m]= { {224, 180, 180, 180, 180, 180},// {225, 90, 0, 180, 180, 180},// {226, 0, 0, 0, 0, 0},// {227, 0, 90, 180, 180, 180},// {228, 180, 0, 0,180, 180},// {229, 90, 180, 180, 90, 90},// {230, 90, 180, 180, 90, 90},// {231, 180, 0, 180, 180, 180},// {232, 180, 180, 180, 0, 0},// {233, 180, 180, 180, 0, 0},// {234, 180, 0, 0,180, 180},// {235, 180, 90, 90, 180, 180},// {236, 180, 90, 90, 90, 180},// {237, 180, 0, 0, 180, 0},// {238, 90, 180, 0, 0, 0},// {239, 180, 90, 90, 180, 180},// {240, 180, 0, 180, 0, 0},// {241, 90, 90, 90, 90, 90},// {242, 180, 90, 90, 90, 180},// {243, 0, 180, 180, 180, 0},// {244, 0, 90, 90, 90, 90},// {245, 0, 0, 180, 180, 180},// {246, 180, 0, 0, 180, 180},// {247, 0, 90, 180, 180, 180},// {248, 180, 0, 0, 0, 180},// {249, 180, 0, 0, 0, 180},// {250, 0, 0, 180, 180, 180},// {251, 0, 90, 180, 180, 90},// {252, 0, 0, 180, 180, 180},// {253, 90, 90, 180, 180, 180},// {254, 0, 90, 90, 90, 0},// {255, 90, 90, 90, 180, 180}};// 

"Hand" هو ملف رأس مكتبة (بالملحق ".h") يحتوي على نماذج أولية للوظائف والثوابت.

الآن بضع كلمات حول طرق الترجمة. تستقبل طريقة ترجمة الأحرف ترميز الحرف كمدخل ، وتبحث عن السطر المطلوب (العنصر الأول في كل صف من المصفوفة هو رمز الرمز) ، وتضبط الماكينات وفقًا لدرجات الدوران الموضحة في السطر (يتم وضع رموز الرمز في الجدول بحيث يمكن تغيير الترميز إذا رغبت الجدول ، دون تغيير التعليمات البرمجية بالكامل) ثم تنتظر بضع ثوان حتى يمكن قراءة الإيماءات ولا يتبعون الواحد تلو الآخر. تقسم طريقة ترجمة الجملة الجملة إلى أحرف وتستخدم طريقة ترجمة الأحرف.

طريقة ترجمة الحروف:

 void Hand :: SymbolTranslate(unsigned char a){ //    int str=-1; int i; for(i=0; i<n; i++){ if(navigate[i][0]==(int)(a)){ str=i; break; } } if(str==-1){ return; } else{ First.write(navigate[str][1]); //     Second.write(navigate[str][2]); Third.write(navigate[str][3]); Fourth.write(navigate[str][4]); Fifth.write(navigate[str][5]); delay(200); Serial.println(str); Serial.println("Succsessfull"); } } 

طريقة ترجمة الاقتراح:

 void Hand :: SentenceTranslate(char* s){ //    unsigned char a; for(int i=0; i< strlen(s); i++){ a=s[i]; SymbolTranslate(a); delay(2000); } } 

تسجل الطرق أيضًا الرسائل التي تحتوي على النص المقبول ونتيجة الترجمة (المطبوعة "Succsessfull") ، مما ساعدنا كثيرًا عند تصحيح أخطاء كود اردوينو الخامل .

الأجهزة


تم تنفيذ هذه المرحلة من المشروع من قبل ككرة المذكورة أعلاه. قبل بدء العمل ، بدا أن تطوير رسومات المتلاعب وتجميعها سيكون مهمة بسيطة للغاية ، ولكن هذا ليس هو الحال على الإطلاق.

في البداية ، أردنا طباعة تفاصيل المعالج على طابعة ثلاثية الأبعاد ، وأخذنا المخططات من بنك مشروع فرنسي مفتوح (رسمنا أيضًا ، ولكننا قررنا لاحقًا أنه من الأفضل أخذها من المصدر المفتوح) ، ولكن بعد إرسال المخططات للطباعة ، علمنا أنه للطباعة ستستغرق أجزائنا عدة أسابيع ، وهو ما لم يكن لدينا في ذلك الوقت. ثم قررنا تجميع مناور من المواد المرتجلة: الساعد من الصفائح المعدنية والأصابع من الخشب الرقائقي. أصابع عازمة بسبب الماكينات تحت سيطرة متحكم اردوينو. يتم تقديم رسم عينة أدناه.

الصورة

  • اللون الأحمر - محور دوران الأصابع ، إذا نظرت إلى أصابع الناس - فهذه مفاصل
  • أخضر - شرائط مرنة صغيرة تعيد الأصابع إلى وضعها الأصلي (أي وتر)

الخلاصة


لتلخيص. لقد جمعنا وبرمجنا مترجم لغة الإشارة (نسميه بإيجاز "جدعة" لمظهره). يسمح مشروعنا للأشخاص الذين لا يعرفون لغة الإشارة بالتواصل مع الأشخاص الذين يعانون من ضعف السمع باستخدام أبجدية الإشارة الروسية. يسمح لك تطبيق البرنامج بتغيير الرمز بسرعة ، ودون كسر أي شيء ، إضافة لغات إشارة أخرى إليه (على سبيل المثال ، الإنجليزية).
في المستقبل ، نخطط لطباعة النموذج المحدد مسبقًا على طابعة ثلاثية الأبعاد وتجميعها (سنقوم بذلك عندما نأخذ استراحة من الامتحانات وغيرها من الهراء).

بشكل عام ، تبين أنها جيدة ، وإن لم تكن جميلة جدًا من حيث البرامج الثابتة والمظهر ، ولكن الشيء الرئيسي هو مسودة العمل. لقد تعلمنا الكثير أثناء العمل في هذا المشروع (على سبيل المثال ، حقيقة أننا بحاجة إلى البدء في العمل على مشروع مصمم للعام بأكمله ، في بداية العام ، وليس قبل أسبوعين من التسليم) ولهذا السبب نشعر بالامتنان الشديد للمعلمين الذين ساعدونا ولا سيما دامير موراتوفيتش ، عالمنا العلمي ، الذي ساعدنا في حل معظم المشاكل المرتبطة بالمشروع.

شكرا لقراءتك حتى النهاية!

إذا أصبحت مثيرة للاهتمام بالنسبة لك ، فإن جميع مواد المشروع (بما في ذلك نص العمل والعروض التقديمية وما إلى ذلك) متاحة للوصول العام هنا .

شكرا مرة أخرى لاهتمامكم!

Source: https://habr.com/ru/post/ar415681/


All Articles