протокол MAVlink ( библиотека )

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

протокол MAVlink ( библиотека )

Сообщение uwrtey »

Кто ни будь работал с протоколом MAVlink? ( http://www.qgroundcontrol.org/mavlink/start )
Нужна библиотека для работы с этим протоколом.
Естественно пригодная для работы с AVR ( очень желательно без АРДУИНОзависимости )
В тырнэте ни слова на Русском про этот протокол.

Могу дать кусочек кода принятого по протоколу MAVlink через гипертериминал
артем_гпс_антеннатрекер.txt
(31.48 КБ) 469 скачиваний
Как видно, код MAVlink бинарный и не расшифровывается таблицей ASCII.
Зато комментарии читаются...
не зная броду не лезь к вольтмоду
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: протокол MAVlink ( библиотека )

Сообщение Jack_A »

Я никогда этим протоколом не занимался, но глянул ради любопытства - первая часть текстовой строки = бинарные данные в HEX-коде, вторая часть - те же данные, но в ASCII. Если символом ASCII код выражен быть не может, то вместо его точка. Посмотрел по ссылкам - протокол задокументирован нормально. Если есть вопросы к наполнению содержанием конкретных параметров - это, видимо, адресоваться к конкретной аппаратуре ЛА .
Реклама
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: протокол MAVlink ( библиотека )

Сообщение uwrtey »

первая часть текстовой строки = бинарные данные в HEX-коде, вторая часть - те же данные, но в ASCII.
ТОЧНО!!!
блин, онлайн ресурс меня подвел - http://www.asciitohex.com/
он не умеет читать посылку в которой содержаться нечитаемые данные!!!!
надо бы другой ресурс присмотреть....

Мне щас скинули еще один кусочек кода. На этот раз код не дешифруется ASCII
для сани(1).txt
(119.34 КБ) 333 скачивания
У меня самого нет возможности считать этот код.
( Товарищ в другом городе проживает )
Если есть вопросы к наполнению содержанием конкретных параметров - это, видимо, адресоваться к конкретной аппаратуре ЛА .
Не совсем так.
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 координаты.
не зная броду не лезь к вольтмоду
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: протокол MAVlink ( библиотека )

Сообщение Jack_A »

Я никогда ни с кем не спорю, тем боле по вопросу, которым я плотно не занимался. Приведенный "скелет" протокола я видел. Так в нем поле Data ( Byte Index 6... ) зависит от Byte Index 5 ( тип сообщения ). Я не утверждал, что данные зависят от конкретного типа ЛА, я предполагал, что они зависят от конкретного устройства на ЛА, опрашиваемого в данном сеансе. Иначе если бы протокол стандартизовал не только формат посылки, но и ее содержание, конструкция сообщения была бы жесткой : байты X...X+n - курсовой угол, байты Y...Y+n - тангаж и т.п. Но это всего лишь предположения, подкрепленные опытом работы с Modbus . Там тоже от меня заказчик требовал: если в букваре есть опрос катушек - опрашивай катушки, хотя никаких катушек в проектируемом устройстве и в помине нет, а про всякие отсечки, температуры, тау и пр. -- ни-ни ! :?
А с новым фрагментом - возможно, это не прямо принятое с ЛА, а пропущенное через какую-нибудь прогу, которая произвела нужные, как ей казалось, перекодировки. Или же ASCII в этом сообщении нет, все бинарное.
Ну, успехов Вам! Пусть число взлетов совпадает с числом посадок!
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
uwrtey
Поставщик валерьянки для Кота
Сообщения: 2309
Зарегистрирован: Пт июл 17, 2009 07:34:07
Откуда: Свердловская обл.

Re: протокол MAVlink ( библиотека )

Сообщение uwrtey »

Я не утверждал, что данные зависят от конкретного типа ЛА, я предполагал, что они зависят от конкретного устройства на ЛА
Ох, точно. Прошу прощения...
Тогда все правильно...
Или же 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 ( библиотека )

Сообщение uwrtey »

Не могу понять как определять ID ( идентификатор ) GPS модуля.
В мануале написано GLOBAL_POSITION_INT ( #33 )
мне подсказали, что запись вида #33 - является шестнадцатеричной.
Но в куске кода я не нашел ни одной посылки с таким идентификатором.
Отсюда следует:
1) #33 не является шестнадцатеричным идентификатором GPS
2) В том куске кода не было ни одной посылки, содержащей сообщения с координатами.
:(
Вот о чем я и говорю, остается гадать - так как самому код не считать...
не зная броду не лезь к вольтмоду
Реклама
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: протокол MAVlink ( библиотека )

Сообщение mr_smit »

Пытаюсь разобраться с протоколом. Сохранил обмен что шлет мой полетный контроллер 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 и т.д.)?
Нельзя всё знать, достаточно понимать.
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: протокол MAVlink ( библиотека )

Сообщение mr_smit »

Вот, например, ещё одна посылка:

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 и как потом разобрать данные. Может у кого есть описание?
Нельзя всё знать, достаточно понимать.
Аватара пользователя
mr_smit
Вымогатель припоя
Сообщения: 651
Зарегистрирован: Пн мар 23, 2009 09:25:58
Откуда: Самара

Re: протокол MAVlink ( библиотека )

Сообщение mr_smit »

Нашел: https://pixhawk.ethz.ch/mavlink/#SYS_STATUS

Напряжение содержится в Message ID 0х01. 15-й и 16-й байт. Байты поменять местами и получится напряжение в мВ.
Нельзя всё знать, достаточно понимать.
Ответить

Вернуться в «AVR»