فهرست مطالب:
- مرحله 1: سخت افزار خود را آماده کنید
- مرحله 2: بسته های ضروری را نصب کنید
- مرحله 3: کد را اجرا کنید
- مرحله 4: اندیشه های نهایی
تصویری: آموزش تشخیص شیء ربات چهارپاره جتسون نانو: 4 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
Nvidia Jetson Nano یک کیت توسعه دهنده است که از SoM (System on Module) و یک برد حامل مرجع تشکیل شده است. این برنامه در درجه اول برای ایجاد سیستم های تعبیه شده که نیاز به قدرت پردازش بالا برای یادگیری ماشین ، بینایی ماشین و برنامه های پردازش فیلم دارد ، هدف قرار می گیرد. می توانید بررسی دقیق آن را در کانال YouTube من مشاهده کنید.
انویدیا تلاش کرده است تا Jetson Nano را تا حد امکان کاربرپسند و آسان برای توسعه پروژه ها انجام دهد. آنها حتی چند روز پس از راه اندازی هیئت مدیره ، دوره کوتاهی در مورد نحوه ساخت ربات خود با Jetson Nano را راه اندازی کردند. در اینجا می توانید جزئیات مربوط به آن پروژه را بیابید.
با این حال من خودم با Jetbot به عنوان یک پروژه چند مشکل داشتم:
1) برای من به اندازه کافی EPIC نبود. Jetson Nano یک تخته بسیار جالب با قابلیت پردازش عالی است و ساخت یک ربات چرخدار ساده با آن فقط یک کار بسیار… بسیار طاقت فرسا به نظر می رسید.
2) انتخاب سخت افزار. Jetbot به سخت افزاری گران قیمت نیاز دارد/می توان آن را با جایگزین های دیگر جایگزین کرد - برای مثال از جوی استیک برای دورکاری استفاده می کنند. به نظر می رسد سرگرم کننده است ، اما آیا واقعاً برای کنترل ربات به جوی استیک احتیاج دارم؟
بنابراین ، بلافاصله پس از اینکه Jetson Nano را در دست گرفتم ، روی پروژه خودم ، Jetspider کار کردم. ایده این بود که نسخه های نمایشی اولیه Jetbot ، اما با سخت افزار رایج تر و قابل اجرا برای طیف گسترده ای از پروژه ها ، تکرار شود.
مرحله 1: سخت افزار خود را آماده کنید
برای این پروژه از نمونه اولیه ربات چهارپایه Zuri ، ساخته شده توسط Zoobotics استفاده کردم. مدت طولانی در آزمایشگاه شرکت ما خوابیده بود. من آن را با یک پایه چوبی برش لیزری برای جتسون نانو و یک پایه دوربین مجهز کردم. طراحی آنها اختصاصی است ، بنابراین اگر برای ربات Jetson Nano خود می خواهید چیزی مشابه ایجاد کنید ، می توانید پروژه Meped را مشاهده کنید ، که چهارپایه مشابه با طراحی منبع باز است. در واقع ، از آنجا که هیچ کس کد منبع میکروکنترلر زوری (آردوینو مگا) را در آزمایشگاه ما نداشت ، من از کد Meped با تعدیل جزئی در افست پا و پا استفاده کردم.
من از وب کم معمولی USB Raspberry Pi و دانگل USB Wifi استفاده کردم.
نکته اصلی این است که ما از Pyserial برای ارتباط سریال بین میکروکنترلر و Jetson Nano استفاده می کنیم ، سیستم شما اساساً می تواند از هر نوع میکروکنترلر استفاده کند ، مادامی که بتوان با کابل سریال USB با Jetson Nano ارتباط برقرار کرد. اگر ربات شما از موتورهای DC و درایور موتور استفاده می کند (به عنوان مثال مبتنی بر L298P) ، می توانید مستقیماً درایور موتور را با Jetson Nano GPIO وصل کنید. اما ، متأسفانه ، برای کنترل سرویس ها ، فقط می توانید از میکروکنترلر دیگر یا درایور سرو I2C اختصاصی استفاده کنید ، زیرا Jetson Nano سخت افزار GPIO PWM ندارد.
به طور خلاصه ، می توانید از نوع ربات با هر میکروکنترلری که می تواند با کابل داده USB با Jetson Nano متصل شود ، استفاده کنید. من کد Arduino Mega را در مخزن github این آموزش بارگذاری کردم و قسمت مربوط به ارتباط Jetson Nano با Arduino در اینجا آمده است:
if (Serial.available ()) {switch (Serial.read ()) {
{
مورد 1':
رو به جلو()؛
زنگ تفريح؛
مورد "2":
بازگشت()؛
زنگ تفريح؛
مورد "3":
بپیچ به راست()؛
زنگ تفريح؛
مورد "4":
به سمت چپ برو، به سمت چپ برگرد()؛
زنگ تفريح؛
ما بررسی می کنیم که آیا اطلاعات موجود است یا خیر ، و آیا آنها وجود دارد ، آنها را به ساختار کنترل سوئیچ انتقال دهید. توجه داشته باشید که داده های سریال به صورت کاراکتر می آیند ، به یک علامت نقل قول در اطراف اعداد 1 ، 2 ، 3 ، 4 توجه کنید.
مرحله 2: بسته های ضروری را نصب کنید
خوشبختانه برای ما ، تصویر سیستم Jetson Nano پیش فرض دارای بسیاری از موارد از پیش نصب شده (مانند OpenCV ، TensorRT و غیره) است ، بنابراین ما فقط باید چند بسته دیگر را نصب کنیم تا کد فعال شود و SSH فعال شود.
در صورتی که می خواهید بقیه کارها را از راه دور انجام دهید ، ابتدا SSH را فعال کنید.
به روز رسانی sudo apt
sudo apt install opensh-server را نصب کنید
سرور SSH به طور خودکار راه اندازی می شود.
برای اتصال به دستگاه اوبونتو از طریق LAN فقط باید دستور زیر را وارد کنید:
نام کاربری ssh@ip_address
اگر دستگاه Windows دارید ، باید SSH client ، به عنوان مثال Putty را نصب کنید.
بیایید با نصب Python Package Manager (pip) و Pillow برای دستکاری تصویر شروع کنیم.
sudo apt python3-pip python3-pil را نصب کنید
سپس مخزن Jetbot را نصب می کنیم ، زیرا برای انجام تشخیص شیء به برخی از قسمتهای چارچوب آن متکی هستیم.
sudo apt python3-smbus python-pyserial را نصب کنید
git clone
سی دی جت بات
sudo apt-get cmake را نصب کنید
sudo python3 setup.py install
در نهایت مخزن Github من برای این پروژه را در پوشه اصلی خود کلون کنید و Flask و برخی بسته های دیگر را برای کنترل از راه دور ربات با استفاده از وب سرور نصب کنید.
git clone
سی دی
sudo pip3 install -r Requires -opencv
مدل پیش فرض SSD (آشکارساز یک شات) را از این لینک بارگیری کرده و در پوشه jetspider_demos قرار دهید.
حالا خوب شد بریم!
مرحله 3: کد را اجرا کنید
من دو نسخه ی نمایشی برای Jetspider تهیه کردم ، اولین مورد یک teleopration ساده است ، بسیار شبیه به آنچه قبلا برای مریخ نورد Banana Pi انجام دادم و دومی از TensorRT برای تشخیص شی استفاده می کند و دستورات حرکت را از طریق اتصال سریال به میکروکنترلر ارسال می کند. به
از آنجا که بیشتر کدهای teleopration در آموزش دیگر من توضیح داده شده است (من فقط تعدادی تغییر جزئی در مورد انتقال ویدئو انجام دادم) در اینجا من بر روی بخش تشخیص شیء تمرکز می کنم.
اسکریپت اصلی برای شیء زیر object_following.py در jetspider_object_following است ، زیرا عملیات از راه دور spider_teleop.py در jetspider_teleoperation است.
شیء زیر اسکریپت با وارد کردن ماژول های لازم و اعلام متغیرها و نمونه های کلاس شروع می شود. سپس وب سرور Flask را با این خط راه اندازی می کنیم
app.run (host = '0.0.0.0'، threaded = True)
به محض باز کردن آدرس 0.0.0.0 (localhost) در مرورگر وب یا آدرس Jetson Nano در شبکه (می توان با دستور ifconfig بررسی کرد) ، این عملکرد اجرا می شود
def index ():
این قالب صفحه وب را که در پوشه templates داریم ارائه می دهد. الگو دارای منبع ویدئویی است که در آن جاسازی شده است ، بنابراین پس از اتمام بارگذاری ، def video_feed (): اجرا می شود ، که یک شیء Response که با عملکرد ژنراتور مقداردهی می شود را برمی گرداند.
راز پیاده سازی به روزرسانی های درجا (به روز رسانی تصویر در صفحه وب برای جریان ویدیویی ما) استفاده از پاسخ چند بخشی است. پاسخ های چند قسمتی شامل یک سرصفحه است که شامل یکی از انواع محتوای چند قسمتی است و پس از آن قسمت هایی که با نشانگر مرزی از هم جدا شده اند و هر کدام دارای نوع محتوای خاص قسمت خود هستند.
در تابع def gen (): ما تابع ژنراتور را در یک حلقه نامتناهی پیاده سازی می کنیم که تصویر را گرفته ، آن را به تابع def execute (img): ارسال می کند و پس از آن تصویری ارسال می شود که به صفحه وب ارسال می شود.
def execute (img): تابع جایی است که همه جادوها اتفاق می افتد ، تصویری می گیرد ، اندازه آن را با OpenCV تغییر می دهد و به نمونه "class" کلاس Jetbot ObjectDetector می گذارد. بر می گرداند و لیست تشخیص ها را برمی گرداند و ما از OpenCV برای ترسیم مستطیل های آبی در اطراف آنها و نوشتن حاشیه نویسی با کلاس تشخیص شی استفاده می کنیم. پس از آن ما بررسی می کنیم که آیا موردی ما مورد توجه ما قرار گرفته است
اگر می خواهید ربات شما اشیاء دیگر را دنبال کند ، 53 (یک سیب است) می توانید آن شماره (53) را از مجموعه داده CoCo به شماره دیگر تغییر دهید. کل لیست در فایل categories.py است.
در نهایت اگر هیچ شیئی به مدت 5 ثانیه تشخیص داده نشود ، شخصیت "5" را برای روبات ارسال می کنیم تا روی سریال متوقف شود. اگر شی پیدا شد ، محاسبه می کنیم که چقدر از مرکز تصویر فاصله دارد و بر این اساس عمل می کنیم (اگر نزدیک مرکز ، مستقیم بروید (شخصیت "1" در سریال) ، اگر در سمت چپ ، به چپ بروید و غیره). می توانید با آن مقادیر بازی کنید تا بهترین را برای تنظیمات خاص خود تعیین کنید!
مرحله 4: اندیشه های نهایی
این خلاصه نسخه ی نمایشی ObjectFollowing است ، اگر می خواهید درباره سرور ویدیویی Flask webser بیشتر بدانید ، می توانید به این آموزش عالی میگل گرینبرگ نگاهی بیندازید.
همچنین می توانید نگاهی به نوت بوک Nvidia Jetbot Object Detection بیاندازید.
امیدوارم پیاده سازی های نمایشی Jetbot به ساخت ربات شما با استفاده از چارچوب Jetbot کمک کند. من نسخه ی نمایشی اجتناب از موانع را اجرا نکردم ، زیرا فکر می کنم انتخاب مدل نتایج اجتناب از موانع خوبی نخواهد داشت.
اگر س questionالی دارید من را در LinkedId اضافه کنید و در کانال YouTube من مشترک شوید تا از پروژه های جالب تر مربوط به یادگیری ماشین و رباتیک مطلع شوید.
توصیه شده:
تشخیص چهره ، آموزش و تشخیص Opencv: 3 مرحله
تشخیص چهره ، آموزش و تشخیص Opencv: OpenCV یک کتابخانه بینایی رایانه منبع باز است که برای انجام کارهای اصلی پردازش تصویر مانند تار شدن ، ترکیب تصویر ، افزایش تصویر و همچنین کیفیت فیلم ، آستانه و غیره بسیار محبوب است. علاوه بر پردازش تصویر ، اثبات می کند
آموزش نانو انویدیا جتسون - اولین نگاه با هوش مصنوعی و ML: 7 مرحله
آموزش نانو انویدیا جتسون | نگاه اول با هوش مصنوعی و ML: سلام ، بچه ها چه خبر! Akarsh در اینجا از CETech. امروز ما قصد داریم نگاهی به SBC جدید Nvidia که Jetson Nano است بیندازیم ، Jetson Nano بر روی تکنیک های هوش مصنوعی مانند تشخیص تصویر و غیره متمرکز شده است. ما اولین بار در حال راه اندازی
ربات شادی (Robô Da Alegria) - ربات منبع باز 3D چاپ شده ، ربات Arduino !: 18 مرحله (همراه با تصاویر)
ربات شادی (Robô Da Alegria) - ربات منبع باز سه بعدی ، ربات قدرتمند Arduino!: جایزه اول در مسابقه چرخ های دستورالعمل ، جایزه دوم در مسابقه دستورالعمل های آردوینو و دومین مسابقه در طراحی برای کودکان. با تشکر از همه کسانی که به ما رای دادند! روبات ها به همه جا می رسند. از کاربردهای صنعتی تا
تجزیه و تحلیل الگوی ترافیک با استفاده از تشخیص شیء زنده: 11 مرحله (همراه با تصاویر)
تجزیه و تحلیل الگوی ترافیک با استفاده از تشخیص شیء زنده: در دنیای امروز ، چراغ های راهنمایی برای یک جاده ایمن ضروری هستند. با این حال ، در بسیاری از مواقع ، چراغ های راهنمایی می توانند در شرایطی که شخصی به چراغ نزدیک قرمز می شود آزاردهنده باشد. این امر زمان را هدر می دهد ، به ویژه اگر نور در حالت pr
تشخیص شیء بصری با دوربین (TfCD): 15 مرحله (همراه با تصاویر)
تشخیص شیء بصری با دوربین (TfCD): خدمات شناختی که می توانند احساسات ، چهره افراد یا اشیاء ساده را تشخیص دهند ، هنوز در مراحل اولیه توسعه هستند ، اما با یادگیری ماشینی ، این فناوری به طور فزاینده ای در حال توسعه است. ما می توانیم انتظار داشته باشیم که بیشتر از این جادو در