جدول المحتويات:

رأس عارضة أزياء توطين الصوت مع Kinect: 9 خطوات (بالصور)
رأس عارضة أزياء توطين الصوت مع Kinect: 9 خطوات (بالصور)

فيديو: رأس عارضة أزياء توطين الصوت مع Kinect: 9 خطوات (بالصور)

فيديو: رأس عارضة أزياء توطين الصوت مع Kinect: 9 خطوات (بالصور)
فيديو: عارضة الأزياء الأفضل الحقيقية مقابل المزيفة | فتاة من الريف أصبحت عارضة أزياء 2024, يوليو
Anonim
رأس عارضة أزياء توطين الصوت مع Kinect
رأس عارضة أزياء توطين الصوت مع Kinect

قابل مارغريت ، دمية اختبار لنظام مراقبة إرهاق السائق. تقاعدت مؤخرًا من واجباتها ووجدت طريقها إلى مكتبنا ، ومنذ ذلك الحين لفتت انتباه أولئك الذين يعتقدون أنها "مخيفة". من أجل العدالة ، منحتها القدرة على مواجهة متهميها وجهاً لوجه ؛ بدلاً من أن تتابعك على ما يبدو بنظرتها الخالية من الروح ، فهي الآن تفعل ذلك بالفعل. يستخدم النظام صفيف الميكروفون الخاص بـ Microsoft Kinect ومضاعفات لتوجيهها في اتجاه الأشخاص الذين يتحدثون بالقرب منها.

الخطوة 1: النظرية

نظرية
نظرية

حساب الزاوية

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

لذا افترض أن واجهة الموجة عبارة عن خط مستقيم. إذا كان الصوت قادمًا من اليمين ، فسيصطدم بالميكروفون رقم 2 في الوقت t2 والميكروفون رقم 1 في الوقت t1. المسافة d التي قطعها الصوت بين الاصطدام بالميكروفون رقم 2 والميكروفون رقم 1 هي الفارق الزمني في اكتشاف الصوت مضروبًا في سرعة الصوت v s:

د = v s * (t1-t2) = * Δt

يمكننا ربط هذه المسافة بالمسافة d 12 بين زوج الميكروفون والزاوية θ من الزوج إلى مصدر الصوت بالعلاقة:

كوس (θ) = د / د 12 = * t / د 12

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

أخيرًا ، يمكننا إيجاد قيمة ثيتا بأخذ جيب التمام المعكوس:

θ = أكوس (مقابل * t / د 12) ، 0 <= θ <=

لجعل الزاوية طبيعية أكثر ، يمكننا طرح 90 درجة من ثيتا ، بحيث تكون 0 درجة أمام الزوج مباشرة و +/- 90 درجة ممتلئة يسارًا أو يمينًا ممتلئًا. هذا يحول التعبير من جيب التمام العكسي إلى الجيب العكسي.

  • cos (θ-π / 2) = الخطيئة (θ) = d / d12 = * t / d12
  • θ = asin (مقابل * t / d12) ،-/ 2 <= θ <= π / 2

إيجاد التأخير

كما ترون من المعادلة أعلاه ، كل ما نحتاج إلى حله للزاوية هو التأخير في وصول الموجة الصوتية إلى الميكروفون الأول مقارنة بالميكروفون الثاني ؛ سرعة الصوت والمسافة بين الميكروفونات ثابتة ومعروفة. لتحقيق ذلك ، قمنا أولاً بتجربة الإشارات الصوتية على التردد fs ، وتحويلها من التناظرية إلى الرقمية وتخزين البيانات لاستخدامها لاحقًا. نقوم بأخذ عينات لفترة زمنية تُعرف باسم نافذة أخذ العينات ، وهي فترة طويلة بما يكفي لالتقاط السمات المميزة لموجاتنا الصوتية. على سبيل المثال ، يمكن أن تكون نافذتنا هي بيانات الصوت في النصف الثاني الأخيرة.

