كيفية بناء روبوت التنقل الذاتي: 7 خطوات

بنتنا يا بنتنا

بنتنا يا بنتنا

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

Anonim

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

اللوازم:

الخطوة 1: النظام الأساسي الأساسي

مثال على كيفية بناء منصة روبوتية بسيطة للغاية تحتوي على مكونات وأجزاء يسهل العثور عليها في كل مكان ، دون الحاجة إلى أدوات أو معدات احترافية ، ودون مهارة خاصة في الأعمال الميكانيكية.
يسمح حجم القاعدة باستخدامه في العديد من فئات المسابقات الآلية المختلفة: Explorer ، Line Follower ، Can Collector ، إلخ.

الخطوة 2: ماذا نريد أن نحصل عليه؟ و كيف؟

يعتمد هذا الروبوت ، شأنه في ذلك شأن معظم الروبوتات التي تم بناؤها بواسطة hobbysts ، على نظام توجيه تفاضلي ، مما يسمح لنا بمعرفة إحداثيات موضع الروبوت في أي لحظة معينة ، ببساطة معرفة المساحة التي تغطيها كل عجلة بشكل دوري بدقة كافية.
يتأثر نظام التنقل الميت بحساب الخطأ التراكمي. يجب أن تكون دقة القياس عالية لضمان وجود دائرة خطأ صغيرة بعد مسار طويل. لذلك ، بعد بعض النتائج الجيدة مع برامج الترميز محلية الصنع ، قررت استخدام شيء أفضل: زوجان من المحركات التي تعمل بجهد 12 فولت إلى 200 دورة في الدقيقة ، متصلا ببضع برامج تشفير من 300 كون لكل ثورة (cpr) ، وكلاهما متاح في العديد من متاجر الروبوتات على الإنترنت.
المبادئ الأساسية
للقبض على جميع النبضات الناتجة عن تشفير 300 cpr على محرك 3000 دورة في الدقيقة في طريقة فك التشفير 4x (120 كيلو هرتز) ، نحن بحاجة إلى أجهزة مخصصة لكل التشفير (QEI = واجهة الترميز الترميز). بعد إجراء بعض التجارب باستخدام PIC18F2431 مزدوجة ، قررت أن الترقية الصحيحة إلى dsPIC. في البداية ، كان هناك جهازان للمحرك dsPIC30F4012 للتحكم في موضع العجلات وسرعتها ، ولأداء قياس المسافات ولتقديم بيانات عن المحركين إلى dsPIC30F3013. هذا DSC للأغراض العامة قوي بما فيه الكفاية للحصول على البيانات ، والقيام ببعض علم المثلثات من أجل حساب إحداثيات الموقع ، وتخزين البيانات المتعلقة بالمسار المغطى من أجل الحصول على خريطة للمجال ، وكل ذلك بمعدل مرتفع للغاية.
عندما اكتملت اللوحة والبرامج تقريبًا ، قامت Microchip بإخراج SPDIP جديد قوي مكون من 28 دبوسًا في سلسلة dsPIC33F لكلا من إصدارات جهاز التحكم في المحركات (MC) والإصدارات للأغراض العامة (GP). إنها أسرع بكثير من dsPIC30F ، ولديها الكثير من ذاكرة البرنامج وذاكرة الوصول العشوائي المتاحة (مفيدة لرسم الخرائط الميدانية) ، وتتطلب طاقة أقل (جيدة لروبوت يعمل بالبطارية) ، وتبسط قدرات DMA الخاصة بها العديد من عمليات الإدخال / الإخراج.
الأهم من ذلك ، هذه هي أول وحدات تحكم محرك رقاقة مع اثنين من QEIs على نفس الشريحة. لنبدأ منفذ جديد مرة أخرى! ال يشبه المخطط المنطقي للكتلة الرسم البياني للوحة السابقة ، ولكن الأجهزة والبرمجيات أبسط بكثير منذ ذلك الحين يمكنني استخدام DSC واحد فقط insted من ثلاثة . ليست هناك حاجة للاتصال عالي السرعة بين المشرف ووحدات التحكم في المحركات لتبادل معلمات الملاحة. كل عملية سهلة للمزامنة لأنها موجودة على الشريحة نفسها. تعمل إمكانية اختيار الدبوس الطرفية لسلسلة dsPIC33F على تبسيط PCB بشكل أكبر ، مما يتيح اتصالًا داخليًا بالأجهزة الطرفية ومرونة أكبر.
هذا يقودنا إلى "لوحة التحكم في التنقل dsPIC" أو dsNavCon لفترة قصيرة. تم تصميم هذه اللوحة كجزء من نظام أكثر تعقيدًا. في روبوت المستكشف الكامل ، ستتحكم الألواح الأخرى في مجسات الصوت والضوء وأجهزة استشعار الغاز ، وكذلك مصدات ومكتشفات النطاق فوق الصوتي للعثور على الأهداف وتجنب العوائق.
كمجلس مستقل ، dsNavCon يمكن أيضًا استخدامه في روبوت بسيط "تابع الخط" ، أو شيء أكثر تعقيدًا مثل روبوت لمسابقة قياس المسافات والحساب المميت ، أو ما يسمى ب "يمكن روبوت" (يمكن جمع المسابقات). لا يزال هناك الكثير من ذاكرة البرنامج المجانية لإضافة رمز لمثل هذه المهام. مع وجود تغييرات طفيفة أو عدم وجود تغييرات في البرنامج ، يمكن أيضًا استخدامه بشكل مستقل لسيارة يتم التحكم فيها عن بُعد ، باستخدام مودم RF ثنائي الاتجاه مع نوع من التحكم الذكي عن بُعد. يمكن لجهاز التحكم عن بعد إرسال أوامر معقدة مثل "move FWD 1m" ، "Turn 15 ° left" ، "Run FWD at 50 cm / s" ، "Go to X ، Y coordinates" ، أو شيء مشابه.
تم تصميم اللوحة والروبوت أيضًا ، بحيث يصنعهما أي شخص في المنزل دون استخدام الأدوات والمعدات الاحترافية.

