مرحبا عزيزي habuchitel!
تحول
نظام تحديد المواقع العالمي (GPS) تحت الماء مؤخرًا إلى ثلاث سنوات. خلال هذا الوقت ، أصبح النظام متسلسلًا ، وجلبنا العديد من الأنظمة والأجهزة إلى السوق ، ولكن طوال هذا الوقت لم أترك الهوس بجلب الصوتيات المائية إلى الجماهير ، لجعله متاحًا للعشاق العاديين ، والمصممين ، وممثلي اتجاهات مثل
المجانين الحضريين العلم المهتمين الآخرين.
واليوم ، تكريما لذكرى زواجنا المتواضعة ، سأشرح بالتفصيل وعلى الأصابع كيفية تحديد الموقع الجغرافي لجسم ما تحت الماء باستخدام جهازي إرسال واستقبال فقط: مع شفرة المصدر وصور مضحكة ورسوم بيانية ونتائج تجريبية.
أسأل جميع المهتمين بنا على قوارب الكاياك ، في المياه النظيفة والدافئة لخزان فولغوغراد!
تنبيه: تحتوي المقالة على كميات ضئيلة من ماتان!بالنسبة لأولئك الذين لا يفهمون ما يحدث ، ولكن لا يمانعون في النظر فيه ، أقترح أن تتعرف على منشوراتنا السابقة حول موضوع الصوتيات المائية والملاحة تحت الماء:
جلسة بث الصوت عبر الماء مع التعرضنظام تحديد المواقع تحت الماء من الصفر في السنةنظام تحديد المواقع العالمي تحت الماء: تابعحول تأثير البكتيريا الزرقاء على وظائف الكلام للرئيسالتنقل تحت الماء: العثور على الاتجاه - عدم العثور على الاتجاه ، محكوم عليك بالنجاحوأيضًا مع
مقالة مراجعة رائعة
كتبها akuzmin حول
علم الصوتيات المائية
تمهيدي
تحت الماء ، لا تمتد الموجات الراديوية إلى أي مسافة كبيرة ، ولا يمكن الاتصال اللاسلكي والملاحة اللائقين هناك تقريبًا ، بمساعدة القلب ، إلا بمساعدة الصوتيات.
هناك نوعان ونصف فقط من أنظمة الملاحة:
- قاعدة فائقة القصر (USB ، USBL) - استنادًا إلى تحديد زاوية وصول إشارة المنارة وقياس المسافة (إما عن طريق استجابة الطلب أو بالساعات المتزامنة). يتم تحديد زاوية الوصول باستخدام مصفوفة هوائي. يتم تحديد الموضع المطلوب بالزاوية والمدى (مهمة جيوديسية مباشرة). نظام UKB على سبيل المثال ، هو ZIMA
- طويل المدى (DB ، LBL) - حيث يتم قياس أوقات وصول الإشارة إما في عدة أجهزة استقبال أو من عدة أجهزة إرسال (يعمل نظام تحديد المواقع العالمي تحت الماء تمامًا مثل ذلك) مع موضع معروف. يمكنك إما قياس المسافات باستخدام طريقة "طلب - استجابة" (طريقة محدد المدى) أو قياس الاختلافات في أوقات وصول الإشارة (طريقة فرق محدد المدى) ، على سبيل المثال ، عمل GPS و GLONASS. يمكن أن تكون القاعدة الطويلة عائمة (مثل RedWAVE ) أو أسفل.
- قاعدة قصيرة (KB ، SB) - في الواقع - نفس الأنظمة طويلة القاعدة ، ولكن جميع العناصر الداعمة للقاعدة تقع على نفس القاعدة - على سبيل المثال ، على متن سفينة.
كما قلت ، يمكن أن تعمل قاعدة طويلة على أساس "طلب-استجابة" ، وفي هذه الحالة من الضروري حل مشكلة تقاطع المجالات N ، أو الدوائر ، إذا كان عمق الكائن المطلوب معروفًا.
أو يمكن أن تعمل القاعدة تمامًا مثل نظام تحديد المواقع العالمي (GPS) و GLONASS ، وتسمى هذه الأنظمة أيضًا بالقطع الزائد ، وهنا السبب: إذا كان الكائن المطلوب ينبعث إشارة تنقل بشكل دوري ، وتزامن ساعات جميع أجهزة الاستقبال (عناصر القاعدة) ، فلا يمكن قياس المسافة مباشرة ، ولكن يمكنك معرفة أي من العناصر الأساسية أقرب أو أبعد. أي ، تتوفر اختلافات المسافة فقط. وكما
تعلمون من الدورة المدرسية:
"يمكن تعريف القطع الزائد على أنه الموقع الهندسي للنقاط ، والقيمة المطلقة للاختلاف في المسافات التي تتراوح من نقطتين معينتين ، تسمى البؤر ، ثابتة"
بمعنى آخر ، إذا بعث الجسم تحت الماء إشارة ، واستلمناها على مستقبلين متزامنين لساعاته ، فيمكننا القول أن جسمنا يقع على سطح زائد (أو على زائدة إذا نقل فجأة عمقه إلينا). المزيد من أجهزة الاستقبال - المزيد من القطع الزائد! المزيد من التشعبات - دقة موقع أعلى
بدون قصر - لا قصر .
وإذا لم يكن الجسم تحت الماء هو الذي يشع ، ولكن العناصر الأساسية ، ثم الجسم تحت الماء ، مع معرفة عمقه ، يمكنه تحديد موقعه نفسه ، علاوة على ذلك ، في هذه الحالة ، لا يزعج أي شخص ويمكن أن يكون هناك العديد من هذه الأشياء - هم مجرد مستمعين. هذه هي الطريقة التي يتم بها ترتيب GPS / GLONASS و
RedWAVE .
ووعدت بالملاحة عبر جهازي إرسال واستقبال ، أحدهما هو الذي يحتاج إلى تحديد موقفه.
دعونا نفهم
المسافة بين نقطتين
أ ( س أ ، ص أ ، ض أ ) و
ب ( س ب ، ص ب ، ض ب ) في الفضاء ثلاثي الأبعاد يتم تحديده (لا تعرف أبدًا ، نسي أحدهم فجأة) بواسطة صيغة بسيطة:
d A B = s q r t ( x a - x b ) 2 + ( y a - y b ) 2 + ( z a - z b ) 2
افترض أن لدينا محطات قاعدة N. لأسباب إنسانية ، نفترض أن إحداثياتهم معروفة لنا ، وقياس المسافات
د ب ن من كل محطة من محطات القاعدة
Bn(xbn،ybn،zbn) إلى الهدف T. من أجل الوضوح: T هو الهدف ، و B هو الأساس.
حتى نتمكن من أي نقطة
M(x،y،z) اكتب تعبيرًا يوضح كيف تتناسب هذه النقطة مع قياساتنا التجريبية. في الواقع ، سيكون هذا هو مجموع الاختلافات بين المسافة من النقطة M إلى محطة القاعدة المقابلة والمسافة المقاسة. سنقوم بتربيع كل من هذا الاختلاف.
epsilon(x،y،z)= sumNn=0 left( sqrt(x−xbn)2+(y−ybn)2+(z−zbn)2−dTbn right)
بشكل عام ، يتعلق الأمر بطريقة المربعات الصغرى ، ويجب أن تكون إحداثيات النقطة المطلوبة هي الحد الأدنى من الوظيفة ε.
إذا كنا نتحدث عن طريقة معين المدى التفاضلي ، والتي سنتطرق إليها في هذه المقالة بشكل عشوائي تمامًا ، ولكل محطة قاعدة لدينا مسافة غير قابلة للقياس
dbn ووقت وصول الإشارة
tOA ثم في التعبير عن وظيفة الخطأ لن تكون هناك مسافات ، ولكن الاختلافات بينهما. والفرق الوحيد هو أنه يجب عليك فرز الأزواج الضرورية من محطات القاعدة ، على سبيل المثال ، للمحطتين n و th + 1:
sqrt(x−xbn)2+(y−ybn)2+(z−zbn)2− sqrt(x−xbn+)1)2+(y−ybn+1)2+(z−zbn+1)2−v(tOAn−tOAn+1)
v - هنا تعني سرعة الصوت ، التي ، بالمناسبة ، ليست ثابتة ، ولكنها تعتمد بشدة على كثافة الوسط والقراءة ودرجة الحرارة والملوحة والضغط. وإذا كنت تريد أن تفعل كل شيء بطريقة البالغين ، فأنت بحاجة إما إلى قياسه مباشرة أو حسابه ، ولكن عن هذا في وقت آخر.
لاحظ أن عمق الأشياء الموضوعة في أنظمة ملاحة السونار الحديثة يقاس مباشرة وبدقة عالية إلى حد ما (0.5-2 سم) ، مما يعني أنه من المنطقي ترجمة المهمة إلى شقة.
سيكون من الممكن إبلاغ أننا الآن نحل هذا بأي طريقة تحسين وننتهي هنا.
ولكن ، أولاً ، ليس كل شيء بهذه البساطة ، وثانيًا ، ليس كل شيء معقدًا للغاية.لنبدأ بالصعوبات
والحقيقة هي أن الكثير يعتمد على ترتيب محطات القاعدة بالنسبة لبعضها البعض (يمكن أن يتأثر بطريقة أو بأخرى ، على سبيل المثال ، بالطرق الإدارية =) وموضع الكائن الموضوع ، بالنسبة لعناصر القاعدة (من الصعب التأثير على ذلك ، في مجموعة واسعة من المهام في البداية ، يُعرف موضع الكائن المحدد تقريبًا ويكاد يكون من المستحيل إنشاء قاعدة مسبقًا).
احصل على الموقف كما في الشكل 1 - كما هو الحال مع صباح الخير:
الشكل 1 - سطح الأخطاء لقاعدة عناصرها الثلاثة. كائن موضوع خارج القاعدة. وجود حد أدنى كاذب
تشير الدوائر الخضراء إلى مواقع المحطات الأساسية ، وتشير العلامة النجمية إلى الموضع الحقيقي للكائن الموضع. يشير لون النقاط إلى قيمة الوظيفة المتبقية (ε) عند تلك النقطة. كما قال أحد السياسيين ، من الواضح أن السطح به انخفاضان ، وعند البحث عن الحد الأدنى ، من السهل جدًا الوقوع في حالة كاذبة. الوضع أسوأ: مع الأخذ في الاعتبار المقياس والموضع الفعلي للجسم ومتوسط سرعة حركة هذه الأشياء ، يمكننا أن نقول إنها ستبقى في هذا الوضع لفترة طويلة ، وسيتم الحفاظ على شكل سطح الأخطاء ، ومن المرجح جدًا لفترة طويلة تلقي بيانات غير صحيحة عن موقع الكائن .
يوضح الرسم المتحرك أدناه موقفًا مشابهًا - عند بدء البحث من نقطة وسط بين محطات القاعدة ، وعند البدء من محطة قريبة ، يؤدي البحث إلى حد أدنى كاذب:
الشكل 2 - بلغ البحث الحد الأدنى الكاذب في البداية من نقطة منتصف القاعدة. قاعدة من ثلاثة عناصريتم تنفيذ البحث هنا باستخدام
خوارزمية Nelder-Mead ، أو كما يطلق عليه أيضًا ، طريقة simplex. يتم استخدامه ، على سبيل المثال ، في Matlab في وظيفة
fminsearchلا يتطلب حساب المشتقات ، فهو مرئي وبديهي وسهل التنفيذ.
الشكل 3 - بلغ البحث الحد الأدنى الكاذب عند البدء من أقرب عنصر أساسي. قاعدة من ثلاثة عناصر
قد يكون الأشخاص المطلعون غاضبين من أن لا أحد يضع المحطات الأساسية على المحك ، ولكن ، أولاً ، يفعلون ذلك في بعض الأحيان ، وثانيًا ، هذا مبالغة لعرض أكثر وضوحًا.
"كانت الهزيمة كاملة. لم يكن من الممكن اختراع أي شيء (C) A. و B. Strugatsky ، "City Doomed"
ماذا يمكنك أن تأتي هنا؟
يقترح المنطق أنه يمكنك استخدام إحدى طريقتين للتحسين العالمي -
Simulation Annealing أو شيء مماثل. ومع ذلك ، هناك نهج آخر (وأكثر إنتاجية) يتمثل في استخدام معلومات مسبقة بشكل كامل لتحديد نقطة بداية البحث.
بعد كل شيء ، نحن نعلم على وجه اليقين أن النقطة المرغوبة تقع (مع جزء من الافتراض) على الدوائر في المراكز التي توجد بها محطات أساسية ، وأن نصف قطر هذه الدوائر يتوافق مع النطاقات المقاسة!
ونحن على يقين أيضًا من أن الخطأ في قياس النطاق في الصوتيات المائية ينمو مع هذا النطاق: ينتشر الصوت بشكل غير خطي.
يمكنك أن تأخذ وتحاول اختيار نقطة البداية للعثور على الحد الأدنى (حرفياً ، على الدائرة) لأقرب منارة ، على أمل أن يتم قياس المسافة إليه بأقصى قدر من الدقة ، وتسترشد بالقيمة نفسها للوظيفة المتبقية ε.
يتم تشكيل إحداثيات النقاط المرشحة في هذه الحالة وفقًا للصيغ البسيطة التالية:
x=xbc+dbccos alphay=ybc+dbcsin alpha
xbc و
ybc - إحداثيات أقرب محطة قاعدة (ج - الأقرب) ،
dbc - المسافة منه إلى الجسم الموضوع.
alpha - حجة (زاوية). إذا كنت تبحث الآن عن الحد الأدنى لـ
epsilonε متفاوتة
و ل ص ح ل في النطاق من 0 إلى 360 درجة بخطوة ، على سبيل المثال ، 10 درجات ، ثم البحث بجوار هذه القيمة عن طريق تقليل الخطوة إلى درجة واحدة وتضييق منطقة البحث إلى 20 (± 10) درجة ، يمكنك تحديد التقريب الأولي بشكل جيد جدًا ، وهو عمليًا في جميع الحالات ، تصيب الهدف على الفور تقريبا!
في الصور أدناه ، سقطت طريقة الحل "وجها لوجه" لـ 30 تكرارًا ببسالة في الحد الأدنى الكاذب ، مما أدى إلى حل غير صحيح تمامًا ، وأصبحت الطريقة ذات التصغير الأولي أحادي البعد على الفور تقريبًا النقطة وفي 6 تكرارات اقتربت من الموقع الفعلي مع اختلاف ~ 25 سم في المسافة إلى أقرب محطة قاعدة هي ~ 400 متر.
الشكل 4 - ضرب البحث الحد الأدنى الكاذب
الشكل 5 - إيجاد الحل الصحيح عند البدء من النقطة التي تم الحصول عليها عن طريق التقليل الأولي ذو البعد الواحد
الشكل 6 - المنطقة المتضخمة حول الحل الناتج. الدائرة الصفراء هي الحل المستلم ، النجم الأخضر هو الموضع الحقيقي للجسمفي المثال أعلاه ، أعطى التكرار الأول بعد تحديد أولي لموضع البحث الأولي حلاً 20 مترًا من الموضع الحقيقي (في الحقل ~ 600 × 600 متر).
في هذه المرحلة ، توصلنا إلى طريقة محدد المدى ، وضع الفرق بين معين المدى أكثر تعقيدًا: لا توجد إرشادات واضحة لاختيار نقطة البداية (الدائرة رقم جيد لأنها مغلقة ، والقطع الزائد سيئ لأنه يذهب إلى ما لا نهاية).
العودة إلى "نظام تحديد المواقع تحت الماء" الموعود لاثنين من أجهزة الإرسال والاستقبال. إلى حد ما ، أنا بالتأكيد ماكرة: كجهاز GPS كامل تحت الماء ، لا يمكن من
مقالتنا الأولى ، ولكن إذا
لم يكن لديك المال لشراء الجهاز المناسب ، وطرح بعض القيود والتركيز بشكل خاص على مجموعة معينة من المهام ، فلا يزال بإمكانك القيام بشيء ما.
الجسم الذي يتم وضعه بشكل متكرر يكون بلا حركة (أو على الأقل يتحرك ببطء ضئيل). في مثل هذه الحالات ، بدلاً من عدة محطات أساسية ، يمكنك حقًا استخدام محطة واحدة ، ولكنها تتحرك: يسمى هذا النهج VLBL أو قاعدة طويلة افتراضية. إذا لم نكن بحاجة إلى إصلاح مسار حركة الجسم تحت الماء ، ولكن ببساطة تحديد موقعه ، فهذا هو ما نحتاجه.
غالبًا ما تنشأ هذه المشكلة عند تثبيت أي معدات سفلية عن طريق التفريغ المجاني من السفينة. مع الأعماق الملموسة ووجود التيارات ، يمكن أن يختلف الموقع الفعلي للمعدات في الأسفل بشكل كبير عن موضع النقطة التي تم فيها إلقاءها. قد تكون هذه المعدات أيضًا عنصرًا في قاعدة الملاحة السفلية: من أجل تحديد موقع جسم تحت الماء ، يجب عليك أولاً تحديد موقع الجسم تحت الماء.
فكيف يمكن ترتيب كل هذا في العالم الحقيقي؟
يتكون الإعداد التجريبي لدينا من:
- الكائن الذي سنخفيه في أسفل الخزان: مودم كود RedGTR الخاص بنا في إصدار مستقل (يبدو فقط رسميًا ، في الواقع - مودم متصل بصندوق بطارية مغلق) ؛ ها هي في الصورة:

