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

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

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

mavlink_msg_heartbeat_pack(system_id, 200, &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. Если бы кто-нибудь мог помочь мне в этом вопросе, это было бы действительно полезно.

благодаря

2 ответа

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

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

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

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

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

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

Другие вопросы по тегам