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

قبل از رسیدن به این تصویر کارهای زیادی باید انجام داد:

با صرف نظر از داستان هایی که دقیقاً چگونه به ایده ساختن یک هگزاپاد رسیدم (تعداد زیادی ویدیو در یوتیوب وجود داشت)، مستقیماً به روند انتخاب قطعات می روم. ژانویه 2012 بود. بلافاصله فهمیدم که از رباتم چه می‌خواهم و چه چیزی را نه. من می خواستم:

هر پا باید 3 درجه آزادی - 3dof (3 بعد آزادی) داشته باشد. از آنجا که نسخه ساده تر 2dof چنین احساسی از حشره نمی دهد و 4dof غیر ضروری است، 3dof از قبل به شما امکان می دهد آزادانه نوک پا را در فضای سه بعدی حرکت دهید.
- 6 پا؛ دوباره، این دیگر 4 نیست (سپس ربات به طرز ناخوشایندی می پرد)، بلکه 8 نیست، مانند عنکبوت ها و در حال حاضر بیش از حد است.
- کم اهمیت؛
- ارزان؛
- حداقل تخته ها و اتصالات؛

پست عالی

البته اولین کار انتخاب مادربرد برای کودک بود. در آن زمان من چیزهای خوب و بد زیادی در مورد آردوینو خوانده بودم. اما من به او به عنوان گزینه اصلی نگاه کردم. زمانی برای لحیم کردن کنترلرها وجود نداشت، اما برای مثال، خرید بردهای پیشرفته تر با پردازنده ARM و نحوه برنامه ریزی آنها، نحوه کار با خروجی های PWM و غیره گران بود. و آردوینو: IDE را راه اندازی کرد، کد را فشار داد، آپلود را فشار داد - و سلام، در حال حاضر برای شما چشمک می زند. زیبایی! ;)

در ابتدا شروع به بررسی مگا و کلون های آردوینو کردم، زیرا ... آنها خروجی های PWM زیادی داشتند که با آن سرووها را کنترل می کردند. بگذارید به شما یادآوری کنم که برای یک هگزاپود 3dof به 3*6 = 18 سروو و کانال های جداگانه برای کنترل آنها نیاز دارید. اما بعد در میان مگا آردوینو یک Yazz واقعی پیدا کردم، این یک برد از Dagu است که نامش Red Back Spider Controller است. اینجا در ebay است.

تمام خروجی های خود را به صورت 3 پین آماده (زمین، برق، سیگنال) و جداسازی برق ارائه می دهد. منبع تغذیه خود کنترلر تثبیت شده است و همانطور که هست به کانکتورهای موتور می رود (UPD: نه همانطور که هست، بلکه 5 ولت تثبیت شده است. و ظاهراً از منبع تغذیه کنترل جدا شده است، زیرا 18 سروو به طور همزمان با کار تداخلی ندارند. عملکرد کنترلر). این به شما امکان می دهد به سادگی 7-30 ولت برق کافی را به ترمینال برق (منبع تغذیه از eee pc 901 با ولتاژ 12 ولت و 3 آمپر - معلوم شد برای وزوز کردن تمام 18 سروو کافی است) و سر خود را فریب ندهید. منبع تغذیه مجزامنطق و موتورها همچنین این امکان را در آینده فراهم می کند که به راحتی کل این هیولا را روی یک بسته باتری 7.4 ولتی Li-Po نصب کنید. و با همه اینها، از نقطه نظر نرم افزاری، این یک مگا آردوینو معمولی است که با نرم افزار و libs و سخت افزار سازگار است (به جز سپرهایی که مستقیماً روی مگا اصلی نصب شده اند - آنها کار نمی کنند). درست است، قیمت حتی از مگا اصلی بالاتر است، اما تمام مزایای دیگر از این بیشتر است.

بعد سرووها هستند. با جستجوی میکرو سروو، موارد مختلفی در ebay وجود دارد. من قویترین کوچکترین و ارزانترین را با وزن 9 گرم با گیربکس پلاستیکی گرفتم. اگر مقدار زیادی را به جایی که در بسته ارسال می شود ببرید، ارزان تر می شود. من 3 بسته 6 تایی گرفتم، به نظر می رسد، هر کدام کمتر از 2 دلار بود. با نگاهی به آینده، می گویم که متاسفم که بیشتر خرج نکردم و سروو با چرخ دنده های فلزی و بلبرینگ نگرفتم. معلوم شد که این پلاستیک‌ها دارای واکنش کاملاً محسوس هستند و هنگامی که چرخ دنده‌ها با نیروی بیش از حد لیز می‌خورند، کرنش مشخصی دارند. به دلیل واکنش‌های معکوس، تنظیم دقیق سینماتیک بسیار دشوار است (و این در واقع سخت‌ترین چیز بود).

این در واقع تمام چیزی است که من سفارش دادم، با تحویل حدود 100 دلار رسید. باتری ها و فرستنده ها/گیرنده ها را برای کنترل و رادیو کنترل را برای بعد گذاشتم. چون من یک ماشین رادیویی دارم و جالب نیست، اما چیزی که واقعاً برایم جالب بود پاها بود! ویدئویی از ششپایان آرام در یوتیوب - مجذوب، نگاهش کردم، دوباره تماشاش کردم و هر بار اشک از گونه هایم سرازیر شد و خفه می کردم: "می خواهم!" من نمی خواهم چنین چیزی را آماده سفارش دهم، اما می خواهم خودم چنین چیزی را درست کنم!

در حالی که منتظر دستور بودم، خواندم که چگونه افراد روشن فکر به خلقت خود جان می بخشند. البته سینماتیک معکوس بلافاصله ظاهر شد (ترجمه). اگر به سادگی و بلافاصله در مورد " اندام " مفصلی بگوییم، سینماتیک مستقیم زمانی است که زوایای لولاها به عنوان ورودی ارائه می شود و در خروجی مدلی از اندام در فضا و مختصات داریم. نقطه افراطیاندام ها سینماتیک معکوس آشکارا برعکس عمل می کند - ورودی مختصات نقطه انتهایی اندام است که باید به آنجا برسیم، و در خروجی زوایایی را بدست می آوریم که برای رسیدن به این هدف، لولاها باید از طریق آنها بچرخند. سرووها فقط موقعیت زاویه ای ورودی را دریافت می کنند که باید به آن بچرخند (از طریق یک سیم سیگنال، PWM / PWM کدگذاری شده).

شروع کردم به نوشتن من با آنچه در مورد آن خواندم شروع کردم: فکر کردن از طریق اجرای IC با استفاده از روشی که در آنجا توضیح داده شد. اما من به سرعت این احساس را پیدا کردم که برای پرونده من بیش از حد پیچیده است. علاوه بر این، پیاده سازی آن هم دست و پا گیر است و هم از نظر محاسباتی بسیار پیچیده است - محاسبه به صورت تکراری پیش می رود. و من 6 پایه دارم که برای هر کدام باید IR شمارش کنم و فقط 16 مگاهرتز از سریعترین معماری AVR نیست. اما تنها 3 درجه آزادی وجود دارد. و حدس زدن آن از قبل آسان است نقطه دلخواهدر "منطقه رسیدن" فقط یک راه برای رسیدن وجود دارد. تصمیم از قبل در ذهن من بالغ شده است.

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

من این کار را تحسین کردم و خواب دیدم که اگر بر اساس این ربات، در آینده یک نابودگر را لحیم کنم که به بشریت اعلان جنگ کند، جان کانر و شوارتزنگر در گذشته اینجا به من بازگردند و این نمونه اولیه را بگیرند و آن را در آن ذوب کنند. اورودروین. اما نه کسی برنگشت و نه چیزی برداشت و من با آرامش ادامه دادم.

معلوم شد که در مورد من اصلاً نیازی به ترس از IR نیست ، همه چیز به هندسه-مثلثات پیش پا افتاده رسید. برای سهولت در مراجعه به مفاصل، به ویکی پدیا مراجعه کردم و در مورد حشرات مطالعه کردم. آنها نام های خاصی برای عناصر اندام دارند:

روسی نیز خود را دارد و بسیار نام های جالببرای این، اما «کوکسا»، «تروکانتر»، «تیبیا» و غیره که در رمز هستند، اجازه نمی‌دهند که من بخوابم. به همین دلیل است که من 3 اندام و سرووهای مربوطه را نام های Coxa، Femur، Tibia گذاشتم. از نمونه اولیه پا در بالا می بینید که من حتی یک قطعه جداگانه برای کوکسا ندارم. فقط دو سروو با نوارهای لاستیکی در کنار هم نگه داشته می شوند. استخوان ران - با یک نوار پلاستیکی که اهرم های سروو از هر دو طرف به آن وصل شده است، تحقق می یابد. بنابراین، آخرین سرووی باقیمانده ابتدای استخوان درشت نی است که برای امتداد آن قطعه پلاستیکی دیگری به آن پیچ می شود.

من ویرایشگر را راه اندازی کردم، بدون هیچ مقدمه ای فایل Leg.h و کلاس Leg را در آن ایجاد کردم. خوب، یک دسته از خاکهای کمکی.) بگذارید یک نقطه A(ax, ay, az) در فضا وجود داشته باشد که باید به آن برسید. سپس نمای بالا به صورت زیر است:

در شکل، من بلافاصله راه محاسبه اولین زاویه را نشان دادم - این زاویه چرخش سروویی است که کوکسا را ​​کنترل می کند و کل اندام را به داخل می چرخاند. صفحه افقی. نمودار بلافاصله متغیرهای مورد استفاده در کد (نه همه آنها) را با رنگ قرمز نشان می دهد. خیلی ریاضی نیست، اما راحت است. می توان دید که زاویه مورد نظر ما به راحتی پیدا می شود. اولاً، اولیه CoxaAngle به سادگی در زاویه (0; A) نسبت به محور X (که معادل زاویه نقطه A است) قرار دارد. مختصات قطبی). اما نمودار نشان می دهد که خود ساق در این زاویه قرار ندارد. دلیل آن این است که محور چرخش کوکسا روی "خط پا" نیست - من نمی دانم چگونه این را به درستی بگویم. در صفحه ای که 2 مفصل دیگر در آن می چرخند و نوک ساق پا قرار دارد، اینجا نیست. این را می توان به راحتی با محاسبه اضافی CoxaAngle جبران کرد (چگونه آن را محاسبه کنیم - من حتی به خود زحمت نمی دهم که متوقف شوم، خوب، بالاخره ما در مدرسه بودیم، درست است؟).

بنابراین، ما اولین قطعه کد را داریم، اینها درونیات متد دسترسی (نقطه و دست) هستند:

Float hDist = sqrt(sqr(dest.x - _cStart.x) + sqr(dest.y - _cStart.y)); شناور اضافیCoxaAngle = hDist == 0.0 ? DONT_MOVE: asin(_cFemurOffset / hDist); float primarCoxaAngle = polarAngle(dest.x - _cStart.x, dest.y - _cStart.y, _thirdQuarterFix); float cAngle = hDist == 0.0 ? DONT_MOVE: اولیهCoxaAngle - اضافیCoxaAngle - _cStartAngle;

در اینجا dest نقطه ای است که باید به آن برسید، _cStart مختصات نقطه اتصال (و مرکز چرخش) coxa است، در hDist ما فاصله _cStart تا dest را در صفحه افقی محاسبه می کنیم. DONT_MOVE فقط یک پرچم است به این معنی که کوکسا نیازی به چرخاندن در جایی نیست، بلکه باید در آن باقی بماند. وضعیت فعلی(زیرا dest در جایی درست روی محور چرخش کوکسا قرار دارد - نادر است، اما این اتفاق می افتد). در اینجا cAngle زاویه ای است که در آن سروو باید از زاویه اولیه خود (که در وسط محدوده عملکرد آن است) منحرف شود. مشاهده می‌شود که از _cStartAngle نیز استفاده می‌شود - این زاویه‌ای در فضا است که سروو در حین نصب به آن منحرف می‌شود. اگر فراموش نکنم، بعداً درباره _thirdQuarterFix به شما خواهم گفت.

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

