اتوپایلوت یک سیستم کنترل خودکار (Automatic Control System) است که به منظور کاهش بار کاری اپراتور انسانی (خلبان یا راننده) طراحی شده است. این سیستم با استفاده از سنسورها، پردازشگرها و الگوریتمهای کنترل، پارامترهای حرکتی را به صورت مداوم نظارت کرده و به طور خودکار تنظیم میکند.
Pixhawk یک پلتفرم سختافزاری متنباز کنترلکننده پرواز (Flight Controller) است که به عنوان یکی از محبوبترین سیستمهای اتوپایلوت در حوزه پهپادها، UAVها، روباتهای خودران و وسایل پرنده بدون سرنشین استفاده میشود.
این پلتفرم توسط آزمایشگاه ETH Zurich (سوئیس) و شرکت 3DRobotics توسعه یافت و اکنون تحت حمایت پروژه DroneCode Foundation قرار دارد.
| نسخه | سال معرفی | پردازنده اصلی |
| Pixhawk 1 | 2014 | STM32F427 + STM32F103 (Coprocessor) |
| Pixhawk 2 | 2016 | STM32F427 + STM32F100 |
| Pixhawk 4 | 2018 | STM32F765 |
| Pixhawk 5 | 2020 | STM32F765 + STM32F100 |
| Pixhawk 6 | 2022 | STM32H7 (480MHz) + ICM-45686 |
| Pixhawk 6X | 2023 | STM32H7 + پردازنده دوم |
| Pixhawk 6C | 2023 | نسخه اقتصادی Pixhawk 6 |
لینک فریم ور های نرم افزاری قابل اجرا روی فلایت کنترلر Pixhawk :
ArduPilot یک پلتفرم اتوپایلوت متنباز با زبان c++ است که بسیار پیشرفته و همهکاره است که قابلیت کنترل انواع وسایل نقلیه خودران را فراهم میکند. این software stack از سال ۲۰۱۰ توسعه یافته و امروزه یکی از قدرتمندترین و قابل اعتمادترین سیستمهای کنترل پرواز و حرکت در دنیا محسوب میشود.
پشتیبانی از پلتفرمهای متعدد (Vehicle Types):

Mission Planner یک نرمافزار رایگان و متنباز است که به عنوان ایستگاه کنترل زمینی (Ground Control Station) برای پهپادها و وسایل مبتنی بر ArduPilot طراحی شده است. این برنامه امکان تنظیم پارامترها، برنامهریزی مأموریت پرواز، مانیتورینگ لحظهای وضعیت پرنده، کالیبراسیون سنسورها و تحلیل لاگهای پرواز را فراهم میکند.

تبهای اصلی برنامه:
نمایشگر HUD (Head-Up Display)

HUD اطلاعات حیاتی پرواز را به صورت گرافیکی نمایش میدهد:
نحوه اتصال به پرنده
در پنل اتصال میتوان نوع ارتباط (Serial، TCP، UDP و …) و نرخ انتقال داده (Baud Rate) را انتخاب کرد. برای اتصال به SITL معمولاً از TCP با آدرس 127.0.0.1:5760 استفاده میشود. برای اتصال به Pixhawk واقعی، ابتدا فریمور را آپلود کنید (از طریق Mission Planner یا STM32CubeProgrammer) سپس از طریق پورت سریال (COM) یا اترنت متصل شوید.
نکته معمولا بعد از اجرای sitl برنامه به صورت خودکار به شبیه ساز متصل می شود.
راهاندازی شبیهساز SITL
SITL (Software In The Loop) امکان شبیهسازی کامل پرواز روی کامپیوتر بدون نیاز به سختافزار واقعی را فراهم میکند.

مراحل راهاندازی:
راهکارهای مشکل لود نشدن نقشه:
– فرآیند برخاست و فرود
برخاست (Takeoff):
فرود:
در جدول زیر مهمترین مودهای پروازی ArduPilot آورده شده است:
| ردیف | Mode | توضیح مختصر |
| 1 | Stabilize | پرواز دستی با کمک PID برای پایداری |
| 2 | Acro | مود آکروباتیک بدون کمک پایدارسازی |
| 3 | AltHold | حفظ ارتفاع ثابت، کنترل زاویه با کاربر |
| 4 | Auto | اجرای مأموریت از پیش برنامهریزیشده |
| 5 | Guided | کنترل آنلاین از طریق ایستگاه زمینی |
| 6 | Loiter | شناور ماندن در موقعیت فعلی |
| 7 | RTL | بازگشت خودکار به نقطه Home |
| 8 | Land | فرود خودکار |
| 9 | PosHold | حفظ موقعیت و ارتفاع با دقت بالا |
در این بخش دستورات فوری مانند Arm/Disarm، Takeoff، RTL، Loiter، Change Altitude، Set Mode و Restart Mission قابل ارسال است.
در این تب با کلیک روی نقشه، Waypointها و دستورات مأموریت تعریف میشود. پس از تکمیل مسیر، با دکمه Write مأموریت به پرنده ارسال میگردد. برای اجرای خودکار، مود پروازی را روی Auto قرار دهید.
MAVProxy یک ابزار خط فرمان (Console) سبک است که امکان ارسال دستورات MAVLink و دریافت دادهها از ArduPilot را فراهم میکند. این ابزار برای اسکریپتنویسی، تست و کنترل پیشرفته مناسب است.
|
1 |
mavproxy --master=tcp:127.0.0.1:5762 |
بعد از اتصال موفق، کنسول MAVPROXY باز می شود و شروع به نمایش دیتا های HEALTH SYSTEM می کند .
MAVProxy دارای HUD، Map، Parameter Editor و مجموعه دستورات فرآوان برای کنترل پرواز، مأموریت، سنسورها و لاگها است.
Mavlink :
MAVLink (Micro Air Vehicle Link) یک پروتکل ارتباطی سبک، کارآمد و متنباز است که برای تبادل داده بین پهپادها، روباتها و ایستگاه کنترل زمینی طراحی شده است. این پروتکل از نسخه ۲.۰ قابلیت امضای دیجیتال (Signature) را پشتیبانی میکند که امنیت انتقال داده را به طور قابل توجهی افزایش میدهد.
ساختار کلی یک پیام MAVLink به صورت زیر است:

برای ارتباط با پروتکل MAVLink در پایتون از کتابخانه pymavlink استفاده میشود.
نصب:
|
1 |
pip install pymavlink |
توابع مهم پیادهسازیشده
اتصال به SITL و دریافت Heartbeat:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
from pymavlink import mavutil def connect_to_sitl(): اتصال به شبیهساز SITL print("Connecting to SITL...") try: drone = mavutil.mavlink_connection('tcp:127.0.0.1:5763', timeout=5) drone.wait_heartbeat(timeout=15) print(f"✅ Connected to SITL! System: {drone.target_system}") return drone except Exception as e: print(f"❌ Connection failed: {e}") return None |
ارسال دستور سرعت (Velocity) برای دنبال کردن هدف:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
def send_velocity(drone, vel_x, vel_y, vel_z=0): ارسال دستور سرعت برداری if drone is None: return drone.mav.set_position_target_local_ned_send( 0, # time_boot_ms drone.target_system, drone.target_component, mavutil.mavlink.MAV_FRAME_LOCAL_NED, 0b0000111111000111, # ماسک: فقط سرعت 0, 0, 0, # موقعیت (نادیده گرفته شود) vel_x, vel_y, vel_z, # سرعت (متر بر ثانیه) 0, 0, 0, # شتاب 0, 0 # Yaw, Yaw rate ) |
تغییر مود پروازی و Arm کردن:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
def set_mode(drone, mode): تغییر مود پروازی if drone.mode_mapping(): mode_id = drone.mode_mapping()[mode] drone.mav.set_mode_send( drone.target_system, mavutil.mavlink.MAV_MODE_FLAG_CUSTOM_MODE_ENABLED, mode_id ) print(f"Mode changed to: {mode}") def arm_and_wait(drone): """Arm کردن موتورها""" print("Arming...") drone.arducopter_arm( drone.motors_armed_wait() print("✅ Armed successfully") |
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.