ArduPilot

ArduPilot
Deweloperzy Zespół programistów i społeczność ArduPilot
Pierwsze wydanie 2009
Magazyn https://github.com/ArduPilot
Napisane w C++, Pythona
System operacyjny Międzyplatformowe
Licencja GPLv 3
Strona internetowa http://ardupilot.org

ArduPilot to open source , bezzałogowy pojazd Autopilot Software Suite, zdolny do kontrolowania autonomicznych:

ArduPilot został pierwotnie opracowany przez hobbystów do sterowania modelami samolotów i łazików i przekształcił się w w pełni funkcjonalnego i niezawodnego autopilota używanego przez przemysł, organizacje badawcze i amatorów.

Oprogramowanie i sprzęt

Pakiet oprogramowania

Pakiet oprogramowania ArduPilot składa się z oprogramowania nawigacyjnego (zwykle określanego jako oprogramowanie układowe, gdy jest skompilowane do postaci binarnej dla celów sprzętowych mikrokontrolera) działającego w pojeździe ( Copter , Plane , Rover, AntennaTracker lub Sub ), wraz z oprogramowaniem kontrolującym stację naziemną w tym Mission Planner, APM Planner, QGroundControl, MavProxy, Tower i inne.

Kod źródłowy ArduPilot jest przechowywany i zarządzany na GitHub , z prawie 400 współtwórcami.

Pakiet oprogramowania jest budowany automatycznie co noc, z ciągłą integracją i testami jednostkowymi zapewnianymi przez Travis CI oraz środowisko do budowania i kompilacji, w tym międzyplatformowy kompilator GNU i Waf . Wstępnie skompilowane pliki binarne działające na różnych platformach sprzętowych są dostępne do pobrania przez użytkowników z podstron ArduPilot.

An octocopter flying with Ardupilot
Octocopter latający z Ardupilotem

Obsługiwany sprzęt

Oprogramowanie Copter, Plane, Rover, AntennaTracker lub Sub działa na wielu różnych urządzeniach wbudowanych (w tym w pełni wyposażonych komputerach z systemem Linux ), zazwyczaj składających się z jednego lub więcej mikrokontrolerów lub mikroprocesorów podłączonych do czujników peryferyjnych używanych do nawigacji. Czujniki te obejmują co najmniej żyroskopy i akcelerometry MEMS , niezbędne do lotu wielowirnikowego i stabilizacji samolotu. Czujniki zwykle obejmują dodatkowo jeden lub więcej kompas , wysokościomierz (barometryczny) i GPS , wraz z opcjonalnymi dodatkowymi czujnikami, takimi jak optyczne czujniki przepływu , prędkościomierze , wysokościomierze laserowe lub sonarowe lub dalmierze, kamery monokularowe, stereoskopowe lub RGB-D. Czujniki mogą znajdować się na tej samej płytce elektronicznej lub na zewnątrz.

Oprogramowanie Ground Station, służące do programowania lub monitorowania pracy pojazdu, dostępne jest dla systemów Windows, Linux, macOS, iOS i Android.

ArduPilot działa na wielu różnych platformach sprzętowych, w tym na następujących, wymienionych w kolejności alfabetycznej:

  • Intel Aero (podstawa Linux lub STM32)
  • Arduino ), zaprojektowany przez Jordi Munoz w 2010 roku. APM, dla Ardu P ilot Mega , działa tylko na starszych wersjach ArduPilot.
  • BeagleBone Blue i PXF Mini (peleryna BeagleBone Black).
  • Cube , wcześniej nazywany Pixhawk 2 (podstawa mikrokontrolera ARM Cortex), zaprojektowany przez ProfiCNC w 2015 roku.
  • Edge , kontroler drona z systemem strumieniowania wideo, zaprojektowany przez firmę Emlid.
  • Erle-Brain , (podstawa Linuksa) zaprojektowany przez Erle Robotics.
  • Płyta Intel Minnowboard (podstawa systemu Linux).
  • Navio2 i Navio+ ( oparte na Raspberry Pi Linux), zaprojektowane przez Emlida.
  • Parrot Bebop i Parrot CHUCK, zaprojektowane przez Parrot, SA
  • Pixhawk [ ru ] , (podstawa mikrokontrolera ARM Cortex), pierwotnie zaprojektowany przez Lorenza Meiera i ETH Zurich, ulepszony i uruchomiony w 2013 roku przez PX4 , 3DRobotics i zespół programistów ArduPilot.
  • PixRacer (podstawa mikrokontrolera ARM Cortex) zaprojektowany przez AUAV.
  • Qualcomm SnapDragon (podstawa Linuksa).
  • Virtual Robotics VRBrain (podstawa mikrokontrolera ARM Cortex).
  • Xilinx SoC Zynq (podstawa Linuksa, procesor ARM i FPGA ).