// حرکت به سیستم مختصات هدف محلی Coxa-Femur // به موردی که hDist<= _cFemurOffset. This is for the blind zone. // We never can"t reach the point that is nearer to the _cStart then // femur offset (_fStartFarOffset) float localDestX = hDist <= _cFemurOffset ? - _fStartFarOffset: sqrt(sqr(hDist) - sqr(_cFemurOffset)) - _fStartFarOffset; float localDestY = dest.z - _fStartZOffset; // Check reachability float localDistSqr = sqr(localDestX) + sqr(localDestY); if (localDistSqr >sqr(_fLength + _tLenght)) (log ("نمی توان به آن رسید!")؛ بازگشت نادرست؛)

اکنون localDestX و localDestY مختصات نقطه هدف هستند. تنها چیزی که باقی می ماند یافتن نقطه تقاطع دایره ها با مراکز در (0,0) و (localDestX, localDestY) و شعاع _fLength و _tLength (به ترتیب طول استخوان ران و طول درشت نی) است. یک دانش آموز هم می تواند از عهده این کار بر بیاید، اما در اینجا من اشتباهات زیادی مرتکب شدم، بنابراین برای اینکه خودم و به طور کلی آزمایش کنم تا هر کسی بتواند بررسی کند که اینها چه نوع فرمول های احمقانه ای هستند، پیوندهایی به منابعی گذاشتم که در آنها این مشکل هندسی ابتدایی به وضوح وجود دارد و به طور قابل درک توضیح داده شده است:

// یافتن مشترک به عنوان تقاطع دایره (معادلات از http://e-maxx.ru/algo/circles_intersection & http://e-maxx.ru/algo/circle_line_intersection) شناور A = -2 * localDestX; شناور B = -2 * localDestY; float C = sqr(localDestX) + sqr(localDestY) + sqr(_fLength) - sqr(_tLenght); float X0 = -A * C / (sqr(A) + sqr(B)); شناور Y0 = -B * C / (sqr(A) + sqr(B)); float D = sqrt(sqr(_fLength) - (sqr(C) / (sqr(A) + sqr(B)))); float mult = sqrt (sqr(D) / (sqr(A) + sqr(B))); float ax, ay, bx, by; تبر = X0 + B * مولتی؛ bx = X0 - B * multi; ay = Y0 - A * multi; توسط = Y0 + A * مولتی; // انتخاب راه حل در بالا به عنوان مفصل شناور jointLocalX = (ax > bx) ? ax:bx; float jointLocalY = (ax > bx) ? ay: توسط

این همه چیز است، هنوز کمی برای انجام باقی مانده است - با استفاده از مختصات به دست آمده، زوایای واقعی سرووهای استخوان ران و درشت نی را محاسبه کنید:

FloatprimaryFemurAngle = قطبی (jointLocalX، jointLocalY، false)؛ float fAngle = firstFemurAngle - _fStartAngle; float primarTibiaAngle = قطبی (localDestX - jointLocalX, localDestY - jointLocalY, false); float tAngle = (primaryTibiaAngle - fAngle) - _tStartAngle;

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

حرکت (cAngle، fAngle، tAngle)؛

متد انتقال مستقیماً دستورات را به سرورها صادر می کند. در واقع، بعداً لازم شد که انواع چیزها را برای محافظت در برابر زوایای بد (که سروو نمی تواند بچرخاند، اما تلاش خواهد کرد) و همچنین برای سایر پاها که جانبی هستند و/یا در جهت های دیگر هدایت می شوند، اضافه شود. اما در حال حاضر فقط با یک پنجه کار می کنیم.
این قطعات کد نهایی هستند که با کامل بودن فاصله زیادی دارند و مطمئناً می توانند به طور قابل توجهی بهبود یابند. اما کار می کند! هرگز بیرون نرو دوره مدرسههندسه- مثلثات، ما سینماتیک معکوس با ویژگی های کامل را برای پاهای 3dof پیاده سازی کرده ایم! علاوه بر این، ما بلافاصله راه حل را در یک تکرار دریافت می کنیم. برای این کار، پا باید به دقت اندازه گیری می شد و کلاس با داده های به دست آمده پیکربندی می شد. از جمله موارد زاویه ای، که سخت ترین اندازه گیری روی محصول نهایی است. شاید اگر در اتوکد طراحی کنید و رندرهای زیبایی بسازید، اندازه گیری زوایای آن آسان تر باشد، اما من نه وقت و نه تمایلی برای پرداختن به این بدبختی داشتم.

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

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

و اینجاست، یک هیولای خارج از کشور، با شش پا. وقتی یک پا را آزمایش کردم، این چیز را با نوعی فیدر سمت چپ از یک پیچ خارجی تغذیه کردم. کافی. اما تغذیه 6 پا از او کمی ترسناک بود. بنابراین، مدتی دستم را آویزان کردم، به این فکر کردم که هنوز باید یک فیدر مناسب تهیه کنم. اما همه چیز بسیار ساده تر بود ، قبلاً در بالا ذکر کردم - منبع تغذیه از eee pc 901 بالا آمد.

اشکال زدایی کار 6 پایه حتی دشوارتر از نوشتن یک موتور برای یک پا بود. نیمی از پاها نسبت به دیگری آینه بود. علاوه بر این، همه چیز به سمت طرف های مختلف. به طور کلی، من همه چیز را برای مدت طولانی پیکربندی و تنظیم کردم، و این خیلی به من الهام بخش نشد، زیرا ... هیچ ابزار اشکال زدایی مناسبی وجود نداشت، بیشترین چیزی که من می توانستم روی آن حساب کنم خروجی گرفتن گزارش به سریال بود. و از فایل اصلی *.ino به خوبی کار می کرد، اما از Leg.h متصل دیگر قابل مشاهده نبود شی مورد نظر. من چند عصا برای چوب (کف صورت) درست کردم. به مرور زمان آن را اصلاح خواهم کرد. و سپس بهار آمد، فصل دوچرخه سواری باز شد نیروی کاملو حیوان خانگی شش پام را داخل کمد انداختم. بنابراین تمام تابستان گذشت و قسمت گرمفصل پاييز.

اما باران آمد، هوا سرد شد و ششپایان برداشته شد. پایه‌های آن به‌خوبی تنظیم شدند، از جمله معرفی همان _thirdQuarterFix برای تابع محاسبه قطبی. مشکل این بود که 2 پا (وسط چپ و عقب چپ) به گونه ای حرکت می کردند که اکثرزمان در کوارتر سوم بود:

و قطبی من ساده بود - زوایای از -pi به پی را نسبت به محور X برمی‌گرداند و اگر گاهی اوقات یکی از این 2 پایه نیاز داشت به ربع دوم بچرخد، آنگاه مقدار قطبی از -pi به پی پرید. که در واقع تاثیر منفی بر محاسبات بعدی داشت. من آن را با چوب زیر بغل درست کردم - برای این 2 پا، قطبی Angle "متفاوت" در نظر گرفته می شود. من شرمنده هستم، من از کد شرمنده هستم، اما کل پروژه اثبات مفهوم است، تنها هدفکه به راحتی می توان فهمید که آیا می توانم یک شش پاد متحرک واقع گرایانه را جمع آوری کنم یا نه. بنابراین، کد باید کار کند، و در حال حاضر. و سپس refactoring - refactoring.

پس از اتمام سه ماهه سوم، شروع به پدال زدن الگوهای گام کردم. برای انجام این کار، من یک نقطه پیش فرض را در کلاس Leg معرفی کردم، i.e. که در آن ساق زمانی که ربات ثابت و همسطح می ایستد قرار می گیرد. این نقطه را می توان تنظیم کرد، نکته اصلی این است که همه پاها روی یک مختصات z قرار دارند (به طوری که پاها در واقع از نظر فیزیکی در یک صفحه قرار می گیرند، Leg همچنین دارای پایین ترین سطح تنظیمRestAngles ()) است. و در یک مختصات Z، آنها را می توان تقریباً به هر جایی منتقل کرد. تقریباً - چون دامنه حرکت بی نهایت نیست و برای اینکه هنگام قدم زدن از این محدوده فراتر نروم - سعی کردم موقعیت پیش فرض پاها را در جایی نزدیکتر به مرکز این محدوده قرار دهم.

من کد را اینجا در متن نمی‌دهم، خیلی ابتدایی است و در پایان پیوندهایی به آن ارائه خواهم کرد. نسخه کاملهمه نوع - در همان زمان استفاده از github را یاد خواهم گرفت.

من یک دنباله گام ساده را انتخاب کردم - 3 پا روی زمین، 3 پا در هوا مرتب شده اند. بنابراین، مختصات پاها نسبت به موقعیت پیش فرض آنها را می توان به 2 گروه تقسیم کرد. برای این دو گروه، من مرحله را در یک حلقه چرخاندم (به تابع walk() در Buggy.ino مراجعه کنید. و در پایان هر پا مختصات فردی خود را بر اساس مختصات پیش فرض خود محاسبه کرد.

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

البته A-pod خیلی دور است. اما هنوز کارم را تمام نکرده‌ام.) یک عصر دیگر رکاب زدم - و توانایی حرکت در هر جهت را (اما بدون چرخاندن بدن) اضافه کردم. به علاوه، برای صاف کردن بین حرکات، یک تابع (smoothTo()) اضافه کردم، که با دقت پاها را حرکت می دهد (بالا می برد، دوباره در 2 گروه، یکی از آنها همیشه پایین است، موجود روی آن می ایستد، در حالی که دیگری بالا می رود و حرکت می کند) به یک موقعیت جدید. این لازم است تا موجودی ناگهان پاهای خود را تکان ندهد و جهت حرکت را تغییر ندهد (اوه، چه تعداد از شخصیت های بازی سال های گذشته فاقد این ویژگی هستند). و سریع به هر جهت می دوید - به پهلو، مورب:

هر دو فایل مرتب سازی بزرگ قابل مشاهده هستند

جولیان هورسی این ربات عنکبوتی بامزه را با استفاده از آردوینو (کنترل کننده مگا آردوینو) ساخت. در این طرح تنها از دو موتور الکتریکی استفاده شده است که توسط ماژول‌های رله پل H کنترل می‌شوند که به اسپایدر اجازه می‌دهد با تغییر جهت چرخش موتورهای الکتریکی به جلو، عقب یا به آرامی بچرخد. کنترل - از تلفن هوشمند از طریق بلوتوث. حرکت عنکبوت شبیه یک تانک یا ربات است که می توان مانورهای آن را کنترل کرد سرعت های مختلفچرخش دو چرخ آن

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

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

کنترل از طریق بلوتوث بسیار آسان است. جولیان هورسی برای ارسال دستورات به ربات از برنامه ترمینال بلوتوث استفاده کرد. سپس به استفاده از کنترلر بلوتوث آردوینو روی آوردم. برنامه دوم به شما اجازه می دهد تا دستورات را بین کلیدها توزیع کنید، مانند کنترل از راه دور بازی. Arduiono این کلیک ها را به سیگنال های خروجی مربوطه تبدیل می کند. اگر به انعطاف پذیری کنترل بیشتری نیاز دارید، می توانید سیستم MIT App Inventor را امتحان کنید، اما نویسنده ربات این را امتحان نکرده است.

مرحله 5: کار شما تمام شده است

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