الخطوة 3: الأجهزة مفتوحة المصدر

مخطط كتلة
يتكون النظام الفرعي للتحكم في الملاحة من dsNav بصفته اللوحة "الذكية" للنظام ولوحة H-Bridge المزدوجة المستندة إلى L298 للتحكم في محركات 12V المجهزة (Hsiang Neng HN-GH12-1634TR). تأتي تعليقات الحركة من اثنين من 300 cpr encoders (الولايات المتحدة الرقمية e4p-300-079-ht).
يتم إجراء التواصل مع العالم الخارجي من خلال واجهات UART التسلسلية؛ واحد للقياس عن بعد والآخر للحصول على البيانات من لوحة أجهزة الاستشعار. يمكن توصيل وحدة XBee بـ UART1 أو UART2 من خلال لاعبي JP1 و JP2. تتوفر مآخذ J1 و J16 لنوع آخر من الاتصالات. يمكن أيضًا استخدام منفذ COMM1 (J16) لإجراء اتصال I2C بفضل إمكانية تحديد الدبوس المحيطي لسلسلة dsPIC33F.
يمكن العثور على الرسم التخطيطي الأصلي بتنسيق Eagle هنا:
http://www.guiott.com/Rino/dsNavCon33/dsNavCon33_Eagle_project/DsPid33sch.zip
كما ترون ، فإن التخطيطي بسيط للغاية بحيث يمكن تنفيذه على لوحة مثالية كما فعلت. إذا كنت لا ترغب في استخدام هذا النظام ولا ترغب في تحقيق ثنائي الفينيل متعدد الكلور الخاص بك ، فإن لوحة تجارية بناءً على عملي الأصلي ومتوافقة تمامًا مع برنامجي المفتوح المصدر متاحة على: http://www.robot-italy كوم / product_info.php؟ products_id = 1564

الخطوة 4: برمجيات المصدر المفتوح

