Подключите mavlink (на RPi) к QGroundControl

#raspberry-pi #telemetry #mavlink #qgroundcontrol

#raspberry-pi #телеметрия #mavlink #qgroundcontrol

Вопрос:

Я пытаюсь подключить Mavlink (установленный на RPi) к QGroundControl через радиотелеметрию 3DR, чтобы передавать данные телеметрии из RPi без зависимости от контроллеров полета Ardupilot / Px4. Я хочу добиться передачи данных, таких как GPS или местоположение, используя формат сообщений mavlink, без зависимости от ardupilot / PX4.

До сих пор я брал пример кода из mavlink git и создавал код в соответствии с инструкциями. Я запускаю QGroundControl и смог получить идентификатор системы и идентификатор компонента от QGC. Я изменил код, чтобы передавать сердцебиение из RPI-mavlink в QGroundControl.

 mavlink_msg_heartbeat_pack(system_id, 200, amp;msg, MAV_TYPE_HELICOPTER, MAV_AUTOPILOT_GENERIC, MAV_MODE_GUIDED_ARMED, 0, MAV_STATE_ACTIVE);

int len_hb = write_message(msg);
 

После сборки и выполнения этого кода я ожидал, что QGroundControl подключит / покажет полученное сообщение, но в QGroundControl ничего не было доступно.

Мне нужно понять, правильно ли то, что я делаю, или существует заранее определенный метод для установления такого рода связи. Пожалуйста, помогите мне с документацией (если таковая имеется), доступной для выполнения передачи сообщений без ardupilot / Px4. Если бы кто-нибудь мог помочь мне в этом вопросе, это было бы действительно полезно.

Спасибо

Ответ №1:

Если вы используете RPi, вам не нужна радиотелеметрия 3DR. Вы можете подключить RPi через Wi-Fi или LTE для отправки / получения данных Mavlink. Вам нужно:

  1. Подключите RPi к контроллеру полета;
  2. Настройте порт Mavlink в QGroundControl, пусть контроллер полета отправляет данные на порт телеметрии;
  3. Установите mavlink-маршрутизатор на RPI;
  4. Настройка mavlink-маршрутизатор отправляет данные на наземную станцию;
  5. Когда вы можете получать данные mavlink на наземной станции, вы используете pymavlink для отправки сообщения mavlink. Есть пример кода

Комментарии:

1. позволит ли эта процедура выполнить повторную калибровку контроллера полета? Трудно удалить контроллер полета для повторной калибровки с помощью Windows QGroundControl. наверняка есть процедура повторной калибровки по Wi-Fi???

Ответ №2:

Если я правильно понял вопрос, то то, что вы пытаетесь сделать, это разработать свой собственный контроллер полета с использованием Raspberry pi. И вы хотите, чтобы он был обнаружен как транспортное средство в QGC.

Пример кода, на который вы ссылаетесь из репозитория mavlink, используется на наземной станции для получения сообщений от контроллера полета и отправки ему командных сообщений. Однако вы пытаетесь отправить сообщение от диспетчера полета на наземную станцию.

Что вам сначала нужно будет сделать, так это продолжать отправлять сообщения с частотой 1 Гц, как описано в микросервисе heartbeat на странице документации mavlink. QGroundControl обнаружит транспортное средство, если оно получает сигналы от транспортного средства, я думаю, около 5 секунд непрерывно. После этого вы также должны продолжать отправлять сердцебиение с частотой 1 Гц, иначе QGC сообщит о потере связи, даже если вы отправляете ему другие сообщения mavlink.

Кроме того, существует множество сообщений mavlink, которые могут иметь различную интерпретацию для разных контроллеров полета. Таким образом, в какой-то момент вам либо придется в определенной степени сопоставить свой код с существующим контроллером полета, либо вам придется модифицировать QGC для работы с тем, как вы реализуете свой контроллер полета.