فهرست مطالب:

EyeRobot - عصای سفید روباتیک: 10 مرحله (همراه با تصاویر)
EyeRobot - عصای سفید روباتیک: 10 مرحله (همراه با تصاویر)

تصویری: EyeRobot - عصای سفید روباتیک: 10 مرحله (همراه با تصاویر)

تصویری: EyeRobot - عصای سفید روباتیک: 10 مرحله (همراه با تصاویر)
تصویری: تکچرخ 2024, جولای
Anonim
EyeRobot - عصای سفید روباتیک
EyeRobot - عصای سفید روباتیک

چکیده: با استفاده از iRobot Roomba Create ، دستگاهی به نام eyeRobot را نمونه اولیه کرده ام. این برنامه با استفاده از Roomba به عنوان پایه ای برای ازدواج با سادگی عصای سفید سنتی با غریزه سگ چشم بینا ، کاربران نابینا و بینایی را در محیط های شلوغ و پر جمعیت راهنمایی می کند. کاربر با فشار دادن بصری و چرخاندن دسته ، حرکت مورد نظر خود را نشان می دهد. ربات این اطلاعات را می گیرد و مسیر مشخصی را در راهرو یا در اتاقی پیدا می کند و از سونار برای هدایت کاربر در جهت مناسب در اطراف موانع ثابت و پویا استفاده می کند. سپس کاربر پشت ربات را دنبال می کند زیرا با نیروی قابل توجهی که از طریق دسته احساس می شود کاربر را در جهت مورد نظر هدایت می کند. این گزینه روباتیک به آموزش کمی نیاز دارد: فشار برای رفتن ، کشیدن برای توقف ، چرخاندن برای چرخاندن. دوراندیشی که فاصله یاب ها ارائه می دهند شبیه به یک سگ چشم بینا است و مزیت قابل توجهی نسبت به آزمایش و خطای دائمی است که استفاده از عصای سفید را مشخص می کند. با این حال eyeRobot هنوز جایگزین بسیار ارزان تری نسبت به سگ های راهنما ارائه می دهد که بیش از 12000 دلار هزینه دارند و فقط برای 5 سال مفید هستند ، در حالی که نمونه اولیه آن با قیمتی کمتر از 400 دلار ساخته شده است. همچنین یک دستگاه نسبتاً ساده است که به چند سنسور ارزان قیمت ، پتانسیومترهای مختلف ، برخی سخت افزارها و البته Roomba Create نیاز دارد.

مرحله 1: نمایش ویدیو

تظاهرات ویدئویی
تظاهرات ویدئویی

نسخه با کیفیت بالا

مرحله 2: مرور عملیات

مرور عملیات
مرور عملیات

کنترل کاربر: عملکرد eyeRobot تا حد امکان بصری طراحی شده است تا آموزش را تا حد زیادی حذف یا حذف کند. برای شروع حرکت ، کاربر به سادگی باید به جلو حرکت کند ، یک سنسور خطی در پایه چوب این حرکت را انجام داده و حرکت روبات را به جلو آغاز می کند. با استفاده از این سنسور خطی ، ربات می تواند سرعت خود را با سرعت مورد نظر کاربر مطابقت دهد. eyeRobot به همان سرعتی که کاربر می خواهد حرکت می کند. برای نشان دادن اینکه یک چرخش مورد نظر است ، کاربر فقط باید دسته را بچرخاند و در صورت امکان چرخش ، ربات بر این اساس پاسخ می دهد.

ناوبری ربات: هنگام سفر در فضای باز ، eyeRobot سعی می کند یک مسیر مستقیم را حفظ کند ، هر مانعی را که ممکن است مانع کاربر شود تشخیص دهد و کاربر را در اطراف آن شی و بازگشت به مسیر اصلی راهنمایی کند. در عمل ، کاربر به طور طبیعی می تواند پشت اندام ربات را با اندیشه ای آگاهانه دنبال کند. برای حرکت در راهرو ، کاربر باید سعی کند ربات را به یکی از دیوارهای هر دو طرف هل دهد ، پس از به دست آوردن دیواری ، روبات شروع به دنبال کردن آن می کند. کاربر در راهرو با رسیدن به تقاطع ، کاربر احساس می کند که روبات شروع به چرخاندن می کند و می تواند با چرخاندن دسته انتخاب کند که آیا شاخه جدید را کم می کند یا در یک مسیر مستقیم ادامه می دهد. به این ترتیب ربات بسیار شبیه عصای سفید است ، کاربر می تواند محیط را با ربات احساس کرده و از این اطلاعات برای ناوبری جهانی استفاده کند.

مرحله 3: سنسورهای محدوده

سنسورهای محدوده
سنسورهای محدوده

