فهرست مطالب:

Localino Tracks Roomba IRobot ، Maps the Environment and Allows Control: 4 Step
Localino Tracks Roomba IRobot ، Maps the Environment and Allows Control: 4 Step

تصویری: Localino Tracks Roomba IRobot ، Maps the Environment and Allows Control: 4 Step

تصویری: Localino Tracks Roomba IRobot ، Maps the Environment and Allows Control: 4 Step
تصویری: Grid Based Indoor Localization System 2024, نوامبر
Anonim
Image
Image

برای ساختن پل WiFi-UART ، می توانید این repo github را بررسی کنید:

مبنای خوبی برای شروع دارد. مطمئن شوید که دستورالعمل را به خوبی خوانده اید ، زیرا Roomba VCC هنگام شارژ تا 20 ولت افزایش می یابد! اگر ESP8266 را بدون مبدل باک مناسب که حتی تا 20 ولت کار می کند و به 3.3 ولت پایین می آید اضافه کنید ، به ESP خود آسیب می رسانید.

همچنین مطمئن شوید که از یک دکمه تغییر سطح (به عنوان مثال با استفاده از تقسیم کننده ولتاژ) برای تغییر سطوح منطقی UART 5V از Roomba به 3.3V که توسط ESP استفاده می شود ، استفاده کنید.

جزئیات مهم دیگر این است که مبدل باک باید 300 میلی آمپر داشته باشد ، اما بسیار کمتر یا خیلی بیشتر (بسته به خود مبدل باک). برخی موارد وجود دارد که می توانند جریان بسیار بیشتری را انجام دهند ، اما باعث خراب شدن Roomba می شوند زیرا جریان زیادی را در هنگام راه اندازی ایجاد می کنند. ما متوجه شدیم که تنظیم کننده ولتاژ گام به گام Pololu 3.3V ، 300mA (D24V3F3) بسیار عالی کار می کند. نسخه های جایگزین که 500mA / 600mA دارند باعث خرابی رابط Roomba UART شدند. اساساً Roomba با فشار دکمه واکنش نشان می داد ، اما در مورد دستورات از طریق رابط UART واکنش نشان نمی داد. هنگامی که این اتفاق افتاد ما مجبور شدیم باتری Roomba را برداریم و Roomba را با پل WiFi-UART متصل شده مجدداً راه اندازی مجدد کنیم. با این حال ، فقط D24V3F3 خوب کار می کرد.

گذشته از جزئیات فنی ، شما باید دستورات بیشتری را به کد اضافه کنید ، که می توانید در مشخصات رابط باز Roomba پیدا کنید. شما باید تمام دستوراتی را که می خواهید اتاق اتاق به آنها واکنش نشان دهد (به عنوان مثال ، عقب ، جلو ، سرعت و غیره) اضافه کنید.

نمونه هایی از arduino IDE:

void goForward () {char c = {137، 0x00، 0xc8، 0x80، 0x00}؛ // 0x00c8 == 200 Serial.print (c)؛ }

void goBackward () {char c = {137، 0xff، 0x38، 0x80، 0x00}؛ // 0xff38 == -200 Serial.print (c)؛ }

void spinLeft () {char c = {137، 0x00، 0xc8، 0x00، 0x01}؛ Serial.print (c)؛ }

void spinRight () {char c = {137، 0x00، 0xc8، 0xff، 0xff}؛ Serial.print (c)؛ }

اگر با lua بنویسید کمی متفاوت به نظر می رسد ، یک مثال برای چرخش چپ به این شکل است:

if (_GET.pin == "LEFT") سپس چاپ کنید ('\ 137')؛ --VOR

tmr.delay (100) ؛

چاپ ('\ 00')؛ -سرعت = 200 = 0x00C8 -> 0 و 200

tmr.delay (100) ؛

چاپ ('\ 200')؛ - سرعت

tmr.delay (100) ؛

چاپ ('\ 254')؛ - شعاع = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delay (100) ؛

چاپ ('\ 12')؛ -- دور زدن

پایان

مطمئن شوید که باید توضیحات رابط کاربری باز شده را برای Roomba خود تصحیح کنید. حداقل دو مشخصات رابط باز موجود است.

برای سری Roomba 5xx:

برای سری Roomba 6xx:

هنگامی که پل WiFi-UART خود را ایجاد کرده اید و دستوراتی را که گام بزرگتری برداشته اید آزمایش کرده اید. این ویدئو نشان می دهد که برنامه و روش کار می کند. ما کمی تنبل بودیم ، در رابط webin همه دستورات کنترلی مانند جلو ، عقب ، سرعت ، راست ، چپ و غیره وجود ندارد ، اما می توانید دستورات را از طریق http صادر کنید. به هر حال ، این فقط نشان می دهد که کنترل از راه دور Roomba با سخت افزار و نرم افزار آسان با استفاده از ESP8266 کار می کند.

اکنون که می توانید Roomba خود را از راه دور از طریق رایانه شخصی کنترل کنید ، تنها چیزی که وجود ندارد محلی سازی داخلی است. ما برای بستن حلقه بازخورد به این مورد نیاز داریم ، زیرا هدف ما هدایت ربات به جهت خاصی بود. بیا انجامش بدیم.

مرحله 3: سیستم محلی سازی داخلی خود را راه اندازی کنید

برای بستن حلقه بازخورد از یک سیستم محلی سازی داخلی استفاده می کنیم. ما برای این کار از Localino استفاده می کنیم. سیستم Localino از "لنگرها" و "برچسب ها" تشکیل شده است. لنگرها در مکانهای ثابت داخل اتاق قرار می گیرند و موقعیت برچسب متحرک (که روی Roomba قرار می گیرد) را مشخص می کنند. پردازش مکان در یک برنامه رایانه شخصی انجام می شود. این مزیت بزرگی است ، زیرا شما همچنین می توانید Roomba را از طریق همان رایانه کنترل کنید! یک کد منبع رایگان از وب سایت Localino موجود است ، به زبان پایتون نوشته شده است و همچنین یک جریان لحظه ای وجود دارد که مختصات XYZ برچسب را ارائه می دهد. جریان داده از طریق شبکه UDP در دسترس است ، اما می توانید MQTT یا هر چیز فانتزی دیگری که دوست دارید اضافه کنید. اگر پایتون را می شناسید ، تعداد زیادی کتابخانه وجود دارد که به شما کمک می کند.

در این ویدئو ، محلی سازی Roomba نشان داده شده است. بنابراین ما 4 لنگر در اتاق در مکانهای ثابت داریم که امکان موقعیت یابی سه بعدی رومبا را فراهم می کند. به طور کلی ، ما فقط به 3 لنگر احتیاج داریم ، زیرا Roomba احتمالاً در محور Z حرکت نمی کند ، بنابراین 2D کافی خواهد بود. اما از آنجا که لنگرها در ارتفاع شاخه های اصلی AC (که تقریباً 30 سانتی متر از سطح زمین است) واقع شده اند ، راه اندازی دو بعدی باعث ایجاد خطاهای تخمین موقعیت کمی می شود. بنابراین تصمیم گرفتیم 4 لنگر داشته باشیم و بصورت سه بعدی بومی سازی کنیم.

اکنون که موقعیت Roomba را داریم ، گام بعدی ما کنترل Roomba از همان برنامه است. ایده این است که از حقیقت اصلی استفاده کنید و یک مسیر تمیز کردن کامل برای ربات را تخمین بزنید. با استفاده از Localino می توانیم حلقه بازخورد را ببندیم و ربات را از برنامه PC کنترل کنیم.

نکات راه اندازی

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

همه لنگرها دارای شناسه مجری منحصر به فرد هستند که روی بارکد Localino نمایش داده می شود و با ابزار "localino configuration" قابل خواندن است.

به موقعیت های X ، Y ، Z و شناسه های لنگر توجه کنید. این مورد برای نرم افزار پردازنده Localino مورد نیاز است و باید در پرونده "localino.ini" در پوشه "LocalinoProcessor" اقتباس شود

لنگرها باید در Z (هنگامی که ناحیه XY پوشیده شده است) به سمت بالا یا پایین باشد ، اما نه در جهت ناحیه تحت پوشش. لنگرها همچنین نباید توسط فلز یا هرگونه ماده مزاحم سیگنال بی سیم دیگر پوشانده شوند. اگر این امکان پذیر نیست ، باید بین هر ماده و لنگر یک فاصله هوایی خاص وجود داشته باشد.

… بیشتر در راه است

مرحله 4: نرم افزار پایتون را تنظیم کنید

گوش به زنگ باشید. بیشتر در آینده

توصیه شده: