#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. Вам нужно:
- Подключите RPi к контроллеру полета;
- Настройте порт Mavlink в QGroundControl, пусть контроллер полета отправляет данные на порт телеметрии;
- Установите mavlink-маршрутизатор на RPI;
- Настройка mavlink-маршрутизатор отправляет данные на наземную станцию;
- Когда вы можете получать данные mavlink на наземной станции, вы используете pymavlink для отправки сообщения mavlink. Есть пример кода
Комментарии:
1. позволит ли эта процедура выполнить повторную калибровку контроллера полета? Трудно удалить контроллер полета для повторной калибровки с помощью Windows QGroundControl. наверняка есть процедура повторной калибровки по Wi-Fi???
Ответ №2:
Если я правильно понял вопрос, то то, что вы пытаетесь сделать, это разработать свой собственный контроллер полета с использованием Raspberry pi. И вы хотите, чтобы он был обнаружен как транспортное средство в QGC.
Пример кода, на который вы ссылаетесь из репозитория mavlink, используется на наземной станции для получения сообщений от контроллера полета и отправки ему командных сообщений. Однако вы пытаетесь отправить сообщение от диспетчера полета на наземную станцию.
Что вам сначала нужно будет сделать, так это продолжать отправлять сообщения с частотой 1 Гц, как описано в микросервисе heartbeat на странице документации mavlink. QGroundControl обнаружит транспортное средство, если оно получает сигналы от транспортного средства, я думаю, около 5 секунд непрерывно. После этого вы также должны продолжать отправлять сердцебиение с частотой 1 Гц, иначе QGC сообщит о потере связи, даже если вы отправляете ему другие сообщения mavlink.
Кроме того, существует множество сообщений mavlink, которые могут иметь различную интерпретацию для разных контроллеров полета. Таким образом, в какой-то момент вам либо придется в определенной степени сопоставить свой код с существующим контроллером полета, либо вам придется модифицировать QGC для работы с тем, как вы реализуете свой контроллер полета.