Ultrasonics: The eyeRobot دارای 4 فاصله یاب فراصوت (MaxSonar EZ1) است. سنسورهای مافوق صوت در یک قوس در جلوی ربات قرار گرفته اند تا اطلاعاتی را در مورد اشیاء جلویی و کناری ربات ارائه دهند. آنها ربات را از محدوده جسم مطلع می کنند و به آن کمک می کنند تا یک مسیر باز در اطراف آن شی پیدا کرده و به مسیر اصلی خود بازگردد.

محدوده یاب IR: eyeRobot همچنین دارای دو سنسور IR (GP2Y0A02YK) است. فاصله یاب های IR به صورت 90 درجه به راست و چپ قرار گرفته اند تا به ربات در دیوار زیر کمک کنند. آنها همچنین می توانند اشیاء بسیار نزدیک به طرف خود را به ربات هشدار دهند که ممکن است کاربر به آنها وارد شود.

مرحله 4: سنسورهای موقعیت عصا

سنسورهای موقعیت عصا
سنسورهای موقعیت عصا

سنسور خطی: برای اینکه eyeRobot با سرعت کاربر مطابقت داشته باشد ، eyeRobot تشخیص می دهد که کاربر در حال هل دادن یا عقب انداختن حرکت رو به جلو خود است. این امر با کشیدن پایه عصا در امتداد یک مسیر به دست می آید ، زیرا پتانسیومتر موقعیت عصا را حس می کند. eyeRobot از این ورودی برای تنظیم سرعت روبات استفاده می کند. ایده eyeRobot که با سرعت کاربر از طریق یک سنسور خطی سازگار می شود در واقع از ماشین چمن زن خانواده الهام گرفته شده است. پایه عصا به یک بلوک راهنما که در امتداد یک ریل حرکت می کند متصل شده است. به بلوک راهنما یک پتانسیومتر اسلاید متصل است که موقعیت بلوک راهنما را می خواند و آن را به پردازنده گزارش می دهد. برای اینکه چوب بتواند نسبت به ربات بچرخد ، میله ای در یک بلوک چوبی از بالا عبور می کند و یاتاقان دوار را تشکیل می دهد. سپس این یاتاقان به یک لولا متصل می شود تا بتواند چوب را با ارتفاع کاربر تنظیم کند.

سنسور چرخش: سنسور چرخش به کاربر اجازه می دهد تا روی دسته را بچرخاند تا ربات را بچرخاند. یک پتانسیومتر به انتهای یک شافت چوبی وصل شده و دستگیره را در قسمت بالایی دسته قرار داده و می چسبانیم. سیمها از رولپلاک به پایین می روند و اطلاعات پیچشی را وارد پردازنده می کنند.

مرحله 5: پردازنده

پردازنده
پردازنده

پردازنده: ربات توسط Zbasic ZX-24a که روی مادربرد Robodyssey Advanced II نشسته است کنترل می شود. پردازنده به دلیل سرعت ، سهولت استفاده ، هزینه مقرون به صرفه و 8 ورودی آنالوگ انتخاب شده است. این دستگاه به یک نمونه اولیه نان متصل شده است تا تغییرات سریع و آسان را امکان پذیر کند. تمام قدرت روبات از منبع تغذیه مادربرد تامین می شود. Zbasic از طریق بندر محموله با roomba ارتباط برقرار می کند و کنترل کاملی بر سنسورها و موتورهای Roomba دارد.

مرحله 6: مرور کلی کد

مرور کلی کد
مرور کلی کد

اجتناب از موانع: برای اجتناب از موانع ، eyeRobot از روشی استفاده می کند که اجسام نزدیک روبات یک نیروی مجازی به ربات می دهند که آن را از جسم دور می کند. به عبارت دیگر ، اجسام ربات را از خود دور می کنند. در اجرای من ، نیروی مجازی که توسط یک جسم اعمال می شود با عکس مربع فاصله معکوس دارد ، بنابراین قدرت فشار با نزدیک شدن جسم افزایش می یابد و منحنی پاسخ غیر خطی ایجاد می کند: PushForce = ResponseMagnitudeConstant/Distance2فشارهای ناشی از هر سنسور به هم اضافه می شوند. سنسورهای سمت چپ راست را فشار می دهند و بالعکس ، برای گرفتن بردار برای سفر ربات. سپس سرعت چرخ ها تغییر می کند تا روبات به سمت این بردار بچرخد. برای اطمینان از اینکه اجسام مرده جلوی روبات "هیچ پاسخی" نشان نمی دهند (زیرا نیروهای دو طرف متعادل هستند) ، اجسام رو به جلو ، ربات را به سمت بازتر هل می دهند. هنگامی که ربات از جسم عبور می کند ، از رمزگذارهای Roomba برای اصلاح تغییرات و بازگشت به بردار اصلی استفاده می کند.