تم تطوير البرنامج باستخدام IDE المجاني من MPLAB وكتابته مع مترجم MPLAB® C30 (حتى في إصدار مجاني أو طالب) ، وكلاهما (بالطبع) بواسطة رقاقة:
http://www.microchip.com/stellent/idcplg؟IdcService=SS_GET_PAGE&nodeId=81
المشروع بأكمله متاح كمصدر مفتوح في كود Google
http://code.google.com/p/dspid33/
يرجى الرجوع إلى هناك للحصول على أحدث إصدار ، والتعليق ، والأوصاف ، الخ
يوصف البرنامج خطوة بخطوة داخل الكود. من أجل الحصول على مستوى عالٍ من التعليق ورمز أكثر قابلية للقراءة ، يوجد في كل نقطة مهمة رقم بين قوسين (على سبيل المثال: 7) كمرجع إلى ملف خارجي (على سبيل المثال: descrEng.txt) في مشروع MPLAB .
يُظهر الرسم التخطيطي الهيكل العام لإجراءات التحكم الخاصة بلوحة dsNav واستراتيجيات التنقل المطبقة في أساس المشروع.
يمكن اعتبار وحدات التحكم في المحركات صناديق سوداء تعتني بسرعة العجلات. يرسل لهم الجزء المشرف من البرنامج السرعة المرجعية (VeldDesX: السرعة المطلوبة). تحصل وحدات التقاط الإدخال الخاصة بوحدة التحكم الدقيقة على نبضات من أجهزة التشفير المتصلة بالمحرك الحركي وتستمد السرعة الدورانية للمحركات (VelMesX: السرعة المقاسة). الجمع بين كل 1ms هذه القيم في PID التحكم "سرعة PID" نحصل على قيمة PWM الصحيحة للحفاظ على السرعة المطلوبة لكل عجلة واحدة.
تحصل وحدات QEI (واجهة التشفير التربيعي) على كل من نبضات A و B من المشفرات وتعيد إلى المشرف وظيفة الاتجاه وعدد النبضات في وضع 4X (عد حواف الارتفاع والهبوط للإشارة A والإشارة B: 2 × 2 = 4).
بضرب عدد النبضات بواسطة K الذي يشير إلى المساحة المنقولة لكل نبضة مشفرة واحدة ، نحصل على المسافة المقطوعة بواسطة العجلات اليمنى واليسرى كل 10ms. يجمع المشرف بين معلومات السفر هذه ويطبق إجراء الحساب الميت من أجل الحصول على إحداثيات الموقع المقاسة للروبوت: Xmes ، Ymes ، esMes (زاوية الاتجاه).
يتلقى المشرف أمر التنقل من الخارج بواسطة واجهة تسلسلية (القياس عن بعد).
يمكن تطبيق استراتيجيات مختلفة:
ا - السفر بسرعة معينة في اتجاه معين (VelDes ، θDes).
ب - السفر نحو نقطة معينة مع إحداثيات XDes ، YDes.
C - السفر لمسافة معينة في اتجاه معين (DistDes ، θDes).
الوضع أ : مع "مفاتيح التحكم المنطقي" في الموضع 1 ، يتم استخدام التحكم PID فقط "Angle PID" بواسطة وظائف المشرف. تجمع هذه الزاوية الزاوية المرغوبة θDes مع الزاوية المقاسة esMes المحسوبة بواسطة إجراء قياس المسافات ، من أجل الحصول على قيمة السرعة الزاوية الدورانية around للسيارة حول محورها العمودي ، اللازمة لتصحيح خطأ الاتجاه.
قيمة DeltaV متناسبة مع ω. تتم إضافته إلى VelDes للحصول على سرعة العجلة اليسرى وطرحها على VelDes للحصول على سرعة العجلة اليمنى ، من أجل الحفاظ على العنوان المطابق لقيمة ،Des ​​، بينما لا يزال مركز الروبوت يسير بسرعة VelDes.
الوضع ب : مع "مفاتيح التحكم المنطقي" في الموضع 2 ، يتم حساب السرعة المرغوبة VelDes بواسطة عنصر التحكم PID "Dist PID" ويستخدم كما في الوضع A. يتم حساب المدخلات المقاسة لهذا PID (DistMes) كدالة لـ الإحداثيات الحالية وإحداثيات الوجهة. تأتي زاوية الاتجاه المرغوبة أيضًا من نفس الإجراء ويتم استخدامها كمدخلات مرجعية لـ "Angle PID". الإدخال المرجعي لـ "Dist PID" هو 0 ، مما يعني أنه قد تم الوصول إلى الوجهة. مع توفر Vel و VelDes ، يعمل التحكم في سرعة العجلات كما في الوضع A.
الوضع ج : مع وجود "مفاتيح التحكم المنطقي" في الموضع 2 ، تعمل الوجهة على ربط Xdes ، ويتم حساب Ydes مرة واحدة في البداية كدالة لمعلمات الإدخال DistDes ، θDes. بعد ذلك كل شيء يسير كما هو الحال في الوضع B

