فهرست مطالب:

ربات طراحی هپتیک: 5 مرحله (همراه با تصاویر)
ربات طراحی هپتیک: 5 مرحله (همراه با تصاویر)

تصویری: ربات طراحی هپتیک: 5 مرحله (همراه با تصاویر)

تصویری: ربات طراحی هپتیک: 5 مرحله (همراه با تصاویر)
تصویری: 😉 وقتی شوهرش سرکاره، ربات مرد تمام خواسته های زن را برآورده می کند 2024, جولای
Anonim

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

Scribble از پیکربندی اتصال 5 نوار استفاده می کند که به آن اجازه می دهد دو درجه آزادی جانبی (DoF) را حرکت دهد. این راه حل برای ایجاد روبات های طراحی در بین نمونه های اولیه بسیار محبوب است ، در اینجا چند مثال آورده شده است:

www.projehocam.com/arduino-saati-yazan-kol-…

blogs.sap.com/2015/09/17/plot-clock-weathe…

www.heise.de/make/meldung/Sanduhr-2-0-als-Bausatz-im-heise-shop-erhaeltlich-3744205.html

از نظر مکانیکی ساخت این روبات ها آسان است. آنها فقط به مفاصل اساسی احتیاج دارند و دارای دو محرک هستند که می توانند حرکات سیال کاملی ایجاد کنند. این سازه برای طراحانی که علاقمند به ساختن سازه متحرک هستند ایده آل است. با این حال من که مهندس مکانیک نیستم ، ترجمه کینماتیک به کد بسیار دشوار است. بنابراین من کد اولیه آردوینو را ارائه می کنم که سینماتیک جلو و معکوس را نشان می دهد ، بنابراین می توانید به راحتی از آن در طراحی های آینده خود استفاده کنید! ؛-)

لطفا کد زیر را بارگیری کنید!

* ویرایش: برای پروژه مشابه ، به https://haply.co نگاهی بیندازید *

مرحله 1: ساخت سازه

ساخت سازه
ساخت سازه

بسته به هدفی که در ذهن دارید ، ابتدا باید یک ساختار 5 پیوندی طراحی کنید. به اندازه گیری ها ، محرک هایی که می خواهید استفاده کنید و نحوه اتصال مفاصل برای حرکات صاف فکر کنید.

برای نمونه اولیه من ، کد خود را بر روی Arduino DUE اجرا می کنم که توسط برنامه ای در Mac من که در Open Frameworks ساخته شده است ، بر روی سریال کنترل می شود. این برنامه از اتصال UDP برای ارتباط با شبیه ساز رانندگی مبتنی بر Unity 3D استفاده می کند.

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

مرحله 2: ارزش سخت افزار خود را بدانید

ارزش های سخت افزاری خود را بشناسید
ارزش های سخت افزاری خود را بشناسید

سینماتیک جلو بر اساس ایستگاه هواشناسی Plot clock توسط SAP است:

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

بسته به سخت افزار شما ، الگوریتم باید ویژگی های سخت افزار شما را بداند:

int leftActuator، rightActuator؛ // زاویه نوشتن به محرک در درجه ، در صورت تمایل به دقت بیشتر ، به شناور تغییر دهید

int posX، posY؛ // مختصات محل اشاره گر

وضوح مقادیر ورودی خود را تنظیم کنید

int posStepsX = 2000؛

int posStepsY = 1000 ؛

ابعاد تنظیمات شما ، مقادیر بر حسب میلی متر است (به تصویر SAP مراجعه کنید)

#تعریف L1 73 // طول بازوی موتور ، تصویر SAP را ببینید (چپ و راست یکسان هستند)

#define L2 95 // بازوی گسترش طول ، تصویر SAP را ببینید (چپ و راست یکسان هستند)

#محدوده را تعریف کنید X 250 // حداکثر محدوده در جهت X برای حرکت نقطه (از چپ به راست ، 0 - maxVal)

#محدوده را تعریف کنید Y 165 // حداکثر محدوده در جهت Y برای حرکت نقطه (از 0 تا حداکثر در حالی که در مرکز هستید)

#تعریف اصل L 90 // فاصله از اکثر مقدار حداقل X تا موقعیت مرکز محرک

#تعریف مبدا R 145 // فاصله بین بیشترین مقدار حداقل X تا موقعیت مرکز محرک ، فاصله بین دو موتور در این حالت است

مرحله 3: حرکت سینماتیک جلو

Forward Kinematics
Forward Kinematics

همانطور که در مرحله قبل ذکر شد ، سینماتیک جلو بر اساس الگوریتم SAP است.

خلاء مقادیر زاویه مورد نظر محرک چپ و راست را که قبلاً تعریف شده است به روز می کند. بر اساس مقادیر X و Y که به آن متصل شده اند ، زوایای راست را محاسبه می کند تا نشانگر به این موقعیت برسد.

void set_XY (double Tx، double Ty) // مقدار X و Y خود را وارد کنید {// برخی از vals هایی که به آنها نیاز داریم اما نمی خواهیم برای دوبار طولانی dx، dy، c، a1، a2، Hx، Hy ذخیره کنیم؛ // نقشه رزولوشن inpit برای محدوده پیکربندی خود در دنیای واقعی int realX = map (Tx، 0، posStepsX، 0، rangeX)؛ // swap if mapping if inversed int realY = map (Ty، posStepsX، 0، 0، rangeY)؛ // swap if mapping if inversed // کالک زاویه برای محرک چپ // دکارتی dx/dy dx = realX - originL؛ // شامل offset dy = realY؛ // طول قطبی (c) و زاویه (a1) c = sqrt (dx * dx + dy * dy) ؛ a1 = atan2 (dy، dx)؛ a2 = return_angle (L1 ، L2 ، c) ؛ leftActuator = طبقه (((M_PI - (a2 + a1)) * 4068) / 71) ؛ // زاویه نهایی و تبدیل از rad به deg // زاویه calc برای محرک راست dx = realX - originR؛ // شامل offset dy = realY؛ c = sqrt (dx * dx + dy * dy) ؛ a1 = atan2 (dy، dx)؛ a2 = return_angle (L1 ، L2 ، c) ؛ rightActuator = طبقه (((a1 - a2) * 4068) / 71) ؛ // زاویه نهایی و تبدیل از rad به درجه}

خلا اضافی برای محاسبه زاویه:

double return_angle (double a، double b، double c) {// قانون کسینوس برای زاویه بین c و بازگشت acos ((a * a + c * c - b * b) / (2 * a * c)) ؛ }

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

سینماتیک معکوس
سینماتیک معکوس

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

لطفاً توجه داشته باشید که به محرک یا حسگر جداگانه ای نیاز دارید که بتواند زاویه بازو را بخواند. در مورد من ، از محرک هایی استفاده کردم که هم می توانند موقعیت خود را بخوانند و هم بنویسند. با خیال راحت این مورد را آزمایش کنید و نوعی کالیبراسیون را در نظر بگیرید تا مطمئن شوید زاویه شما به درستی خوانده شده است.

توصیه شده: