Гарантия доставок для команд сделана на базе квитанций: mavlink.io/en/services/command.html. Но сама логика реализуется на стороне НСУ, мавлинк тут никаких ограничений не накладывает. В моём проекте вроде было 5 попыток доставить команду с ожиданием в 1 секунду.
И для заданий есть чуть более сложный механизм с подтверждениями: mavlink.io/en/services/mission.html
Я использую cmake, потому что большинство библиотек и инструментов, которыми я пользуюсь используют именно эту систему сборки. А касательно qmake, я не до конца понимаю чем он может быть удобнее. Qt Creator так же может открывать cmake проекты.
Спасибо за уточнения, если мой APM правда съест версию 2.0, вторую часть напишу на ней. Про генераторы подправил в статье. C++11 генератор интересно, можно посмотреть где-нибудь?)
Спасибо за советы, в следующей статье постараюсь учесть замечания.
В конечной архитектуре у меня есть класс Vehicle, который является моделью дрона, но наполнение его происходит всё равно через наследников AbstractHandler. Это упрощённый вариант паттерна цепочка обязанностей, реализованный через механизм сигналов и слотов Qt. Его я ввёл, чтобы избавиться от switch(message.msgid). Heartbeat тогда бы выглядел так:
К тому же, при такой реализации Vehicle не завязан на типы MAVLink, и в будущем можно добавить другой протокол. В следующей статье, как приведу код в порядок, нарисую диаграмму классов.
QMap использовал т.к. на прогнозируемым количестве элементов он должен быть быстрее QHash. Основывался на этой статье.
И для заданий есть чуть более сложный механизм с подтверждениями: mavlink.io/en/services/mission.html
В конечной архитектуре у меня есть класс Vehicle, который является моделью дрона, но наполнение его происходит всё равно через наследников AbstractHandler. Это упрощённый вариант паттерна цепочка обязанностей, реализованный через механизм сигналов и слотов Qt. Его я ввёл, чтобы избавиться от switch(message.msgid). Heartbeat тогда бы выглядел так:
К тому же, при такой реализации Vehicle не завязан на типы MAVLink, и в будущем можно добавить другой протокол. В следующей статье, как приведу код в порядок, нарисую диаграмму классов.
QMap использовал т.к. на прогнозируемым количестве элементов он должен быть быстрее QHash. Основывался на этой статье.