الخطوة 5: تفاصيل البرنامج: التحكم في السرعة والوظائف الأساسية الأخرى

البرنامج ممتلئ المقاطعة مدفوعة . عند بدء التشغيل ، بعد التهيئة ، يدخل البرنامج في حلقة رئيسية بسيطة للغاية ، تعمل كآلة حالة. في الحلقة الرئيسية ، يتحقق البرنامج من العلامات التي تم تمكينها بواسطة الأحداث الخارجية ، ويدخل في الحالة النسبية وفقًا لقيمها.
لأنه نوع من التعاون البسيط للغاية "نظام التشغيل في الوقت الحقيقي ، "يجب تنفيذ كل روتين في أقصر وقت ممكن ، وتحرير النظام لرعاية المقاطعات المتكررة للغاية.
لا يوجد "انتظر حتى" وليس هناك أي تأخير في الكود. كلما تم استخدام المقاطعات الممكنة ، خاصة بالنسبة للعمليات البطيئة مثل إرسال أو استقبال سلاسل الأحرف. يأخذ اتصال UART ميزة إمكانيات DMA الخاصة بـ dsPIC33F لتوفير وقت وحدة المعالجة المركزية للقيام بكل المهمة "القذرة" في الأجهزة.
الأجهزة الطرفية المستخدمة في dsPIC33FJ128MC802:
- QEIs لحساب المسار سافر.
- التقاط الإدخال (IC) لحساب السرعة.
- محولات A / D لقراءة التيار الكهربائي.
- تعزيز PWMs لدفع المحركات.
- UARTs للتواصل مع العالم الخارجي
وحدات QEI تستخدم لمعرفة مقدار سافر العجلات وفي أي اتجاه. يتم تجميع هذه القيمة جبريًا في متغير كل دقيقة واحدة وإرسالها إلى وظائف المشرف بناءً على طلبها. بعد إرسال القيمة ، تتم إعادة تعيين المتغيرات.
تقاس السرعة عند كل نبضة مشفرة كما هو موضح أدناه. كل 1 مللي ثانية يقوم بحساب متوسط ​​السرعة عن طريق حساب متوسط ​​العينات ، وتنفيذ خوارزمية PID ، وتصحيح سرعة المحرك وفقًا للنتيجة ، وتغيير دورة عمل PWM. للحصول على وصف تفصيلي لتطبيق مكتبة CID PID ، انظر مثال لرمز الشريحة الدقيقة: CE019 - استخدام وحدات التحكم في مشتقات التكامل التكاملي (PID) في أنظمة التحكم في حلقة مغلقة. http://ww1.microchip.com/downloads/en/DeviceDoc/CE019_PID.zip
يتم تنفيذ الاختلافات في سرعة المحركات بسلاسة ، أو تسريعها أو تباطؤها باستخدام منحدر مائل من الارتفاع أو السقوط ، من أجل تجنب الضغط الميكانيكي الثقيل وانزلاق العجلات الذي قد يتسبب في حدوث أخطاء في قياس المسافات. يكون التباطؤ أسرع ثم التسارع لتجنب المطبات مع العقبات أثناء الكبح.
IC ، يتم استخدام وحدات التقاط المدخلات لقياس الوقت المنقضي بين نبضتين تم توليدهما بواسطة المشفر ، وهذا يعني عندما تتحرك العجلات للحصول على مقدار ثابت معروف من المساحة (ثابت SPACE_ENC ). متصلة بالتوازي مع QEA (داخليًا مع DSC بفضل إمكانات Peripheral Pin Select لـ dsPIC33F) ، فهي تلتقط الوقت المنقضي على حافة إشارات التشفير المرتفعة. يتم استخدام TIMER2 في وضع التشغيل المجاني. في كل مقاطعة IC ، يتم تخزين القيمة الحالية لـ TMR2 ويتم طرح قيمتها السابقة منها ؛ هذه هي فترة النبض. ثم تصبح القيمة الحالية هي القيمة السابقة ، في انتظار المقاطعة التالية. يجب التحقق من علامة TMR2 لمعرفة ما إذا كان حدث تجاوز في سجل 16 بت. إذا كانت الإجابة بنعم ، يجب إضافة الفرق بين 0xFFFF والعينة السابقة إلى القيمة الحالية. يتم إضافة العينات جبريًا في IcPeriod متغير وفقا ل _UPDN قليلا ، لتحديد أيضا اتجاه السرعة. هذه هي واحدة من الطرق المقترحة في رقاقة تطبيق مذكرة AN545 .
المتغير IcIndx يحتوي على عدد العينات المضافة في IcPeriod .
كل 1ms يتم حساب متوسط ​​السرعة كما V = الفضاء / الوقت
أين مساحة = SPACE_ENC • IcIndx
(= المساحة المغطاة بنبض مشفر واحد • عدد النبضات)
و الوقت = TCY • IcPeriod
(= فترة TMR واحدة • حدث تجميع للفترات).
Single_TMR_period = TCY = 1 / FCY (تردد الساعة).
وبالتالي V = KVEL • (IcIndx / IcPeriod)
أين KVEL = SPACE_ENC • FCY للحصول على سرعة في م / ث.
التحول اليسار 15 بت KVEL const ( KvelLong = KVEL << 15 ) يتم حساب السرعة بالفعل في تنسيق كسري (أيضًا في حالة استخدام متغيرات عدد صحيح فقط) جاهزة للاستخدام في روتين PID. راجع ملف "descrEng.txt" في مشروع MPLAB للحصول على وصف أكثر تفصيلاً.
محولات A / D قياس مستمر المحركات الحالية ، وتخزين القيم في المخازن المؤقتة ADCBUF 16 موقف. عند امتلاء المخازن المؤقتة ، تحدث المقاطعة ويتم حساب متوسط ​​القيمة تقريبًا كل 1 مللي ثانية.
من UARTs تستخدم لتلقي الأوامر من الخارج وإرسال نتائج القياسات. يعمل جزء الاتصال في البرنامج كجهاز حالة. تستخدم متغيرات الحالة لتنفيذ الإجراءات بالتسلسل. الحصول على أو وضع إجراءات بسيطة للغاية وسريعة Interrupt Service Routines (ISR) لكل بايت واحد من أو إلى مخزن مؤقت ، وتعيين العلامات الصحيحة للسماح بتنفيذ الوظيفة المناسبة.
في حالة حدوث أي نوع من الأخطاء أثناء الاستلام (UART ، المجموع الاختباري ، أخطاء التحليل) ، يتم تعيين متغير الحالة إلى رقم سالب ويتم تشغيل مؤشر LED الأحمر للتواصل خارجيا عن هذا الشرط خطأ. راجع ملف "descrEng.txt" في مشروع MPLAB للحصول على قائمة كاملة بالأخطاء المحتملة.
البروتوكول المستخدم للمصافحة هو طبقة المادية مستقلة ، ويمكن استخدامه مع ناقل I2C أو RS485 أيضًا للتواصل.
ال الطبقة الأولى يتم التحكم بواسطة واجهة dsPIC الطرفية. يتم اكتشاف أخطاء الإطار أو التجاوز (UART) أو التصادمات (I2C) بواسطة الأجهزة ، مع تحديد العلامة المناسبة.
ال طبقه ثانيه يتم التعامل مع إجراءات ISR. تملأ المخزن المؤقت RX مع وحدات البايت المتلقاة من الواجهات. يكتشفون أيضًا تجاوز سعة المخزن المؤقت وتجاوز الأوامر.
UartRx أو UartRx2 وظائف إدارة الطبقة الثالثة . كما هو موضح بالفعل (راجع أيضًا المخططات الدفقية) ، تعمل هذه الإجراءات كآلة حالة ، حيث تحصل على بايت من المخزن المؤقت وتقوم بفك تشفير سلسلة الأوامر.
يتم تبادل البايتات بين الطبقتين الثانية والثالثة (وظيفة ISR و UartRx) من خلال مخزن مؤقت دائري. يستقبل ISR بايت ، ويخزنها في صفيف ويزيد مؤشر إلى الصفيف ، إذا وصل المؤشر إلى نهاية الصفيف تم إعادة تشغيله إلى البداية. تحتوي وظيفة UartRx على مؤشرها الخاص لقراءة الصفيف نفسه ، يزداد (بطريقة دائرية أيضًا) بمجرد فك ترميز البايت في حالة RX الحالية. تستدعي الحلقة الرئيسية وظيفة UartRx عندما يختلف المؤشر "في" عن مؤشر "الخروج".
تتكون كل حزمة قيادة من:
0 - Header @
1 - معرف 0-9 أسكي
2 - كمد A-Z أسكي
3 - CmdLen N = 1-MAX_RX_BUFF # من البايتات التالية (تم تضمين المجموع الاختباري)
4 - البيانات …

