سؤال

لدي حقل مليء بالعقبات ، أعرف مكان وجودهم ، وأعرف موقف الروبوت. باستخدام خوارزمية لتجنيد المسار ، أقوم بحساب مسار لمتابعة الروبوت.

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

لذا فإن سؤالي هو: ما نوع التقنيات المستخدمة للتنقل في مثل هذه البيئة حتى أحصل على حركة سلسة؟

الروبوت لديه عجلتان ومحركاتان. أقوم بتغيير اتجاه المحرك عن طريق تحويل المحركات في الاتجاه المعاكس.

تحرير: يمكنني تغيير سرعة المحركات بشكل أساسي ، الروبوت هو Arduino Plus Ardumoto ، يمكنني توفير القيم بين 0-255 إلى المحركات في أي من الاتجاهين.

هل كانت مفيدة؟

المحلول

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

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

Transformation

حيث v ، ω ، x, ذ هي السرعات الخطية والزاوية والحركية. L عبارة عن بطول محدد يتناسب مع البعد الأساسي للعجلة للروبوت.

نصائح أخرى

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

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

أفكاري الأولية حول هذا (أنا في العمل ، لذا لا يمكنني قضاء الكثير من الوقت):

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

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

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

نهج التحسين هو وسيلة عامة للغاية للتعامل مع هذا.

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

تعتبر ملاحظات دورة Marc Toussaint Robotics مصدرًا جيدًا لهذا النوع من النهج. انظر في محاضرة معينة 7:http://userpage.fu-berlin.de/mtoussai/teaching/10-robotics/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top