Lidar

Lidar (Light Detection And Ranging), também conhecido como Laser Rangefinders ou simplesmente Laser, é um sensor bem comum no mundo da robótica. Esse sensor tem como objetivo estimar distâncias entre objetos no ambiente e o próprio Lidar. O princípio de funcionamento é semelhante a qualquer outro sensor baseado em ondas, sonar, radar, infravermelho. Um par de emissor-receptor é fixado em uma estrutura, o emissor emite feixes de luz de tipo laser. Se houver algum objeto no caminho do feixe, o objeto refletirá parte do feixe de luz. O reflexo desse feixe é, então, sentido pelo receptor. Essa estrutura então move-se com o intuito de capturar amostras do ambiente. E dessa forma pode se “ver” o ambiente. 1

Existem duas tecnologias principais para o medir a distância percorrida pelo feixe de luz:

  • TOF (time-of-flight): A distância é calculada por meio da diferença de tempo entre a emissão do laser e a recepção é medida.
  • Phase-based: A distância é calculada usando a diferença de fase entre o feixe emitido e o refletido.

A estrutura que move o laser pode escanear o ambiente de forma 3d. Como pode ser visto gif abaixo:

Graças as características do laser, os Lidars são sensores bastante precisos e flexíveis, pois o sensor mede diretamente a distância para os objetos e isso precisa de pouco pós-processamento. Contudo, há desvantagens, devido à alta tecnologia são sensores caros e não funcionam bem em ambiente externos por causa da luz do Sol.

Hokuyo UTM-30LX

O Lidar usado no robô Pioneer é um UTM-30LX da Hokuyo. É um Lidar com escaneamento 2d, ângulo de visão de 270° e capaz de detectar objetos em até 30 metros de distância.2

A mensagem padrão do ROS para sensores Laser contem essas e outras informações úteis para o processamento dos dados. A documentação da mensagem está aqui.3 Toda vez que o Lidar faz um escaneamento, o nó do ROS responsável pelo laser irá enviar uma mensagem do tipo LaserScan.

Os elementos angle_min e angle_max definem o ângulo de início e final do escaneamento enquanto que o angle_increment fala quanto é a diferença angular entre os feixes. Já o elemento ranges é um vetor com todas as leituras feitas em um escaneamento. Cada elemento desse vetor é uma leitura e está associado a um ângulo específico de leitura. Dessa forma é possível saber onde que um objeto detectado está em relação ao sensor. Logo, se o sensor está montado em um robô, também é possível saber onde esse mesmo objeto está em relação ao robô.

Referências

  1. Gregory Dudek and Michael Jenkin. 2010. Computational Principles of Mobile Robotics (2nd. ed.). Cambridge University Press, USA. 

  2. Scanning Laser Range Finder UTM-30LX/LN Specification From Hokuyo 

  3. sensor_msgs/LaserScan Message. Retrieved April 28, 2020 from LaserScan ROS Documentation 

Updated: