فهرست مطالب:
- مرحله 1: مرور کلی و فرآیند طراحی
- مرحله 2: مواد مورد نیاز
- مرحله 3: قطعات ساخته شده دیجیتالی
- مرحله 4: آماده سازی پیوندها
- مرحله 5: آماده سازی براکت سروو
- مرحله 6: جمع آوری پاها
- مرحله 7: مونتاژ بدن
- مرحله 8: همه چیز را با هم ترکیب کنید
- مرحله 9: سیم کشی و مدار
- مرحله 10: راه اندازی اولیه
- مرحله 11: کمی در مورد سینماتیک
- مرحله 12: برنامه نویسی چهارپا
- مرحله 13: نتایج نهایی: زمان آزمایش
تصویری: ربات چهارپایه آردوینو چاپ سه بعدی: 13 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:52
پروژه های Fusion 360 »
از دستورالعمل های قبلی ، احتمالاً می بینید که من علاقه زیادی به پروژه های رباتیک دارم. پس از دستورالعمل قبلی که در آن یک دوپای رباتیک ساختم ، تصمیم گرفتم یک ربات چهارپا بسازم که می تواند از حیواناتی مانند سگ و گربه تقلید کند. در این دستورالعمل ، من طراحی و مونتاژ چهارپایه روباتیک را به شما نشان خواهم داد.
هدف اولیه در هنگام ساخت این پروژه این بود که سیستم را تا حد ممکن قوی سازد تا در حین آزمایش راه رفتن های مختلف و پیاده روی ، من دائما نگران خرابی سخت افزار نباشم. این به من این امکان را داد که سخت افزار را به حد خود برسانم و با حرکتها و حرکتهای پیچیده آزمایش کنم. هدف ثانویه این بود که با استفاده از قطعات سرگرمی موجود و چاپ سه بعدی ، چهارپایه نسبتاً کم هزینه شود که امکان نمونه سازی سریع را فراهم می آورد. این دو هدف با هم پایه و اساس محکمی برای انجام آزمایش های مختلف فراهم می کند و به فرد اجازه می دهد چهارپایه را برای نیازهای خاص تری مانند ناوبری ، جلوگیری از موانع و حرکت پویا توسعه دهد.
برای مشاهده نسخه نمایشی سریع پروژه ، ویدیوی ضمیمه شده در بالا را مشاهده کنید. برای ایجاد ربات چهارپایه خود با آردوینو ادامه دهید و اگر از پروژه خوشتان آمد در رای گیری "Make It Move Contest" رأی دهید.
مرحله 1: مرور کلی و فرآیند طراحی
چهارپا در Autodesk رایگان برای استفاده از نرم افزار مدل سازی Fusion 360 3D طراحی شده است. من با وارد کردن موتورهای سروو به طراحی شروع کردم و پاها و بدن را در اطراف آنها ساختم. من برای موتور سروو براکت هایی طراحی کردم که نقطه محوری دوم را به طور متقابل با محور سروو موتور فراهم می کند. داشتن شفت های دوگانه در دو طرف موتور به طراحی پایداری می بخشد و هرگونه کج شدن که ممکن است هنگام ایجاد پاها برای تحمل بار ایجاد شود را از بین می برد. پیوندها برای نگه داشتن یاتاقان طراحی شده اند در حالی که براکت ها از پیچ برای شفت استفاده می کردند. هنگامی که پیوندها با استفاده از مهره به شفت ها نصب می شوند ، بلبرینگ یک نقطه چرخش صاف و قوی در طرف مقابل شافت سرو موتور ایجاد می کند.
یکی دیگر از اهداف هنگام طراحی چهارپا این بود که مدل را تا حد ممکن جمع و جور نگه داشت تا از گشتاور ارائه شده توسط موتورهای سروو حداکثر استفاده را بکند. ابعاد پیوندها برای دستیابی به دامنه وسیعی از حرکت و به حداقل رساندن طول کلی ساخته شده است. کوتاه کردن بیش از حد آنها باعث می شود براکت ها به هم برخورد کنند ، دامنه حرکت را کاهش داده و طولانی شدن آن باعث ایجاد گشتاور غیر ضروری بر روی محرک ها می شود. در نهایت ، من بدن روبات را طراحی کردم که آردوینو و دیگر قطعات الکترونیکی روی آن نصب می شوند. همچنین نقاط نصب اضافی را در قسمت بالای صفحه گذاشته ام تا پروژه را برای پیشرفت های بیشتر مقیاس پذیر کنم. زمانی می توان سنسورهایی مانند سنسورهای فاصله ، دوربین یا سایر مکانیسم های فعال مانند گیرنده های روباتیک را اضافه کرد.
توجه: قطعات در یکی از مراحل زیر گنجانده شده است.
مرحله 2: مواد مورد نیاز
در اینجا لیستی از همه اجزا و قطعات مورد نیاز برای ساخت ربات چهارپا دارای Arduino طراحی شده است. همه قطعات باید به طور معمول در دسترس باشند و به راحتی در مغازه های سخت افزار محلی یا به صورت آنلاین پیدا شوند.
الکترونیک:
آردوینو Uno x 1
سروو موتور Towerpro MG995 x 12
Arduino Sensor Shield (من نسخه V5 را توصیه می کنم اما نسخه V4 را داشتم)
سیم جامپر (10 عدد)
MPU6050 IMU (اختیاری)
سنسور التراسونیک (اختیاری)
سخت افزار:
بلبرینگ (8x19x7mm ، 12 قطعه)
پیچ و مهره M4
فیلامنت پرینتر سه بعدی (در صورتی که صاحب یک چاپگر سه بعدی نیستید ، باید یک چاپگر سه بعدی در یک محل کار محلی وجود داشته باشد یا چاپها را می توان بصورت آنلاین با قیمت بسیار ارزان انجام داد)
ورق های اکریلیک (4 میلی متر)
ابزارها
چاپگر سه بعدی
دستگاه برش لیزری
مهمترین هزینه این پروژه 12 سروو موتور است. من توصیه می کنم به جای استفاده از پلاستیک های ارزان قیمت ، از نسخه متوسط به بالا استفاده کنید ، زیرا آنها به راحتی خراب می شوند. هزینه این پروژه بدون احتساب ابزارها تقریباً 60 دلار است.
مرحله 3: قطعات ساخته شده دیجیتالی
قطعات مورد نیاز برای این پروژه باید به صورت سفارشی طراحی شوند ، بنابراین ما از قدرت قطعات دیجیتالی ساخته شده و CAD برای ساخت آنها استفاده کردیم. اکثر قطعات به غیر از قطعاتی که از اکریلیک 4 میلی متری برش خورده اند به صورت سه بعدی چاپ می شوند. چاپها در 40٪ پر شدن ، 2 محیط ، نازل 0.4 میلی متر و ارتفاع لایه 0.1 میلی متر با PLA انجام شد. برخی از قطعات نیاز به تکیه گاه دارند زیرا دارای شکل پیچیده ای با برجستگی هستند ، با این حال ، تکیه گاه ها به راحتی قابل دسترسی هستند و می توان آنها را با استفاده از برخی از برش ها جدا کرد. شما می توانید رنگ رشته مورد نظر خود را انتخاب کنید. در زیر می توانید لیست کاملی از قطعات و STL ها را برای چاپ نسخه خود و طرح های دو بعدی قطعات برش لیزری پیدا کنید.
توجه: از اینجا به بعد ، قطعات با استفاده از نامهای موجود در لیست زیر ارجاع داده می شوند.
قطعات چاپ سه بعدی:
- براکت سرو سروصدا x 2
- آینه براکت سروو براکت x 2
- براکت سروو زانو x 2
- آینه براکت سروو زانو x 2
- نگهدارنده بلبرینگ x 2
- آینه نگهدارنده بلبرینگ x 2
- پا x 4
- پیوند سرو سرونو 4
- لینک بلبرینگ x 4
- دارنده آردوینو x 1
- دارنده سنسور فاصله x 1
- L-support x 4
- بوش بلبرینگ x 4
- سرو هورن اسپیسر x 24
قطعات برش لیزری:
- پانل نگهدارنده سرو x 2
- صفحه بالا x 1
درمجموع ، 30 قسمت وجود دارد که بدون جدا کننده های مختلف باید به صورت سه بعدی چاپ شوند و در مجموع 33 قسمت دیجیتالی ساخته شده است. کل زمان چاپ حدود 30 ساعت است.
مرحله 4: آماده سازی پیوندها
شما می توانید مونتاژ را با تنظیم برخی از قسمتها در ابتدا شروع کنید که باعث می شود فرایند مونتاژ نهایی قابل کنترل تر شود. می توانید با پیوند شروع کنید. برای ایجاد اتصال بلبرینگ ، سطح داخلی سوراخ ها را برای یاتاقان کمی سمباده زده و سپس بلبرینگ را در سوراخ هر دو سر خود فشار دهید. اطمینان حاصل کنید که بلبرینگ را به داخل فشار دهید تا یک طرف آن صاف شود. برای ایجاد پیوند سرو سرو ، دو شاخ سروو دایره ای و پیچ های همراه آنها را بگیرید. شاخ ها را روی چاپ سه بعدی قرار دهید و دو سوراخ را در یک خط قرار دهید ، سپس با اتصال پیچ از طرف چاپ سه بعدی ، شاخ را روی چاپ سه بعدی پیچ کنید. مجبور شدم از فاصله گیرهای سرو سروپیچ سه بعدی استفاده کنم زیرا پیچ های ارائه شده کمی طولانی بودند و هنگام چرخش با بدنه سرو موتور قطع می شدند. پس از ایجاد پیوندها ، می توانید نگهدارنده ها و براکت های مختلف را راه اندازی کنید.
این کار را برای هر 4 پیوند هر دو نوع تکرار کنید.
مرحله 5: آماده سازی براکت سروو
برای راه اندازی براکت سروو زانو ، کافی است یک پیچ 4 میلی متری را از سوراخ عبور دهید و آن را با مهره محکم کنید. این به عنوان محور ثانویه موتور عمل می کند. از براکت سرو سرو ، دو پیچ را از دو سوراخ عبور داده و آنها را با دو مهره دیگر محکم کنید. در مرحله بعد ، یک شاخ سروو دایره ای دیگر بگیرید و با استفاده از دو پیچ همراه با شاخ ، آن را به قسمت کمی بلند براکت وصل کنید. یکبار دیگر توصیه می کنم از فاصله گیر شاخ سرو استفاده کنید تا پیچ ها در شکاف سروو بیرون نزنند. در نهایت ، قسمت نگهدارنده یاتاقان را بگیرید و یاتاقان را به سوراخ فشار دهید. برای تناسب خوب ، ممکن است لازم باشد سطح داخلی را کمی ماساژ دهید. در مرحله بعد ، فشار یاتاقان را به سمت بلبرینگ فشار دهید تا قطعه نگهدارنده بلبرینگ خم شود.
هنگام ساختن براکت ها به تصاویر پیوست شده در بالا مراجعه کنید. این روند را برای بقیه براکت ها تکرار کنید. آینه ها مشابه هستند ، فقط همه چیز آینه است.
مرحله 6: جمع آوری پاها
وقتی همه پیوندها و براکت ها جمع شدند ، می توانید چهار پایه روبات را بسازید. ابتدا با استفاده از 4 پیچ و مهره 4 x M4 ، سروها را روی براکت ها وصل کنید. اطمینان حاصل کنید که محور سروو را با پیچ بیرون زده در طرف دیگر تراز کنید.
در مرحله بعد ، سروو لگن را با سروو زانو با استفاده از قطعه پیوند سرو شاخ پیوند دهید. هنوز از پیچ برای محکم نگه داشتن بوق بر روی محور موتور سروو استفاده نکنید زیرا ممکن است بعداً نیاز به تنظیم موقعیت داشته باشیم. در طرف مقابل ، اتصال بلبرینگ حاوی دو بلبرینگ را با استفاده از مهره ها روی پیچ های بیرون زده قرار دهید.
این عمل را برای بقیه سه پا تکرار کنید و 4 پا برای چهارپا آماده است!
مرحله 7: مونتاژ بدن
در مرحله بعد ، می توانیم روی ساخت بدن روبات تمرکز کنیم. بدنه دارای چهار موتور سروو است که درجه 3 آزادی را برای پاها ایجاد می کند. برای اتصال سروو به پانل نگهدارنده سرو برش لیزری ، از 4 پیچ و اما M4 استفاده کنید.
توجه: اطمینان حاصل کنید که سروو به گونه ای متصل شده است که محور در قسمت بیرونی قطعه قرار دارد ، همانطور که در تصاویر بالا مشاهده شده است. این روند را برای بقیه سه موتور سروو با در نظر گرفتن جهت ، تکرار کنید.
بعد ، با استفاده از دو مهره و پیچ M4 ، پایه های L را در دو طرف پانل وصل کنید. این قطعه به ما امکان می دهد پنل نگهدارنده سروو را به طور محکم در پنل بالا محکم کنیم. این فرآیند را با دو پشتیبانی L دیگر و پانل نگهدارنده سروو که مجموعه دوم سروو موتورها را نگه داشته است ، تکرار کنید.
هنگامی که پایه های L در محل خود قرار گرفتند ، از پیچ و مهره M4 بیشتری استفاده کنید تا پانل نگهدارنده سروو را به صفحه بالا وصل کنید. با مجموعه بیرونی مهره ها و پیچ ها (به سمت جلو و عقب) شروع کنید. مهره ها و پیچ های مرکزی نیز قطعه نگهدارنده آردوینو را نگه می دارند. از چهار مهره و پیچ استفاده کنید تا نگهدارنده آردوینو را از بالا به پنل بالایی متصل کرده و پیچ ها را طوری تراز کنید که آنها نیز از سوراخ های پشتیبانی L عبور کنند. برای توضیحات به تصاویر پیوست شده در بالا مراجعه کنید. در نهایت چهار مهره را داخل شکاف های پانل های نگهدارنده سرو بریزید و با استفاده از پیچ و مهره ، پانل های نگهدارنده سرو را به صفحه بالا محکم کنید.
مرحله 8: همه چیز را با هم ترکیب کنید
پس از جمع شدن پاها و بدن ، می توانید مراحل مونتاژ را تکمیل کنید. چهار پایه را با استفاده از شاخ های سروو که به براکت سرو سرو لگن متصل شده بودند به چهار سروو متصل کنید. در نهایت ، از قطعات نگهدارنده یاتاقان برای حمایت از محور مقابل براکت ران استفاده کنید. محور را از طریق بلبرینگ عبور داده و با استفاده از یک پیچ آن را در جای خود محکم کنید. نگهدارنده یاتاقان را با استفاده از دو مهره و پیچ M4 به صفحه بالا وصل کنید.
با این کار مونتاژ سخت افزاری quaduped آماده است.
مرحله 9: سیم کشی و مدار
من تصمیم گرفتم از یک محافظ سنسور استفاده کنم که اتصالات سرو موتورها را فراهم می کرد. توصیه می کنم از محافظ سنسور v5 استفاده کنید زیرا دارای پورت منبع تغذیه خارجی است. با این حال ، موردی که من استفاده کردم این گزینه را نداشت. با نگاه دقیق تر به سپر سنسور ، متوجه شدم که سپر سنسور از پین 5 ولت داخلی آردوینو نیرو می گیرد (که در مورد سروو موتورهای قدرتمند ایده ای وحشتناک است زیرا خطر آسیب به آردوینو وجود دارد). راه حل این مشکل این بود که پین 5 ولت روی محافظ سنسور را از راه خم کنید تا به پین 5 ولت آردوینو متصل نشود. به این ترتیب ، ما می توانیم بدون آسیب رساندن به آردوینو ، نیروی خارجی را از طریق پین 5 ولت تأمین کنیم.
اتصالات پایه های سیگنال 12 سرو موتور در جدول زیر نشان داده شده است.
توجه: Hip1Servo به سرووی متصل به بدن اشاره دارد. Hip2Servo به سرووی متصل به ساق اشاره می کند.
پای 1 (جلو به چپ):
- Hip1Servo >> 2
- Hip2Servo >> 3
- KneeServo >> 4
پای 2 (جلو به راست):
- Hip1Servo >> 5
- Hip2Servo >> 6
- KneeServo >> 7
پای 3 (عقب سمت چپ):
- Hip1Servo >> 8
- Hip2Servo >> 9
- KneeServo >> 10
پای 4 (پشت راست):
- Hip1Servo >> 11
- Hip2Servo >> 12
- KneeServo >> 13
مرحله 10: راه اندازی اولیه
قبل از شروع برنامه ریزی گام های پیچیده و سایر حرکات ، باید نقاط صفر هر سروو را تنظیم کنیم. این به ربات یک نقطه مرجع می دهد که از آن برای انجام حرکات مختلف استفاده می کند.
برای جلوگیری از آسیب دیدن ربات ، می توانید پیوندهای شاخ سروو را حذف کنید. در مرحله بعد ، کدی را که در زیر ضمیمه شده است بارگذاری کنید. این کد هر یک از سرووها را در 90 درجه قرار می دهد. هنگامی که سروها به موقعیت 90 درجه رسیدند ، می توانید پیوندها را مجدداً وصل کنید تا پاها کاملاً صاف باشند و سروو متصل به بدنه عمود بر قسمت بالای چهارپا باشد.
در این مرحله ، به دلیل طراحی شاخ سرو ، ممکن است برخی از اتصالات هنوز کاملاً صاف نباشند. راه حل این است که آرایه zeroPositions موجود در خط 4 کد را تنظیم کنید. هر عدد موقعیت صفر سرووی مربوطه را نشان می دهد (ترتیب همان ترتیبی است که سروو را به آردوینو وصل کرده اید). این مقادیر را کمی تغییر دهید تا پاها کاملاً صاف شوند.
توجه: در اینجا مقادیری است که من استفاده می کنم ، اگرچه ممکن است این مقادیر برای شما کار نکند:
int zeroPositions [12] = {93، 102، 85، 83، 90، 85، 92، 82، 85، 90، 85، 90}؛
مرحله 11: کمی در مورد سینماتیک
برای اینکه چهارپایان بتوانند کارهای مفیدی مانند دویدن ، راه رفتن و سایر حرکات را انجام دهند ، سرویس ها باید به صورت مسیرهای حرکتی برنامه ریزی شوند. مسیرهای حرکتی مسیری هستند که در انتهای آن افکت انتهایی (در این حالت پا) طی می شود. برای دستیابی به این هدف دو راه وجود دارد:
- یک رویکرد این است که زوایای مفصل موتورهای مختلف را به روش نیروی بی رحم تغذیه کنید. این رویکرد می تواند وقت گیر ، خسته کننده و همچنین مملو از اشتباه باشد زیرا قضاوت کاملاً بصری است. در عوض ، راهی هوشمندانه برای دستیابی به نتایج مطلوب وجود دارد.
- رویکرد دوم حول تغذیه مختصات اثر نهایی به جای تمام زوایای مفصل می چرخد. این همان چیزی است که به عنوان سینماتیک معکوس شناخته می شود. مختصات ورودی کاربر و زوایای مفصل تنظیم می شود تا اثر نهایی را در مختصات مشخص شده قرار دهد. این روش را می توان به عنوان یک جعبه سیاه در نظر گرفت که مختصات ورودی را گرفته و زاویه های مفصل را خروجی می دهد. برای کسانی که به نحوه ایجاد معادلات مثلثاتی این جعبه سیاه علاقه دارند می توانند به نمودار بالا نگاه کنند. برای کسانی که علاقه ای ندارند ، معادلات از قبل برنامه ریزی شده اند و می توانند با استفاده از تابع pos که ورودی x ، y ، z را در نظر می گیرد ، که محل دکارتی اثر نهایی است ، و سه زاویه مربوط به موتورها را خروجی می گیرد ، استفاده شوند.
برنامه حاوی این توابع را می توانید در مرحله بعد پیدا کنید.
مرحله 12: برنامه نویسی چهارپا
پس از اتمام سیم کشی و راه اندازی اولیه ، می توانید ربات را برنامه ریزی کرده و مسیرهای حرکت جالبی ایجاد کنید تا ربات کارهای جالبی را انجام دهد. قبل از ادامه ، خط 4 را در کد پیوست به مقادیری که در مرحله راه اندازی تنظیم کرده اید تغییر دهید. پس از بارگذاری برنامه ، ربات باید راه رفتن را شروع کند. اگر متوجه شدید که برخی از اتصالات معکوس شده اند ، می توانید به سادگی مقدار جهت مربوطه را در آرایه جهت در خط 5 تغییر دهید (اگر 1 باشد -1 کنید و اگر -1 باشد 1 کنید).
مرحله 13: نتایج نهایی: زمان آزمایش
ربات چهارپا می تواند قدم هایی را که از 5 تا 2 سانتی متر متغیر است ، انجام دهد. سرعت نیز می تواند متفاوت باشد در حالی که راه رفتن متعادل است. این چهارپایه یک بستر قوی برای آزمایش انواع مختلف راهپیمایی و اهداف دیگر مانند پرش یا انجام کامل کارها فراهم می کند. من به شما توصیه می کنم که مسیر حرکت پاها را تغییر دهید تا راه رفتن خود را ایجاد کنید و دریابید که چگونه گام های مختلف بر عملکرد ربات تأثیر می گذارد. همچنین چندین نقطه نصب در بالای ربات برای سنسورهای اضافی مانند سنسورهای اندازه گیری فاصله برای کارهای اجتناب از موانع یا IMU برای گام های پویا در زمین های ناهموار گذاشته ام. همچنین می توان یک بازوی چنگال اضافی را نصب کرد که در بالای ربات نصب شده است زیرا روبات بسیار پایدار و قوی است و به راحتی سر نمی زند.
امیدوارم از این دستورالعمل لذت برده باشید و به شما انگیزه داده است که خود را بسازید.
اگر پروژه را دوست داشتید با رأی دادن در "Make It Move Contest" از آن حمایت کنید.
ساخت خوشحالم!
جایزه دوم در مسابقه Make it Move 2020
توصیه شده:
ربات بلوتوث اتو DIY+ آردوینو چاپ سه بعدی آسان: 6 مرحله (همراه با تصاویر)
ربات بلوتوث Otto DIY+ Arduino آسان برای چاپ سه بعدی: طبیعت منبع باز Otto امکان آموزش STEAM باز را فراهم می کند ، ما بازخوردها را از کارگاه ها و مدارس مختلف در سراسر جهان جمع آوری می کنیم که قبلاً از Otto DIY در کلاس خود استفاده می کنند و بسته به باز بودن این مکان های آموزشی ما یا
سگ روباتیک چاپ سه بعدی (روباتیک و چاپ سه بعدی برای مبتدیان): 5 مرحله
سگ رباتیک چاپ سه بعدی (روباتیک و چاپ سه بعدی برای مبتدیان): روباتیک و چاپ سه بعدی چیزهای جدیدی هستند ، اما ما می توانیم از آنها استفاده کنیم! اگر به ایده تکلیف مدرسه نیاز دارید یا فقط به دنبال یک پروژه سرگرم کننده هستید ، این پروژه یک پروژه مبتدی خوب است
OAREE - چاپ سه بعدی - جلوگیری از مانع ربات برای آموزش مهندسی (OAREE) با آردوینو: 5 مرحله (همراه با تصاویر)
OAREE - چاپ سه بعدی - روبات اجتناب از موانع برای آموزش مهندسی (OAREE) با آردوینو: OAREE (مانع جلوگیری از روبات برای آموزش مهندسی) طراحی: هدف از این دستورالعمل طراحی یک ربات OAR (جلوگیری از مانع روبرو) ساده/جمع و جور بود. قابل چاپ سه بعدی ، جمع آوری آسان ، از سرویس های چرخشی پیوسته برای حرکت استفاده می کند
ربات شادی (Robô Da Alegria) - ربات منبع باز 3D چاپ شده ، ربات Arduino !: 18 مرحله (همراه با تصاویر)
ربات شادی (Robô Da Alegria) - ربات منبع باز سه بعدی ، ربات قدرتمند Arduino!: جایزه اول در مسابقه چرخ های دستورالعمل ، جایزه دوم در مسابقه دستورالعمل های آردوینو و دومین مسابقه در طراحی برای کودکان. با تشکر از همه کسانی که به ما رای دادند! روبات ها به همه جا می رسند. از کاربردهای صنعتی تا
[ربات آردوینو] چگونه می توان یک ربات ضبط حرکتی ساخت - ربات انگشت شست - سرو موتور - کد منبع: 26 مرحله (همراه با تصاویر)
[ربات آردوینو] چگونه می توان یک ربات ضبط حرکتی ساخت | ربات انگشت شست | سرو موتور | کد منبع: ربات انگشت شست از پتانسیومتر سروو موتور MG90S استفاده شده است. بسیار سرگرم کننده و آسان است! کد بسیار ساده است. فقط در حدود 30 خط است. به نظر می رسد یک حرکت ضبط است. لطفاً هر گونه سوال یا بازخوردی بگذارید! [دستورالعمل] کد منبع https: //github.c