Arduino z Mavlink - Wysyłanie komend

Protokół Mavlink umożliwia nam także wysyłanie komend do urządzeń. Dzięki temu możemy m.in. sterować obrotami silników drona.

Wprowadzenie

Wysyłanie komend i w tym przypadku opiera się na cyklicznym zapisywaniu do bufora danych pakietów z informacjami. W moim kodzie chciałem stworzyć implementację dla kontroli danych drona takich jak: tryb lotu, zazbrojenie oraz kanały RC.

Na początku musimy zadeklarować zmienne globalne, które przechowują aktualny stan drona.

W większości poradników na internecie kod dla odbierania i wysyłania danych jest wymieszany ze sobą. Ja postanowiłem nieco uelastycznić kod i każdą akcję przeniosłem do funkcji z parametrami.

Teraz przejdę do opisania każdej z nich.

Nadawanie heartbeat

Jest to najprostsza funkcja i jej wywołanie zawiera jedynie parametry systemowe. Mavlink na wysłanie pakietu heartbeat odpowie nam tym samym.

To jaką funkcje wywołać i z jakimi argumentami można znaleźć w pliku mavlink_msg_heartbeat.h w folderze mavlink/common/. Analogicznie postępujemy dla innych komend.

Zmiana trybu lotu

Zmiana trybu lotu opiera się na wywołaniu funkcji mavlink_msg_set_mode_pack. Ta funkcja dla APM 2.6 zadziałała, gdy parametr target_system wynosi 1. Dany tryb lotu definiujemy parametrem custom_mode na ostatnim miejscu.

Zazbrajanie drona

Użycie tej akcji sprawiło mi nielada problem, gdyż w mavlinku do zazbrajania i rozbrajania wykorzystujemy tak zwaną długą komendę (command_long) MAV_CMD_COMPONENT_ARM_DISARM (400). Nie było dla mnie do końca jasne na początku jak ją wywołać.

Potrzebna do tego jest funkcja mavlink_msg_command_long_pack, gdzie jako 6 parametr definujemy użycie właśnie długiej komendy. Używane one są jako polecenia podczas planowania misji choćby w Mission Planner. Następne 8 parametrów to właśnie parametry długiej komendy.

Regulowanie kanałów RC

Kanały RC (Radio control) odpowiadają za sygnały z aparatury - ten joystick do sterowania urządzeniem.

Dzięki nim możemy wprowadzić nasze własne wartości np. dla drążków throttle lub yaw. Generalnie możliwe jest nadpisanie wszystkich elementów aparatury, ale jesteśmy ograniczeni do 8 kanałów.

W przypadku APM 2.6 kanały musiałem sprawdzić w Mission Planner. Można to zrobić za pomocą choćby jakiegokolwiek pada w trybie emulacji aparatury w programie.

Jest to już ostatni artykuł z krótkiej serii o podstawach w Mavlink'u. Nie wykluczone, że kiedyś w przyszłości pojawią się jeszcze podobne wpisy, ale na razie potrzebuję oddechu :).

shop
Otwórz Sklep Play

Zachęcam cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.