طراحی و ساخت یک برد بینایی استریو مبتنی بر لینوکس برای هکرهای سختافزار — I Built a Stereo Vision Board for Hardware Hackers
خلاصه
این مقاله فرآیند ساخت یک برد بینایی استریو ارزانقیمت با استفاده از پردازنده Rockchip RV1103 و لینوکس را بررسی میکند. این پروژه سختافزاری به برنامهنویسان و مهندسان رباتیک امکان میدهد قابلیتهایی مثل تشخیص عمق و اجتناب از مانع را به سیستمهای خود اضافه کنند.
مقدمه و زمینه پروژه
بسیاری از توسعهدهندگان سختافزار و مهندسین سیستمهای جاسازیشده (Embedded) همواره به دنبال تراشهها و پردازندههای جدید هستند. در این پروژه، تمرکز روی میکروپروسссор Rockchip RV1103 است؛ یک SoC تکهستهای مبتنی بر معماری ARM Cortex-A7 با فرکانس ۱.۱ گیگاهرتز، ۶۴ مگابایت حافظه رم DDR2 و باس MIPI CSI-2 که در یک پکیج کوچک قرار گرفته است. هدف اصلی، ساخت یک برد بینایی استریو ارزان و ساده با قابلیت اجرای لینوکس و پردازش تصویر داخلی بود تا بتوان از آن در پروژههای رباتیکی (مثل افزودن قابلیت اجتناب از مانع به بردهایی مانند Arduino) استفاده کرد.
جزئیات سختافزاری و طراحی PCB
برد طراحیشده یک بورد چهار لایه است که لایه بالایی آن شامل خطوط با امپدانس کنترلشده مانند USB، MIPI و اترنت بههمراه مسیرهای تغذیه و سیگنال است. لایه داخلی اول به عنوان زمین جامد (Ground) و لایه داخلی دوم و لایه پایینی به سیگنال و توان اختصاص یافتهاند. مانند هر پروژه سختافزاری اولهای، این برد نیز با چالشهایی روبهرو شد؛ از جمله اشتباه در انتخاب نسخه تراشه، خطا در اندازه سوراخهای هولدر لنز، مقاومتهای ۱ کیلوولتی کوچک برای LEDها و نازک بودن بیش از حد مسیر تغذیه ۰.۹ ولتی، که با وجود این مسائل برد در نهایت عملکرد قابل قبولی ارائه داد.
بوتلودر، کرنل و سیستمعامل با Buildroot
برای راهاندازی این سیستمعامل لینوکسی، از ابزار محبوب Buildroot استفاده شده است که تمامی اجزا شامل درایورها، بوتلودر و کرنل را در قالب یک فایل sdcard.img کامپایل میکند. مراحل راهاندازی و بوت در این تراشههای ARM به چند بخش تقسیم میشود:
- BootROM: پردازش اولیه در حافظه ROM و استفاده از SRAM.
- TPL (Tertiary Program Loader): مقداردهی اولیه کنترلکننده DRAM (توسعهیافته توسط شرکت سازنده).
- SPL (Secondary Program Loader): بارگذاری U-Boot.
- U-Boot: بوتلودر اصلی برای بارگذاری کرنل لینوکس.
- Init System: راهاندازی سرویسهای سیستمعامل.
به دلیل عدم وجود برخی درایورهای MIPI و شتابدهندههای سختافزاری در شاخه اصلی (Upstream)، استفاده از BSP اختصاصی سازنده ضروری بوده است. پس از پیکربندی، ارتباط با برد ابتدا از طریق پورت سریال و سپس به کمک آداپتور اترنت روی پورت USB-C و پروتکل SSH برقرار شد.
پشته نرمافزاری و شتابدهی سختافزاری
در فضای کاربری (User Space)، ارتباط با دوربینها و زیرسیستمهای ویدئویی از طریق استانداردهای لینوکس مدیریت میشود:
- درایورهای V4L2 دوربینها را در نودهای
/dev/videoXظاهر میکنند (شامل ویدئوی اصلی و ابزارهای کمکی). - تنظیمات دوربین نظیر اکسپوژر از طریق
/dev/v4l-subdevXکنترل میشوند. - موتور ویدئویی Rockchip از طریق
/dev/rveو کتابخانه اختصاصیlibrve.aبرای تسریع وظایف پردازش تصویر به کار گرفته میشود.
مکانیزم بینایی استریو و الگوریتم SAD
قلب تپنده پردازش عمق در این تراشه، موتور SAD (مجموع تفاضلات مطلق یا Sum of Absolute Differences) است که به صورت سختافزاری روی SoC تعبیه شده است. الگوریتمهای تطبیق بلوکی مبتنی بر SAD تصاویر خاکستری را به پچهای کوچک تقسیم کرده و با جابجایی افقی (Shift) تصویر نسبت به دوربین دوم (با فاصله مشخص یا Baseline)، تشابه بلوکها را میسنجند:
- شیفت کمتر به معنای فاصله بیشتر (اجسام دورتر) است.
- شیفت بیشتر نشاندهنده فاصله کمتر است.
آینده پروژه
سازنده قصد دارد پس از دریافت بازخوردها و به حد نصاب رسیدن متقاضیان، نسخه اصلاحشده بردها را برای فروش تولید کند. مراحل بعدی توسعه شامل بهینهسازی کدهای نرمافزاری، بهینهسازی تصاویر و پیادهسازی الگوریتمهای SLAM و YOLO خواهد بود.
این مطلب بهصورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل