протокол MAVlink ( библиотека )
- uwrtey
- Поставщик валерьянки для Кота
- Сообщения: 2309
- Зарегистрирован: Пт июл 17, 2009 07:34:07
- Откуда: Свердловская обл.
протокол MAVlink ( библиотека )
Кто ни будь работал с протоколом MAVlink? ( http://www.qgroundcontrol.org/mavlink/start )
Нужна библиотека для работы с этим протоколом.
Естественно пригодная для работы с AVR ( очень желательно без АРДУИНОзависимости )
В тырнэте ни слова на Русском про этот протокол.
Могу дать кусочек кода принятого по протоколу MAVlink через гипертериминал Как видно, код MAVlink бинарный и не расшифровывается таблицей ASCII.
Зато комментарии читаются...
Нужна библиотека для работы с этим протоколом.
Естественно пригодная для работы с AVR ( очень желательно без АРДУИНОзависимости )
В тырнэте ни слова на Русском про этот протокол.
Могу дать кусочек кода принятого по протоколу MAVlink через гипертериминал Как видно, код MAVlink бинарный и не расшифровывается таблицей ASCII.
Зато комментарии читаются...
не зная броду не лезь к вольтмоду
- Реклама
Re: протокол MAVlink ( библиотека )
Я никогда этим протоколом не занимался, но глянул ради любопытства - первая часть текстовой строки = бинарные данные в HEX-коде, вторая часть - те же данные, но в ASCII. Если символом ASCII код выражен быть не может, то вместо его точка. Посмотрел по ссылкам - протокол задокументирован нормально. Если есть вопросы к наполнению содержанием конкретных параметров - это, видимо, адресоваться к конкретной аппаратуре ЛА .
- uwrtey
- Поставщик валерьянки для Кота
- Сообщения: 2309
- Зарегистрирован: Пт июл 17, 2009 07:34:07
- Откуда: Свердловская обл.
Re: протокол MAVlink ( библиотека )
ТОЧНО!!!первая часть текстовой строки = бинарные данные в HEX-коде, вторая часть - те же данные, но в ASCII.
блин, онлайн ресурс меня подвел - http://www.asciitohex.com/
он не умеет читать посылку в которой содержаться нечитаемые данные!!!!
надо бы другой ресурс присмотреть....
Мне щас скинули еще один кусочек кода. На этот раз код не дешифруется ASCII У меня самого нет возможности считать этот код.
( Товарищ в другом городе проживает )
Не совсем так.Если есть вопросы к наполнению содержанием конкретных параметров - это, видимо, адресоваться к конкретной аппаратуре ЛА .
MAVlink - это универсальный протокол обмена данными для передачи телеметрии.
В частности большинство модельных полетных контроллеров ( автопилотов ) работает с этим протоколом.
Раньше использовали ASCII, но он очень "тяжелый" и по этому от него отказались.
Сейчас полетный контроллер опрашивает все возможные датчики и вставляет значения в протокол мавлинк.
Конкретных ЛА тут нет. Протокол универсален.
Дело в том, что мне поставили задачу выдернуть GPS данные из этого протокола и данные с БАРО датчика ( датчик высоты )
и дальше с ними поработать.
Нужно сделать самонаводящуюся антенну - проект открытый.
А у меня нет ни полетного контроллера, ни знаний протокола МАВЛИНК.
Даже подобных проектов в тырнете нет.
вот способ шифрования мавлинк

Попробую расшифровать один из пакетов ( которы мне скинули в первый раз )
Код: Выделить всё
FE 19 D3 01 01 16 00 00 00 00 10 01 B6 00 43 4F 4D 50 41 53 53 5F 4C 45 41 52 4E 00 00 00 02 43 12 // ю.У.........¶.COMPASS_LEARN....C.
Всего 33 байта
43 4F 4D 50 41 53 53 5F 4C 45 41 52 4E = COMPASS_LEARN
*****************************************************************************************************************************************************************
где
0) - FE - начало пакета
1) - 19 - указывает длину следующей полезной нагрузки ( десятич 25 ) все верно! 25 байт!!!
2) - d3 - Каждый компонент подсчитывает его последовательность отправки. Позволяет обнаруживать потерю пакетов. ( десятич 211 )
3) - 01 - идентификатор передающей системе. Позволяет дифференцировать различные MAVS в той-же сети.
4) - 01 - ID предоставляемого компонента. Позволяет дифференцировать различные компоненты системы, такие как IMU или автопилот
5) - 16 - идентификатор сообщения. ID определяет что означает сообщение и как его правильно декодировать. ( десятич 22 )
6) - 00 00 00 00 10 01 B6 00 43 4F 4D 50 41 53 53 5F 4C 45 41 52 4E 00 00 00 02 - сообщение ( 25 байт )
7и8) - 43 12 - контрольная сумма
теперь нужно расшифровать сообщение 00 00 00 00 10 01 B6 00 43 4F 4D 50 41 53 53 5F 4C 45 41 52 4E 00 00 00 02
00 00 00 00 10 01 B6 00 - ? ( 8 байт )
43 4F 4D 50 41 53 53 5F 4C 45 41 52 4E - это мы знаем - COMPASS_LEARN ( 13 байт )
00 00 00 02 - ? ( 4 байта )
тут остается посмотреть действительные значения с этого компаса и понять как они кодируются
Аналогично можно расковырять GPS координаты.
не зная броду не лезь к вольтмоду
Re: протокол MAVlink ( библиотека )
Я никогда ни с кем не спорю, тем боле по вопросу, которым я плотно не занимался. Приведенный "скелет" протокола я видел. Так в нем поле Data ( Byte Index 6... ) зависит от Byte Index 5 ( тип сообщения ). Я не утверждал, что данные зависят от конкретного типа ЛА, я предполагал, что они зависят от конкретного устройства на ЛА, опрашиваемого в данном сеансе. Иначе если бы протокол стандартизовал не только формат посылки, но и ее содержание, конструкция сообщения была бы жесткой : байты X...X+n - курсовой угол, байты Y...Y+n - тангаж и т.п. Но это всего лишь предположения, подкрепленные опытом работы с Modbus . Там тоже от меня заказчик требовал: если в букваре есть опрос катушек - опрашивай катушки, хотя никаких катушек в проектируемом устройстве и в помине нет, а про всякие отсечки, температуры, тау и пр. -- ни-ни !
А с новым фрагментом - возможно, это не прямо принятое с ЛА, а пропущенное через какую-нибудь прогу, которая произвела нужные, как ей казалось, перекодировки. Или же ASCII в этом сообщении нет, все бинарное.
Ну, успехов Вам! Пусть число взлетов совпадает с числом посадок!
А с новым фрагментом - возможно, это не прямо принятое с ЛА, а пропущенное через какую-нибудь прогу, которая произвела нужные, как ей казалось, перекодировки. Или же ASCII в этом сообщении нет, все бинарное.
Ну, успехов Вам! Пусть число взлетов совпадает с числом посадок!
- uwrtey
- Поставщик валерьянки для Кота
- Сообщения: 2309
- Зарегистрирован: Пт июл 17, 2009 07:34:07
- Откуда: Свердловская обл.
Re: протокол MAVlink ( библиотека )
Ох, точно. Прошу прощения...Я не утверждал, что данные зависят от конкретного типа ЛА, я предполагал, что они зависят от конкретного устройства на ЛА
Тогда все правильно...
Да, точно - заказчик подтвердил, что все бинарное.Или же ASCII в этом сообщении нет, все бинарное.
А ASCII сообщения выдает автопилот на старте.
Спасибо!Ну, успехов Вам! Пусть число взлетов совпадает с числом посадок!
Что касается GPS кодирования
GPS-модуль U-Blox ( блоха )
выдает данные по протоколу UBX ( да, да именно по такому протоколу )
далее эти данные вствляются в протокол MAVlink
GLOBAL_POSITION_INT ( #33 ) ( https://pixhawk.ethz.ch/mavlink/ )
Код: Выделить всё
time_boot_ms (uint32_t) Timestamp (milliseconds since system boot) //Отметка (миллисекунд с момента загрузки системы)
lat (int32_t) Latitude, expressed as * 1E7 // Широта, выражается в * 1E7
lon (int32_t) Longitude, expressed as * 1E7 // Долгота, выражается в * 1E7
alt (int32_t) Altitude in meters, expressed as * 1000 (millimeters), AMSL (not WGS84 - note that virtually all GPS modules provide the AMSL as well) // Высота над уровнем моря в метрах, выраженное в * 1000 (мм), над уровнем моря (не WGS-84 - обратите внимание, что практически все модули GPS обеспечивают над уровнем моря, а)
relative_alt (int32_t) Altitude above ground in meters, expressed as * 1000 (millimeters) // Высота над землей в метрах, выраженное в * 1000 (мм)
vx (int16_t) Ground X Speed (Latitude), expressed as m/s * 100 // Наземная X Скорость (широта), выраженная в м / с * 100
vy (int16_t) Ground Y Speed (Longitude), expressed as m/s * 100 // Наземная Y Скорость (Долгота), выраженная в м / с * 100
vz (int16_t) Ground Z Speed (Altitude), expressed as m/s * 100
hdg (uint16_t) Compass heading in degrees * 100, 0.0..359.99 degrees. If unknown, set to: UINT16_MAX
не зная броду не лезь к вольтмоду
- Реклама
- uwrtey
- Поставщик валерьянки для Кота
- Сообщения: 2309
- Зарегистрирован: Пт июл 17, 2009 07:34:07
- Откуда: Свердловская обл.
Re: протокол MAVlink ( библиотека )
Не могу понять как определять ID ( идентификатор ) GPS модуля.
В мануале написано GLOBAL_POSITION_INT ( #33 )
мне подсказали, что запись вида #33 - является шестнадцатеричной.
Но в куске кода я не нашел ни одной посылки с таким идентификатором.
Отсюда следует:
1) #33 не является шестнадцатеричным идентификатором GPS
2) В том куске кода не было ни одной посылки, содержащей сообщения с координатами.

Вот о чем я и говорю, остается гадать - так как самому код не считать...
В мануале написано GLOBAL_POSITION_INT ( #33 )
мне подсказали, что запись вида #33 - является шестнадцатеричной.
Но в куске кода я не нашел ни одной посылки с таким идентификатором.
Отсюда следует:
1) #33 не является шестнадцатеричным идентификатором GPS
2) В том куске кода не было ни одной посылки, содержащей сообщения с координатами.
Вот о чем я и говорю, остается гадать - так как самому код не считать...
не зная броду не лезь к вольтмоду
Re: протокол MAVlink ( библиотека )
Пытаюсь разобраться с протоколом. Сохранил обмен что шлет мой полетный контроллер APM 2.6. Хочу вытащить значение напряжения на аккумуляторе. И не могу понять почему Message ID у многих посылок одинаковый 16 ? (5-й байт)
FE 19 7D 01 01 16 00 00 00 00 32 01 03 01 42 41 54 54 5F 4D 4F 4E 49 54 4F 52 00 00 00 00 02 F9 82 þ.}.......2...BATT_MONITOR.....ù
FE 19 7E 01 01 16 00 00 80 BF 32 01 04 01 42 41 54 54 5F 56 4F 4C 54 5F 50 49 4E 00 00 00 02 CD 16 þ.~.....¿2...BATT_VOLT_PIN....Í
FE 19 7F 01 01 16 00 00 80 BF 32 01 05 01 42 41 54 54 5F 43 55 52 52 5F 50 49 4E 00 00 00 02 64 6D þ......¿2...BATT_CURR_PIN....
Я думал достаточно отловить начало посылки 0xFE, посмотреть какой параметр тут содержится (Message ID) и вытащить его. Как тогда разбирать эти посылки? Или надо парсить по ключевым словам (BATT_MONITOR и т.д.)?
FE 19 7D 01 01 16 00 00 00 00 32 01 03 01 42 41 54 54 5F 4D 4F 4E 49 54 4F 52 00 00 00 00 02 F9 82 þ.}.......2...BATT_MONITOR.....ù
FE 19 7E 01 01 16 00 00 80 BF 32 01 04 01 42 41 54 54 5F 56 4F 4C 54 5F 50 49 4E 00 00 00 02 CD 16 þ.~.....¿2...BATT_VOLT_PIN....Í
FE 19 7F 01 01 16 00 00 80 BF 32 01 05 01 42 41 54 54 5F 43 55 52 52 5F 50 49 4E 00 00 00 02 64 6D þ......¿2...BATT_CURR_PIN....
Я думал достаточно отловить начало посылки 0xFE, посмотреть какой параметр тут содержится (Message ID) и вытащить его. Как тогда разбирать эти посылки? Или надо парсить по ключевым словам (BATT_MONITOR и т.д.)?
Нельзя всё знать, достаточно понимать.
Re: протокол MAVlink ( библиотека )
Вот, например, ещё одна посылка:
FE 1A FA 01 01 1B 36 B6 AA 2C 00 00 00 00 DA FF D7 FE 40 FC 00 00 FF FF 00 00 14 00 FC FF 57 00 71 DA
Описания в самой строке уже нет. Какой параметр тут передается?
FE - заголовок
1A - длина (26 байт)
FA - порядковый номер посылки
01 - System ID
01 - Component ID
1B - Message ID
...
... 26 байт данных ...
...
71 DA - контрольная сумма
Я не смог найти описания Message ID и как потом разобрать данные. Может у кого есть описание?
FE 1A FA 01 01 1B 36 B6 AA 2C 00 00 00 00 DA FF D7 FE 40 FC 00 00 FF FF 00 00 14 00 FC FF 57 00 71 DA
Описания в самой строке уже нет. Какой параметр тут передается?
FE - заголовок
1A - длина (26 байт)
FA - порядковый номер посылки
01 - System ID
01 - Component ID
1B - Message ID
...
... 26 байт данных ...
...
71 DA - контрольная сумма
Я не смог найти описания Message ID и как потом разобрать данные. Может у кого есть описание?
Нельзя всё знать, достаточно понимать.
Re: протокол MAVlink ( библиотека )
Нашел: https://pixhawk.ethz.ch/mavlink/#SYS_STATUS
Напряжение содержится в Message ID 0х01. 15-й и 16-й байт. Байты поменять местами и получится напряжение в мВ.
Напряжение содержится в Message ID 0х01. 15-й и 16-й байт. Байты поменять местами и получится напряжение в мВ.
Нельзя всё знать, достаточно понимать.


