در این پروژه می خواهیم یک ربات هوش مصنوعی برای نظارت و مدیریت محیط منزل طراحی کنیم که داده ها را از شبکه ای از سنسورها دریافت می کند.
چگونه یک ربات هوش مصنوعی طراحی کنیم؟
سیستم ربات هوش مصنوعی شامل شبکه ای از سنسورها و یک ربات می باشد. سنسورها دما، میزان رطوبت، میزان کیفیت هوا را از طریق پلتفرم Helium به ابر گوگل کلود (google cloud) می فرستند.
کاربرد ربات Ai برای داخل منازل است. سنسورهای پشتیبان AiRobot در فاصله مشخصی از هم قرار گرفته اند و همچنین ربات در یک مکان کالیبره شده قرار می گیرد. هنگامیکه ربات روشن می شود، حرکت می کند تا سنسورها اطلاعات لازم را دریافت کنند. همچنین ربات با استفاده از موتور انکودر می فهمد که کجا قرار گرفته است.
سنسورهای ربات هوش مصنوعی
سنسورهای ربات دائماً داده هایی همچون دما، رطوبت و کیفیت هوا را از طریق دستگاه Helium به ابر گوگل می فرستند. این سنسورهای پشتیبانی در مکان مشخصی در اتاق قرار می گیرند. باید چند ” هیت مپ ” ساخته شود.
شماتیک سنسورهای پشتیبان ربات هوش مصنوعی
تصویر شماتیک سنسور ربات هوش مصنوعی در بالا دید کاملی از توانایی های ربات می دهد. سنسور ال ای دی هایی دارد تا کاربر را نسبت به برنامه نویسی و میزان برق ربات آگاه کند. PMS5003 سنسور کیفیت هوای مورد استفاده در این پروژه است و Si7021 سنسور دما می باشد. کانکتور جک J3، پین ورودی قدرت U3 که هر دو به U11 که L7805 می باشد، متصل هستند که دارای دامنه ولتاژ ورودی 7V-35V می باشد.
نصب سنسور پشتیبان ربات هوش مصنوعی
اگر با دقت به زیر ماژول آردوینو نگاه کنید، می بینید که جعبه با پیچ های M3 سوار شده است. ما زمان کافی برای پرینت سه بعدی جعبه نداریم، به همین دلیل این راحتترین راه است.
خروجی سنسور ربات هوش مصنوعی و ابر داده ها
تصویر بالا یک نمونه آزمایشی را نشان می دهد که چگونه داده به ابر ارسال می شود. سنسورهای ربات هوش مصنوعی روی یک خط قرار دارند که با 2222 شروع می شود. فرمت داده ها به صورت زیر می باشد:
نام سنسور، دما، رطوبت نسبی، PM0.3um، PM0.5um، PM10um، PM25um، PM50um، PM100um، PM1، PM2.5، PM10، nothing، nothing.
PM03um، PM0.5um، PM35um، PM50um، PM100um ذرات ریزی در هر 0.1 لیتر هوا هستند.
PM1، PM2.5، PM10 میزان غلظت ذرات در واحد استاندارد (ug/m3) می باشد.
تصویر زیر لیست کلیه قطعات الکترونیکی به کار رفته در ربات هوش مصنوعی می باشد.
برای ساخت این ربات از یک مگا آردوینو برای دستیابی به داده ها و حرکت ربات، دستگاه Helium برای ارسال داده ها به ابر گوگل و ماژول رسپبری پای برای ارسال سریال دستورات از ابر گوگل به ربات استفاده کرده ایم. تصویر زیر این روال را نشان می دهد.
راهنمای اتصالات ربات هوش مصنوعی
در این تصویر اتصالات داخل ربات را نشان داده ایم. در اینجا به جای استفاده از یک مدار PCB از کلی سیم استفاده کرده ایم، به همین دلیل از نوار چسب و بست برای نگه داشتن سیم ها استفاده کرده ایم تا پراکنده نشوند.
سخت افزار ربات هوش مصنوعی
نصب و ایمن سازی
برای نصب قطعات درون جعبه، از ابزار مختلفی از جمله: نوار چسب، پیچ، مهره، اسپیسر، پرینت سه بعدی و بست استفاده کرده ایم.
از اسپیسر برای اتصال دو صفحه چوبی به یکدیگر و ثابت کردن قطعات بر روی آنها استفاده کرده ایم. همچنین برای قرار دادن کنترلرهای موتور در فریم ربات هوش مصنوعی از اسپیسر استفاده شده است.
از بست برای ثابت کردن باتری 12 ولت بر روی شاسی ربات استفاده کرده ایم. قطعاتی که با پرینتر سه بعدی پرینت گرفته شده را برای قرار دادن سنسورهای آلتراسونیک و سنسور دما و رطوبت (SparkFun Si7021) بر روی شاسی استفاده کرده ایم. قطعات پرینت شده دارای سوراخهایی برای پیچ های M3 هستند. برای فیکس کردن پیچ ها از مهره استفاده شده است.
از چسب دوطرفه برای نصب سنسور کیفیت هوا PMS5003، اینورتر و رسپبری پای استفاده کرده ایم.
دستگاه helium از طریق پین های آردوینو به آن وصل شده، مگا آردوینو با پیچ های M3 بر روی سوراخهای مدار و جعبه که از قبل دریل شده اند، فیکس شده است.
موتور ربات هوش مصنوعی
موتورها را با براکت L شکل بر روی ربات قرار داده ایم که با مهره فیکس شده اند.
ربات هوش مصنوعی با چهار درایو چرخ ساخته شده است، زیرا بار سنگین و بیشتر از 8 کیلوگرم حمل می کند.
موتورها یکسان هستند و دارای مشخصات زیر هستند:
- نسبت دنده: 131:1
- دور/دقیقه (سرعت) ماکزیمم : 80rpm
- گشتاور ماکزیمم: 250oz-in
- جریان ایستا (Stall Current) : 5 آمپر
چرخ ها، اسکوتر پلی اورتان Pololu در اندازه 75 میلی متر هستند. قطر چرخ ها بسیار کوچک انتخاب شده اند تا ربات بتواند بار سنگین را نیز حمل کند. چرخ های اسکوتر بر روی سطوح چوبی بهتر عمل می کنند.
باتری ربات
میزان مصرف انرژی تمام قطعات الکتریکی مورد استفاده در انتخاب نوع باتری موثر است. قبل از ساخت ربات هوش مصنوعی یک جدول مصرف انرژی ایجاد کردیم تا نوع باتری 12 ولت مورد نیاز این پروژه را پیدا کنیم. برای انجام این محاسبات تنها از معادله P = IV استفاده کردیم.
دستگاه Helium IoT
در این پروژه از دستگاه Helium IoT برای ارسال داده ها به سمت ابر استفاده کرده ایم. کار با این بورد بسیار ساده است.
داده ها از طریق آداپتور آردوینو به یک کانال Helium ارسال می شوند. داده ها هر 5 دقیقه وارد یک فایل در ابر گوگل (google cloud) می شوند.
محاسبات در گوگل کلود
داده ها هر 5 دقیقه وارد فایلی در گوگل کلود می شوند. پلتفرم گوگل کلود همانند یک ماشین مجازی عمل می کند و داده ها را پردازش می کند. این امر مجب می شود تا داده ها به صورت یکپارچه و در یکجا قرار بگیرند و پردازش شوند.
زمانیکه داده ها به طور کامل در فایل آپلود شوند، ماشین مجازی گوگل داده ها را پردازش کرده و هیت مپ را ایجاد می کند. سرویس گوگل کلود آموزشهای بسیار خوبی برای استفاده از خدمات خود دارد و پیشنهاد می کنیم که آنها را مطالعه کنید. برای مطالعه آنها می توانید وارد لینک زیر شوید:
https://cloud.google.com/storage/docs/tutorials
محاسبات “هیت مپ” در ربات هوش مصنوعی
سپس داده ها پردازش می شوند و داده های انکودر به مقادیر مورد نظر تبدیل می شوند. برای ایجاد هیت مپ از یکسری داده ی گسسته از یک الگوریتم درون حلقه استفاده کرده ایم که به زبان پایتون نوشته شده است.
هر دفعه درون حقله while هیت مپ های دما، رطوبت و ذرات کپی می شوند. در آرایه هیت مپ تمام نقاط را جستجو می کند و اگر هیچ داده ای از سمت ربات یا سنسورها در آن نباشد، میانگین هشت همسایگی آن را می گیرد و به جای آن کپی می کند. اگر آن نقطه هیچ همسایگی نداشته باشد، حلقه دوباره تکرار می شود. پس از تکرارهای زیاد، داده های گسسته بر اساس میانگین پخش می شوند و یک توزیع از داده ها ایجاد می شود.
آزمایش اولیه هیت مپ
در گراف هیت مپ زیر، مرکز ربات نقطه (0,0) است. طبق نقشه زیر ابتدا ربات در راستای محور x به اندازه 4 واحد حرکت می کند. ربات در مکان [4,0] به میزان 90 درجه می چرخد و به مکان [4, -7] منتقل می شود. سپس ربات در نقطه [0,7] متوقف می شود و به نقطه [0,0] باز می گردد. تصویر زیر هیت مپ (نقشه حرارتی) برای ذرات، دما و رطوبت برای یک حرکت ساده می باشد.
آزمایش تأیید هیت مپ
باید از درست بودن داده های هیت مپ مطمئن شویم. برای این کار یک بخارساز، هیتر و دستگاه تصفیه هوا در مکانهای متفاوتی در اتاق قرار داده ایم.
در تصویر بالا، سنسورها در سمت چپ ربات قرار دارند.
برای انجام این آزمایش از سنسورهایی به اندازه ارتفاع ربات استفاده کردیم. نتایج نشان دادند که ربات به درستی عمل می کند. سه تصویر زیر هیت مپ دما، ذرات و رطوبت می باشد. دقت کنید که این تصاویر نسبت به تصویر بالا 90 درجه چرخیده است.
در این تصویر، هیتر در سمت راست و بالای اتاق قرار گرفته که با رنگ سفید نشان داده شده و نشانه گرمای زیاد است.
بخارساز در گوشه و سمت راست اتاق قرار گرفته که با نتایج بدست آمده نیز سازگار است. بیشترین مقادیر بدست آمده در نمودار مربوط به همان ناحیه است.
همچنین هیت مپ رطوبت با نتایج مورد انتظار ما مطابقت دارد. به نظر می رسد میزان رطوبت در پایین تصویر تقریبا یکنواخت می باشد.
این سه تصویر قابلیت ربات هوش مصنوعی در اندازه گیری دما، رطوبت و توزیع ذرات در اتاق را نشان می دهند.
انتقال به منطقه مورد علاقه
با یک هیت مپ دقیق مرحله بعدی مشخص کردن مرز مورد علاقه و ردیابی آنجا با وسایل مورد دلخواه می باشد. به عنوان مثال، اگر یک ناحیه با تراکم ذرات بالا تشخیص داده شود، می توان یک دستگاه تصفیه هوا روی ربات هوش مصنوعی قرار داد و به سمت منبع حرکت خواهد کرد. با رفتن به منبع، این ربات می تواند کیفیت هوا را بهبود بخشد. وسایلی که ما در این پروژه استفاده کردیم، بخارساز و دستگاه تصفیه هوا می باشد. برای ردیابی ربات هنگام رفتن به یک نقطه از هیت مپ، فاصله بین مکان کنونی ربات و نقطه بعد محاسبه می شود. این فاصله بر روی GCS محاسبه شده و یک فایل txt از دستورات ردیابی مورد دلخواه به خروجی ارسال می شود. سپس RPi دستورات را به صورت سریال منتقل می کند و ربات را به مکان خواسته شده، هدایت می کند.
برنامه نویسی ربات
با توجه به حجم زیاد اطلاعات، تصمیم گرفتیم که ساخت ربات هوش مصنوعی را مرحله به مرحله توضیح دهیم. در این بخش عملکرد برنامه را توضیح می دهیم:
1) مگا آردوینو اطلاعات انکودرها، سنسور خاک و ذرات معلق، سنسور دما و سنسور رطوبت را می خواند. تمام این داده ها به صورت متناوب با استفاده از دستگاه helium در گوگل کلود قرار می گیرد.
2) پس از اینکه داده های کافی به سمت گوگل کلود ارسال شد، ماشین مجازی ما اطلاعات انکودرها را پردازش می کند و آن را به فاصله تبدیل می کند. هیت مپ یا “نقشه حرارتی” با استفاده از اندازه این فاصله ها و مقادیر سنسورها (دما، رطوبت، غلظت ذرات) بدست می آید.
3) نقطه مورد نظر با استفاده از نقشه های حرارتی و مسیرهای سریال درباره چگونگی محاسبه آنها با استفاده از ماشین مجازی، محاسبه شده و در Google Cloud بارگذاری می شود.
4) RPi مسیرها را از گوگل کلود کپی می کند و آنها را به صورت سریال به آردوینو می فرستد. این مساله سبب می شود تا ربات هوش مصنوعی به موقعیت نهایی هدایت شود و در آنجا بماند و دستگاه مورد نظر را اجرا کند.
5) انتهای کد که در ماشین مجازی اجرا می شود، مقادیر سنسورها را در موقعیت ربات هوش مصنوعی بررسی می کند تا بر روند نظافت منطقه آلوده نظارت کند.
کد پروژه
قطعات مورد نیاز
- 1x Helium Starter Kit (LEGACY)
- 2x Helium Arduino/mbed Adapter
- 2x Helium Atom Xbee Module
- 2x Arduino UNO & Genuino UNO
- 1x Arduino Mega 2560 & Genuino Mega 2560
- 1x Raspberry Pi 3 Model B
- 3x SparkFun Humidity and Temperature Sensor Breakout – Si7021
- 3x SparkFun Ultrasonic Sensor – HC-SR04
- 3x PMS5003 – Air Quality Sensor
- 2x L298N Motor Drive Controller Board
- 1x 12V 10.5Ah Car Battery
- 1x Inverter
- 1x Air Purifier
- 1x Humidifier
- 1x Lasko Ceramic Tower Heater
- 2x Pre-Cut Wooden Plaque
- 4x Pololu 131:1 Metal Gearmotor
- 4x Pololu Stamped Aluminum L-Bracket
- 4x Pololu Scooter/Skate Wheel 70×25mm
- 4x Pololu Aluminum Scooter Wheel Adapter
- 1x M3 Standoffs
- 1x Zip Ties
- 1x Jumper wires (generic)
- 2x Osh parkOSH Park Custom fabricated PCB
- 2x RGB Diffused Common Cathode
- 2x Green LED
- 2x L7805 – 5V Regulator
- 8x Ohm Resistor 270
- 2x Capacitor 100 nF
- 2x uf Capacitor 0.33
- 5x Male Header 40 Position 1 Row (0.1”)
- 2x Barrel Jack Connector (Female, PCB)
- 2x 9v Battery Holder
- 1x 12V 30A SPDT Switch or better
- 1x Barrel Jack (Female) w/ red+black stripped wires
- 1x Terminal Block to Barrel Jack (Male)