للبدء ، فيديو youtube للاستلهام:
تحذير: المشروع في الفيديو هو مجرد عينة يمكن إجراؤها وفقًا للبرنامج التعليمي الوارد في المقالة فيما يتعلق بالرؤية المجسمة و "المنعطفات الرأسية". لا يتم تضمين الدبابات مع جهاز التحكم عن بعد xbox.
على الرغم من الوضوح ، فإن القصة الهزيلة لمؤلف المشروع على الفيديو وتوافر الروابط ، ليست على الفور معرفة كيف يعمل كل شيء. إذا كنت ترغب في جمع شيء مشابه وبتنسيق أكثر ملاءمة ، فمن المستحسن أن تقرأ.
* سأقوم فوراً بالحجز ، والشخص الموجود على الفيديو مع YouTube ليس مألوفًا بالنسبة لي ، ولم أحيل أية بيانات سرية ، فما هي حالة مشروعه الآن ، لا أعرف.
** لن نتحكم في حركة الروبوت على التوت على السطح من خلال جهاز التحكم عن بعد من أجهزة إكس بوكس ، وهذا يمكن التعامل معه بشكل مستقل.
*** من فضلك لا ترمي أحذية الباست ، لأن المشروع لا يزال قيد التطوير.
لذلك ، نحن مهتمون بأمرين:
- كيفية الحصول على صورة ستيريو على الهاتف في خوذة ؛
- كيفية التحكم في الماكينات عن طريق قلب الرأس.
يبدو المفهوم المستخدم في الفيديو ، إذا تم تلخيصه ، كما يلي:
- 2 التوت بي إرسال دفق الفيديو إلى الشبكة من كاميراتهم عبر خدمات webrtc ؛
- يقبل الهاتف (في الخوذة) تدفقات في تطبيقين متطابقين على الهاتف - تطبيقات تعويم.
- في الوقت نفسه ، يتحكم الهاتف في الخوادم المتصلة بتوت العليق.
كل شيء بسيط. لكن ديابلو ، كما تعلمون ، هو في التفاصيل والمضايقات ، وهي:
- تحتاج إلى تشغيل 2 التوت ، ومراقبة إعدادات 2 الكاميرات ، التوت الطاقة * 2.
- تطبيقات تعويم تنزلق باستمرار في الهاتف ، عليك محاذاة الصور على الشاشة.
- ...
لذلك ، سوف ننقل إلى stereopi ، لحسن الحظ ، ظهرت في المتاجر الروسية (آمل ألا تختفي بعد هذا المنشور):
Stereopi هو تطوير مواطننا ، الذي يقوم الآن بغزو السوق بنشاط.
سحرها يأتي من الاسم - يمكنك توصيل كاميرتي CSI raspberry pi في نفس الوقت. في الوقت نفسه ، كل هذا يعمل على أساس واحد التوت وحدة حساب بي. لسوء الحظ ، لا يتم تضمين الوحدة نفسها في الحزمة ؛ يجب عليك شرائها بنفسك.
حول stereopi هناك مقالات عن حبري.
سنحتاج منه إلى دفقتي فيديو والتحكم في الخوادم من خلال GPIO.
كقاعدة لـ stereopi ، سوف نستخدم Raspberry Pi Compute Module 3+.
إعداد ستيروبي
بعد تجميع stereopi (أدخل وحدة حساب في stereopi ، الكاميرات) ، املأ البرنامج.
نستخدم الصورة الجاهزة لوحدة حساب التوت بي - Raspbian (امتداد). وهي متوفرة في stereopi.com -
صورة Raspbian Stretch OpenCV ، Google Driveملء مع التوت.
إذا كانت هناك صعوبات في التعبئة ، يذهب الآخرون إلى
wiki stereopi .
تثبيت webrtc.
قم بتثبيت برنامج webrtc على جهاز stereopi. مواد التثبيت مأخوذة جزئيًا من هذه الصفحة:
التثبيت لـ ARM (Raspberry Pi)
سنتجنب التعليقات غير الضرورية الموجودة بالفعل في الصفحة أعلاه ونقوم ببساطة بتثبيت كل ما هو مطلوب.
curl http://www.linux-projects.org/listing/uv4l_repo/lpkey.asc | sudo apt-key add - sudo nano /etc/apt/sources.list deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/stretch stretch main sudo apt-get update sudo apt-get install uv4l uv4l-raspicam sudo apt-get install uv4l-raspicam-extras sudo raspi-config Anvanced Options Memory Split 256 enter sudo apt-get install uv4l-server uv4l-uvc uv4l-xscreen uv4l-mjpegstream uv4l-dummy uv4l-raspidisp sudo apt-get install uv4l-webrtc sudo apt-get install uv4l-demos sudo apt-get install uv4l-xmpp-bridge sudo apt-get install uv4l-raspidisp-extras
أنت الآن بحاجة (في الإرشادات الموجودة) لإنشاء مفاتيح ssl ، لأن Chrome قد لا يعرض الفيديو عبر اتصال http (عبر https فقط):
openssl genrsa -out selfsign.key 2048 && openssl req -new -x509 -key selfsign.key -out selfsign.crt -sha256
* عند إنشاء المفاتيح ، سيتم طرح أسئلة حول الشركة أو المنطقة أو ما إلى ذلك. - يمكنك الإجابة عليها بشكل تعسفي.
يجب وضع المفاتيح التي تم إنشاؤها (selfsign.key و selfsign.crt في المجلد الحالي) في المجلد:
/etc/ssl/private/
يتم تخزين جميع إعدادات webrtc في ملفين:
/etc/uv4l/uv4l-raspicam.conf /etc/uv4l/uv4l-raspidisp.conf
حتى لا تتعب من قائمة العناصر في الملفات التي تحتاج إلى أن تكون غير مدمجة أو
لإصلاح ، الكتابة فوق ملفات الإعدادات باستخدام uv4l-raspicam.conf و uv4l-raspidisp.conf.
إعادة تشغيل التوت وتسجيل الدخول إلى التوت الملكية الفكرية باستخدام chrome:
https://192.168.1.100:8080
WebRTC من محبي الإمكانيات ، لكننا سنقتصر على شيء واحد - سننتقل إلى علامة تبويب webrtc:
الآن تحقق مما إذا كان الفيديو يعمل مع stereopi.
اضغط على زر "الاتصال" في أسفل صفحة الويب على الهاتف.
يجب أن يظهر فيديو من كاميرات الاستريو.
انقر على زر "ملء الشاشة" أسفل النافذة مع الصورة من كاميرات الويب:
* لا تقم بإعادة تحميل الصفحة على الهاتف! إذا استمر حدوث ذلك ، فأنت بحاجة إلى قتل العمليات على التوت:
sudo killall uv4l
وأعد تشغيل الخدمات عليه:
sudo service uv4l_raspidisp restart sudo service uv4l_raspicam restart
ثم مرة أخرى ، على الصفحة في متصفح
الهاتف ، انقر فوق "اتصال".
** لن تعمل المكالمة إذا لم تكن هناك كاميرا متصلة بتوت العليق.
سنتعامل مع الماكينات.
لإدارة الماكينات على التوت من الهاتف ، تحتاج إلى رمز سيتم تشغيله على التوت والإجراءات على الهاتف.
لكن أولاً ، دعونا نقرر الماكينات. يستخدم فيديو YouTube الماكينات المتصلة مباشرة بـ التوت gpio. نظرًا لأن الماكينات منخفضة الطاقة ، فيمكنك تعليق الماكينتين على التوت gpio. يمكن بسهولة تنفيذ هذه الحيل على خوادم sg-90. إنهم لا يطالبون بالتغذية ، ولكن ليسوا جيدين بشكل خاص للأحمال. من حيث المبدأ ، ينبغي أن تكون كافية لعقد تعليق مع اثنين من الكاميرات من stereopi. يمكن شراء gimbal نفسه على نفس aliexpress ، للبحث عن "pan-tilt". ومع ذلك ، فإن هذه الماكينات لديها أيضا ناقص خطير - فهي "ترتعش مع الخوف". هذا هو التأثير الذي يلاحظه مؤلف فيديو YouTube. لماذا يحدث هذا وماذا تفعل به لن ينظر هنا.
في حالتنا ، يتم استخدام الماكينات mg-996n ومفصل الروبوت ، والتي آمل ألا يحتاج إليها في المستقبل القريب.
* Mg-996N لا "يرتعد".
يحتوي Stereopi على تخطيط gpio مشابه للمعيار الموجود في
التوت 3 .
لذلك ، سوف تذهب أسلاك الإشارة من الماكينات إلى gpio ، ومن الأفضل أن تأخذ 5V ليس من التوت ، ولكن من الجانب ، والجمع بين GND serv مع GND التوت و GND من مصدر خارجي.
الآن أهم شيء هو البرمجيات
في التوت ، نحتاج إلى شيطان ، ولكن ليس إلى Lermontov ، ولكن pigpio. لا تحتاج إلى اتخاذ أي خطوات خاصة لتكوينه ، الشيء الرئيسي هو معرفة أنه معلقة على المنفذ 8888 ويجب عليك تشغيله أولاً:
sudo systemctl start pigpiod.service
بعد ذلك ، قم بإنشاء ملف يدير الخوادم ، ويستقبل البيانات من المقبس ، والذي ينشئه بنفسه:
datachannel_server_tele.py يتم ترك التعليقات في النص لفهم من أين أتى الرمز وماذا يمكن تصحيحه.
المعنى العام للرمز هو كما يلي:
- في البداية ، يتم تعيين الماكينات إلى الموقف الأوسط.
- يوجد 3 دبابيس (gpio) يتم تعليق أسلاك إشارة الماكينات عليها. في حالتنا ، 2 دبابيس (تعليق 2 الماكينات).
- يتم التحكم gpio من خلال تطبيق إشارة في نطاق PWM من 1000 إلى 2000.
- يصل خط من الهاتف ، والذي يتم تحليله بواسطة json (يمكنك القيام بشيء آخر) ، ثم يتم أخذ القيمتين x و y منه. بعد ذلك ، يتم ترجمة هذه القيم إلى قيم PWM لتدوير الماكينات.
* المشكلة هي أن x يأخذ القيم من 0 إلى 360 (يدور الهاتف حول محوره) ، مثل y. ويجب ربط هذه القيم بـ PWM ، والتي تأخذ القيم من 1000 إلى 2000. يستخدم الرمز الصيغة pitchPW = key1 * 5 + 500. 500 هي الحد الأدنى لقيمة مضاعفات PWM (على الرغم من أن الافتراض هو 1000 في الكود). والضرب في 5 مشروط. يجب تحسين هذه النقطة ، لأنه في x = 360 ، تكون قيمة PWM أعلى بعدة مرات من الحد الأقصى. الماكينات محمية من تجاوز الحد الأقصى لزوايا الدوران لتجنب الضرر ، ولكن هذا ليس ممتعًا للغاية.
قم بتشغيل الكود في محطة التوت:
sudo python3 datachannel_server_tele.py
سنقوم بتشغيل نظام تحديد المواقع العالمي (GPS) على الهاتف (يحتوي كل هاتف على أيقونة مقابلة في الإعدادات) وسنستمر في استخدام التوت ip.
https://192.168.1.100:8080/stream/webrtc
انقر فوق "الاتصال". بعد إنشاء الاتصال ، على الهاتف في المتصفح على الصفحة ، تحقق من "إرسال زوايا اتجاه الجهاز ألفا وبيتا وجاما".
ستذهب قيم x إلى المحطة الطرفية باستخدام البرنامج النصي. وإذا قمت بتدوير الهاتف ، فسيتغيرون.
سوف الماكينات تتحرك أيضا.
* حاليا واحد منهم (والثاني هو علق بها).
من المكافآت اللطيفة يوفر لك webrtc الفرصة :
- إنشاء ما يشبه telebridge بين الهاتف والتوت (المحاور الخاص بك سيكون ضخما) ،
- بث الصوت في كلا الاتجاهين (لم يتم اختباره ، ولكن يؤخذ في الاعتبار في الإعدادات) ،
- تدفق إلى صفحة ويب ، يوتيوب في 3D.
- إنشاء مكالمة جماعية من العديد من الأصدقاء (jitsi meet).
- تغيير إعدادات الكاميرا أثناء التنقل عبر واجهة الويب (لماذا التدوير! و لا يعمل).
الآن عن الحزن.
1. Shalturit عن طريق ربط اثنين من الكاميرات المختلفة مع عيون السمك على حاكم المدرسة لم تنجح. اتضح أن الأسماك لها عيون مختلفة. نحتاج إلى نفس النوع من الكاميرا:

2. لم يكن من الممكن توسيع الصورة من كاميرات الاستريو من خلال إعدادات واجهة الويب webrtc. في حين أن الصور ضيقة ، مثل السراويل الفرنسية.

3. يقتصر مضاعفات MG996N على زوايا الدوران -180. في الواقع - 160. ربما ينصح شخص ما بـ 360 ، ولكن بدون دوران مستمر.
4. البرنامج يتطلب طحن.
5. نداء يقع في بعض الأحيان ، لديك لإعادة الاتصال.
ملحق: