جدول المحتويات:
- الخطوة 1: المكونات المطلوبة
- الخطوة الثانية: تجميع الروبوت
- الخطوة 3: إنشاء المتاهة الخاصة بك - اختياري
- الخطوة 4: تهيئة البيئة
- الخطوة 5: برمجة GiggleBot - الجزء الأول
- الخطوة 6: برمجة جهاز التحكم عن بعد - الجزء الثاني
- الخطوة 7: تفسير شاشة التحكم عن بعد
فيديو: اصنع روبوتًا موجهًا باستخدام Lidar باستخدام GiggleBot: 8 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
في هذا البرنامج التعليمي ، نجعل GiggleBot يعالج صعوبات المتاهة.
نحن نقوم بتركيب جهاز مؤازر على GiggleBot والذي نعلق عليه مستشعر المسافة. أثناء التشغيل ، ستدور المؤازرة للخلف وللأمام حتى يتمكن مستشعر المسافة من قياس المسافة حتى كل عقبة. هذا يشبه إلى حد كبير مستشعر LIDAR الذي عادة ما يكون أكثر تكلفة.
في الوقت نفسه ، يرسل GiggleBot هذه البيانات إلى BBC micro: bit البعيد الذي يعرض على مصفوفة 5 × 5 من LED موقعه النسبي للعقبات.
مهمتك هي أن تكون قادرًا على التنقل في GiggleBot فقط من خلال النظر إلى ما يتم عرضه على BBC micro: bit الآخر. للتحكم في GiggleBot ، يتم استخدام الأزرار الموجودة على BBC micro: bit البعيد.
هذا يبدو ممتع! دعنا ننزل إلى ذلك ، نحن العرب؟
الخطوة 1: المكونات المطلوبة
سنحتاج:
- A GiggleBot.
- حزمة بطارية لـ BBC micro: bit. يأتي مع BBC micro: bit في عبوته.
- عدد 3 بطاريات مقاس AA لجهاز GiggleBot.
- كابل Grove لتوصيل مستشعر المسافة بجهاز GiggleBot.
- مجموعة مؤازرة من DexterIndustries.
- x3 بي بي سي مايكرو: بت. واحد لـ GiggleBot والآخر يستخدم للتحكم في الروبوت من بعيد.
- جهاز استشعار المسافة من DexterIndustries.
احصل على الروبوت GiggleBot الخاص بـ BBC micro: bit هنا!
الخطوة الثانية: تجميع الروبوت
لجعل GiggleBot جاهزًا للبرمجة ، نحتاج إلى تجميعه ، على الرغم من عدم وجود الكثير مما يتعين القيام به.
أدخل 3 بطاريات AA في حجرتها أسفل GiggleBot.
قم بتجميع حزمة المؤازرة. إلى ذراعه الدوار من المؤازرة ، استخدم الفتحة الأخيرة منه لإصلاح المؤازرة على موصلات GiggleBot الأمامية. يمكنك استخدام برغي و / أو سلك لجعله أكثر ثباتًا في مكانه. أو يمكنك لصقها بالغراء الساخن على السبورة. في حالتي ، استخدمت برغيًا وسلكًا قصيرًا لربط ذراع المؤازرة بلوحة GiggleBot.
عند تركيب ذراع المؤازرة على المؤازرة ، تأكد من ضبط المؤازرة بالفعل على الموضع 80. يمكنك القيام بذلك عن طريق استدعاء gigglebot.set_servo (gigglebot. RIGHT، 80). يمكنك قراءة المزيد عن هذا الموضوع هنا.
بعد ذلك ، ضع مستشعر المسافة على الجانب الأمامي من حزمة المؤازرة وقم بإصلاحه كما في المثال أعلاه.
أخيرًا ، قم بتوصيل مستشعر المسافة بكابل Grove بأي من منفذي I2C ومحرك سيرفو بالمنفذ الأيمن الموجود على GiggleBot - المنفذ الأيمن مذكور عليه.
الخطوة 3: إنشاء المتاهة الخاصة بك - اختياري
في هذه الحالة ، لقد استخدمت مجموعة من الصناديق لإنشاء مسار حلقة مغلقة ، على غرار مسار NASCAR.
في هذه الخطوة ، يمكنك أن تكون مبدعًا حقًا وتجعله ملتويًا كما تريد أو تجعله طويلًا جدًا لأن الأمر متروك لك حقًا.
أو إذا كنت لا تريد مسارًا على الإطلاق ، فيمكنك وضع GiggleBot في المطبخ أو غرفة المعيشة على سبيل المثال - يجب أن يكون ذلك جيدًا بما يكفي لأن هناك الكثير من الجدران والعقبات التي لا تزال بحاجة إلى تجنبها.
الخطوة 4: تهيئة البيئة
لكي تتمكن من برمجة BBC micro: bit في MicroPython ، يجب عليك إعداد محرر لها (محرر Mu) وتعيين GiggleBot MicroPython Runtime كوقت تشغيله. لذلك ، عليك اتباع التعليمات الواردة في هذه الصفحة. اعتبارًا من هذه اللحظة ، يتم استخدام الإصدار v0.4.0 من وقت التشغيل.
الخطوة 5: برمجة GiggleBot - الجزء الأول
أولاً ، لنقم بإعداد نص GiggleBot. سيجعل هذا البرنامج النصي GiggleBot يدور محرك سيرفو 160 درجة (80 درجة في كل اتجاه) بينما يأخذ في نفس الوقت 10 قراءات من مستشعر المسافة لكل دورة.
عند تشغيله ، سيكون GiggleBot في وضع الاستعداد حتى يتلقى أمرًا من جهاز التحكم عن بُعد. يمكن أن يكون هناك 3 أوامر فقط: تحرك للأمام أو لليسار أو لليمين.
ملاحظة: قد يحتوي البرنامج النصي التالي على مسافات بيضاء ويبدو أن هذا يرجع إلى بعض المشكلات في عرض GitHub Gists. انقر فوق الجوهر ليأخذك إلى صفحة GitHub الخاصة به حيث يمكنك نسخ الرمز ولصقه.
GiggleBot المستندة إلى LIDAR يتم التحكم فيها عن بعد
من استيراد gigglebot * |
من مسافة استيراد مستشعر المسافة |
من النوم استيراد microbit |
من استيراد utime ticks_us، sleep_us |
ustruct الاستيراد |
استيراد الراديو |
# أوقف الروبوت إذا كان يتحرك بالفعل |
قف() |
# تمكين الراديو |
radio.on () |
# كائن استشعار المسافة |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0.7 # تقاس بالثواني |
rotate_span = 160 # تقاس بالدرجات |
rotate_steps = 10 |
overhead_compensation = 1.05 # محددة بالنسب المئوية |
time_per_step = 10 ** 6 * rotate_time / (rotate_steps * overhead_compensation) |
last_read_time = 0 |
الرادار = bytearray (rotate_steps) |
servo_rotate_direction = 0 # 0 للانتقال لأعلى (0-> 160) و 1 بخلاف ذلك |
مؤشر_الرادار = 0 |
set_servo (يمين ، 0) |
احيانا صحيح: |
# قراءة من الرادار |
إذا كانت ticks_us () - last_read_time> time_per_step: |
# قراءة من مستشعر المسافة |
الرادار [radar_index] = int (ds.read_range_continuous () / 10) |
last_read_time = ticks_us () |
طباعة (فهرس رادار) |
# افعل منطق تدوير المؤازرة من اليسار إلى اليمين |
إذا radar_index == rotate_steps -1 و servo_rotate_direction == 0: |
set_servo (يمين ، 0) |
servo_rotate_direction = 1 |
elif radar_index == 0 و servo_rotate_direction == 1: |
set_servo (RIGHT ، rotate_span) |
servo_rotate_direction = 0 |
آخر: |
radar_index + = 1if servo_rotate_direction == 0 آخر -1 |
# وإرسال قيم الرادار |
radio.send_bytes (رادار) |
محاولة: |
# قراءة أوامر الروبوت |
lmotor ، rmotor = ustruct.unpack ('bb' ، radio.receive_bytes ()) |
# وقم بتشغيل المحركات في حالة وجود أي أوامر مستلمة |
set_speed (lmotor ، rmotor) |
قائد() |
باستثناء نوع الخطأ: |
يمر |
عرض rawgigglebot_lidar_robot.py مستضاف مع ❤ بواسطة GitHub
الخطوة 6: برمجة جهاز التحكم عن بعد - الجزء الثاني
ما يتبقى هو برمجة ثاني بي بي سي ميكرو: بت الذي يعمل كجهاز تحكم عن بعد.
يُستخدم جهاز التحكم عن بُعد لعرض المسافة النسبية بين العوائق على شاشته المكونة من 5 × 5 بكسل. على الأكثر ، سيكون هناك 10 بكسل قيد التشغيل.
في نفس الوقت ، يمنحك جهاز التحكم عن بعد إمكانيات التحكم عن بعد في GiggleBot بالضغط على زريها: التحرك للأمام واليسار واليمين.
ملاحظة: قد يحتوي البرنامج النصي التالي على مسافات بيضاء ويبدو أن هذا يرجع إلى بعض المشكلات في عرض GitHub Gists. انقر فوق الجوهر ليأخذك إلى صفحة GitHub الخاصة به حيث يمكنك نسخ الرمز ولصقه.
GiggleBot - رمز التحكم عن بعد القائم على LIDAR
من استيراد microbit sleep ، والعرض ، و button_a ، و button_b |
ustruct الاستيراد |
استيراد الراديو |
استيراد الرياضيات |
radio.on () |
rotate_steps = 10 |
rotate_span = 160 # بالدرجات |
rotate_step = rotate_span / rotate_steps |
max_distance = 50 # بالسنتيمتر |
side_length_leds = 3 # مُقاسة بعدد البكسل |
الرادار = bytearray (rotate_steps) |
xar = bytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
save_xar = bytearray (rotate_steps) |
save_yar = bytearray (rotate_steps) |
سرعة_المحرك = 50 |
احيانا صحيح: |
الحالة = radio.receive_bytes_into (رادار) |
إذا كانت الحالة ليست |
# display.clear () |
لـ c ، val inenumerate (الرادار): |
إذا كان الرادار [ج] <= أقصى مسافة: |
# احسب الإحداثيات ثنائية الأبعاد لكل مسافة |
زاوية = rotate_steps / (rotate_steps -1) * rotate_step * c |
الزاوية + = (180- rotate_span) /2.0 |
x_c = math.cos (زاوية * math.pi /180.0) * رادار [ج] |
y_c = math.sin (زاوية * math.pi /180.0) * رادار [c] |
# قم بقياس المسافات لتناسب شاشة 5x5 microbit |
x_c = x_c * (side_length_leds -1) / max_distance |
y_c = y_c * (side_length_leds +1) / max_distance |
# إحداثيات تغيير الموقع |
x_c + = (side_length_leds -1) |
y_c = (side_length_leds +1) - y_c |
# الإحداثيات المستديرة بالضبط حيث توجد مصابيح LED |
إذا كان x_c - math.floor (x_c) <0.5: |
x_c = math.floor (x_c) |
آخر: |
x_c = math.ceil (x_c) |
إذا كان y_c - math.floor (y_c) <0.5: |
y_c = math.floor (y_c) |
آخر: |
y_c = math.ceil (y_c) |
xar [ج] = x_c |
yar [c] = y_c |
آخر: |
xar [ج] = 0 |
سنة [ج] = 0 |
display.clear () |
بالنسبة إلى x ، y inzip (xar ، yar): |
display.set_pixel (س ، ص ، 9) |
# print (list (zip (xar، yar، radar))) |
الدولة أ = button_a.is_pressed () |
stateB = button_b.is_pressed () |
إذا كانت الحالة أ والحالة ب: |
radio.send_bytes (ustruct.pack ('bb'، motor_speed، motor_speed)) |
طباعة ("إلى الأمام") |
إذا كانت الحالة "أ" ولا "الحالة" ب: |
radio.send_bytes (ustruct.pack ('bb'، motor_speed، -motor_speed)) |
طباعة ("يسار") |
إذا لم تذكر الحالة أ والحالة ب: |
radio.send_bytes (ustruct.pack ('bb'، -motor_speed، Motor_speed)) |
طباعة ("يمين") |
إذا لم تذكر حالة ولا حالة ب: |
radio.send_bytes (ustruct.pack ('bb'، 0، 0)) |
طباعة ("توقف") |
عرض rawgigglebot_lidar_remote.py مستضاف مع ❤ بواسطة GitHub
الخطوة 7: تفسير شاشة التحكم عن بعد
"تحميل =" كسول "يتحكم في GiggleBot ، لديك الخيارات التالية:
- اضغط على الزر A والزر B لتحريك GiggleBot للأمام.
- اضغط على الزر A لتدوير GiggleBot إلى اليسار.
- اضغط على الزر B لتدوير GiggleBot إلى اليمين.
لمعرفة الاتجاه الذي يتم فيه اكتشاف أقرب العوائق ، ما عليك سوى إلقاء نظرة على شاشة جهاز التحكم عن بُعد (جهاز البي بي سي الصغير الصغير: بت الذي تمسكه). يجب أن تكون قادرًا على التحكم في GiggleBot من بعيد دون النظر إليه.
موصى به:
اصنع روبوتًا راقصًا بدون طابعة ثلاثية الأبعاد واردوينو / # smartcreativity: 11 خطوة (بالصور)
اصنع روبوتًا راقصًا بدون طابعة ثلاثية الأبعاد و Arduino / # smartcreativity: مرحبًا يا أصدقاء ، في هذا البرنامج التعليمي سأوضح لك كيفية صنع روبوت راقص في المنزل بدون طابعة ثلاثية الأبعاد وبدون Arduino. هذا الروبوت قادر على الرقص والتوازن التلقائي وإنتاج الموسيقى والمشي. وتصميم الروبوت يبدو رائعًا أيضًا
اصنع روبوتًا رخيصًا لمكافحة الحرائق في المنزل: 6 خطوات
اصنع روبوتًا رخيصًا لمكافحة الحرائق في المنزل: هل تريد إنشاء مشروع أمني لتقديمه إلى كليتك أو ربما لاستخدامك الشخصي؟ ثم يعد Fire Fighting Robot خيارًا رائعًا! لقد صنعت هذا النموذج الأولي كمشروع للسنة النهائية بحوالي 50 دولارًا أمريكيًا (3500 روبية هندية). شاهد الفيديو التوضيحي أعلاه. هذا الروبوت يعمل
اصنع روبوتًا يتم التحكم فيه عن طريق البلوتوث باستخدام واجهة المستخدم الرسومية الخاصة بك: 5 خطوات
اصنع روبوتًا يتم التحكم فيه عن طريق البلوتوث باستخدام واجهة المستخدم الرسومية الخاصة بك: مرحبًا يا أصدقاء بعد طرح بعض المشاريع الحرفية اليوم ، جئت هنا بمشروع اردوينو رائع. يبدو مفهومًا قديمًا من الخارج ، لكن انتظر يا رفاق ، لدي بعض التطور هنا مما يجعل هذا المشروع فريدًا من نوعه. إذن ما هو الفريد هنا؟ لذا سأعرض لكم هنا
اصنع روبوتًا صغيرًا للمشي: 10 خطوات
قم ببناء روبوت صغير للمشي: إليك مشروع بسيط لعائلات العلوم التقنية. روبوت مشي صغير يستخدم بعض أجزاء ROBOTIX ، متحكم PICXAXE ، و Handy Cricket
اصنع روبوتًا متصلًا بالويب (بحوالي 500 دولار) (باستخدام Arduino و Netbook): 6 خطوات (بالصور)
اصنع روبوتًا متصلًا بالويب (بحوالي 500 دولار) (باستخدام Arduino و Netbook): سيوضح لك هذا Instructable كيفية بناء الروبوت الخاص بك المتصل بالويب (باستخدام وحدة تحكم دقيقة من Arduino وجهاز كمبيوتر Asus eee). روبوت متصل؟ للعب مع بالطبع. قد الروبوت الخاص بك عبر الغرفة أو عبر العد