الشكل 7 - منارة المستجيب مع علبة البطارية
- محطة قاعدة متنقلة على أساس قارب طعم صيني من مقالتنا الأخرى . لديها على متنها ، بالإضافة إلى ملء التحكم الأصلي ، مودم ثان RedGTR ، وحدة راديو DORJI 433 ميجاهرتز مع هوائي ، وحدة GPS / GLONASS محلية الصنع تعتمد على quectel l76 ، اللوحة الأم الخاصة بها على أساس STM32F429 (يمكن استبدالها بسهولة مع NUCLEO-STM429 أو STM32F4 Discovery أنا متأكد من أن أي لوحة تشبه Arduino ستفعل ذلك أيضًا) والذي يلعب ببساطة دور جهاز التوجيه: كل شيء يذهب إلى المودم من قناة الراديو عبر UART والعكس بالعكس ، يتم أيضًا نقل البيانات من وحدة GPS إلى قناة الراديو.
لذلك يبدو مثل التجمع:

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

الشكل 9 - صورة مركبة اختبار. عرض التعليق
ظلت جميع الدوائر الأصلية دون تغيير تقريبًا ، ويتم تشغيل جميع المعدات الإضافية بواسطة بطارية رصاص منفصلة عند 1.2 أمبير * ساعة.
- وحدة تحكم المشغل ، والتي تتضمن كمبيوتر محمول مع برنامج ووحدة راديو استجابة متصلة عبر USB إلى المحول. البرنامج بالطبع متسرع إلى حد ما وهو مناسب فقط للعرض ، ولكن هناك بالفعل تطبيق بروتوكول للتفاعل مع المودم ، وحل TOA ، على أساس نفس طريقة Nelder-Mead ، واختيار النقاط الأساسية ، والرسم البسيط للمواقع الجغرافية ، بالإضافة إلى القدرة على محاكاة GPS لنقل البيانات إلى بعض التناظرية من برنامج Google Earth.