دیوار زیر: اصل دیوار زیر این است که فاصله و زاویه موازی مورد نظر با دیوار را حفظ کنید. مشکلات زمانی ایجاد می شوند که ربات نسبت به دیوار چرخانده شود زیرا سنسور واحد خواندن محدوده بی فایده را ایجاد می کند. خواندن محدوده به همان اندازه که از زاویه روبات ها به دیوار تأثیر می گذارد ، همانطور که از فاصله واقعی تا دیوار تأثیر می گذارد. به منظور تعیین زاویه و در نتیجه حذف این متغیر ، ربات باید دارای دو نقطه مرجع باشد که با آنها می توان زاویه روبات ها را مقایسه کرد. از آنجایی که eyeRobot تنها یک طرف خود را به مسافت یاب مادون قرمز مجهز می کند ، برای دستیابی به این دو نقطه باید فاصله از فاصله سنج را در طول زمان با حرکت روبات مقایسه کند. سپس زاویه خود را از تفاوت بین دو قرائت هنگام حرکت روبات در امتداد دیوار تعیین می کند. سپس از این اطلاعات برای تصحیح موقعیت نامناسب استفاده می کند. ربات هر زمان که دیواری در کنار خود برای مدت زمان معینی به حالت دیواری در می آید ، از آن خارج می شود و در مواقعی که مانعی در مسیر آن وجود دارد ، که آن را از مسیر خود خارج می کند ، یا اگر کاربر از دسته پیچ برای آوردن دستگاه استفاده می کند ، از آن خارج می شود. ربات دور از دیوار

مرحله 7: لیست قطعات

فهرست قطعات
فهرست قطعات

قطعات مورد نیاز: 1x) Roomba create1x) ورق بزرگ اکریلیک 2x) Sharp GP2Y0A02YK IR rangefinder4x) Maxsonar EZ1 ultrasound rangendinders1x) ZX-24a microprocessor1x) Robodyssey Advanced Motherboard II1x) Slide potentiometer1omet) Single turn) 1 لولا ، رولپلاک ، پیچ ، مهره ، براکت و سیم

مرحله هشتم: انگیزه و بهبود

انگیزه و بهبود
انگیزه و بهبود

انگیزه: این ربات برای پر کردن شکاف آشکار بین سگ راهنمای توانا اما گران قیمت و عصای سفید ارزان اما محدود طراحی شده است. Roomba Create در توسعه یک روباتیک عصای سفید قابل فروش و توانمندتر ، وسیله مناسبی برای طراحی یک نمونه اولیه سریع بود تا ببیند آیا این مفهوم کار می کند یا خیر. علاوه بر این ، این جوایز پشتوانه اقتصادی هزینه های قابل توجهی را برای ساخت یک ربات تواناتر فراهم می کند.

بهبود: میزان آموختن ساخت این ربات بسیار زیاد بود و در اینجا سعی می کنم آنچه را که در تلاش برای ساختن ربات نسل دوم آموخته ام بیان کنم: 1) اجتناب از موانع - در مورد موانع در زمان واقعی چیزهای زیادی آموخته ام اجتناب در فرآیند ساخت این ربات ، من دو کد اجتناب از موانع کاملاً متفاوت را پشت سر گذاشته ام ، از ایده اصلی نیروی شیء شروع کرده ، سپس به اصل یافتن و جستجوی بازترین بردار ، و سپس بازگشت به ایده نیروی جسم با درک کلیدی که پاسخ شی باید غیر خطی باشد. در آینده من اشتباه خود را در مورد عدم انجام تحقیقات آنلاین در مورد روشهای قبلی که قبل از شروع پروژه ام انجام می دهم تصحیح می کنم ، زیرا در حال یادگیری جستجوی سریع Google می توانم مقالات بسیار خوبی در این زمینه به دست آورم. 2) طراحی چوب حسگرها - در شروع این پروژه من فکر کردم تنها گزینه من برای یک سنسور خطی استفاده از دیگ کشویی و نوعی بلبرینگ خطی است. اکنون متوجه شده ام که یک گزینه بسیار ساده تر این بود که قسمت بالای میله را به یک جوی استیک وصل کنید ، به گونه ای که با فشار دادن چوب به جلو ، جوی استیک را نیز به جلو فشار دهید. علاوه بر این ، یک اتصال ساده جهانی می تواند پیچ و تاب چوب را به محور پیچ و تاب بسیاری از جوی استیک های مدرن تبدیل کند. این پیاده سازی بسیار ساده تر از آن چیزی بود که من در حال حاضر از آن استفاده می کنم. 3) چرخ های چرخشی رایگان - اگرچه این کار با Roomba غیرممکن بود ، اما اکنون بدیهی به نظر می رسد که یک ربات با چرخ های چرخشی رایگان برای این کار ایده آل خواهد بود. رباتی که بصورت غیرفعال می چرخد نیازی به موتور و باتری کوچکتر ندارد و بنابراین سبک تر است. علاوه بر این ، این سیستم نیازی به سنسور خطی برای تشخیص فشار کاربران ندارد ، ربات به سادگی با سرعت کاربران می چرخد. این ربات را می توان با چرخ ها مانند یک ماشین چرخاند و در صورت لزوم توقف کاربر می توان ترمز اضافه کرد. برای نسل بعدی eyeRobot من مطمئناً از این رویکرد بسیار متفاوت استفاده خواهم کرد. 4) دو سنسور فاصله دار برای دیوار - همانطور که قبلاً نیز گفته شد هنگام تلاش برای دنبال کردن دیوار با یک سنسور رو به رو ، مشکلات بوجود آمد ، بنابراین لازم است ربات را بین خواندن حرکت دهیم. برای دستیابی به نقاط مختلف مرجع دو سنسور با فاصله بین آنها دیوار را تا حد زیادی ساده می کند. 5) سنسورهای بیشتر - اگرچه هزینه بیشتری صرف می شود اما تلاش برای کدگذاری این ربات با پنجره های بسیار کمی در خارج از پردازنده دشوار بود. این می تواند کد ناوبری را با یک آرایه سونار کاملتر بسیار قوی تر کند (اما البته سنسورها هزینه دارند ، که من در آن زمان نداشتم).

