شبیه سازی شبکه پهپادی FANET با FlyNetSim تحت NS3
طبق توضیحات ارائه شده در صفحه رسمی FlyNetSim در گیت هاب، این ابزار در ابتدا بر روی یک سیستم تحت اوبونتو 16.04 با نرم افزار شبیه ساز NS3.27 آزمایش شده است. البته نصب برخی از نسخه های قدیمی نرم افزار بر روی یک نوع جدید لینوکس ممکن است با مشکلات زیادی در سازگاری نسخه نرم افزار همراه باشد. علاوه بر این، نصب FlyNetSim تحت ماشین مجازی نیز ممکن است باعث عملکرد ضعیف سیستم شود. بنابراین در این مقاله آموزشی شبکه ما سعی می کنیم ابزار FlyNetSim را بر روی سیستم عامل دبیان مبتنی بر chroot نصب کنیم تا به عملکرد تقریباً بومی دست یابیم.
ابزار ArduPilot
ابزار ArduPilot یک سیستم خلبان خودکار قابل اعتماد، همه کاره و منبع باز است که از انواع وسایل نقلیه پشتیبانی می کند که شامل مالتی کوپتر (Multicopter) ، هلیکوپتر سنتی، هواپیمای بال ثابت، قایق، زیردریایی، مریخ نورد و غیره است[3]. یک وسیله نقلیه با نصب سیستم ArduPilot می تواند با حالت خلبان خودکار هدایت شود تا از موانع حتی در حین مانور دستی وسیله نقلیه جلوگیری شود، و می توان حرکت وسیله نقلیه را با اتخاذ یک مسیر از پیش تعریف شده محدود کرد یا به آن اجازه داد فقط در یک جغرافیای مجازی حرکت کند. بنابراین فرض می شود که خودرویی که با ArduPilot کنترل می شود، مجهز به سنسورها و کنترل های استاندارد باشد.
شبیه ساز FlyNetSim
ابزار FlyNetSim یک شبیه ساز شبکه پهپادی است که با ترکیب نرم افزار شبیه ساز شبکه NS3 و نرم افزار شبیه ساز پهپاد مبتنی بر Ardupilot در حلقه با میان افزار سبک وزن مبتنی بر Pub/Sub ایجاد شده است [1]. بنابراین FlyNetSim با تعامل با ArduPilot، تحرک واقعی شبکه های FANET را برای گره های پهپادی NS3 فراهم می کند. هدف کلی FlyNetSim این است که شبیه سازی و ارزیابی ازدحام های پهپاد در اکوسیستم های فناوری چند لایه ای مانند اینترنت اشیا شهری را فعال کند [3].
نرم افزار های پیش نیاز
کد FlyNetSim در ابتدا بر روی یک سیستم اوبونتو نسخه 16.04 با نرم افزار شبیه ساز NS3.27 آزمایش شده است. بنابراین تمام کتابخانه های پیش نیاز مربوطه باید قبل از نصب ns-3 و FlyNetSim نصب شوند. کتابخانه های اساسی مورد نیاز شامل Python2.7، pip، python-dev، gcc. هستند. همچنین FlyNetSim به برخی از نسخه های خاص czmq، libzmq، libczmq و libxml وابسته دارد.
نصب محیط Debian Chroot
این روش نصب بر اساس دبیان 9 نسخه 64 بیتی (استریت) است که پایه اصلی آن اوبونتو 16.04 می باشد. در اینجا ما از Debian 9 استفاده کردیم که در محیط chroot نصب شده است.
مراحل نصب FlyNetSim
مرحله اول: نصب پیش نیاز ها و وابستگی ها
1 2 | $ apt-get install libzmq5 libzmq-dev libczmq4 libczmq-dev czmq libxml2 libxml2-dev $ apt-get install python pip python-dev python-qt4 |
1 2 3 4 | $ cd cd /home/your_home $ git clone https://github.com/zeromq/zeromq4-x.git libzmq $ cd libzmq $ ./configure; make; make install |
مرحله دوم: کلون FlyNetSim از مخزن GitHub
1 2 | $ cd /home/your_home $ git clone https://github.com/saburhb/FlyNetSim.git |
مرحله سوم: اجرای اسکریپت نصب کننده FlyNetSim
1 2 | $ cd /home/your_home/FlyNetSim/NetSim $ ./net_init.sh |
این اسکریپت ns-3.27 را دانلود کرده و FlyNetSim مورد نیاز را اعمال می کند. پچ ها و به روز رسانی ها اعمال شده و پیکربندی ns-3 و بیلد انجام می شود. در پایان یک کامپایل موفق ns-3.27 ماژول های جدید ساخته شده را نشان می دهد. اما ما هیچ ماژول جدیدی مربوط به FlyNetSim نمی بینیم. این بدان معناست که FlyNetSim به عنوان یک ماژول ns-3 ادغام نشده است.
اگر در مرحله wget اسکریپت نصب با خطای لایسنس (Certificate) مواجه شدید، با دانلود فایل مناسب در پوشه مربوطه و اجرای مجدد اسکریپت نصب می توان آن را حل کرد.
مرحله چهارم: دانلود و پیکربندی Ardupilot، dronekit و sitl
1 2 | $ cd /home/your_home/FlyNetSim/FlySim $ ./fly_init.sh |
اسکریپت بالا برخی از ماژول های مرتبط با Autopilot که با ns-3 مرتبط نیستند را کلون می کند. تصویر زیر فرآیند کلون را نشان می دهد:
هنگام نصب این مورد در محیط chroot ممکن است با برخی از خطا های مربوط به chroot مواجه شویم:
ما ممکن است با پچ (وصله یا به روز رسانی) دستی شل اسکریپت نصب مناسب FlyNetSim/FlySim/fly_init.sh و FlyNetSim/FlySim/ardupilot/Tools/environment_install/install-prereqs-ubuntu.sh بر چنین خطا هایی غلبه کنیم تا در محیط chroot به درستی اجرا شوند. علاوه بر این، ممکن است قبل از اجرای install-prereqs-ubuntu.sh، نیاز به اجرای pip install –upgrade setuptools داشته باشد.
تصویر زیر یک خطای لایسنس را هنگام نصب ArduPilot و اجزای مرتبط با آن را نشان می دهد:
این خطای لایسنس را می توان با دانلود
1 | gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2 |
در پوشه /opt و اجرای مجدد اسکریپت نصب برطرف کرد.
1 | lyNetSim/FlySim/ardupilot/Tools/environment_install/install-prereqs-ubuntu.sh |
در این صورت ممکن است لازم باشد dronekit و dronekit-sitl و pyzmq را به صورت دستی نصب کنید:
1 2 3 | $ pip install dronekit $ pip install dronekit-sitl $ pip install pyzmq |
تصویر زیر نصب موفقیت آمیز ArduPilot و اجزای مرتبط با آن را نشان می دهد:
مرحله پنجم: آزمایش نصب با اجرای شبیه سازی
1 | $ python FlyNetSim.py |
اگر خطای مربوط به xml_path را دریافت کردید، می توانید مسیر صحیح را در فایل FlyNetSim.py به صورت زیر تنظیم کنید:
1 | xml_path = /home/your-home/FlyNetSim/NetSim/ns-allinone-3.27/ns-3.27 |
اگر همه چیز را به درستی نصب کرده باشید، دستور python FlyNetSim.py که در مرحله بالا تایپ کردید، موارد زیر را باز می کند:
اگر دکمه Arm فعال نیست، ممکن است لازم باشد از اسکریپت FlyNetSim_direct_no_ns3.py برای شروع شبیه سازی استفاده کنید.
با کلیک بر روی دکمه Arm دکمه تیک آف فعال می شود و خروجی زیر را نشان می دهد:
منابع:
- https://github.com/saburhb/FlyNetSim
- Baidya, S., Shaikh, Z., Levorato, M. “FlyNetSim: An Open Source Synchronized UAV Network Simulator based on ns-3 and Ardupilot”. In Proceedings of the 21st ACM International Conference on Modeling, Analysis and Simulation of Wireless and Mobile Systems (ACM MSWiM).
- https://ardupilot.org
- https://www.projectguideline.com
هیچ نظری ثبت نشده است