Oprócz powyższych podstawowych platform nawigacyjnych, ArduPilot obsługuje integrację i komunikację z komputerami towarzyszącymi w pojeździe lub komputerami pomocniczymi w celu zaawansowanej nawigacji wymagającej mocniejszego przetwarzania. Należą do nich komputery NVidia TX1 i TX2 ( architektura NVidia Jetson ), Intel Edison i Intel Joule, HardKernel Odroid i Raspberry PI .

Cechy

Wspólne dla wszystkich pojazdów

ArduPilot zapewnia duży zestaw funkcji, w tym następujące wspólne dla wszystkich pojazdów:

  • W pełni autonomiczne, półautonomiczne iw pełni manualne tryby lotu, programowalne misje z punktami orientacyjnymi 3D, opcjonalne geofencing .
  • Opcje stabilizacji, aby zanegować potrzebę drugiego pilota strony trzeciej.
  • Symulacja za pomocą różnych symulatorów, w tym ArduPilot SITL.
  • Obsługiwana jest duża liczba czujników nawigacyjnych, w tym kilka modeli GPS RTK, tradycyjne GPS L1, barometry, magnetometry, dalmierze laserowe i sonarowe, przepływ optyczny, transponder ADS-B , podczerwień, prędkość lotu, czujniki i komputerowe urządzenia wizyjne/przechwytujące ruch.
  • Komunikacja czujnika przez SPI , I²C , CAN Bus , komunikacja szeregowa , SMBus .
  • Zabezpieczenia przed utratą łączności radiowej, GPS i przekroczeniem określonej granicy, minimalny poziom naładowania baterii.
  • Obsługa nawigacji w środowiskach pozbawionych GPS, z pozycjonowaniem opartym na wizji, przepływem optycznym , SLAM , pozycjonowaniem Ultra Wide Band .
  • Wsparcie dla siłowników, takich jak spadochrony i chwytaki magnetyczne.
  • Obsługa silników bezszczotkowych i szczotkowych .
  • Obsługa i integracja gimbala fotograficznego i wideo.
  • Integracja i komunikacja z potężnymi komputerami pomocniczymi lub „towarzyszącymi”.
  • Bogata dokumentacja poprzez wiki ArduPilot.
  • Wsparcie i dyskusja za pośrednictwem forum dyskusyjnego ArduPilot, kanałów czatu Gitter, GitHub, Facebook.

Specyficzny dla helikopterów

  • Tryby lotu: Stabilizacja, Alt Hold, Loiter, RTL (Return-to-Launch), Auto, Acro, AutoTune, Brake, Circle, Drift, Guided (i Guided_NoGPS), Land, PosHold, Sport, Throw, Follow Me, Simple , Super proste, Unikaj_ADSB.
  • Przeróbka samochodu
  • Obsługiwana szeroka gama typów ram, w tym trikoptery, quadkoptery, heksakoptery, oktokoptery płaskie i współosiowe oraz niestandardowe konfiguracje silników
  • Obsługa tradycyjnych śmigłowców elektrycznych i gazowych, śmigłowców mono, śmigłowców tandemowych.

Specyficzne dla samolotu

  • Tryby Fly By Wire , loiter, auto, tryby akrobatyczne.
  • Opcje startu: Start ręczny, bungee, katapulta, przejście pionowe (dla samolotów VTOL).
  • Opcje lądowania: regulowane nachylenie schodzenia, helikalne, odwrócony ciąg, sieć, przejście pionowe (dla samolotów VTOL).
  • Automatyczne dostrajanie, symulacja za pomocą symulatorów JSBSIM, X-Plane i RealFlight .
  • Wsparcie dla szerokiej gamy architektur VTOL: Quadplanes, Tilt wings, Tilt rotors, tail sitters, ornitoptery.
  • Optymalizacja samolotów 3 lub 4 kanałowych.

Specyficzny dla Rovera

  • Tryby operacyjne Ręczny, Nauka, Automatyczny, Sterowanie, Wstrzymanie i Z przewodnikiem.
  • Wsparcie dla architektur kołowych i gąsienicowych.

Specyficzne dla łodzi podwodnych

  • Utrzymanie głębokości: dzięki ciśnieniowym czujnikom głębokości okręty podwodne mogą utrzymać głębokość z dokładnością do kilku centymetrów.
  • Light Control: Sterowanie oświetleniem podwodnym za pomocą kontrolera.

ArduPilot jest w pełni udokumentowany na swojej wiki, co odpowiada łącznie około 700 wydrukowanym stronom i jest podzielony na sześć głównych sekcji: podsekcje związane z helikopterem, samolotem, łazikiem i łodzią podwodną są skierowane do użytkowników. Podsekcja deweloperska przeznaczona dla zaawansowanych zastosowań jest skierowana przede wszystkim do inżynierów oprogramowania i sprzętu, a sekcja wspólna, zawierająca informacje wspólne dla wszystkich typów pojazdów, jest udostępniana w pierwszych czterech sekcjach.

Przypadki użycia ArduPilota

Hobbyści i amatorzy

Profesjonalny

Historia

Wczesne lata 2007-2012

Najwcześniejsze korzenie projektu ArduPilot sięgają końca 2007 roku, kiedy Jordi Munoz, który później był współzałożycielem 3DRobotics wraz z Chrisem Andersonem , napisał program Arduino (który nazwał „ArduCopter”) do stabilizacji helikoptera RC. W 2009 roku Munoz i Anderson wypuścili Ardupilot 1.0 (oprogramowanie kontrolera lotu) wraz z płytą sprzętową, na której mogło działać. W tym samym roku Munoz, który zbudował tradycyjny zdalnie sterowany helikopter UAV zdolny do lotu autonomicznego, wygrał pierwsze zawody Sparkfun AVC. Projekt rozwijał się dalej dzięki wielu członkom społeczności DIY Drones, w tym Chrisowi Andersonowi, który był orędownikiem projektu i założył społeczność opartą na forum na początku 2007 roku.

Pierwsza wersja ArduPilota obsługiwała tylko stałopłat i była oparta na czujniku termoelektrycznym , który polega na określaniu położenia horyzontu względem samolotu poprzez pomiar różnicy temperatur między niebem a ziemią. Później system został ulepszony w celu zastąpienia stosów termoelektrycznych inercyjną jednostką pomiarową (IMU) wykorzystującą kombinację akcelerometrów , żyroskopów i magnetometrów . Wsparcie dla pojazdów zostało później rozszerzone na inne typy pojazdów, co doprowadziło do powstania podprojektów Copter, Plane, Rover i Submarine.

Lata 2011 i 2012 były świadkami gwałtownego wzrostu funkcjonalności autopilota i rozmiaru bazy kodu, w dużej mierze dzięki nowemu udziałowi Andrew „Tridge” Tridgella i autora HAL, Pata Hickeya. Wkład Tridge'a obejmował funkcje automatycznego testowania i symulacji dla Ardupilot, wraz z PyMavlink i Mavproxy. Hickey odegrał kluczową rolę we wprowadzeniu biblioteki AP_HAL do bazy kodu: HAL (Hardware Abstraction Layer) znacznie uprościł i zmodularyzował bazę kodu, wprowadzając i ograniczając specyfikę implementacji sprzętowej niskiego poziomu do oddzielnej biblioteki sprzętowej. W 2012 roku Randy Mackay objął również rolę głównego opiekuna Coptera, po prośbie byłego opiekuna Jasona Shorta, a Tridge przejął rolę głównego opiekuna samolotu, po Dougu Weibelu, który uzyskał stopień doktora. w Inżynierii Lotniczej. Zarówno Randy, jak i Tridge są dotychczas głównymi opiekunami.

Podejście wolnego oprogramowania do tworzenia kodu ArduPilot jest podobne do systemu operacyjnego Linux i projektu GNU oraz projektu PX4/Pixhawk i Paparazzi , gdzie niski koszt i dostępność umożliwiły hobbystom zbudowanie autonomicznych małych zdalnie sterowanych samolotów , takich jak mikropowietrze pojazdy i miniaturowe UAV . Podobnie branża dronów stopniowo wykorzystywała kod ArduPilot do budowy profesjonalnych, wysokiej klasy pojazdów autonomicznych.

Dojrzałość, 2013-2016

Podczas gdy wczesne wersje ArduPilot korzystały z kontrolera lotu APM, procesora AVR obsługującego język programowania open source Arduino (co wyjaśnia część „Ardu” w nazwie projektu), późniejsze lata były świadkami znacznego ponownego napisania bazy kodu w C++ z wieloma pomocniczymi narzędziami napisanymi w Pythonie .

W latach 2013-2014 ArduPilot ewoluował, aby działać na wielu platformach sprzętowych i systemach operacyjnych poza oryginalną architekturą mikrokontrolera opartą na Arduino Atmel , najpierw wraz z komercyjnym wprowadzeniem sprzętowego kontrolera lotu Pixhawk, wspólnym wysiłkiem PX4, 3DRobotics i zespołu programistów ArduPilot , a później do Parrot's Bebop2 i kontrolerów lotu opartych na systemie Linux, takich jak NAVIO2 oparty na Raspberry Pi i ErleBrain oparty na BeagleBone. Kluczowym wydarzeniem w tym okresie był pierwszy lot samolotu pod Linuksem w połowie 2014 roku.

Pod koniec 2014 roku powstał DroneCode, utworzony w celu połączenia wiodących projektów oprogramowania UAV typu open source, a przede wszystkim w celu umocnienia relacji i współpracy między projektami ArduPilot i PX4. Zaangażowanie ArduPilot w DroneCode zakończyło się we wrześniu 2016 r. Rok 2015 był również rokiem sztandarowym dla 3DRobotics, ciężkiego sponsora rozwoju ArduPilota, wraz z wprowadzeniem quadcoptera Solo, gotowego quadkoptera z systemem ArduPilot. Komercyjny sukces Solo miał jednak nie nadejść.

Jesienią 2015 roku ponownie doszło do kluczowego wydarzenia w historii autopilota, gdy rój 50 samolotów z systemem ArduPilot leciał jednocześnie w zespole Advanced Robotic Systems Engineering Laboratory (ARSENL) w Szkole Podyplomowej Marynarki Wojennej .

W tym okresie baza kodu ArduPilot została znacznie zrefaktoryzowana , do punktu, w którym przestała wykazywać jakiekolwiek podobieństwo do wczesnych lat Arduino.

Bieżący, 2018-

Ewolucja kodu ArduPilot jest kontynuowana dzięki obsłudze integracji i komunikacji z potężnymi komputerami towarzyszącymi w celu autonomicznej nawigacji, obsłudze samolotu dla dodatkowych architektur VTOL, integracji z ROS , obsłudze szybowców i ściślejszej integracji dla łodzi podwodnych. Projekt ewoluuje pod patronatem ArduPilot.org, projektu w ramach organizacji non-profit Software in the Public Interest (spi-inc.org). ArduPilot jest częściowo sponsorowany przez rosnącą listę partnerów korporacyjnych.

Wyzwanie UAV Outback

W 2012 roku zespół Canberra UAV Team z sukcesem zajął pierwsze miejsce w prestiżowych zawodach UAV Outback Challenge . Zespół CanberraUAV składał się z programistów ArduPlane, a pilotowany samolot był kontrolowany przez autopilota APM 2. W 2014 roku CanberraUAV Team i ArduPilot ponownie zajęli pierwsze miejsce, skutecznie dostarczając butelkę „zagubionemu” wędrowcowi. W 2016 roku ArduPilot zajął pierwsze miejsce w trudniejszych technicznie zawodach, wyprzedzając silną konkurencję ze strony międzynarodowych zespołów.

Wspólnota

ArduPilot jest zarządzany wspólnie przez grupę wolontariuszy z całego świata, wykorzystujących Internet ( forum oparte na dyskursie , kanał Gitter ) do komunikacji, planowania, rozwijania i wspierania. Zespół programistów spotyka się co tydzień na otwartym dla wszystkich spotkaniu na czacie, używając Mumble . Ponadto setki użytkowników wnoszą do projektu pomysły, kod i dokumentację. ArduPilot jest objęty licencją GPL w wersji 3 i można go bezpłatnie pobrać i używać.

Możliwość dostosowania

Elastyczność ArduPilota sprawia, że ​​jest on bardzo popularny w dziedzinie majsterkowania, ale zyskał również popularność wśród profesjonalnych użytkowników i firm. Na przykład quadkopter Solo firmy 3DRobotics wykorzystuje ArduPilot, podobnie jak wiele profesjonalnych firm lotniczych, takich jak Boeing. Elastyczność pozwala na obsługę szerokiej gamy typów i rozmiarów ram, różnych czujników, gimbali do kamer i nadajników RC w zależności od preferencji operatora.

ArduPilot został pomyślnie zintegrowany z wieloma samolotami, takimi jak Bixler 2.0. Możliwość dostosowania i łatwość instalacji pozwoliły zintegrować platformę ArduPilot z różnymi misjami. Stacja kontroli naziemnej Mission Planner (Windows) umożliwia użytkownikowi łatwe konfigurowanie, programowanie, używanie lub symulowanie tablicy ArduPilot do celów takich jak mapowanie, poszukiwanie i ratownictwo oraz pomiary obszarów.

Zobacz też

Inne projekty autonomicznego sterowania samolotami:

Inne projekty dla pojazdów naziemnych i napędzanych samochodami:

Linki zewnętrzne