Arduino z Mavlink - Wysyłanie komend

Kliknij i wspomóż mnie :)

C++

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.

Sprawdź także moje poprzednie wpisy w tej serii:

Arduino z Mavlink - Start
Arduino z Mavlink - Odczyt danych

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 :).

Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊

O mnie

Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.

Zobacz więcej

Najnowsze posty

Kliknij i wspomóż mnie :)

Zostańmy w kontakcie

* Wymagane
Kliknij i wspomóż mnie :)
shop
Otwórz Sklep Play

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