N-1 - البيانات
تم الحصول على المجموع الاختباري N - 0-255 ببساطة عن طريق إضافة ما يصل إلى متغير 8 بت ، وجميع البايتات تؤلف الرسالة (المجموع الاختباري نفسه مستبعد).
تتحكم هذه الطبقة في أخطاء المهلة والاختبار ، وكذلك اتساق الحزمة (الرأس الصحيح ، الطول الصحيح). إذا كان كل شيء على ما يرام فإنه يتيح الروتينية محلل (الطبقة الرابعة ) لفك تشفير الرسالة وتنفيذ الإجراء المطلوب. يعين هذا الروتين علامة الخطأ المناسبة إذا كان رمز الرسالة المستلم غير معروف.
TMR1 يولد ساعة توقيت 1000 هرتز - نبضات البرنامج. في مقاطعة كل TMR1 ، يتم تحديث أجهزة ضبط الوقت الداخلية ، ومسح الوكالة الدولية للطاقة ، ويتم تعيين علامة لتمكين الوظيفة التي تطلب قيمة المساحة المنقولة. يتم تمكين وظيفة "All_Parameters_Ask" كل 10 مللي ثانية (السرعة ، الموضع ، التيار).

الخطوة 6: تفاصيل البرنامج: Odometry ورسم الخرائط الميدانية = أين أنا؟

تحسين الخوارزمية العامة لاستخدامها في نظام يستند إلى DSC أو MCU
بمجرد حصولنا على معلومات حول المسافة التي تقطعها كل عجلة في تحديث زمني منفصل (قياس المسافات) ، يمكننا تقدير إحداثيات موقع الروبوت بنفس الدورية دون أي مرجع خارجي (حساب ميت).
يمكن الاطلاع على بعض الخلفية النظرية المتعلقة بحساب الموتى بواسطة قياس المسافات في كتاب يوهان بورنشتاين:
"أين أنا؟ - أجهزة الاستشعار وطرق تحديد المواقع الروبوت المحمول"
وعلى صفحات الويب التالية:
http://www.seattlerobotics.org/encoder/200010/dead_reckoning_article.html
يمكن الاطلاع على الخلفية الرياضية وشرح عميق للطريقة العامة المستخدمة على G.W. ورقة Lucas: نموذج تعليمي ومسار أساسي لنظام التوجيه التفاضلي لمشغلات عجلات الروبوت ، وهو متاح على الإنترنت:
http://rossum.sourceforge.net/papers/DiffSteer/DiffSteer.html
يمكن العثور على بعض الخوارزميات المبسطة في تلك الوثائق نفسها أيضًا ، لذلك من الممكن الحصول على حل وسط صحيح بين الدقة وسرعة التوضيح ، باستخدام القدرة الرياضية (مثلثية) لسلسلة dsPIC33F.
يمكن العثور على وصف للرياضيات المستخدمة لحساب الموضع في الصور المرفقة بهذه الخطوة. أول واحد يعرض معنى الرموز ، والثاني يعرض الصيغ المستخدمة مع تلك الرموز. النقر فوق المربعات بجانب كل خطوة حسابية يظهر وصف موجز.
في النهاية ، نعلم مقدار تحرك الروبوت في ذلك الوقت الفاصل كدليل للاتجاه ، ودلتا على المحور X ودلتا على المحور ص في الحقل المرجعي للكاريثية.
بتراكم كل قيمة دلتا في المتغير الخاص بها ، نعرف الإحداثيات الحالية (الموضع والاتجاه) للنظام الأساسي.
لتجنب الأخطاء الحسابية (القسمة على صفر) وإضاعة وقت وحدة التحكم ، يجب إجراء الفحص مسبقًا على متغيري Sr و Sl. عند تحديد قيمة شبه صفرية تأخذ في الاعتبار الحد الأدنى من التقديرات الميكانيكية والحسابية ، يمكننا تبسيط الصيغ إذا كان الروبوت يسير في خط مستقيم (المساحة التي تغطيها العجلة اليمنى هي نفسها تقريبا المساحة التي تنتقل إليها العجلة اليسرى) أو إذا كان يتمحور حول محورها العمودي (المساحة التي تغطيها العجلة اليمنى هي نفسها تقريبا المساحة التي تنقلها العجلة اليسرى ولكن في اتجاه معاكس) ، كما هو مفصل في مخطط التدفق الموضح في الصورة الأخيرة.