مرحله 9: نتیجه گیری

نتیجه
نتیجه

نتیجه گیری: iRobot یک نمونه اولیه ایده آل برای آزمایش مفهوم عصای سفید روباتیک بود. از نتایج این نمونه اولیه مشخص می شود که یک ربات از این نوع واقعاً قابل استفاده است. امیدوارم بتوانم یک روبات نسل دوم را از درسهایی که از استفاده از Roomba Create آموخته ام ، توسعه دهم. در نسخه های آینده eyeRobot ، من دستگاهی را تصور می کنم که قادر به انجام کارهایی بیشتر از هدایت یک فرد در راهرو نیست ، بلکه یک روبات است که می تواند برای استفاده در زندگی روزمره در اختیار نابینایان قرار گیرد. با استفاده از این ربات ، کاربر به سادگی مقصد خود را بیان می کند و ربات بدون تلاش آگاهانه کاربر را به آنجا راهنمایی می کند. این ربات به قدری سبک و جمع و جور است که به راحتی از پله ها بالا می رود و در کمد قرار می گیرد. این ربات قادر خواهد بود علاوه بر محلی ، ناوبری جهانی را انجام دهد و بتواند کاربر را از ابتدا تا مقصد بدون دانش یا تجربه قبلی کاربران راهنمایی کند. این قابلیت حتی از سگ راهنما نیز فراتر می رود ، زیرا GPS و سنسورهای پیشرفته تر به نابینایان امکان می دهد آزادانه در جهان حرکت کنند ، ناتانیل بارشای ، (وارد شده توسط استفن بارشای) (تشکر ویژه از جک هیت برای ساخت Roomba)

مرحله 10: ساخت و کد

ساخت و کد
ساخت و کد

چند کلمه عجیب و غریب در مورد ساخت و ساز: عرشه ساخته شده توسط یک تکه اکریلیک در یک دایره با یک دهانه در پشت برای دسترسی به وسایل الکترونیکی ساخته شده است ، و سپس در سوراخ های نصب در کنار محفظه بار پیچ می شود. تخته نمونه اولیه به سوراخ پیچ در قسمت پایین خلیج پیچ می شود. Zbasic با براکت L با پیچ های مشابه عرشه نصب شده است. هر سونار به قطعه ای از اکریلیک پیچ می شود ، که به نوبه خود به یک براکت L متصل به عرشه متصل می شود (براکت L 10 درجه به عقب خم می شود تا نمای بهتری را نشان دهد). مسیر سنسور خطی درست در عرشه پیچ می شود و گلدان کشویی با براکت L در کنار آن نصب می شود. توضیحات فنی بیشتر در مورد ساخت سنسور خطی و میله کنترل را می توان در مرحله 4 یافت.

کد: من نسخه کامل کد روبات ها را ضمیمه کرده ام. در طول یک ساعت من سعی کردم آن را از سه یا چهار نسل کدی که در پرونده وجود داشت پاک کنم ، اکنون باید به آسانی دنبال شود. اگر ZBasic IDE دارید ، مشاهده آن آسان است ، در غیر اینصورت از دفترچه یادداشت که با فایل main.bas شروع می شود و سایر فایل های.bas استفاده کنید استفاده نکنید.

توصیه شده: