چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت دوم)

خلاصه پارت دوم:

بازم سلام! با پارت دوم آموزش ساخت یک خودروی خودران کوچک در خدمت شما خوبان هستیم،

خلاصه بگم، در این قسمت میخوام سخت افزار کارو آماده کنیم. و در نهایت خودرو خودران کوچیکمونو توی اتاق راه ببریم.

خب بریم که کم کم وارد فاز عملی بشیم و قسمت های مختلف خودرومونو بشناسیم!

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

بردهای رزپبری پای بر پایه سیستم عامل هستند، شما می تونید با زبان پایتون روی اون کد نویسی کنید و از پردازنده مرکزی فوق العاده ای برخوردار هستند و امکانات فوق العاده ای مثل: کارت حافظه جانبی و وای فای دارند.

خب بریم که داشته باشیم ادامه ی ماجرا……………………………………………..

راه اندازی رزپبری پای و اسمبل کردن خودرو

به طور کلی هدف از این بخش اسمبل کردن سخت افزاری خودرو خودران و نصب تمام درایورهای نرم افزاری خواهد بود بطوریکه خودرو را بتوان راه اندازی کرد.

لیست قطعات و تجهیزات:

عکس ۱: تجهیزات سخت افزاری
  • یک عدد برد رزپبری پای ۳ مدل B+ با تغذیه ۲.۵ آمپری: این برد درواقع مغز خودرو ماست که ویژگی های خوبی از جمله پردازنده چهار هسته ای ۱.۴ گیگاهرتز ۶۴ بیتی، وای فای دو بانده، بلوتوس، ۴ پورت USB و یک پورت HDMI. ما پیشنهاد می کنیم از این برد استفاده کنید. خوبیه این برد اینه یه آداپتور هم خودش داره و خنک کننده هایی که برای دفع حرارت روی برد هست به خوبی تاثیر می زارن و خنکش می کنن.

حالا بعضی دوستان می پرسن آیا میشه از بردهای دیگه مثل رزپبری پای زیرو هم استفاده کرد؟ بله میشه ولی برای کانکشن ها و مصرف توان ممکنه یکم اذیت شید که در ادامه می فهمید که دقیقا ما به چیا نیاز داریم!

  • یک رم SD با ظرفیت ۶۴ گیگابایت. توی این رم تمام کد های نرم افزاری رزپبری و سایر نرم افزارها ذخیره میشه. تقریبا تمامی برندهای رم هم خوب کار می کنن و جای نگرانی نیست. ممکنه ۶۴ گیگ براتون زیاد باشه اشکالی نداره حتی میتونید از ۳۲ گیگ هم استفاده کنید. ما ۶۴ گیگو انتخاب کردیم چون ویدئوهایی که خودرو حین حرکت ضبط میکنه رو هم ذخیره می کنیم تا بعدا آنالیزش کنیم و هم اینکه در یادگیری عمیق (بعدا) ازشون استفاده کنیم.
  • ما برای بخش مکانیکیمون از پکیج خودرویی آماده SunFounder PiCar-V Kit استفاده کردیم که درگیر ساخت مکانیک نشیم ( البته یکم گرونه! و فکر کنم الانم که دارید این مطلبو میخونید توی ایران نباشه البته بعضی دلالهای اینترنتی هم میتونن براتون از خارج بیارن). ولی شما میتونید به راحتی دست به کار بشید و ماشینتونو بسازید (با امکاناتی که در ایران هست). این پکیج بدنه اصلی خودرو مارو تشکیل میده پس اگه خواستید این پکیجو تهیه کنید مطمئن شید که مدل V (ورژن ۲) اونو همونطور که در تصویر پایین می بینید تهیه کردید. این پکیج یک خودرو کامله؛ البته جای باتری و برد رزپبری رو نداره. اما دلیل اینکه ما این خودرو رو انتخاب کردیم اینه که دارای یک API کنترلی اوپن سورس از طریق پایتون داره (به همین خاطر راحت میشه با دستورات پایتون اونو کنترل کرد) و ممکنه بقیه خودروها API خاص خودشونو داشته باشن یا با زبان C نوشته شده باشن. همونطور که میدونیم، امروزه پایتون زبان اول در کد نویسی یادگیری ماشین و یادگیری عمیقه. همچنین اوپن سورس بودن API خودرو آماده ای که داریم هم مهمه چون یه موقع به باگ خوردیم راحت بتونیم حلش کنیم.. خلاصه کلام یا این پکیجو بخرید یا خودتون وقت بزارید یه خودرو بسازید با یک برد واسط که بتونه دستورات به زبان پایتون رو دریافت بکنه و به موتورها فرمان بده (شاید در بخش های بعدی اگه دیدیم دوستان مشکل دارن آموزش ساخت خودرو رو هم بزاریم)
عکس ۲: پکیج خودرو SunFounder
  • چهارتا باتری ۱۸۶۵۰ و یک باتری شارژر: خودرو ما در واقع نیاز به دوتا باتری خواهد داشت ولی بهتره دو جفت داشته باشید که وسط تست اگه باتری ها خالی کردن نیاز نباشه زمان زیاد صبر کنید تا باتریا شارژ شه..اگه باتری با کیفیت میخواید از نوع پاناسونیک ۳۴۰۰ میلی آمپری استفاده کنید اگر نه باتری های نزدیک به این رنج و با کیفیت خوب تهیه کنید.
عکس ۳: باتری پاناسونیک ۳۴۰۰ میلی آمپری
  • ۱ عدد پردازشگر شتاب دهنده گوگل برد (Google Edge TPU USB Accelerator): هر قهرمانی نیاز به یک معاون یا وردست داره. برد Google Edge TPU (که Edge یعنی اینکه برای موبایل ها و امبدد سیستم هاست و TPU مخفف Tensor Processing Unit یا همون واحد پردازش تنسور است) یک برد کمکی خیلی خوب برای برد رزپبری پای می باشد. از اونجاکه سی پیو (cpu) برد رزپبری پای برای کارهای نرم افزاری معمولی توان زیادیو مصرف میکنه خب این به این معنیه که برای کارهای یادگیری عمیق طراحی نشده! حالا برد جدیدی که گوگل در مارس ۲۰۱۹ رونمایی کرده (Edge TPU)، به طور ویژه برای نوشتن مدل های یادگیری عمیق در تنسورفلو نوشته شده. در پارت ششم، ما یک مدل واقعی در تشخیص علائم راهنمایی رانندگی در تنسورفلو می نویسیم. این مدل در واقع بیش از ۲۰۰ لایه عمیق خواهد داشت! حالا اگه بخوایم چنین مدلیو روی سی پیو برد رزپبری پای پیاده کنیم تنها با سرعت ۱ فریم بر ثانیه میتونه کارو انجام بده و این یعنی دیگه نمیتونیم بگیم کار ما Real time هست و همچنین در این حالت سی پیو در حالت ۱۰۰ درصد استفاده قرار میگیره و در نتیجه دیگه هیچ جایی برای انجام سایر نرم افزارها نمیمونه. اما با استفاده از این برد ما میتونیم با سرعت ۱۲ فریم بر ثانیه کارمونو انجام بدیم که برای یک کار Real Time عدد کافی و خوبیه. و در نتیجه سی پیو ما خنک میمونه و میتونه وظایف دیگرو انجام بده، مثلا کنترل ماشینو دست بگیره.
عکس ۴: برد Google Edge TPU USB Accelerator
  • مجموعه ای از علائم راهنمایی و رانندگی (که میتونید از انواع مختلف اسباب بازی ها مثل اسباب بازی های لگو (lego) استفاده کنید.)
عکس ۵: علائم راهنمایی و رانندگی
  • یک عدد دوربین ۱۷۰ degree Wide Angle USB Camera (البته میتونید از مدل های دیگه هم استفاده کنید) ولی این دوربین مناسب و خوبیه.
  • مانیتور و موس usb و مانیتور با کابل htmi (برای راه اندازی برد رزپبری پای)

یه چایی بخوریم برمیگردیم…………………………………………

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

قدم اول: راه اندازی برد رزپبری پای:

مراحل زیر رو پله پله میریم تا سیستم عامل NOOBS Raspbian (یه نوعی از لینوکس) را روی حافظه جانبی (sd card) برد رزپبری پای نصب کنیم. این نصب تقریبا ۲۰ دقیقه زمان میبره و به ۴ گیگ فضا نیاز داره. بعد از نصب و ریبوت کردن، ما باید تصویر دسکتاپ GUI (یا همون صفحه نمایش کار) را به صورت شکل زیر ببینیم. یجورایی شبیه دسکتاپ ویندوز یا مک میمونه.

عکس ۶: محیط کار رزپبری پای
  • در حین نصب، نصب کننده یا سیستم از شما میپرسه پسوورد دیفالت رو که pi هست تغییر می دهید یا خیر که بهتره تغییر بدیم و بزاریم rasp (برای مثال).
  • بعد از نصب برنامه (اصطلاحا بهش میگیم Pi) ممکنه سیستم بخواد آخرین آپدیتو نصب کنه که اینکار ممکنه ۱۰ تا ۱۵ دقیقه وقت بگیره.

قدم دوم: راه اندازی دسترسی ریموت به رزپبری پای:

در واقع با فعال کردن دسترسی ریموت برد رزپبری پای این امکان فراهم میشه که ما بدون نیاز به مانیتور، کیبورد یا موس به برد رزپبری دسترسی داشته باشیم . در واقع به این کار میگن دسترسی ریموت یا SSH یا VNC. برای این کار مراحل زیر رو انجام بدید:

  • در صفحه دسکتاپ رزپبری پای روی Terminal که بالای صفحس کلیک کنید (مثل تصویر زیر). این Terminal خیلی مهمه چون ما اکثر کدهامونو اینجا می نویسیم.
عکس ۷: محیط رزپبری پای
  • با نوشتن دستور ifconfig آدرس IP برد رزپبری رو بدست بیارید. مثلا آی پی برد رزپبری ما : ۱۹۲.۱۶۸.۱.۱۲۰ است.
عکس ۸: پیدا کردم آدرس IP
  • عبارت sudo raspi-config رو در قسمت ترمینال بنویسید و ران کنید تا بخش “Raspberry Pi Software Configuration Tool” باز بشه. در اینجا ممکنه از شما پسوورد بخواد (مثلا pi).
عکس ۸:Raspberry Pi Software Configuration Tool
  • سرور SSH را از طریق مسیر زیر فعال کنید:
۵. Interface Options -> SSH -> Enable
  • سرور VNC را نیز از طریق مسیر زیر فعال کنید:
۵. Interface Options -> VNC -> Enable
  • نرم افزار RealVNC Viewer را از اینجا دانلود کنید و روی سیستمتون نصب کنید:
  • با استفاده از نرم افزار RealVNC Viewer از طریق pc یا کامپیوتر خود به آی پی برد رزپبری پای وصل بشید. با این کار دسکتاپ رزپبری پای رو ویندوزتون بالا میاد.
  • با این کار به راحتی مانیتور، کیبورد و موس اضافی حذف میشه

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

از اونجا که رزپبری پای بدون مانیتور (اصطلاحا Headless) بالا میاد. ما باید بتونیم به سیستم فایلهای رزپبری پای از طریق سیستم خودمون دسترسی داشته باشیم تا بتونیم به راحتی فایل ارسال یا دریافت کنیم. برای اینکار از نصب سرور فایل Samba بر روی رزپبری پای استفاده می کنیم:

عکس ۹: طریقه نصب Samba

حالا کدهای زیر را در بخش nano editor بنویسید:

عکس ۱۰: نانو ادیتور

بعد از نوشتن کدهای بالا و ذخیره کردن اون (زدن دکمه های Ctrl+x و بعد زدن دکمه yes ) از صفحه خارج بشید.

در مرحله بعد باید یک پسوورد سمت سرور Samba تنظیم کنیم. برای راحتی کار، ما از همون پسوورد rasp استفاده می کنیم (به عنوان پسوورد سرور Samba). بعد از اینکه پسوورد تنظیم شد یبار سرور رو ریستارت کنید. (دقیقا مثل شکل زیر):

عکس ۱۱: تنظیم پسوورد سرور Samba

در این مرحله، ما باید بتونیم به برد رزپبری پای با استفاده از کامپیوتر خودمون با آی پی آدرس رزپبری پای کانکت یا وصل بشیم (مثلا آدرس آی پی من ۱۹۲.۱۶۸.۱.۱۲۰ است). برای اینکار صفحه کامند ویندوز رو در کامپیوتر خودتون باز کنید (cmd.exe) و به صورت زیر عمل کنید:

عکس ۱۲: صفحه کامند ویندوز کامپیوتر

در واقع لیست فایلهایی که آورده میشه همون فایلهای سیستم یا برد رزپبری پای ماست که ما میتونیم از طریق فایل منیجر بهش دسترسی داشته باشیم. این دسترسی خیلی مفیده چون ما میتونیم مستقیما فایلهای رزپبری پای رو از طریق PC خودمون ادیت کنیم. به طور مثال، ما میتونیم از PyCharm IDE استفاده کنیم برای اینکه بتونیم برنامه های رزپبری پای رو اول ادیت کنیم و بعد از طریق ترمینال رزپبری پای (مثلا VNC) این برنامه را روی برد رزپبری پای ران یا اجرا کنیم.

عکس ۱۳: دسترسی به فایلهای رزپبری پای از طریق VNC

قدم چهارم: نصب دوربین USB:

ما برای اینکه نمایش زنده دوربین را داشته باشیم باید درایور دوربین را نصب کنیم. برای اینکار مراحل زیر رو انجام میدیم:

  • پورت USB دوربین را به پورت USB برد رزپبری پای بزنید.
  • دستور sudo apt-get install cheese را از طریق ترمینال ران کنید تا افزونه cheese برای نمایش دوربین نصب شود. به صورت شکل زیر:
عکس ۱۴: نصب افزونه ی cheese
  • برنامه cheese را اجرا کنید به وسیله دستور:
Raspberry Pi button(Top Left Corner)-> Sound & Video -> Cheese

با اجرای دستور بالا باید تصویر دوربین رو بتونید ببینید مثل تصویر زیر:

عکس ۱۵: نمایش تصویر دوربین

قدم پنجم: تنظیمات برنامه SunFounder PiCar-V:

قبل از اینکه خودرو خودتون (PiCar) رو اسمبل کنیم نیاز داریم که API یا رابط پایتون PiCar’s رو نصب کنیم. برنامه SunFounder یک ورژن از نوع سرور و یک ورژن از نوع کلاینت را از api پایتون خودش ارائه داده. در واقع کد Client API که برای کنترل خودرو (PiCar) استفاده میشه، بر روی pc یا کامپیوتر ران میشه و از پایتون ورژن ۳ استفاده کرده. کد Server API هم روی PiCar ران میشه، که متاسفانه از پایتون ورژن ۲ استفاده کرده (که تقریبا از رده خارجه) و از اونجا که برنامه های خودرو خودرانی که ما نوشتیم منحصرا روی خودرو ران میشن، پس API کد سمت سرورمون یا سمت خودرو هم باید با پایتون ورژن ۳ نوشته شده باشه. خوشبختانه، تمام کدهای SunFounder’s API متن باز هستند که روی Github بارگذاری شدند. ما یه کتابخونه (از اینجا دانلود کنید) با پایتون ۳ می نویسیم که هم روی سرور باشه و هم روی کلاینت که بتونیم از اون استفاده کنیم.

فعلا برای شروع، کد دستورات زیر رو که به صورت Bold شده هستند به جای کامندهای خود نرم افزار در قسمت SunFounder Manual بنویسید. فقط حواستون باشه کامندها یا کدهای صفحه های ۲۰ تا ۲۶ بخش manual را ران نکنید.

بعد از اینکه در خط آخر که از شما پرسیده میشه که میخواید reboot بشه و شما جواب yes می دید تمام درایورهای سخت افزاری مورد نیاز نصب میشه و ما بعد از اسمبل کردن خودرو اونارو تست می کنیم.

قدم ششم: اسمبل کردن PiCar:

بخش اسمبل کردن خودرو شبیه ساختن یک “لگو”عه! و کل فرایندش احتمالا دوساعت ازتون زمان بگیره، اگه ماژول آماده Picar رو بتونید تهیه کنید که تمام مراحل راه اندازی و اسمبل کردن اون به صورت pdf بهتون آموزش داده شده اما هم ویدئوهای آموزشی نصب اون پیدا میشه و هم مطالب آسونتر در وبسایتهای مختلف.

قدم هفتم: وقتی خودرو برای اولین بار با جاده روبرو میشه 🙂

حالا میشه گفت تقریبا تمام سخت افزار و نرم افزار به صورت اولیه برای Picar آماده شدن و وقتشه که اونو راه بندازیم. مراحل زیر رو بترتیب انجام بدید:

اول: از طریق برنامه VNC در کامپیوتر به خودرو PiCar وصل بشید.

دوم: مطمئن شید که باتری هاتون شارژه، دکمه روشن شدن خودرو رو بزنید و کابل میکرو usb که برای شارژ هست رو ازش جدا کنید. مطمئن شید که برنامه ریموت VNC بهش وصل باشه.

سوم: در ترمینال Pi (که قبلا کامندهارو توش می نوشتیم) دستورات زیر رو که bold هستند ران کنید ( در دو مرحله):

۱- کد زیر را بزنید تا چرخ عقب خودرو حرکت کنه: با این دستور اول خودرو سریع میره ولی بعدش آروم میشه سرعتش

picar.back_wheel.test()

۲- با کد زیر چرخ جلو حرکت میکنه: با این دستور اول چرخ جلو به سمت چپ میچرخه بعد به سمت مرکز و بعد به سمت راست:

picar.front_wheel.test()

برای اینکه تست های بالارو متوقف کنید کافیه دکمه های Ctrl+C رو بزنید. و برای اینکه از برنامه پایتون خارج بشید دکمه های Ctrl+D رو با هم بزنید.

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

و اما بعد…

اگه مراحل بالا رو به خوبی انجام دادید پس بهتون تبریک میگیم! شما یک خودرو ساختین که میتونه از طریق نرم افزار (Cheese) ببنیه و از طریق (کد پایتون ۳) راه اندازی بشه! اما هنوز ما وارد یادگیری عمیق یا یادگیری ماشین نشدیم بچه ها! اما داریم نزدیکش میشیم..در قسمت سوم یک سوپر خودران باحال با بینایی ماشین و یادگیری عمیق میاریم بالا که کیف کنیم!

با ما همراه باشید عزیراااااااااان!!!!!!!

پارت های منتشر شده:

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت اول)

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت دوم)

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت سوم)

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت چهارم)

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت پنجم)

چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت ششم)

2 دیدگاه در “چگونه یک خودرو خودران و هوشمند بسازیم؟ (پارت دوم)

  1. سلام وقت بخیر.از انجمن مکاترونیک و اتوماسیون دانشگاه رازی مزاحمتون میشم.ما قصد برگزاری دوره خودروهای خودران رو داریم.میخواستم از شما دعوت کنم اگر فرصت دارید،این دوره رو داخل انجمن تدریس کنید.ممنون

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

قبلا حساب کاربری ایجاد کرده اید؟
گذرواژه خود را فراموش کرده اید؟
Loading...