YDLIDAR GS2 DESENVOLVIMENTO Sensor LiDAR sólido de matriz linear
MECANISMO DE TRABALHO
Modo
O sistema YDLIDAR GS2 (doravante referido como GS2) possui 3 modos de trabalho: modo inativo, modo de varredura, modo de parada.
- Modo inativo: Quando o GS2 está ligado, o modo padrão é o modo inativo. No modo inativo, a unidade de alcance do GS2 não funciona e o laser não acende.
- Modo de digitalização: Quando o GS2 está no modo de varredura, a unidade de alcance liga o laser. Quando o GS2 começa a funcionar, ele s continuamenteamparquiva o ambiente externo e o gera em tempo real após o processamento em segundo plano.
- Modo de parada: Quando o GS2 é executado com um erro, como ligar o scanner, o laser está desligado, o motor não gira, etc. O GS2 desliga automaticamente a unidade de medição de distância e informa o código de erro.
Princípio de medição
O GS2 é um lidar de estado sólido de curto alcance com um alcance de 25-300 mm. É composto principalmente por um laser de linha e uma câmera. Depois que o laser de uma linha emite a luz do laser, ela é capturada pela câmera. De acordo com a estrutura fixa do laser e da câmera, combinada com o princípio da medição de distância de triangulação, podemos calcular a distância do objeto ao GS2. De acordo com os parâmetros calibrados da câmera, o valor do ângulo do objeto medido no sistema de coordenadas lidar pode ser conhecido. Como resultado, obtivemos os dados de medição completos do objeto medido.
O ponto O é a origem das coordenadas, a área roxa é o ângulo de view da câmera direita, e a área laranja é o ângulo de view da câmera esquerda.
Com a pontuação mod como a origem da coordenada, a frente é a direção do sistema de coordenadas 0 grau e o ângulo aumenta no sentido horário. Quando a nuvem de pontos é emitida, a ordem dos dados (S1~S160) é L1~L80, R1~R80. O ângulo e a distância calculados pelo SDK são todos representados no sistema de coordenadas no sentido horário.
COMUNICAÇÃO DO SISTEMA
Mecanismo de Comunicação
O GS2 comunica comandos e dados com dispositivos externos através da porta serial. Quando um dispositivo externo envia um comando do sistema para o GS2, o GS2 resolve o comando do sistema e retorna uma mensagem de resposta correspondente. De acordo com o conteúdo do comando, o GS2 alterna o status de trabalho correspondente. Com base no conteúdo da mensagem, o sistema externo pode analisar a mensagem e obter os dados de resposta.
Comando do sistema
O sistema externo pode definir o status de trabalho correspondente do GS2 e enviar dados correspondentes enviando comandos de sistema relacionados. Os comandos do sistema emitidos pelo GS2 são os seguintes:
TABELA 1 COMANDO DO SISTEMA YDLIDAR GS2
Comando do sistema | Descrição | Mudança de modo | Modo de resposta |
0×60 | Obtendo o endereço do dispositivo | Modo de parada | Resposta única |
0×61 | Obtendo parâmetros do dispositivo | Modo de parada | Resposta única |
0×62 | Obtendo informações da versão | Modo de parada | Resposta única |
0×63 | Comece a digitalizar e gerar dados de nuvem de pontos | Modo de digitalização | Resposta contínua |
0x64 | Pare o dispositivo, pare a digitalização | Modo de parada | Resposta única |
0x67 | Reinício suave | / | Resposta única |
0×68 | Defina a taxa de transmissão da porta serial | Modo de parada | Resposta única |
0×69 | Defina o modo de borda (modo anti-ruído) | Modo de parada | Resposta única |
Mensagens do sistema
A mensagem do sistema é uma mensagem de resposta que o sistema realimenta com base no comando do sistema recebido. De acordo com diferentes comandos do sistema, o modo de resposta e o conteúdo da resposta da mensagem do sistema também são diferentes. Existem três tipos de modos de resposta: sem resposta, resposta única, resposta contínua.
Nenhuma resposta significa que o sistema não retorna nenhuma mensagem. Uma única resposta indica que o comprimento da mensagem do sistema é limitado e a resposta termina uma vez. Quando o sistema está em cascata com vários dispositivos GS2, alguns comandos receberão respostas de vários dispositivos GS2 consecutivamente. Resposta contínua significa que o comprimento da mensagem do sistema é infinito e precisa enviar dados continuamente, como ao entrar no modo de varredura.
As mensagens de resposta única, resposta múltipla e resposta contínua usam o mesmo protocolo de dados. Os conteúdos do protocolo são: cabeçalho do pacote, endereço do dispositivo, tipo de pacote, comprimento dos dados, segmento de dados e código de verificação, e são enviados através do sistema hexadecimal da porta serial.
QUADRO 2 YDLIDAR GS2 DIAGRAMA ESQUEMÁTICO DO PROTOCOLO DE DADOS DE MENSAGEM DO SISTEMA
cabeçalho do pacote | Endereço do dispositivo | tipo de pacote | Duração da resposta | Segmento de dados | Verifique o código |
4 Byte | 1 Byte | 1 Byte | 2 Byte | N bytes | 1 Byte |
Deslocamento de bytes
- Cabeçalho do pacote: O cabeçalho do pacote de mensagem para GS2 é marcado como 0xA5A5A5A5.
- Endereço do dispositivo: O endereço do dispositivo GS2, de acordo com o número de cascatas, é dividido em: 0x01, 0x02, 0x04;
- Tipo de pacote: Veja a tabela 1 para os tipos de comandos do sistema.
- Comprimento da resposta: Representa o comprimento da resposta
- Segmento de dados: Diferentes comandos do sistema respondem a diferentes conteúdos de dados e seus protocolos de dados são diferentes.
- Verifique o código: verifique o código.
Observação: A comunicação de dados GS2 adota o modo small-endian, ordem baixa primeiro.
PROTOCOLO DE DADOS
Obtenha o comando de endereço do dispositivo
Quando um dispositivo externo envia este comando para o GS2, o GS2 retorna um pacote de endereço do dispositivo, a mensagem é:
Em cascata, se N dispositivos (até 3 suportados) forem encadeados, o comando retornará N respostas em 0x01, 0x02, 0x04, correspondendo a 1-3 módulos, respectivamente.
Definição: O endereço do módulo 1 é 0x01, módulo 2 é 0x02 e módulo 3 é 0x04.
Obter comando de informações de versão
Quando um dispositivo externo envia um comando de varredura para o GS2, o GS2 retorna suas informações de versão. A mensagem de resposta é:
No caso de cascata, se N (máximo 3) dispositivos forem conectados em série, este comando retornará N respostas, onde o endereço é o endereço do último dispositivo.
O número da versão tem 3 bytes de comprimento e o número SN tem 16 bytes de comprimento.
Obter Comando de Parâmetro do Dispositivo
Quando um dispositivo externo enviar este comando para o GS2, o GS2 retornará os parâmetros do dispositivo e a mensagem será:
Em cascata, se N dispositivos (até 3 suportados) forem encadeados, o comando retornará N respostas, correspondentes aos parâmetros de cada dispositivo.
Os K e B recebidos pelo protocolo são do tipo uint16, que precisam ser convertidos para float e depois divididos por 10000 antes de serem substituídos na função de cálculo.
- d_compensateK0 = (float)K0/10000.0f;
- d_compensateB0 = (float)B0/10000.0f;
- d_compensateK1 = (float)K1/10000.0f;
- d_compensateB1 = (float)B1/10000.0f;
Bias é do tipo int8, que precisa ser convertido para float e dividido por 10 antes de ser substituído na função de cálculo.
- bias = (float)Bias /10;
Comando
comando de digitalização
Quando um dispositivo externo envia um comando de varredura para o GS2, o GS2 entra no modo de varredura e realimenta continuamente os dados da nuvem de pontos. A mensagem é: Comando enviado: (Enviar endereço 0x00, cascata ou não, iniciará todos os dispositivos)
Comando recebido: (Nos casos em cascata, este comando retorna apenas uma resposta, e o endereço é o maior endereço, por example: O dispositivo nº 3 está em cascata e o endereço é 0x04.)
O segmento de dados são os dados da nuvem de pontos digitalizados pelo sistema, que são enviados para a porta serial em hexadecimal para o dispositivo externo de acordo com a seguinte estrutura de dados. O comprimento de dados de todo o pacote é de 322 bytes, incluindo 2 bytes de dados ambientais e 160 pontos de alcance (S1-S160), cada um com 2 bytes, os 7 bits superiores são dados de intensidade e os 9 bits inferiores são dados de distância . A unidade é mm.
Comando de parada
Quando o sistema está no estado de varredura, o GS2 envia dados de nuvem de pontos para o mundo externo. Para desabilitar a varredura neste momento, envie este comando para parar a varredura. Depois de enviar o comando de parada, o módulo responderá ao comando de resposta e o sistema entrará no estado de espera imediatamente. Neste momento, a unidade de alcance do dispositivo está no modo de baixo consumo de energia e o laser está desligado.
- Envio de comando: (enviar endereço 0x00, seja em cascata ou não, todos os dispositivos serão fechados).
No caso de cascata, se N (máximo 3) dispositivos estiverem conectados em série, este comando retornará apenas uma resposta, onde o endereço é o endereço do último dispositivo, por exemploample: se 3 dispositivos estiverem em cascata, o endereço é 0x04.
Defina o comando Baud Rate
Quando o dispositivo externo envia este comando para GS2, a taxa de transmissão de saída do GS2 pode ser definida.
- Comando enviado: (endereço de envio 0x00, suporta apenas a configuração da mesma taxa de transmissão de todos os dispositivos em cascata), a mensagem é:
Entre eles, o segmento de dados é o parâmetro de taxa de transmissão, incluindo quatro taxas de transmissão (bps), respectivamente: 230400, 512000, 921600, 1500000 correspondente ao código 0-3 (nota: a conexão serial de três módulos deve ser ≥921600, a o padrão é 921600).
No caso de cascata, se N dispositivos (suporte máximo 3) forem conectados em série, o comando retornará N respostas, correspondentes aos parâmetros de cada dispositivo, e os endereços são: 0x01, 0x02, 0x04.
- Depois de definir a taxa de transmissão, é necessário reinicializar o dispositivo.
Defina o modo Edge (modo anti-jamming forte)
Quando o dispositivo externo envia este comando para o GS2, o modo anti-interferência do GS2 pode ser definido.
- Envio de comando: (endereço de envio, endereço em cascata), a mensagem é:
recepção de comando
Endereço é o endereço do módulo que precisa ser configurado no link em cascata. Mode=0 corresponde ao modo padrão, Mode=1 corresponde ao modo edge (receptáculo voltado para cima), Mode=2 corresponde ao modo edge (receptáculo voltado para baixo). No modo de borda, a saída fixa do lidar é 10HZ e o efeito de filtragem da luz ambiente será aprimorado. Mode=0XFF significa leitura, o lidar retornará ao modo atual. O Lidar funciona no modo padrão por padrão.
- Definir módulo 1: Endereço =0x01
- Definir módulo 2: Endereço =0x02
- Definir módulo 3: Endereço =0x04
Comando de reinicialização do sistema
Quando um dispositivo externo envia este comando para o GS2, o GS2 entrará em uma reinicialização suave e o sistema será redefinido e reiniciado.
Envio de comando: (endereço de envio, só pode ser o endereço concatenado exato: 0x01/0x02/0x04)
Endereço é o endereço do módulo que precisa ser configurado no link em cascata.
- Redefinir módulo 1: Endereço =0x01
- Redefinir módulo 2: Endereço =0x02
- Redefinir módulo 3: Endereço =0x04
ANÁLISE DE DADOS
QUADRO 3 DESCRIÇÃO DA ESTRUTURA DE DADOS
Contente | Nome | Descrição |
K0(2B) | Parâmetros do dispositivo | (uint16) O coeficiente k0 do parâmetro do ângulo esquerdo da câmera (consulte a seção 3.3) |
B0(2B) | Parâmetros do dispositivo | (uint16) O coeficiente k0 do parâmetro do ângulo esquerdo da câmera (consulte a seção 3.3) |
K1(2B) | Parâmetros do dispositivo | (uint16) O coeficiente k1 do parâmetro do ângulo direito da câmera (consulte a seção 3.3) |
B1(2B) | Parâmetros do dispositivo | (uint16) O coeficiente b1 do parâmetro do ângulo direito da câmera (consulte a seção 3.3) |
BIAS | Parâmetros do dispositivo | (int8) O coeficiente de polarização do parâmetro do ângulo da câmera atual (consulte a seção 3.3) |
ENV(2B) | dados do ambiente | Intensidade da luz ambiente |
Si(2B) | Dados de medição de distância | Os 9 bits inferiores são a distância, os 7 bits superiores são o valor da intensidade |
- Análise de distância
Fórmula de cálculo da distância: Distância = (_ ≪ 8|_) &0x01ff, a unidade é mm.
Cálculo de força: Qualidade = _ ≫ 1 - análise de ângulo
A direção da emissão do laser é tomada como a frente do sensor, a projeção do centro do círculo do laser no plano do PCB é tomada como a origem das coordenadas e o sistema de coordenadas polares é estabelecido com a linha normal do plano do PCB como a direção de 0 graus. Seguindo o sentido horário, o ângulo aumenta gradualmente.
Para converter os dados originais transmitidos pelo Lidar para o sistema de coordenadas da figura acima, é necessária uma série de cálculos. A função de conversão é a seguinte (para detalhes, consulte o SDK):
Verifique a análise do código
O código de verificação usa acumulação de byte único para verificar o pacote de dados atual. O cabeçalho do pacote de quatro bytes e o próprio código de verificação não participam da operação de verificação. A fórmula da solução do código de verificação é:
- SomaVerificação = ADD1()
- = 1,2,…,
ADD1 é a fórmula cumulativa, significa acumular os números do subscrito 1 até o final no elemento.
ATUALIZAÇÃO OTA
Fluxo de trabalho de atualização
Enviar protocolo
GRÁFICO 4 FORMATO DE PROTOCOLO DE DADOS OTA (SMALL ENDIAN)
Parâmetro | Comprimento (BYTE) | Descrição |
Packet_Header | 4 | Cabeçalho do pacote de dados, fixo como A5A5A5A5 |
Endereço_do_dispositivo | 1 | Especifica o endereço do dispositivo |
ID_do_pacote | 1 | ID do pacote de dados (tipo de dados) |
Len_dados | 2 | Comprimento de dados do segmento de dados, 0-82 |
Dados | n | Dados, n = Data_Len |
Verificação_Soma | 1 | Checksum, a soma de verificação dos bytes restantes após a remoção do cabeçalho |
QUADRO 5 INSTRUÇÕES DE ATUALIZAÇÃO OTA
Tipo de instrução | ID_do_pacote | Descrição |
Iniciar_IAP | 0x0A | Envie este comando para iniciar o IAP após ligar |
Executando_IAP | 0x0B | Executar IAP, transmitir pacotes |
Completo_IAP | 0x0C | Fim do IAP |
ACK_IAP | 0x20 | resposta IAP |
RESET_SYSTEM | 0x67 | Redefina e reinicie o módulo no endereço especificado |
Instrução Start_IAP
Envio de comando
- Segmento de dados Formato de dados:
- Dados[0~1]: O padrão é 0x00;
- DADOS [2~17]: É um código de verificação de caracteres fixo:
- 0x73 0x74 0x61 0x72 0x74 0x20 0x64 0x6F 0x77 0x6E 0x6C 0x6F 0x61 0x64 0x00 0x00
- Consulte o envio de mensagem
- A5 A5 A5 A5 01 0A 12 00 00 00 73 74 61 72 74 20 64 6F 77 6E 6C 6F 61 64 00 00 C3
Recepção de comando: Devido às operações do setor FLASH, o atraso de retorno é longo e oscila entre 80ms e 700ms)
Receber formato de dados
- Endereço: o endereço do módulo;
- ACK: O padrão é 0x20, indicando que o pacote de dados é um pacote de confirmação; Data[0~1]: O padrão é 0x00;
- Dados[2]: 0x0A indica que o comando de resposta é 0x0A;
- Dados[3]: 0x01 indica recepção normal, 0 indica recepção anormal;
- Referência a receber:
A5 A5 A5 A5 01 20 04 00 00 00 0A 01 30
Instrução Running_IAP
Envio de comando
O firmware será dividido durante a atualização, e os dois primeiros bytes do segmento de dados (Data) indicam o deslocamento desse segmento de dados em relação ao primeiro byte do firmware.
- Dados[0~1]:Package_Shift = Dados[0]+ Dados[1]*256;
- Dados[2]~Dados[17]: é um código de verificação de string fixa:
- 0x64 0x6F 0x77 0x6E 0x6C 0x6F 0x61 0x64 0x69 0x6E 0x67 0x00 0x00 0x00 0x00 0x00 Data[18]~Data[81]: dados de firmware;
- Consulte o envio de mensagem
- 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 +
(Dados[18]~Dados[81]) + Check_Sum
recepção de comando
- Endereço: eus o endereço do módulo;
- ACK: O padrão é 0x20, indicando que o pacote de dados é um pacote de confirmação;
Dados[0~1]: Package_Shift = Data[0]+ Data[1]*256 indica o deslocamento de dados do firmware da resposta. Recomenda-se julgar o deslocamento como um mecanismo de proteção ao detectar a resposta durante o processo de atualização.
- Data[2]=0x0B indica que o comando de resposta é 0x0B;
- Data[3]=0x01 indica recepção normal, 0 indica recepção anormal;
Referência a receber
A5 A5 A5 A5 01 20 04 00 00 00 0B 01 31
Complete_IAP Instrução
Envio de comando
- Dados[0~1]: O padrão é 0x00;
- Dados[2]~Dados[17]: É um código de verificação de string fixa:
0x63 0x6F 0x6D 0x70 0x6C 0x65 0x74 0x65 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
Dados[18]~Dados[21]: sinalizador de criptografia, tipo uint32_t, firmware criptografado é 1, firmware não criptografado é 0;
Consulte o envio da mensagem:
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 + (sinalizador de criptografia uint32_t) + Check_Sum
recepção de comando
- Receber formato de dados:
- Endereço: é o endereço do módulo;
- ACK: O padrão é 0x20, indicando que o pacote de dados é um pacote de confirmação;
- Dados[0~1]: O padrão é 0x00;
- Dados[2]: 0x0C indica que o comando de resposta é 0x0C;
- Dados[3]: 0x01 indica recepção normal, 0 indica recepção anormal;
- Consulte a mensagem recebida:
A5 A5 A5 A5 01 20 04 00 00 00 0C 01 32
Instrução RESET_SYSTEM
Consulte o Capítulo 3.8 Comando de reinicialização do sistema para obter detalhes.
Perguntas e respostas
- P: Como avaliar se a reinicialização foi bem-sucedida após enviar o comando de reinicialização? Se o atraso é necessário?
- A: A execução bem-sucedida pode ser julgada de acordo com o pacote de resposta do comando reset; recomenda-se adicionar um atraso de 500 ms após receber a resposta antes de executar as operações subsequentes.
- P: O módulo 4 recebe alguns dados da porta serial que não estão em conformidade com o protocolo após a reinicialização, como lidar com isso?
- A: O log de inicialização do módulo é uma sequência de dados ASCII com 4 cabeçalhos 0x3E, que não afeta a análise normal de dados com 4 cabeçalhos 0xA5 e pode ser ignorado. Devido ao link físico, os logs dos módulos nº 1 e nº 2 não podem ser recebidos.
- P: Como lidar se o processo de atualização for interrompido por uma falha de energia e reiniciar?
- A: Reenvie o comando Start_IAP para atualizar novamente.
- P: Qual é a possível razão para a função de atualização anormal no estado cascata?
- A: Confirme se o link físico está correto, como se os dados da nuvem de pontos dos três módulos podem ser recebidos;
- Confirme se os endereços dos três módulos não estão em conflito e você pode tentar reatribuir os endereços;
- Redefina o módulo a ser atualizado e reinicie o try;
- Q: Por que a versão de leitura é 0 após a atualização em cascata?
- A: Isso significa que a atualização do módulo não foi bem-sucedida, os usuários precisam redefinir o módulo e atualizar novamente.
ATENÇÃO
- Durante a interação do comando com o GS2, exceto para o comando de parada de varredura, outros comandos não podem interagir no modo de varredura, o que pode facilmente levar a erros de análise de mensagem.
- O GS2 não iniciará o alcance automaticamente quando for ligado. Ele precisa enviar um comando de início de varredura para entrar no modo de varredura. Quando precisar interromper o alcance, envie um comando de parada de varredura para interromper a varredura e entrar no modo de espera.
- Inicie o GS2 normalmente, nosso processo recomendado é:
Primeiro passo:
envie o comando Get Device Address para obter o endereço do dispositivo atual e o número de cascatas e configure o endereço;
Segundo passo:
envie o comando get version para obter o número da versão;
Terceiro passo:
enviar um comando para obter os parâmetros do dispositivo para obter os parâmetros de ângulo do dispositivo para análise de dados;
Quarto passo:
envie um comando de início de varredura para obter dados de nuvem de pontos. - Sugestões para o design de materiais transmissores de luz para janelas em perspectiva GS2:
Se a janela de perspectiva da tampa frontal for projetada para GS2, recomenda-se usar PC permeável a infravermelho como material transmissor de luz, e a área de transmissão de luz deve ser plana (planicidade ≤0.05 mm) e todas as áreas no plano deve ser transparente na faixa de 780nm a 1000nm. A taxa de luz é superior a 90%. - O procedimento de operação recomendado para ligar e desligar repetidamente o GS2 da placa de navegação:
Para reduzir o consumo de energia da placa de navegação, se o GS2 precisar ser ligado e desligado repetidamente, é recomendável enviar um comando de parada de varredura (consulte a seção 3.5) antes de desligar e, em seguida, configure o TX e RX do placa de navegação para alta impedância. Em seguida, puxe o VCC para baixo para desligá-lo. Na próxima vez que a energia for ligada, primeiro abra o VCC, depois configure TX e RX como saída normal e estados de entrada e, depois de um atraso de 300ms, execute a interação de comando com o laser de linha. - Sobre o tempo máximo de espera após o envio de cada comando GS2:
- Obter endereço: atraso de 800ms, obter versão: atraso de 100ms;
- Obter parâmetros: atraso de 100 ms, iniciar a varredura: atraso de 400 ms;
- Parar varredura: atraso de 100 ms, definir taxa de transmissão: atraso de 800 ms;
- Definir modo de borda: atraso de 800ms, iniciar OTA: atraso de 800ms;
REVER
Data | Versão | Contente |
2019-04-24 | 1.0 | Compor um primeiro rascunho |
2021-11-08 |
1.1 |
Modificar (Modificar a estrutura do protocolo para mesclar os dados da câmera esquerda e direita; Sugestões para adicionar materiais da janela de perspectiva; Adicionar a taxa de transmissão
comando de configuração) |
2022-01-05 | 1.2 | Modifique a descrição de recebimento do comando para obter o endereço do dispositivo e a descrição das câmeras esquerda e direita |
2022-01-12 | 1.3 | Adicionar modo de borda, suplemento K, B, descrição do cálculo BIAS |
2022-04-29 | 1.4 | Modifique a descrição do capítulo 3.2: Comando Obter Informações da Versão |
2022-05-01 | 1.5 | Modifique o método de configuração de endereço do comando de reinicialização suave |
2022-05-31 |
1.6 |
1) Atualização da seção 3.7
2) Seção 3.8 O comando RESET adiciona uma única resposta 3) Adicionado capítulo 5 atualização OTA |
2022-06-02 | 1.6.1 | 1) Modifique o fluxo de trabalho de atualização OTA
2) Modifique as perguntas e respostas da OTA |
Documentos / Recursos
![]() |
YDLIDAR GS2 DESENVOLVIMENTO Sensor LiDAR sólido de matriz linear [pdf] Manual do Usuário GS2 DEVELOPMENT Sensor LiDAR sólido de matriz linear, DESENVOLVIMENTO GS2, Sensor LiDAR sólido de matriz linear, Sensor LiDAR sólido de matriz, Sensor LiDAR sólido, Sensor LiDAR, Sensor |