РАЗРАБОТКА YDLIDAR GS2 Твердотельный датчик LiDAR с линейной матрицей
РАБОЧИЙ МЕХАНИЗМ
Режим
Система YDLIDAR GS2 (далее GS2) имеет 3 режима работы: режим ожидания, режим сканирования, режим остановки.
- Режим ожидания: Когда GS2 включен, по умолчанию используется режим ожидания. В режиме ожидания дальномер GS2 не работает, а лазер не светится.
- Режим сканирования: Когда GS2 находится в режиме сканирования, дальномер включает лазер. Когда GS2 начинает работать, он постоянноampФайл внешней среды и выводит его в режиме реального времени после фоновой обработки.
- Режим остановки: Когда GS2 работает с ошибкой, например, при включении сканера, отключении лазера, остановке двигателя и т. д. GS2 автоматически выключит блок измерения расстояния и сообщит код ошибки.
Принцип измерения
GS2 — твердотельный лидар ближнего действия с дальностью 25–300 мм. Он в основном состоит из линейного лазера и камеры. После того, как однолинейный лазер излучает лазерный свет, он фиксируется камерой. В соответствии с фиксированной структурой лазера и камеры в сочетании с принципом измерения расстояния триангуляции мы можем рассчитать расстояние от объекта до GS2. По калиброванным параметрам камеры может быть известно значение угла измеряемого объекта в лидарной системе координат. В результате мы получили полные данные измерений измеряемого объекта.
Точка О — начало координат, фиолетовая область — угол view правой камеры, а оранжевая область — это угол view левой камеры.
С пунктуацией по модулю в качестве начала координат фронт является направлением системы координат 0 градусов, а угол увеличивается по часовой стрелке. При выводе облака точек порядок данных (S1~S160) следующий: L1~L80, R1~R80. Угол и расстояние, рассчитанные SDK, представлены в системе координат по часовой стрелке.
СИСТЕМНАЯ СВЯЗЬ
Коммуникационный механизм
GS2 передает команды и данные на внешние устройства через последовательный порт. Когда внешнее устройство отправляет системную команду в GS2, GS2 разрешает системную команду и возвращает соответствующее ответное сообщение. В соответствии с содержанием команды GS2 переключает соответствующий рабочий статус. Основываясь на содержимом сообщения, внешняя система может проанализировать сообщение и получить данные ответа.
Системная команда
Внешняя система может установить соответствующий рабочий статус GS2 и отправить соответствующие данные, отправив соответствующие системные команды. Системные команды, выдаваемые GS2, следующие:
ДИАГРАММА 1 СИСТЕМНАЯ КОМАНДА YDLIDAR GS2
Системная команда | Описание | Переключение режимов | Режим ответа |
0×60 | Получение адреса устройства | Режим остановки | Один ответ |
0×61 | Получение параметров устройства | Режим остановки | Один ответ |
0×62 | Получение информации о версии | Режим остановки | Один ответ |
0×63 | Начать сканирование и вывести данные облака точек | Режим сканирования | Непрерывный ответ |
0x64 | Остановить устройство, остановить сканирование | Режим остановки | Один ответ |
0x67 | Мягкий перезапуск | / | Один ответ |
0×68 | Установите скорость передачи данных последовательного порта | Режим остановки | Один ответ |
0×69 | Установите режим края (режим защиты от шума) | Режим остановки | Один ответ |
Системные сообщения
Системное сообщение — это ответное сообщение, которое система возвращает на основе принятой системной команды. В соответствии с различными системными командами режим ответа и содержание ответа системного сообщения также различаются. Существует три вида режимов ответа: нет ответа, одиночный ответ, непрерывный ответ.
Отсутствие ответа означает, что система не возвращает никаких сообщений. Один ответ указывает на то, что длина сообщения системы ограничена, и ответ заканчивается один раз. Когда система каскадируется с несколькими устройствами GS2, некоторые команды будут получать ответы от нескольких устройств GS2 последовательно. Непрерывный ответ означает, что длина сообщения системы бесконечна и требует непрерывной отправки данных, например, при входе в режим сканирования.
Сообщения с одним ответом, множественным ответом и непрерывным ответом используют один и тот же протокол данных. Содержимое протокола: заголовок пакета, адрес устройства, тип пакета, длина данных, сегмент данных и контрольный код выводятся через шестнадцатеричную систему последовательного порта.
ДИАГРАММА 2 YDLIDAR GS2 СХЕМА ПРОТОКОЛА СИСТЕМНЫХ СООБЩЕНИЙ ДАННЫХ
Заголовок пакета | Адрес устройства | Тип пакета | Длина ответа | Сегмент данных | Проверить код |
4 байт | 1 байт | 1 байт | 2 байт | N байт | 1 байт |
Байтовое смещение
- Заголовок пакета: Заголовок пакета сообщения для GS2 помечен как 0xA5A5A5A5.
- Адрес устройства: Адрес устройства GS2 по количеству каскадов делится на: 0x01, 0x02, 0x04;
- Тип пакета: См. диаграмму 1 для типов системных команд.
- Длина ответа: Представляет длину ответа
- Сегмент данных: Различные системные команды реагируют на различное содержимое данных, и их протоколы данных различны.
- Проверить код: проверить код.
Примечание: Передача данных GS2 использует режим прямого порядка байтов, сначала низкий порядок.
ПРОТОКОЛ ДАННЫХ
Получите команду адреса устройства
Когда внешнее устройство отправляет эту команду в GS2, GS2 возвращает пакет адреса устройства, сообщение:
При каскадировании, если N устройств (поддерживается до 3) объединены в поток, команда возвращает N ответов по адресам 0x01, 0x02, 0x04, что соответствует 1-3 модулям соответственно.
Определение: Адрес модуля 1 — 0x01, модуля 2 — 0x02 и модуля 3 — 0x04.
Команда получения информации о версии
Когда внешнее устройство отправляет команду сканирования на GS2, GS2 возвращает информацию о своей версии. Ответное сообщение такое:
В случае каскадирования, если последовательно соединены N (максимум 3) устройств, эта команда вернет N ответов, где адрес — это адрес последнего устройства.
Номер версии имеет длину 3 байта, а номер SN — 16 байт.
Получить команду параметров устройства
Когда внешнее устройство отправит эту команду на GS2, GS2 вернет параметры своего устройства и сообщение:
При каскадировании, если подключено N устройств (поддерживается до 3), команда возвращает N ответов, соответствующих параметрам каждого устройства.
K и B, полученные протоколом, имеют тип uint16, который необходимо преобразовать в тип с плавающей запятой, а затем разделить на 10000 перед подстановкой в функцию вычисления.
- d_compensateK0 = (с плавающей запятой)K0/10000.0f;
- d_compensateB0 = (с плавающей запятой)B0/10000.0f;
- d_compensateK1 = (с плавающей запятой)K1/10000.0f;
- d_compensateB1 = (с плавающей запятой)B1/10000.0f;
Смещение имеет тип int8, который необходимо преобразовать в тип с плавающей запятой и разделить на 10 перед подстановкой в функцию вычисления.
- смещение = (с плавающей запятой) смещение /10;
Команда
Команда сканирования
Когда внешнее устройство отправляет команду сканирования на GS2, GS2 переходит в режим сканирования и непрерывно возвращает данные облака точек. Сообщение: Команда отправлена: (отправить адрес 0x00, каскадно или нет, запустятся все устройства)
Получена команда: (В каскадных случаях эта команда возвращает только один ответ, и адрес является самым большим адресом, напримерample: устройство № 3 подключено каскадом, и адрес равен 0x04.)
Сегмент данных представляет собой данные облака точек, отсканированные системой, которые отправляются на последовательный порт в шестнадцатеричном формате на внешнее устройство в соответствии со следующей структурой данных. Длина данных всего пакета составляет 322 байта, включая 2 байта данных об окружающей среде и 160 точек дальности (S1-S160), каждая из которых составляет 2 байта, верхние 7 бит — данные интенсивности, а младшие 9 бит — данные о расстоянии. . Единица мм.
Команда «Стоп»
Когда система находится в состоянии сканирования, GS2 отправляет данные облака точек во внешний мир. Чтобы отключить сканирование в это время, отправьте эту команду, чтобы остановить сканирование. После отправки команды остановки модуль ответит на ответную команду, и система немедленно перейдет в режим ожидания. В это время дальномер прибора находится в режиме пониженного энергопотребления, а лазер выключен.
- Отправка команды: (отправьте адрес 0x00, независимо от того, каскадно или нет, все устройства будут закрыты).
В случае каскадирования, если N (максимум 3) устройства соединены последовательно, эта команда вернет только ответ, где адрес — это адрес последнего устройства, напримерample: если 3 устройства соединены каскадом, адрес равен 0x04.
Установите команду скорости передачи
Когда внешнее устройство отправляет эту команду на GS2, можно установить выходную скорость передачи GS2.
- Команда отправлена: (адрес отправки 0x00, поддерживается только установка одинаковой скорости передачи данных для всех подключенных каскадом устройств), сообщение:
Среди них сегмент данных представляет собой параметр скорости передачи, включая четыре скорости передачи (бит/с), соответственно: 230400, 512000, 921600, 1500000, соответствующие коду 0-3 (примечание: последовательное соединение трех модулей должно быть ≥921600, по умолчанию 921600).
В случае каскадирования, если N устройств (максимальная поддержка 3) устройств подключены последовательно, команда вернет N ответов, соответствующих параметрам каждого устройства, и адреса: 0x01, 0x02, 0x04.
- После установки скорости передачи данных необходимо мягко перезагрузить устройство.
Установите режим Edge (сильный режим защиты от помех)
Когда внешнее устройство отправляет эту команду на GS2, можно установить режим защиты от помех GS2.
- Отправка команды: (адрес отправки, каскадный адрес), сообщение:
прием команды
Адрес — это адрес модуля, который необходимо настроить в каскадном соединении. Mode=0 соответствует стандартному режиму, Mode=1 соответствует краевому режиму (гнездо обращено вверх), Mode=2 соответствует краевому режиму (гнездо обращено вниз). В граничном режиме фиксированная выходная мощность лидара составляет 10 Гц, и эффект фильтрации окружающего света будет усилен. Mode=0XFF означает чтение, лидар вернется в текущий режим. Лидар по умолчанию работает в стандартном режиме.
- Установите модуль 1: Адрес = 0x01
- Установите модуль 2: Адрес = 0x02
- Установите модуль 3: Адрес = 0x04
Команда сброса системы
Когда внешнее устройство отправляет эту команду на GS2, GS2 выполняет программный перезапуск, а система перезагружается.
Отправка команды: (адрес отправки, может быть только точный объединенный адрес: 0x01/0x02/0x04)
Адрес — это адрес модуля, который необходимо настроить в каскадном соединении.
- Сброс модуля 1: Адрес = 0x01
- Сброс модуля 2: Адрес = 0x02
- Сброс модуля 3: Адрес = 0x04
АНАЛИЗ ДАННЫХ
ДИАГРАММА 3 ОПИСАНИЕ СТРУКТУРЫ ДАННЫХ
Содержание | Имя | Описание |
К0(2Б) | Параметры устройства | (uint16) Параметр k0 параметра угла левой камеры (см. раздел 3.3) |
Б0(2Б) | Параметры устройства | (uint16) Параметр k0 параметра угла левой камеры (см. раздел 3.3) |
К1(2Б) | Параметры устройства | (uint16) Коэффициент k1 параметра угла правой камеры (см. раздел 3.3) |
Б1(2Б) | Параметры устройства | (uint16) Коэффициент параметра b1 угла правой камеры (см. раздел 3.3) |
BIAS | Параметры устройства | (int8) Текущий коэффициент смещения параметра угла камеры (см. раздел 3.3) |
ЕНВ(2Б) | Данные об окружающей среде | Интенсивность окружающего света |
Си(2Б) | Данные измерения расстояния | Нижние 9 бит — расстояние, верхние 7 бит — значение интенсивности. |
- Анализ расстояния
Формула расчета расстояния: Расстояние = (_ ≪ 8|_) &0x01ff, единица измерения — мм.
Расчет прочности: Качество = _ ≫ 1 - Угловой анализ
Направление лазерного излучения принимается за переднюю часть датчика, проекция центра лазерного круга на плоскость печатной платы принимается за начало координат, а полярная система координат устанавливается с нормалью к плоскости печатной платы как направление 0 градусов. В направлении по часовой стрелке угол постепенно увеличивается.
Чтобы преобразовать исходные данные, передаваемые лидаром, в систему координат, показанную на рисунке выше, требуется ряд вычислений. Функция преобразования выглядит следующим образом (подробности см. в SDK):
Проверить анализ кода
Код проверки использует однобайтовое накопление для проверки текущего пакета данных. Четырехбайтовый заголовок пакета и сам код проверки не участвуют в операции проверки. Формула решения контрольного кода:
- Контрольная сумма = ДОБАВИТЬ1()
- = 1,2, … ,
ADD1 — кумулятивная формула, она означает суммирование чисел от нижнего индекса 1 до конца в элементе.
ОТА ОБНОВЛЕНИЕ
Рабочий процесс обновления
Протокол отправки
ДИАГРАММА 4 ФОРМАТ ПРОТОКОЛА ДАННЫХ OTA (SMALL ENDIAN)
Параметр | Длина (БАЙТ) | Описание |
Пакет_заголовок | 4 | Заголовок пакета данных, фиксированный как A5A5A5A5 |
Адрес_устройства | 1 | Указывает адрес устройства |
Идентификатор_пакета | 1 | Идентификатор пакета данных (тип данных) |
Data_Len | 2 | Длина данных сегмента данных, 0-82 |
Данные | n | Данные, n = Data_Len |
Контрольная_сумма | 1 | Контрольная сумма, контрольная сумма оставшихся байтов после удаления заголовка |
ДИАГРАММА 5. ИНСТРУКЦИИ ПО ОПЕРАЦИОННОМУ ОБНОВЛЕНИЮ
Тип инструкции | Идентификатор_пакета | Описание |
Start_IAP | 0x0A | Отправьте эту команду, чтобы запустить IAP после включения питания |
Running_IAP | 0x0B | Запустить IAP, передать пакеты |
Complete_IAP | 0x0C | Конец IAP |
ACK_IAP | 0x20 | IAP-ответ |
СБРОС_СИСТЕМЫ | 0x67 | Сбросить и перезапустить модуль по указанному адресу |
Инструкция Start_IAP
Отправка команды
- Сегмент данных Формат данных:
- Данные[0~1]: По умолчанию 0x00;
- ДАННЫЕ[2~17]: Это фиксированный код подтверждения:
- 0x73 0x74 0x61 0x72 0x74 0x20 0x64 0x6F 0x77 0x6E 0x6C 0x6F 0x61 0x64 0x00 0x00
- Обратитесь к отправке сообщения
- А5 А5 А5 А5 01 0А 12 00 00 00 73 74 61 72 74 20 64 6F 77 6E 6C 6F 61 64 00 00 C3
Прием команды: Из-за операций с секторами FLASH задержка возврата велика и колеблется от 80 мс до 700 мс.)
Формат получения данных
- Адрес: адрес модуля;
- ПОДТВЕРЖДЕНИЕ: Значение по умолчанию — 0x20, что указывает на то, что пакет данных является пакетом подтверждения; Данные[0~1]: по умолчанию 0x00;
- Данные[2]: 0x0A указывает, что ответная команда имеет значение 0x0A;
- Данные[3]: 0x01 указывает на нормальный прием, 0 указывает на аномальный прием;
- Ссылка на получение:
А5 А5 А5 А5 01 20 04 00 00 00 0А 01 30
Инструкция Running_IAP
Отправка команды
Прошивка будет разделена при обновлении, и первые два байта сегмента данных (Data) указывают на смещение этого сегмента данных относительно первого байта прошивки.
- Данные [0~1]:Package_Shift = Данные[0]+ Данные[1]*256;
- Данные[2]~Данные[17]: код проверки фиксированной строки:
- 0x64 0x6F 0x77 0x6E 0x6C 0x6F 0x61 0x64 0x69 0x6E 0x67 0x00 0x00 0x00 0x00 0x00 Data[18]~Data[81]: данные прошивки;
- Обратитесь к отправке сообщения
- A5 A5 A5 A5 01 0B 52 00 00 00 64 6F 77 6E 6C 6F 61 64 69 6E 67 00 00 00 00 00 +
(Данные[18]~Данные[81]) + контрольная_сумма
Прием команд
- Адрес: яs адрес модуля;
- ПОДТВЕРЖДЕНИЕ: Значение по умолчанию — 0x20, что указывает на то, что пакет данных является пакетом подтверждения;
Данные [0~1]: Package_Shift = Data[0]+ Data[1]*256 указывает смещение данных микропрограммы ответа. Рекомендуется рассматривать смещение как механизм защиты при обнаружении ответа в процессе обновления.
- Data[2]=0x0B указывает, что команда ответа имеет значение 0x0B;
- Data[3]=0x01 указывает на нормальный прием, 0 указывает на аномальный прием;
Ссылка на получение
А5 А5 А5 А5 01 20 04 00 00 00 0В 01 31
Инструкция Complete_IAP
Отправка команды
- Данные[0~1]: По умолчанию 0x00;
- Данные[2]~Данные[17]: Это фиксированный код подтверждения строки:
0x63 0x6F 0x6D 0x70 0x6C 0x65 0x74 0x65 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Данные[18]~Данные[21]: флаг шифрования, тип uint32_t, зашифрованная прошивка 1, незашифрованная прошивка 0;
Обратитесь к отправке сообщения:
A5 A5 A5 A5 01 0C 16 00 00 00 63 6F 6D 70 6C 65 74 65 00 00 00 00 00 00 00 00 + (uint32_t флаг шифрования) + Check_Sum
Прием команд
- Формат получения данных:
- Адрес: адрес модуля;
- ПОДТВЕРЖДЕНИЕ: Значение по умолчанию — 0x20, что указывает на то, что пакет данных является пакетом подтверждения;
- Данные[0~1]: По умолчанию 0x00;
- Данные[2]: 0x0C указывает, что ответная команда 0x0C;
- Данные[3]: 0x01 указывает на нормальный прием, 0 указывает на аномальный прием;
- Обратитесь к полученному сообщению:
А5 А5 А5 А5 01 20 04 00 00 00 0С 01 32
RESET_SYSTEM Инструкция
Подробную информацию см. в главе 3.8 «Команда сброса системы».
Вопросы и ответы
- Q: Как судить об успешном сбросе после отправки команды сброса? Требуется ли отсрочка?
- A: Об успешном выполнении можно судить по ответному пакету команды сброса; рекомендуется добавить задержку 500 мс после получения ответа перед выполнением последующих операций.
- Q: Модуль 4 получает некоторые данные последовательного порта, которые не соответствуют протоколу после сброса, как с этим быть?
- A: Журнал включения модуля представляет собой строку данных ASCII с 4 заголовками 0x3E, которая не влияет на нормальный разбор данных с 4 заголовками 0xA5 и может быть проигнорирована. Из-за физического линка логи модулей №1 и №2 не могут быть получены.
- В: Что делать, если процесс обновления прервался из-за сбоя питания и перезагрузки?
- A: Повторно отправьте команду Start_IAP для повторного обновления.
- В: Какова возможная причина ненормальной функции обновления в каскадном состоянии?
- A: Подтвердите правильность физической связи, например, можно ли получить данные облака точек трех модулей;
- Подтвердите, что адреса трех модулей не конфликтуют, и можете попробовать переназначить адреса;
- Сбросьте модуль для обновления, а затем перезапустите попытку;
- Q: Почему прочитанная версия номер 0 после каскадного обновления?
- A: Это означает, что обновление модуля не удалось, пользователям необходимо сбросить модуль, а затем снова выполнить обновление.
ВНИМАНИЕ
- Во время командного взаимодействия с GS2, кроме команды остановки сканирования, другие команды не могут взаимодействовать в режиме сканирования, что легко может привести к ошибкам разбора сообщения.
- GS2 не запустится автоматически при включении питания. Для входа в режим сканирования необходимо отправить команду запуска сканирования. Когда необходимо остановить диапазон, отправьте команду остановки сканирования, чтобы остановить сканирование и перейти в спящий режим.
- Запустите GS2 в обычном режиме. Рекомендуемый нами процесс:
Первый шаг:
отправить команду Get Device Address, чтобы получить адрес текущего устройства и количество каскадов, и настроить адрес;
Второй шаг:
отправьте команду get version, чтобы получить номер версии;
Третий шаг:
отправить команду на получение параметров устройства для получения угловых параметров устройства для анализа данных;
Четвертый шаг:
отправить команду запуска сканирования для получения данных облака точек. - Предложения по дизайну светопропускающих материалов для перспективных окон ГС2:
Если перспективное окно передней крышки предназначено для GS2, рекомендуется использовать проницаемый для инфракрасного излучения ПК в качестве светопропускающего материала, а светопропускающая область должна быть плоской (плоскостность ≤0.05 мм), а все области в самолет должен быть прозрачным в диапазоне от 780 до 1000 нм. Светопропускная способность превышает 90%. - Рекомендуемый порядок действий при повторном включении и выключении GS2 с навигационной панели:
Чтобы снизить энергопотребление навигационной платы, если GS2 необходимо многократно включать и выключать, рекомендуется перед выключением отправить команду остановки сканирования (см. раздел 3.5), а затем настроить параметры TX и RX навигационной панели. навигационная плата к высокому импедансу. Затем потяните VCC на низкий уровень, чтобы выключить его. При следующем включении питания сначала подтяните VCC, затем настройте TX и RX как обычные состояния вывода и ввода, а затем после задержки в 300 мс выполните командное взаимодействие с линейным лазером. - О максимальном времени ожидания после отправки каждой команды GS2:
- Получить адрес: задержка 800 мс, получить версию: задержка 100 мс;
- Получить параметры: задержка 100 мс, запуск сканирования: задержка 400 мс;
- Останов сканирования: задержка 100 мс, установка скорости передачи данных: задержка 800 мс;
- Установите режим фронта: задержка 800 мс, запуск OTA: задержка 800 мс;
сверка
Дата | Версия | Содержание |
2019-04-24 | 1.0 | Составьте первый набросок |
2021-11-08 |
1.1 |
Изменить (изменить структуру протокола, чтобы объединить данные левой и правой камеры; предложения по добавлению материалов перспективного окна; добавление скорости передачи данных).
команда настройки) |
2022-01-05 | 1.2 | Измените описание получения команды для получения адреса устройства, а также описание левой и правой камер. |
2022-01-12 | 1.3 | Добавить граничный режим, дополнить описание расчета K, B, BIAS |
2022-04-29 | 1.4 | Изменить описание главы 3.2: Команда получения информации о версии |
2022-05-01 | 1.5 | Изменить метод конфигурации адреса команды мягкого перезапуска. |
2022-05-31 |
1.6 |
1) Обновление раздела 3.7
2) Раздел 3.8 Команда RESET добавляет один ответ 3) Добавлено OTA-обновление главы 5. |
2022-06-02 | 1.6.1 | 1) Изменить рабочий процесс обновления OTA
2) Изменить вопросы и ответы OTA |
Документы/Ресурсы
![]() |
РАЗРАБОТКА YDLIDAR GS2 Твердотельный датчик LiDAR с линейной матрицей [pdf] Руководство пользователя GS2 DEVELOPMENT Линейный массивный лидарный датчик, GS2 DEVELOPMENT, Линейный массивный сплошной лидар, Матричный массивный лидарный датчик, Твердый лидарный датчик, Лидарный датчик, Сенсор |