يوضح هذا الفيديو مثالاً للدقة التي يمكن أن نحصل عليها:
http://www.youtube.com/watch؟v=d7KZDPJW5n8


رسم الخرائط الميدانية
مع البيانات المحسوبة من قبل الوظائف السابقة يتم إجراء تعيين الحقل.
كل Xms ، بعد وضع الموضع الحالي ، يتم إجراء تعيين الحقل بتقسيم الحقل غير المعروف في شبكة خلايا 10 × 10 سم. تحديد البعد الأقصى للحقل من 5 × 5 م ، نحصل على مصفوفة 50 × 50 = 2500 خلية. يتم تعريف كل خلية مع nibble ، مع احتلال ذاكرة إجمالي 1250 بايت. يمكن تعيين 16 قيمة مختلفة لكل خلية:
ن = 00 خلية مجهولة
ن = 01 - 10 خلية زار ن مرات
ن = 11 عقبة وجدت
ن = 12 هدف الغاز وجدت
ن = 13 الهدف ضوء وجدت
ن = 14 تم العثور على هدف الصوت
يمكن أن يبدأ الروبوت من أي موقع في هذا المجال ؛ ستكون هذه الإحداثيات المرجعية (0،0) في نظامها المرجعي.
يعد تخطيط الحقول مفيدًا للعثور على أفضل استراتيجية استكشاف في حقل غير معروف. يمكن أن يوجه الروبوت نفسه إلى الجزء الأقل استكشافًا من الحقل (قيمة "n" أقل) ، ويمكن أن يوفر الوقت من خلال عدم التوقف مرتين في هدف تم اكتشافه بالفعل ، ويمكنه العثور على أفضل مسار للوصول إلى إحداثيات معينة ، وأكثر من ذلك.

الخطوة 7: وحدة التحكم عن بعد

هذا هو التطبيق الذي يتحكم عن بعد في لوحة dsNavCon من جهاز Mac / PC عبر الاتصالات التسلسلية من خلال اثنين من أجهزة XBee كما هو موضح في الرسم التخطيطي للكتلة.
من أجل أن تكون سهلة التطوير وجيدة التشغيل في أي نظام تشغيل ، يتم كتابتها مع معالجة لغة:
http://www.processing.org/
يتوفر كود المصدر لهذا البرنامج أيضًا كمصدر مفتوح في كود Google:
http://code.google.com/p/dsnavconconsole/
مع ال لوحة رئيسية (الصور الأولى) يمكننا أداء القياس عن طريق النظر في الشبكة إلى المسار الذي يتبعه الروبوت (كما هو مقدر بواسطة قياس المسافات) في حقل حجم قابل للتكوين وبعض القيم المهمة الأخرى التي تمت قراءتها على dsNav .
توضح المقاييس القيم المقاسة:
- MesSpeed ​​في نطاق +/- 500 مم / ثانية ، القيمة المتوسطة لسرعة العجلتين (سرعة مركز المنصة).
- قياس التيار في مللي أمبير (مجموع التيار من اثنين من المحركات).
- قياس زاوية ، كما انقرضت بواسطة قياس المسافات.
يتم استخدام لوحات أخرى لتكوين معلمات الروبوت ولتخزين مسار محدد في الروبوت (إذا لزم الأمر). لوحة مهمة ، على الأقل خلال تطوير الروبوت ، هو لوحة التفاصيل (الصورة الثانية) التي تبين سرعة كل عجلة في الوقت الحقيقي ، مفيدة جدا لمعايرة جميع المعلمات.
يمكن تبديل طريقة العرض المركزية للشبكة باستخدام كاميرا الويب للتحكم ، حتى عن طريق العرض ، في المسار الذي يتبعه الروبوت.
يظهر مثال عملي للاستخدام في وحدة التحكم هذه في هذا الفيديو:
http://www.youtube.com/watch؟v=OPiaMkCJ-r0