Настройка программного обеспечения для извлечения новых пользовательских данных датчиков с помощью MAVLink, кажется, сложнее, чем должно быть.
Шаг первый - заставить квадрокоптер отправить данные.
- Во-первых, вам нужно определить новый тип сообщения MAVLink, используя XML в mavlink / message_definitions. Вы можете просто создать новое неиспользуемое целое число для message_id.
- Во-вторых, вы генерируете функции упаковки / распаковки сообщений, используя генератор MAVLink.
- Затем вам нужно добавить код в ArduCopter / GCS_Mavlink.pde в data_stream_send, чтобы создать и отправить ваше сообщение. Здесь нужно быть немного осторожнее, потому что динамика полета начинает ухудшаться, если показания вашего датчика останавливают основной цикл на более чем несколько миллисекунд, особенно для небольшого квадроцикла или полета в помещении (вот что такое бизнес "gcs_out_of_time" ). Я бы добавил новый датчик в триггер STREAM_EXTRA3.
- Перестройте и загрузите новую полетную прошивку.
Другая половина проекта находится на ПК, где вам нужно изменить программное обеспечение наземной станции, чтобы считывать ваши пакеты MAVLink из потока телеметрии. Я понятия не имею, где вы начали бы делать это с Планировщиком Миссии, который кажется действительно сложным программным обеспечением. Но, к счастью, он сбрасывает необработанную радиотелеметрию в «tlog» , поэтому вы можете создать совершенно отдельную программу, которая ищет ваш новый пакет MAVLink из tlog. (Вы, конечно, не хотите для этого Arduino Sketch, поскольку Sketch работает на Arduino, а не на ПК.)
Если это звучит пугающе для вас, вы не одиноки! Для нашего внутреннего квадроцикла мы в конечном итоге создали собственный протокол радиосвязи и «наземную станцию», поскольку мы не могли использовать GPS или путевые точки или другие функции MAVLink, и работа со сложностью MAVLink нам не стоила этого.