الشكل 10 - "وحدة تحكم المشغل". تشغيل اختبار على الطاولة.
تمثل النقاط الزرقاء موقع GPS الخاص بالقارب ، وتشير النقاط الخضراء إلى المواضع التي تم فيها أخذ القياسات ، ويتم تمييز مواقع العناصر الأساسية الافتراضية بواسطة سمك السلمون ، ويتم تمييز المواقع المحسوبة لمنارة المستجيب باللون الأحمر.
من مشغول بماذا؟
- المودم الذي تريد العثور عليه ، يقع فقط في الأسفل ، ويستقبل الطلبات ويستجيب لها ؛
- المودم الموجود على القارب ينفذ الأوامر التي وصلت عبر UART - يرسل الطلبات ويتلقى الردود ، كما أفاد UART
- تستقبل اللوحة التي بها STM32F4 في القارب البيانات من GPS والمودم عبر UART وتعيد توجيهها إلى وحدة الراديو بواسطة UART آخر ، وتعيد توجيه البيانات من وحدة الراديو إلى المودم ؛ هناك فارق بسيط صغير يتعلق بالوحدة اللاسلكية - فهو ليس مزدوجًا تمامًا (كما هو الحال في hydroacoustic =)) ، وبالتالي فإن اللوحة "تحمل" رسالة RMC من وحدة GPS وترسلها فقط مع الرسالة من المودم ؛
- يتحكم برنامج التحكم عن بعد في الإجراء بأكمله ، ويجمع البيانات عن المسافات إلى الهدف من مواقع جغرافية مختلفة ، ويحدد القاعدة المثالية ويحدد موقع الهدف ؛
أكثر تفصيلاً
يحدث الاتصال مع أجهزة المودم عبر بروتوكول يشبه NMEA. لمهمتنا ، يتم استخدام ثلاث رسائل فقط:
$PTNTE,targetAddr,requestedCmd,timeoutMs*hh
من جهاز التحكم عن بعد إلى المودم. أرسل الأمر requestCmd إلى المشترك البعيد على
targetAddr
، واضبط مهلة الاستجابة على timeoutMs.
يمكن أن يكون الأمر أيًا من القائمة المعتمدة:
الفريق | كود | الوصف |
---|
CDS_CMD_PING | 0 | طلب PING الذي يجيب عليه المشترك عن بعد PONG |
CDS_CMD_PONG | 1 | الرد على طلب PING |
CDS_CMD_DPT | 2 | اطلب من المشترك البعيد أن ينقل عمقه |
CDS_CMD_TMP | 3 | أمر المشترك البعيد بنقل درجة حرارته |
CDS_CMD_BAT | 4 | الأمر للمشترك البعيد بنقل جهد قوته |
CDS_CMD_USR_0 | 5 | فريق المستخدم 1 |
CDS_CMD_USR_1 | 6 | فريق المستخدم 2 |
.. | .. | .. |
CDS_CMD_USR_34 | 39 | فريق المستخدم 34 |
يدعم المودم الوظائف الأساسية: ping ، وعمق الإرسال ، ودرجة حرارة الماء ، وطاقة البطارية ومجموعة من أوامر رمز المستخدم.
يجيب المودم على الفور عن أمر TNTE حول حقيقة قبول الأمر أو عدم القدرة على تنفيذه برسالة ACK:
$PTNT0,errCode
errCode
- 0 إذا قبل المودم الأمر ، وإلا رمز الخطأ
إذا لم ينتظر المودم حتى يستجيب المشترك البعيد في الوقت المناسب ، فإنه يبلغ عن ذلك برسالة
REM_TIMEOUT
تحتوي فقط على عنوان المشترك البعيد في حقل المعلمة:
$PTNTB,targetAddr
إذا تلقى المودم الإجابة في الوقت المحدد ، فإنه يُبلغ عن ذلك باستخدام الأمر
REM_PONGEX
، الذي يحتوي على التنسيق التالي:
$PTNTD,requestedAddr,requestedCmd,receivedValue_decoded,snrd,dpl,pTime,[dst],[dpt],[tmp]
requestedAddr
- عنوان المشترك المطلوب
requestedCmd
- أمر مطلوب
receivedValue_decoded
- قيمة مقبولة
snrd
- نسبة الإشارة إلى الضوضاء عند خرج المستقبل
snrd
dB
dpl
- إزاحة دوبلر في هرتز
pTime
- وقت انتشار الإشارة (طريقة واحدة) بالثواني
dst
- المسافة إلى المشترك بالأمتار
dpt
- عمق المودم الخاص بالأمتار
tmp
- درجة حرارة الماء الخارجي بالدرجات المئوية
يتم إرسال المعلمات الثلاث الأخيرة فقط إذا تم تصميم المودم مع مستشعر ضغط / درجة حرارة مدمج (خيارنا).
من وحدة GPS ، نحن مهتمون فقط برسالة RMC ، حيث نحصل على الموقع الجغرافي الحالي من (يمكننا استخدام GGA أو GLL - آخر أقصر).
أصعب شيء - نقل البيانات من خلال المياه وقياس المسافة - يتم عن طريق أجهزة المودم ، وتحديد الموقع الجغرافي للقارب - وحدة GPS ، يتبقى القليل - لاستخدام هذه البيانات بشكل صحيح.
يتم تنفيذ كافة عمليات تحليل وبناء رسائل NMEA باستخدام فئة NMEAParser في مكتبة
UCNLNMEA .
يرسل
برنامج وحدة التحكم الذي يعمل على الكمبيوتر المحمول بشكل دوري طلبات
REM_PINGEX
إلى المشترك على العنوان المحدد في إعدادات التطبيق ، ويقوم بذلك إما عند استلام
REM_TIMEOUT
أو
REM_PONGEX
. على طول الطريق ، يتم تسجيل إحداثيات القارب ويتم تخزين البيانات عن مسافة وعمق المشترك البعيد مع إحداثيات القارب الذي تم استقبالها فيه.
الحس السليم (والخبرة) يخبرنا أنه من أجل تحديد موضع جسم تحت الماء ، هناك حاجة إلى 3-5 محطات قاعدة افتراضية ، وكما يمكن رؤيته من الصور أعلاه ، لا يجب أن تكون موجودة على أي حال.
أي ، يتم تشكيل المهمة التالية: عند تلقي القياسات ، من الضروري تحديد العديد منها كعناصر لقاعدة التنقل بطريقة معينة.
أقترح الخيار التالي: اختر مثل هذه القياسات بحيث تشكل الرقم المحدب الموصوف حول الموقع المقدر للكائن الموضع.
للقيام بذلك ، خذ نقطة معينة (في المرحلة الأولية ، عندما يكون من غير الواضح مكان الكائن الموضوع ، ستظهر النقطة الوسطى لجميع القياسات ، والتي سيتم استبدالها بعد ذلك بالتقريب الأول لموضع الكائن المطلوب) ، وحساب زاوية السمت منه (الزاوية بين الاتجاه إلى الشمال والاتجاه إلى نقطة) لكل نقطة قياس. والآن سنحدد عددًا قليلًا من شأنه تغطية نطاق الزوايا الناتج بالتساوي. في جهاز التحكم عن بعد ، يتم ذلك عن طريق الطريقة
List<Measurement> Measurements.GetBase();
بمجرد وصول البيانات ، في الطريقة التي يتم بها
REM_PONGEX
رسالة REM_PONGEX ، نضيف قياسات ونحاول بناء قاعدة تنقل وحل مشكلة التنقل معها. الطريقة هي المسؤولة عن ذلك.
GeoPoint3DWE LocateLBL_NLM(List<Measurements> base, GeoPoint3DWE prevLocation, double rErrorThreshold, out double stStageRErr, out int itCnt);
يتم نقل القاعدة نفسها إليها - مجموعة القياسات التي اخترناها لحل مشكلة التنقل ، والموضع السابق (إذا كان هناك ، يتم أيضًا نقل عمق الكائن المطلوب هناك) ، وعتبة الخطأ الشعاعي ، ومعلمتين ناتجتين للتشخيص - الخطأ الشعاعي في المرحلة الأولى من الحل (وفقًا لـ التحسين أحادي البعد) وعدد التكرارات ، وبعدها تم الحصول على الحل في المرحلة الثانية.
إذا كان الحل الذي نشعر بالرضا عنه ناتجًا عن خطأ شعاعي ، فسنستخدم هذا الحل كنقطة مرجعية لبناء القاعدة.
وهكذا حتى نتعب سنحصل على حل يرضينا.
أسلوب
LocateLBL_NLM
، كما يوحي الاسم ، يحل المشكلة
باستخدام طريقة Nelder-Mead ، التي كانت تؤدي في السابق تحسينًا أحادي البعد إذا لم يكن هناك حل سابق. في الواقع ، قد لا تكون مرتبطًا بالنتيجة السابقة ، ولكن تطبيق التحسين أحادي البعد باستمرار - قد تكون الإستراتيجية مختلفة وتعتمد على ظروف معينة.
من أجل البساطة ، يتم تنفيذ الحل بالأمتار ، والذي ، قبل بدء الحل ، يتم نقل جميع الإحداثيات إلى النظام المحلي ، مع الأصل في منتصف قاعدة الملاحة. بعد الحل ، يتم ترجمة النتيجة مرة أخرى إلى خط الطول الجغرافي وخط العرض (خط الطول X ، وخط العرض Y). لترجمة الدرجات إلى أمتار وخلف ، تحتوي فئة التنقل على أساليب GetDistance2DDeg و Meters2Deg.
لكن ، كما تعلمون ، نظرية بدون ممارسة ميتة ، وحان الوقت للانتقال إلى نتائج التجارب الميدانية.
دعونا نعيد إحياء النظرية بالتحقق العملي
وفقًا للتقاليد القديمة ، نجري اختبارات عند
مصب نهر بيشوغا . إنه مكان ملائم ، هناك أعماق تصل إلى 30 مترًا تقريبًا ، ومنطقة مائية معقدة إلى حد ما.
يتم تثبيت المنارة المدعى عليها على "حامل" ساق خاص (لم يتم تضمين شرفات الرغوة والمرساة التي تساعد الهيكل بأكمله على البقاء في وضع مستقيم):
الشكل 11 - مستجيب منارة "المحطة السفلية"تم تصوير تركيب المنارة على
الفيديو ، ولم يتم حسابها قليلاً بالضوء ونسيت إحضار مصباح يدوي معهم ، بحيث تظل لحظة الاتصال بالأرض مخفية في الظلام.
بينما كانوا على وشك الاختبار ، أعطوا القارب اسمًا:
الشكل 12 - "Palych" في البيئة الطبيعيةعلى الرافعة "Palychu" ، قامت روابط النايلون بتأمين قطعة من قضيب الصيد ، حيث يوجد مودم RedGTR (حتى لا تتسكع وتنبثق).
تتكون التجربة من حقيقة أن منارة المدعى عليه مثبتة في الأسفل ، فقط تطفو عوامة صغيرة منه ، بينما "Palych" ، المتحكم به من الشاطئ ، يمشي حول منطقة الماء في دوائر كبيرة ، يطلب جهاز التحكم عن بعد بشكل دوري شيئًا من المدعى عليه ، على سبيل المثال ، عمقه . تتم كتابة جميع البيانات في السجل ، ويتم عرض كل شيء على الشاشة وفقًا لحالة الأشياء الحقيقية. مثل هذا:
الشكل 13 - لقطة شاشة لبرنامج التحكم عن بعد مع مسار القارب والمواقف المحسوبة لمنارة المستجيب (يتم عرض أفضل موقف محسوب باللون الأحمر)كما يتضح من الشكل 13 ، كانت المنارة تقع على عمق 13.2 م ، وكانت درجة حرارة الماء عند هذا العمق 24.1 درجة مئوية.
الشكل 14 - استيراد المسارات المستلمة إلى GoogleEarthالحصول على نتيجة جيدة في هذه الحالة استغرق حوالي 15 دقيقة من السباحة من القوة.
في التجربة الثانية ، تم تركيب المنارة على عمق 16.5 مترًا ، حيث يكون البرودة متوقعة إلى حد ما - 22.6 درجة مئوية فقط.
الشكل 15 - نتيجة تحديد موقع منارة المستجيب في التجربة الثانية على شاشة برنامج التحكم عن بعدفي هذه الحالة ، لم نتعامل مع التقييم الصحيح للدقة نظرًا لضيق الوقت الحاد (في الواقع ، تسببت هذه الاختبارات المضحكة في حدوث بعض الاحتكاك بين الإدارة ، لأنها كانت ممزقة من العمل) ، وكاننا مقتنعين بأنه عندما ذهبت السفينة إلى الطفو (يمكن رؤية هذه اللحظة في
أول المسار ) ، ثم من حيث موقعه تزامن تمامًا مع أفضل حل ، وتزامنت المسافة مع العمق (مع الفرق بين أعماق المستجيب والمودم المركب على الوعاء). تم إصلاح النقاط التي تم فيها إعادة تعيين المنارات ، وكان التناقض بين الموضع المحسوب ونقاط التفريغ في منطقة 2-3 أمتار ، مما يؤكد بالإضافة إلى ذلك على تشغيل النظام.
بشكل عام ، يمكننا القول أن إثبات صحة هذا المفهوم قد تم بنجاح!
لقد تلقينا متعة حقيقية وحروق شمس ، وسنكون سعداء للإجابة على الأسئلة والاستماع إلى النقد!
خاتمة
الحقيقة المحزنة هي أن أجهزة المودم المستخدمة في هذه التجربة ، على الرغم من أنها رخيصة جدًا وفقًا لمعايير السوق العالمية للاتصالات الصوتية المائية ، لا تزال غير متاحة للهواة.
حتى لا أكون لا أساس لها ، سأقدم رابطًا لعمل Miss Benson
الممتاز ، والذي يحتوي على صفحة 54 من PDF أو 36 من ترقيم المستندات على لوحة مثيرة مع أسعار لبعض أجهزة مودم السونار اعتبارًا من 2010. مثل هذه الأشياء. (يوجد خطأ صغير في الجدول - يشار إلى نطاق اتصال المدى للمودم الذي تقوم بتطويره بالأمتار ، بينما يكون عنوان العمود بالكيلومتر).
الخبر السار هو أننا طورنا فجأة أجهزة مودم يمكنها أن تفعل كل شيء تقريبًا (أصغر قليلاً (في الواقع ، الأصغر في العالم ، وقبلها كان أصغرها أيضًا - من هذه المقالة) ، فإن نطاق الاتصال أقصر ، سرعة انتقال أقل) ، ووفقًا لتقديراتنا ، فإنهم بالفعل يرفعون المعجبين الأثرياء. في الوقت الحالي ، أصبحت الإلكترونيات والبرامج الثابتة جاهزة تمامًا ، ونكمل حل الحالة. في نهاية التطوير ، سننشر مقالة بنتائج التحقق التجريبي.
إنتباه! استطلاع: