مسیر یادگیری ROS 2  ·  کتاب آموزشی تصویری

فصل شانزدهم: سخت‌افزار محاسباتی ARCHO — Jetson، Raspberry Pi، ESP32

کدام مغز، کدام کار
پیش‌نیاز: فصل ۸ (ros2_control)
پروژه پیوسته: سخت‌افزار واقعی ARCHO
پلتفرم‌ها: Jetson، Raspberry Pi، ESP32/micro-ROS
زمان مطالعه: ۱۱۰ تا ۱۳۰ دقیقه
در این فصل چه می‌خوانیم ۱۶.۱چرا یک کامپیوتر برای همه کارها کافی نیست ۱۶.۲Jetson: پردازش سنگین و هوش مصنوعی ۱۶.۳Raspberry Pi: دروازه و پردازش سبک ۱۶.۴ESP32 و micro-ROS: کنترل بی‌واسطه موتور ۱۶.۵Watchdog: مهم‌ترین اصل ایمنی این فصل ۱۶.۶معماری کامل سخت‌افزاری ARCHO ۱۶.۷جمع‌بندی، واژه‌نامه و تمرین‌ها

۱۶.۱چرا یک کامپیوتر برای همه کارها کافی نیست

تا اینجا فرض کردیم ARCHO یک کامپیوتر واحد دارد که همه‌چیز — از Nav2 تا کنترل موتور — را اجرا می‌کند. در دنیای واقعی، این فرض به‌ندرت درست است. یک بازوی رباتیک واقعی معمولاً از سه‌لایه سخت‌افزاری متفاوت تشکیل شده که هرکدام برای کار خودشان بهینه‌اند.

🧠 چرا نباید کنترل موتور را روی همان کامپیوتر Nav2 بگذاریم

کنترل موتور به یک حلقه Real-Time بسیار سریع و قابل‌پیش‌بینی نیاز دارد — مثلاً هزار بار در ثانیه. یک کامپیوتر Linux معمولی که هم‌زمان Nav2، SLAM و پردازش تصویر اجرا می‌کند، نمی‌تواند این تضمین زمانی را بدهد. به همین دلیل معماری‌های صنعتی، کنترل موتور را از پردازش سنگین جدا می‌کنند.

۱۶.۲Jetson: پردازش سنگین و هوش مصنوعی

NVIDIA Jetson برای کارهای پردازشی سنگین طراحی شده:

flowchart TB J["Jetson"] --> P["Perception"] J --> C["Camera Drivers"] J --> A["AI Models"] J --> S["Visual SLAM"] J --> H["High-Level ROS 2 (Nav2)"] style J fill:#eef0ff,stroke:#3d4bf5
⚠️ کنترل موتور Real-Time را مستقیم به Jetson نسپار

بهتر است Jetson فرمان‌های سطح بالا (مثل سرعت هدف) را از طریق CAN، Ethernet یا Serial به یک میکروکنترلر جدا بفرستد، نه این‌که خودش مستقیماً درایور موتور را کنترل کند.

Jetson
   │
   ▼
CAN / Ethernet / Serial
   │
   ▼
Microcontroller
   │
   ▼
Motor Drivers
نکته مهم Jetsonچرا اهمیت دارد
توان و خنک‌کاریپردازش سنگین گرمای زیادی تولید می‌کند و نیاز به خنک‌کننده مناسب دارد
فضای ذخیره‌سازیمدل‌های AI و Logها می‌توانند حجم زیادی بگیرند
نسخه JetPackسازگاری درایورها و کتابخانه‌ها به نسخه JetPack بستگی دارد
سازگاری CUDAهر مدل AI با نسخه خاصی از CUDA تست شده
راه‌اندازی خودکار Nodeهابعد از قطعی برق، سیستم باید بدون دخالت انسان دوباره بالا بیاید
Log Rotationبدون آن، دیسک به‌مرور پر می‌شود
Watchdog و محدودیت حرارتیاز overheating و freeze شدن سیستم جلوگیری می‌کند

۱۶.۳Raspberry Pi: دروازه و پردازش سبک

Raspberry Pi برای کارهای سبک‌تر مناسب است:

مناسب برایمحدود برای
LiDAR Driverمدل‌های AI سنگین
Sensor Gatewayچند دوربین عمق‌سنج هم‌زمان
ROS BridgeVisual SLAM سنگین
کنترل سطح متوسط، Telemetry
ربات‌های آموزشی سبک
Raspberry Pi
   │
   ├── ROS 2
   ├── LiDAR Driver
   ├── IMU Driver
   ├── robot_localization
   └── Basic Nav2

۱۶.۴ESP32 و micro-ROS: کنترل بی‌واسطه موتور

ESP32 معمولاً یک ROS 2 کامل مثل کامپیوتر اجرا نمی‌کند. دو مسیر رایج برای اتصال آن به دنیای ROS 2 وجود دارد:

flowchart LR A["ESP32 Firmware"] --> B["Custom Serial/CAN Protocol"] --> C["ROS 2 Hardware Interface"]
flowchart LR D["ESP32"] --> E["micro-ROS"] --> F["micro-ROS Agent"] --> G["ROS 2 Graph"] style E fill:#eef0ff,stroke:#3d4bf5
📖 micro-ROS چیست

micro-ROS همان مفاهیم آشنای ROS 2 — Publisher، Subscriber، Service، Timer — را به میکروکنترلرها می‌آورد. اما چون منابع MCU (RAM، Flash، CPU، شبکه) بسیار محدودتر از یک کامپیوتر است، معماری کامل ROS 2 را نباید عیناً روی آن کپی کرد.

وظایف مناسب ESP32وظایف نامناسب ESP32
خواندن EncoderSLAM
PID سرعت موتورNav2
خواندن سنسورهای سادهپردازش Point Cloud
Watchdogمدل‌های هوش مصنوعی بزرگ
فرمان ترمز و کنترل چراغ
ارسال Telemetry

۱۶.۵Watchdog: مهم‌ترین اصل ایمنی این فصل

⚠️ اگر ارتباط قطع شود

اگر ESP32 برای مدت مشخصی (مثلاً ۳۰۰ میلی‌ثانیه) هیچ فرمان جدیدی از لایه بالاتر دریافت نکند، باید خودش تصمیم بگیرد که فرمان موتور را صفر کند و ترمز بگیرد — بدون این‌که منتظر دستور از Jetson یا Raspberry Pi بماند. اگر لایه بالاتر (به هر دلیلی، حتی کرش نرم‌افزار) قطع شود، ARCHO نباید با آخرین فرمان دریافتی به حرکت ادامه دهد.

No command for 300 ms
          ↓
Motor command = 0
          ↓
Brake

این یکی از مهم‌ترین اصول ایمنی در هر ربات صنعتی واقعی است — و چون به‌قدری حیاتی است، باید مستقل از کل معماری نرم‌افزاری بالادستی روی همان میکروکنترلر پیاده شود.

۱۶.۶معماری کامل سخت‌افزاری ARCHO

flowchart TB J["Jetson"] --> N["Nav2"] J --> AI["AI / Perception"] J --> C["Camera"] J --> S["SLAM"] N --> MCU["ESP32 / STM32"] AI --> MCU C --> MCU S --> MCU MCU --> E["Encoder"] MCU --> PID["Motor PID"] MCU --> W["Watchdog"] MCU --> ES["Emergency Stop"] style J fill:#eef0ff,stroke:#3d4bf5 style MCU fill:#fdeeec,stroke:#d64a3c
🌍 معماری تقسیم‌شده برای یک ARCHO تولیدی

در یک نسخه صنعتی ARCHO با بازوی برداشت: Jetson مسئول Nav2، تشخیص جسم با AI، دوربین و SLAM بصری است. این تصمیم‌های سطح بالا از طریق یک لینک ارتباطی (CAN یا Serial) به یک میکروکنترلر (ESP32 یا STM32) فرستاده می‌شوند که خودش مستقیماً Encoder را می‌خواند، حلقه PID موتور را می‌بندد، Watchdog را اجرا می‌کند و به دکمه Emergency Stop واکنش نشان می‌دهد — کاملاً مستقل از این‌که Jetson سالم است یا نه.

لایهمسئولیت اصلی
Jetsonپردازش سنگین: AI، Perception، SLAM بصری، Nav2
Raspberry PiGateway یا پردازش سبک: LiDAR Driver، Telemetry
MCU (ESP32/STM32)کنترل Real-Time: Encoder، PID، Watchdog، Emergency Stop

۱۶.۷جمع‌بندی فصل شانزدهم

حالا می‌دانی چرا یک ARCHO واقعی به‌ندرت روی یک کامپیوتر واحد اجرا می‌شود. پردازش سنگین (Jetson)، Gateway سبک (Raspberry Pi) و کنترل Real-Time بی‌واسطه موتور (ESP32 با Watchdog مستقل) هرکدام نقش متفاوتی دارند و این تفکیک، هم عملکرد را بهتر می‌کند و هم ایمنی سیستم را تضمین می‌کند.

✅ نقطه بازبینی یادگیری
  • می‌توانم توضیح دهم چرا کنترل موتور نباید مستقیماً روی Jetson اجرا شود.
  • می‌دانم Raspberry Pi برای چه کارهایی مناسب است و برای چه کارهایی محدود است.
  • می‌توانم تفاوت دو مسیر اتصال ESP32 به ROS 2 را توضیح دهم.
  • می‌دانم Watchdog چه کاری انجام می‌دهد و چرا باید مستقل از لایه بالادستی باشد.
🌍 ارتباط با پروژه اصلی

پروژه ARCHO اکنون یک معماری سخت‌افزاری سه‌لایه دارد: Jetson برای Nav2 و AI، یک ESP32 با Watchdog مستقل برای کنترل مستقیم موتور و Encoder.

فصل بعد چه چیزی اضافه می‌کند

در فصل هفدهم به شبکه‌های صنعتی می‌رویم که این لایه‌ها را واقعاً به هم متصل می‌کنند: CAN Bus و EtherCAT.

واژه‌نامه فصل شانزدهم

Jetson
خانواده کامپیوترهای NVIDIA برای پردازش موازی و هوش مصنوعی روی لبه (Edge).
micro-ROS
پیاده‌سازی سبک‌شده مفاهیم ROS 2 برای اجرا روی میکروکنترلرهای با منابع محدود.
micro-ROS Agent
پل ارتباطی که پیام‌های micro-ROS را به گراف اصلی ROS 2 متصل می‌کند.
Watchdog
مکانیزم ایمنی که در صورت قطع ارتباط با لایه بالادستی، فرمان موتور را متوقف می‌کند.
Real-Time
ویژگی سیستمی که تضمین می‌کند یک عملیات در یک بازه زمانی مشخص و قابل‌پیش‌بینی انجام شود.

خطاهای رایج فصل شانزدهم — جمع‌بندی