بعد الحصول على الإشارات الصوتية ذات الإطارات ، نجد التأخير بين الاثنين عن طريق حساب الارتباط المتبادل بينهما. لحساب الارتباط المتبادل ، نحمل الإشارة المثبتة في إطارات من ميكروفون واحد ثابتة ، ونحرك الإشارة الثانية على طول محور الوقت من كل الطريق خلف الأول إلى كل الطريق قبل الأول. في كل خطوة على طول الشريحة ، نقوم بضرب كل نقطة في إشارتنا الثابتة في النقطة المقابلة لها في الإشارة المنزلقة ، ثم نجمع جميع النتائج معًا لحساب معامل الارتباط الخاص بنا لهذه الخطوة. بعد إكمال الشريحة ، الخطوة التي لها أعلى معامل ارتباط تتوافق مع النقطة التي تكون فيها الإشارتان متشابهتين للغاية ، وما الخطوة التي نتبعها تخبرنا عن عدد العينات n الإشارة رقم 2 التي يتم إزاحتها عن الإشارة 1. إذا كانت n هي إشارة سالبة ، ثم الإشارة الثانية متخلفة عن الإشارة رقم واحد ، وإذا كانت موجبة ، فإن الإشارة الثانية أمامنا ، وإذا كانت صفرًا ، فإن الاثنين مترابطان بالفعل. نقوم بتحويل إزاحة العينة هذه إلى تأخير زمني باستخدام تردد أخذ العينات لدينا مع العلاقة Δt = n / fs ، وبالتالي:

  • θ = asin (مقابل * n / (d12 * fs)) ،-/ 2 <= θ <= π / 2

الخطوة 2: المكونات

القطع

  • Microsoft Kinect لجهاز Xbox 360 ، موديل 1414 أو 1473. يحتوي Kinect على أربعة ميكروفونات مرتبة في مصفوفة خطية سنستخدمها.
  • محول لتحويل موصل Kinect الخاص إلى طاقة USB + تيار متردد مثل هذا الموصل.
  • Raspberry Pi 2 أو 3 يعمل على Raspbian Stretch. حاولت في الأصل استخدام Pi 1 Model B + ، لكنها لم تكن قوية بما يكفي. ظللت أواجه مشكلات في قطع الاتصال بجهاز Kinect.
  • أروع رأس عارضة أزياء يمكنك أن تجده
  • مؤازر تناظري قوي بما يكفي لتحويل رأس عارضة أزياءك
  • شاحن حائط USB بجهد 5 فولت مع تيار كافٍ لتشغيل كل من Pi والمؤازرة ومنفذين على الأقل. (لقد استخدمت قابس 5A 3 منافذ مشابهًا لهذا
  • سلك تمديد بمنفذين (أحدهما لشاحن الحائط USB والآخر لمحول التيار المتردد Kinect.
  • كبلان USB: كابل من النوع A إلى micro-USB لتشغيل Pi والآخر لتشغيل المؤازرة التي لا تمانع في قطعها
  • منصة يجلس عليها كل شيء ومنصة أخرى أصغر حجمًا لرأس عارضة أزياء. لقد استخدمت صينية تقديم بلاستيكية كقاعدة ولوحة بلاستيكية كمنصة للرأس. كلاهما من وول مارت وتكلفا بضعة دولارات فقط
  • 4x # 8-32 1/2 "مسامير وصواميل لربط المؤازرة بالمنصة الأكبر
  • 2x M3 8mm الترباس مع غسالات (أو أي حجم تحتاجه لربط قرن المؤازرة بالمنصة الأصغر)
  • سلكان توصيل من ذكر إلى ذكر ، أحدهما أحمر والآخر أسود ، وسلك توصيل من أنثى إلى ذكر
  • شرائط الفيلكرو اللاصقة المدعومة
  • شريط كهربائي
  • شريط لاصق للتحكم في الكابلات

أدوات

  • دريميل مع عجلة القطع
  • تدريبات
  • لقم الثقب مقاس 7/64 بوصة و 11/16 بوصة و 5/16 بوصة
  • اضغط M3 (اختياري ، اعتمادًا على بوق المؤازرة)
  • مفك براغي
  • لحام الحديد مع جندى
  • يد المساعدة (اختياري)
  • علامة
  • بوصلة
  • قواطع الأسلاك
  • متعدد (اختياري)

معدات الوقاية الشخصية

  • نظارات حماية

  • قناع الوجه (للقطع البلاستيكية dremmel-ed).

الخطوة 3: تجميع المنصة السفلية

الجمعية السفلية للمنصة
الجمعية السفلية للمنصة
الجمعية السفلية للمنصة
الجمعية السفلية للمنصة
الجمعية السفلية للمنصة
الجمعية السفلية للمنصة

الجزء الأول الذي سنصنعه هو المنصة السفلية ، والتي ستحمل Kinect ، والمؤازرة ، وجميع أجهزتنا الإلكترونية. لإنشاء المنصة ، ستحتاج إلى:

  • صينية تقديم بلاستيكية
  • المؤازرة
  • 4x # 8-32 1/2 "براغي مع صواميل
  • دريميل مع عجلة القطع
  • مفك براغي
  • تدريبات
  • 11/16 "لقمة مثقاب
  • علامة

كيف تصنع

  1. اقلب الدرج رأسًا على عقب.
  2. ضع المؤازرة الخاصة بك جانبًا بالقرب من الجزء الخلفي من الدرج ، وتأكد من أن ترس إخراج المؤازرة يقع على طول الخط المركزي للدرج ، ثم ضع علامة حول قاعدة المؤازرة.
  3. باستخدام جهاز dremel وعجلة القطع ، قم بقطع المنطقة التي حددتها ، ثم حرك المؤازرة في الفتحة الخاصة بها.
  4. قم بتمييز مراكز فتحات تركيب هيكل المؤازرة على الدرج ، ثم قم بإزالة المؤازرة وحفر تلك الثقوب باستخدام مثقابك مقاس 11/16 بوصة. من السهل جدًا تكسير البلاستيك الرقيق مثل هذا عند حفر الثقوب ، لذلك أجده أكثر أمانًا لتشغيل المثقاب في الاتجاه المعاكس وإزالة المواد ببطء. إنه أبطأ بكثير من حفر الثقوب بشكل صحيح ولكنه يضمن عدم وجود تشققات.
  5. ضع المؤازرة الخاصة بك مرة أخرى في الفتحة ، ثم قم بتثبيتها على الدرج باستخدام البراغي والصواميل رقم 8-32.

الخطوة 4: مجموعة منصة الرأس

الجمعية منصة الرأس
الجمعية منصة الرأس
الجمعية منصة الرأس
الجمعية منصة الرأس
الجمعية منصة الرأس
الجمعية منصة الرأس
الجمعية منصة الرأس
الجمعية منصة الرأس

سيكون الجزء التالي الذي سنقوم به عبارة عن منصة لتوصيل رأس عارضة الأزياء بالمؤازرة. لإنشاء منصة الرأس ، ستحتاج إلى:

  • صحن بلاستيكي
  • بوق المؤازرة
  • 2x M3 8mm الترباس مع غسالات
  • مفك براغي
  • تدريبات
  • 7/64 "و 5/16" لقم الثقب
  • بوصلة
  • دريميل مع عجلة القطع

كيف تصنع

  1. اضبط البوصلة على نصف قطر قاعدة رأس عارضة الأزياء.
  2. استخدم البوصلة الخاصة بك لتمييز دائرة تتمحور حول مركز اللوحة. سيكون هذا هو الحجم الفعلي لمنصة رأسنا.
  3. استخدم جهاز dremel وعجلة القطع لقطع المنصة الأصغر من اللوحة.
  4. حفر مركز النظام الأساسي الجديد الخاص بك باستخدام مثقاب مقاس 5/16 بوصة. هذا سيمنحنا الوصول إلى المسمار الذي يثبت قرن المؤازرة الخاص بنا بمؤازرتنا. لإعطاء استقرار المنصة أثناء حفر الفتحة ، قمت بوضع بكرة سلك تحتها وحفر من خلال مركز التخزين المؤقت.
  5. قم بمحاذاة بوق المؤازرة الخاص بك مع مركز المنصة وقم بتمييز فتحتين لإرفاق القرن بالمنصة. تأكد من أن فتحات التثبيت هذه متباعدة بدرجة كافية بحيث يكون هناك مساحة لرؤوس وغسالات البراغي M3.
  6. حفر هذه الثقوب ملحوظ مع 7/64 "مثقاب.
  7. كان الفتحة السفلية لقرن المؤازرة سلسة ، أي لم يكن بها خيوط الترباس M3. وهكذا ، استخدمت مثقابي وصنبور M3 لعمل الخيوط.
  8. استخدم البراغي والغسالات لربط قرن المؤازرة بمنصة الرأس.

الخطوة 5: كبل الطاقة المؤازر

كابل طاقة مؤازر
كابل طاقة مؤازر
كابل طاقة مؤازر
كابل طاقة مؤازر
كابل طاقة مؤازر
كابل طاقة مؤازر
كابل طاقة مؤازر
كابل طاقة مؤازر

يتم تشغيل الماكينات التناظرية عادةً بـ 4.8-6V. نظرًا لأن Raspberry Pi سيتم تشغيله بالفعل بجهد 5 فولت من USB ، فسنعمل على تبسيط نظامنا من خلال تشغيل المؤازرة أيضًا من USB. للقيام بذلك ، سنحتاج إلى تعديل كبل USB. لصنع كبل الطاقة المؤازر ، ستحتاج إلى:

  • كابل USB احتياطي بطرف من النوع A (النوع الذي يتم توصيله بجهاز الكمبيوتر الخاص بك)
  • سلك توصيل أحمر وآخر أسود
  • لحام حديد
  • جندى
  • قواطع الأسلاك
  • شريط كهربائي
  • يد المساعدة (اختياري)
  • المتر (اختياري)

كيف تصنع

  1. قم بقطع الموصل غير USB من النوع A من الكابل الخاص بك ، ثم قم بفصل جزء من العزل للكشف عن الأسلاك الداخلية الأربعة. قطع التدريع المحيط بالأسلاك المكشوفة.
  2. عادةً ما يحتوي كبل USB على أربعة أسلاك: اثنان لنقل البيانات واستقبالها واثنان للطاقة والأرض. نحن مهتمون بالقوة والأرض ، وهما اللونان الأحمر والأسود بشكل عام ، على التوالي. قم بفصل بعض العزل عن الأسلاك الحمراء والسوداء وقطع الأسلاك الخضراء والبيضاء. إذا كنت قلقًا من عدم امتلاكك للطاقة والأسلاك الأرضية الصحيحة ، فيمكنك توصيل الكابل بمحول طاقة USB والتحقق من جهد الخرج باستخدام مقياس متعدد.
  3. بعد ذلك ، قم بقطع أحد طرفي كابلات العبور الحمراء والسوداء وقم بإزالة بعض العزل.
  4. الآن ، قم بلف الأسلاك السوداء المكشوفة لكابلات العبور وكابلات USB. اعبر مراكز الأسلاك المكشوفة ولفها حول بعضها البعض. بعد ذلك ، قم بتطبيق اللحام على الأسلاك المتزاوجة لتثبيتها معًا. ستجعل أيدي المساعدة هذا الأمر أسهل من خلال تثبيت الكابلات في مكانها.
  5. كرر الخطوة 4 للأسلاك الحمراء.
  6. قم بتغطية الأسلاك المكشوفة بشريط كهربائي ، أو أنابيب الانكماش الحراري إذا كنت تشعر بالخيال. ستكون هذه الوصلات هشة لأن الأسلاك صغيرة جدًا ، لذا أضف طبقة ثانية من الشريط الذي يحمل كبلات العبور إلى العزل الخارجي لكابل USB. هذا سيجعل التجميع أكثر صلابة وبالتالي أقل عرضة للكسر من الانحناء.

الخطوة 6: تركيب الإلكترونيات

تركيب الإلكترونيات
تركيب الإلكترونيات
تركيب الإلكترونيات
تركيب الإلكترونيات
تركيب الإلكترونيات
تركيب الإلكترونيات

أخيرًا ، سنجمع كل شيء معًا ، ونركب إلكترونياتنا وكل شيء آخر على المنصة السفلية. سوف تحتاج:

  • منصة منخفضة
  • منصة الرأس
  • رأس عارضة أزياء
  • Kinect مع محول USB + AC
  • محول طاقة USB
  • سلك توصيل
  • كابل Micro USB
  • كابل طاقة مؤازر
  • فطيرة التوت
  • كابل توصيل من ذكر إلى أنثى
  • لاصق فيلكرو
  • مقص

كيف تصنع

  1. قم بتركيب Pi في الجزء السفلي من الدرج باستخدام Velcro.
  2. قم بتوصيل محول طاقة USB مع شريط فيلكرو.
  3. قم بتوصيل المؤازرة و Pi بمحول طاقة USB.
  4. قم بتوصيل دبوس 12 (GPIO18) من Pi بكابل إشارة المؤازرة. إنه الدبوس السادس على اليمين.
  5. ثعبان سلك التمديد الخاص بك من خلال المقبض الخلفي للدرج وقم بتوصيل محول طاقة USB في جانب واحد.
  6. خذ محول Kinect USB + AC وقم بتوصيل محول الطاقة بالجانب الآخر من سلك التمديد و USB في Pi.
  7. قم بتمرير سلك Kinect من خلال المقبض الأمامي للدرج وقم بتوصيله بمحول Kinect.
  8. لقد استخدمت الشريط اللاصق لتثبيت الكابلات في الجانب السفلي من المنصة. هذا لا يبدو الأكثر أناقة ، لكن لحسن الحظ كل هذا مخفي.
  9. اقلب المنصة في الجانب الأيمن لأعلى واستخدم شريط فيلكرو لتركيب Kinect في مقدمة المنصة.
  10. استخدم الفيلكرو لتركيب رأس عارضة أزياء على منصة الرأس. بمجرد اصطفاف كل شيء ، على الرغم من ذلك ، افصل بين القطعتين حتى نتمكن من الوصول إلى برغي تثبيت بوق المؤازرة. لا تقم بربط البوق بالمؤازرة حتى الآن ، لأننا نحتاج إلى التأكد من أن المؤازرة في موضعها المركزي أولاً حتى نتمكن من محاذاة كل شيء. سنفعل ذلك في خطوة لاحقة.

الخطوة 7: البرمجيات والخوارزمية

البرمجيات والخوارزمية
البرمجيات والخوارزمية

ملخص

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

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

github.com/raikaDial/kinect_doa

عقدة Kinect DOA

عقدة kinect_doa هي لحم وعظام هذا النظام ، وهي تقوم في الأساس بكل شيء مثير للاهتمام. عند بدء التشغيل ، يقوم بتهيئة عقدة ROS ، مما يجعل كل سحر ROS ممكنًا ، ثم يقوم بتحميل البرامج الثابتة إلى Kinect بحيث تصبح التدفقات الصوتية متاحة. ثم يولد خيطًا جديدًا يفتح التدفقات الصوتية ويبدأ في قراءة بيانات الميكروفون. يقوم Kinect بأخذ عينات من ميكروفوناته الأربعة بتردد 16 كيلو هرتز لكل منها ، لذلك من الجيد أن يكون لديك الارتباط المتبادل وجمع البيانات في سلاسل منفصلة لتجنب فقدان البيانات بسبب الحمل الحسابي. يتم التواصل مع Kinect باستخدام libfreenect ، وهو برنامج تشغيل مفتوح المصدر شائع.

ينفذ مؤشر ترابط التجميع وظيفة رد عند تلقي بيانات جديدة ، ويقوم كلاهما بتخزين البيانات وتحديد وقت تقدير DOA. يتم تخزين البيانات من كل ميكروفون في مخازن مؤقتة متساوية في الطول لنافذة أخذ العينات ، والتي توجد هنا 8192 عينة. يُترجم هذا إلى حساب الارتباط المتبادل مع بيانات نصف ثانية تقريبًا ، ما وجدته من خلال التجربة هو توازن جيد بين الأداء والحمل الحسابي. يتم تشغيل تقدير DOA لكل 4096 عينة عن طريق الإشارة إلى الخيط الرئيسي ، بحيث تتداخل الارتباطات المتقاطعة المتتالية بنسبة 50 ٪. ضع في اعتبارك حالة لا يوجد فيها تداخل ، وتقوم بإصدار ضوضاء سريعة جدًا يتم قطعها إلى النصف من خلال نافذة أخذ العينات. من المحتمل أن يكون صوتك المميز قبل وبعده ضوضاء بيضاء ، والتي قد يكون من الصعب مواءمتها مع الارتباط المتبادل. توفر لنا النوافذ المتداخلة عينة أكثر اكتمالاً من الصوت ، مما يزيد من موثوقية الترابط المتبادل من خلال منحنا ميزات أكثر تميزًا للاصطفاف.

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

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

  1. هناك أربعة ميكروفونات على Kinect ، مما يعني أن هناك ستة أزواج إجمالية من أشكال الموجة يمكننا ربطها معًا. ومع ذلك ، إذا نظرت إلى الترتيب المكاني لصفيف الميكروفون ، يمكنك أن ترى أن الميكروفونات 2 و 3 و 4 قريبة جدًا من بعضها البعض. في الواقع ، هم قريبون جدًا لدرجة أنه نظرًا لسرعة الصوت وتردد أخذ العينات لدينا ، سيتم فصل أشكال الموجة المستلمة عند 2 و 3 و 4 بواسطة عينة واحدة على الأكثر أمام أو خلف ، والتي يمكننا التحقق منها باستخدام الحساب maxlag = Δd * fs / vs حيث Δd هو الفصل بين زوج الميكروفون و fs هو تردد أخذ العينات و مقابل سرعة الصوت. وبالتالي ، فإن الربط بين هذه الأزواج الثلاثة عديم الفائدة ، ونحتاج فقط إلى ربط الميكروفون 1 مع 2 و 3 و 4.
  2. من المعروف أن الارتباط المتبادل القياسي للإشارات الصوتية سيئ الأداء في وجود الصدى (الصدى). يُعرف البديل القوي بالارتباط المتبادل المعمم مع تحويل الطور (GCC-PHAT). تتلخص هذه الطريقة في تطبيق دالة ترجيح تضخم القمم في الارتباط المتبادل ، مما يسهل تمييز الإشارة الأصلية من الصدى. قارنت أداء GCC-PHAT بالارتباط المتبادل البسيط في غرفة الصدى (اقرأ: يتم إعادة تشكيل الحمام الخرساني) ، ووجدت أن GCC-PHAT أكثر فاعلية 7 مرات في تقدير الزاوية الصحيحة.
  3. عند إجراء الارتباط المتبادل ، فإننا نأخذ الإشارتين ، وننزلق إحداهما على الأخرى ، ونضرب في كل خطوة كل نقطة في إشارتنا الثابتة بكل نقطة في الإشارة المنزلقة. بالنسبة لإشارتين بطول n ، ينتج عن ذلك حسابات n ^ 2. يمكننا تحسين ذلك عن طريق إجراء الارتباط المتبادل في مجال التردد بدلاً من ذلك ، والذي يتضمن تحويل فورييه سريع (حسابات nlogn) ، وضرب كل نقطة في إشارة محولة واحدة بالنقطة المقابلة في الأخرى (حسابات n) ، ثم إجراء معكوس تحويل فورييه للعودة إلى المجال الزمني (حسابات nlogn) ، مما يؤدي إلى n + 2 * حسابات nlogn ، أقل من n ^ 2. ومع ذلك ، هذا هو النهج الساذج. الميكروفونات في المصفوفة لدينا قريبة جدًا من بعضها البعض وسرعة الصوت بطيئة نسبيًا لدرجة أن أشكال الموجات الصوتية ستكون في الغالب محاذاة بالفعل.وبالتالي ، يمكننا أن نفتح إطار الارتباط المتبادل لدينا للنظر فقط في التعويضات التي تقدم أو تتخلف قليلاً. بالنسبة للميكروفونات 1 و 4 ، يجب أن يقع التأخير بين +/- 12 عينة ، مما يعني أنه بالنسبة لكل ارتباط متبادل ، نحتاج فقط إلى إجراء حسابات 24 * n ، مما يؤدي إلى توفير حسابي عندما تكون أشكال الموجة لدينا أطول من 2900 عينة.

يستفيد هذا النظام من مكتبة minidsp ، التي تطبق خوارزمية GCC-PHAT مع التحسين 3.

بمجرد العثور على التأخر في الإشارات من كل زوج من الميكروفونات ، يختار البرنامج القيمة المتوسطة للتأخر ، ويستخدمها لحساب الزاوية المقدرة ، وينشر النتيجة بحيث يمكن استخدامها للتحكم في المؤازرة.

عقدة التحكم المؤازرة

بالمقارنة مع عقدة kinect_doa ، فإن عقدة المؤازرة بسيطة نسبيًا. وظيفتها هي فقط أخذ DOA المقدرة وتحريك المؤازرة إلى تلك الزاوية. يستخدم مكتبة wiringPi للوصول إلى وحدة PWM للأجهزة في Raspberry Pi ، واستخدامها لضبط زاوية المؤازرة. يتم التحكم في معظم الماكينات التناظرية بواسطة إشارة PWM بعرض نبضة يتراوح من 1000 ميكرو ثانية إلى 2000 ميكرو ثانية ، المقابلة لزاوية من 0 درجة إلى 180 درجة ، ولكن تم التحكم في المؤازرة التي استخدمتها من 500 ميكرو ثانية إلى 2500 ميكرو ثانية ، المقابلة للزاوية من 0 درجة إلى 270 درجة. وبالتالي ، فإن العقدة قابلة للتكوين لأجهزة مؤازرة مختلفة عن طريق تعيين معلمات للحد الأدنى لعرض النبضة ، والحد الأقصى لعرض النبضة ، والفرق بين الزوايا القصوى والدنيا. بالإضافة إلى ذلك ، لا يتحرك المؤازر على الفور إلى الزاوية المستهدفة ، ولكنه يتحرك باتجاه الزاوية بسرعة قابلة للتكوين ، مما يمنح مارغريت أجواء أكثر تدريجيًا وزاحفًا (بالإضافة إلى أن صوت المؤازرة يتحرك بسرعة ذهابًا وإيابًا يصبح مزعجًا حقًا بسرعة).

الخطوة 8: البناء والتثبيت

تثبيت التبعيات:

أولاً ، قم بتثبيت libfreenect. يجب أن نبنيها من المصدر لأن الإصدار الذي يمكنك الحصول عليه من مدير الحزم لا يتضمن دعمًا للصوت. هذا لأنه يجب علينا تحميل البرامج الثابتة إلى Kinect لتمكين الصوت ، وإعادة توزيع هذه البرامج الثابتة غير قانوني في بعض الولايات القضائية. بالإضافة إلى ذلك ، يمكننا تجنب بناء الأمثلة التي تتطلب OpenGL و glut ، وهي غير ضرورية لتركيبات Raspbian بدون رأس.

sudo apt-get install git cmake build-ضروري libusb-1.0-0-dev

cd git clone https://github.com/OpenKinect/libfreenect cd libfreenect mkdir build cd build cmake.. -DCMAKE_BUILD_REDIST_PACKAGE = OFF -DCMAKE_BUILD_EXAMPLES = OFF جعل sudo make install sudo cp ~ / platform / libfreen / evect /.rules /etc/udev/rules.d udevadm control - reload-rules && udevadm trigger

بعد ذلك ، نحتاج إلى تثبيت حزمة wiringPi ، والتي تتيح لنا التحكم في دبابيس GPIO في Pi:

قرص مضغوط

بوابة استنساخ git: //git.drogon.net/wiringPi cd ~ / wiringPi./build

إرفاق رأس عارضة أزياء:

مع تثبيت wiringPi ، يمكننا الآن الرجوع بسرعة إلى أرض الأجهزة لإرفاق رأس عارضة الأزياء بالمنصة السفلية. لتوسيط المؤازرة عبر سطر الأوامر ، أدخل الأوامر التالية:

gpio pwm-ms

gpio pwmc 192 gpio pwmr 2000 gpio -g pwm 18150

إذا لم تكن هناك حركة ، فمن المحتمل أن تكون المؤازرة الخاصة بك متمركزة بالفعل. للتأكد ، على الرغم من ذلك ، يمكنك ضبط المؤازرة على قيمة غير مركزية ، على سبيل المثال gpio -g pwm 18200 ، ثم أعده إلى 150.

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

تثبيت ROS:

بعد ذلك ، قم بتثبيت ROS على Pi الخاص بك. يمكن العثور على دليل تثبيت رائع هنا ؛ بالنسبة لنظامنا ، لا نحتاج إلى OpenCV ، لذا يمكنك تخطي الخطوة 3. سيستغرق اكتمال هذا الإصدار عدة ساعات. عند الانتهاء باتباع دليل التثبيت ، أضف مصادر التثبيت إلى bashrc الخاص بك حتى نتمكن من استخدام حزم ROS المثبتة حديثًا:

صدى "المصدر /opt/ros/kinetic/setup.bash" >> ~ /.bashrc

بناء حزمة Kinect DOA:

بعد كل ذلك ، قم بإنشاء مساحة عمل catkin لمشروعنا وأدخل دليل src:

mkdir -p ~ / kinect_doa_ws / src

القرص المضغوط ~ / kinect_doa_ws / src

يوجد رمز هذا المشروع في حزمة kinect_doa ، لذا قم بنسخه في دليل src الخاص بمساحة العمل الجديدة:

استنساخ بوابة

توفر حزمة robot_upstart أداة سهلة الاستخدام لتثبيت ملفات التشغيل بحيث يتم تشغيلها عند بدء التشغيل ، لذلك قم أيضًا بنسخها في مساحة العمل الخاصة بك:

استنساخ بوابة

الآن ، يمكننا بناء كود المشروع عن طريق استدعاء catkin_make من دليل المستوى الأعلى لمساحة العمل الخاصة بنا ، ثم مصدر بنائنا بحيث تتوفر حزمنا:

القرص المضغوط ~ / kinect_doa_ws

catkin_make echo "source /home/pi/kinect_doa_ws/devel/setup.bash" >> ~ /.bashrc

الجري والضبط:

بافتراض توصيل كل شيء وتشغيله ، يجب أن تكون قادرًا الآن على تشغيل النظام وجعل Kinect يتتبع صوتك! ومع ذلك ، إذا كان لديك Kinect 1473 ، فافتح أولاً الملف ~ / kinect_doa_ws / src / kinect_doa / launch / kinect_doa.la قم بتشغيله في محرر نصوص واضبط المعلمة using_kinect_1473 على true. بالإضافة إلى ذلك ، إذا استخدمت مؤازرة مختلفة عما فعلت ، فمن المحتمل أن تكون مؤازرة تمثيلية قياسية ، لذا أثناء وجودك في ملف التشغيل ، قم بتغيير المعلمة min_us إلى 1000 ، و max_us إلى 2000 ، و max_deg إلى 180.

kinect_doa kinect_doa.launch

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

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

rosrun robot_upstart install kinect_doa / launch / kinect_doa.launch - user root --symlink

نقوم بإنشاء ارتباط رمزي لملف التشغيل بدلاً من نسخه حتى نتمكن من تغيير المعلمات عن طريق تحرير ~ / kinect_doa_ws / src / kinect_doa / launch / kinect_doa. إطلاق.

الخطوة 9: اخفائها في المكتب

يختبئ في المكتب
يختبئ في المكتب

الآن للجزء الممتع. توجه إلى العمل بعد ساعات واضبط رأس عارضة الأزياء الخاصة بك في الخفاء. ثم فقط استرخِ وشاهد الوقت الذي يستغرقه زملاؤك في العمل! يضمن إبداعك الجديد أن تلفت الأنظار …

موصى به: