6 pontos por GN⁺ 2025-04-20 | 4 comentários | Compartilhar no WhatsApp
  • PiLiDAR é um projeto em andamento para criar um scanner panorâmico 3D de 360° DIY combinando Raspberry Pi 4, LiDAR da LDRobot, Raspberry Pi HQ Camera e motor de passo
  • Os recursos principais incluem driver serial customizado para LD06·LD19·STL27L, geração de panoramas esféricos 360° em 6K e criação de cenas 3D montando planos 2D com base em ângulo e deslocamento
  • Os panoramas são criados costurando fotos olho de peixe com Hugin, mantendo a exposição com base em EXIF e ajustando o balanço de branco por otimização iterativa de ganho de cor; as cenas 3D fazem amostragem de vertex color a partir do panorama
  • Os resultados podem ser visualizados com Open3D e exportados em PCD·PLY·e57; para alinhar várias cenas são usados global registration e ajuste fino com ICP, e para geração de superfícies é usado Poisson Surface Meshing
  • O custo das peças, excluindo a fonte de alimentação, fica em cerca de US$ 200–280 em abril de 2025, e o Poisson Surface Meshing é muito lento no Pi4, sendo recomendado executá-lo em um PC

O que o PiLiDAR cria

  • PiLiDAR é um projeto para montar por conta própria um scanner panorâmico 3D de 360° baseado em Raspberry Pi, atualmente marcado como trabalho em andamento
  • A estrutura é dividida em três partes principais
    • LiDAR: driver serial customizado para LDRobot LD06, LD19 e STL27L
    • Panorama: geração de mapa esférico 360° em 6K
    • Cena 3D: composição de uma cena 3D montando planos 2D de acordo com ângulo e deslocamento

Recursos de processamento LiDAR

  • O driver LiDAR inclui verificação de integridade de pacote com CRC
  • O PWM por hardware do Raspberry Pi usa rpi_hardware_pwm e é calibrado com ajuste de curva
  • Suporta visualização 2D em tempo real e exportação
    • Os formatos de exportação são numpy ou CSV

Geração de panorama e cena 3D

  • O panorama esférico 360° em 6K é criado costurando fotos olho de peixe com o Hugin Panorama photo stitcher
  • A exposição da câmera é mantida constante lendo os dados EXIF das imagens capturadas automaticamente
  • O balanço de branco é mantido consistente por otimização iterativa do ganho de cor
  • A cena 3D é montada compondo planos 2D com base em ângulo e deslocamento
    • Faz amostragem de vertex color a partir do panorama
    • Suporta visualização com Open3D e exportação em PCD, PLY e e57
    • Para alinhar várias cenas, usa global registration e ajuste fino com ICP
    • O Poisson Surface Meshing é muito lento no Pi4, então é recomendado executá-lo em um PC

Resultados preliminares e tempo de varredura

  • Os resultados preliminares são baseados em uma única varredura, sem registration nem pós-processamento
  • A varredura externa é mostrada como colormapped intensity, e a interna como exemplo de vertex color
  • Exemplos de tempo de varredura:
    • Inicialização: 12 segundos
    • Captura de 4 fotos: 17 segundos
    • Varredura de 0.167° × 0.18°: 1 minuto e 24 segundos
    • Costura e organização: 37 segundos

Configuração de hardware e custos

  • O LiDAR usa uma destas três opções
    • LDRobot LD06: US$ 80
    • LDRobot LD19: US$ 70
    • LDRobot STL27L: US$ 160
  • A câmera e a lente usam a combinação Raspberry Pi HQ Camera + ArduCam M12 Lens, indicada em US$ 60
  • O Raspberry Pi 4 custa US$ 50, e o stepper NEMA17 42-23 com driver A4988 aparece como US$ 10
  • Há duas opções de alimentação
    • v1: 2 baterias 18650 e step-down converter
    • v2: power bank USB de 10.000mAh e step-up converter
  • O custo total, excluindo a fonte de alimentação, é de cerca de US$ 200–280 em abril de 2025
  • Os links de compra são apenas exemplos e não representam fornecedores necessariamente recomendados

Motor, caixa de redução e impressão 3D

Especificações LiDAR e protocolo serial

  • Especificações do LD06
    • Frequência de amostragem: 4500Hz
    • baudrate: 230400
    • Frequência de varredura: 5~13Hz
    • Distância: 2cm~12m
    • Luz ambiente: 30kLux
  • Especificações do STL27L
    • Frequência de amostragem: 21600Hz
    • baudrate: 921600
  • O pacote do LD06 tem 48 bytes no total e usa estrutura big endian
    • Caractere inicial: 1 byte, valor fixo 0x54
    • Comprimento dos dados: 1 byte, atualmente fixado em 12 pontos de medição
    • Velocidade: 2 bytes, ângulo por segundo
    • Ângulo inicial e ângulo final: 2 bytes cada, unidade de 0,01 grau
    • Dados: 36 bytes, 12 pontos de dados × 3 bytes
    • Cada ponto de dados é composto por 2 bytes de distância e 1 byte de luminância
    • Timestamp: 2 bytes, em ms, reinicia ao chegar a 30000
    • CRC check: 1 byte
  • O ângulo de cada ponto de dados é calculado por interpolação linear entre o ângulo inicial e o final

Conexão e configuração do Raspberry Pi

  • A conexão do LD06 ou STL27L é composta por UART Tx, PWM, GND e VCC 5V
  • As conexões GPIO do Raspberry Pi usam o seguinte
    • LD06 UART0 Rx: GP15
    • LD06 PWM0: GP18
    • Power Button: GP03
    • Scan Button: GP17
    • A4988 direction: GP26
    • A4988 step: GP19
    • A4988 microstepping mode: GP5, GP6, GP13
  • O botão de energia é ligado diretamente ao Pin 3, com gpio-shutdown ativado
  • O acelerômetro GY-521 MPU 6060 usa mapeamento customizado de pinos I2C com i2c-GPIO, porque o GPIO3 é usado para o botão de energia
    • SDA: GPIO22
    • SCL: GPIO27
  • O botão de varredura é configurado para iniciar automaticamente registrando um script de interrupção GPIO como serviço systemd
  • As permissões da UART podem ser dadas temporariamente a /dev/ttyS0, ou, de forma mais nova, usar regras udev com o grupo dialout e MODE="0660"

Software e trabalho remoto

  • O PWM por hardware do Raspberry Pi é usado ativando o overlay pwm-2chan e instalando a RPi Hardware PWM library
  • Para costura de panorama, são instalados Hugin e o plugin enblend
  • O controle de energia das portas USB usa a ferramenta CLI uhubctl
  • O Jupyter é executado com as opções --ip e --no-browser para acesso remoto pela rede
  • Para visualização remota com Open3D, é indicado que usar Plotly é melhor do que o Open3D Web Visualizer
    • O Plotly aparenta fazer renderização no lado do cliente
    • O Open3D Web Visualizer renderiza no host e transmite uma sequência de JPG, o que sobrecarrega a CPU e o Wi‑Fi do Pi

Armazenamento dos dados de varredura e solução de problemas

  • Está incluído o procedimento para clonar e instalar o usb_dump a fim de despejar as varreduras em um armazenamento USB
  • O arquivo de configuração define /home/pi/PiLiDAR/scans como diretório de origem
  • Os itens de solução de problemas incluem
    • Driver universal do Windows para CP210x
    • RPi.GPIO RuntimeError: Failed to add edge detection, causado pela remoção da interface sysfs GPIO no Raspberry Pi OS Bookworm
    • Uso de rpi-lgpio como alternativa
    • Desativar aceleração de hardware quando o desempenho do VS Code no Raspberry Pi estiver ruim
    • Como não há wheel do pye57 para Raspberry Pi arm64, instalar libxerces-c-dev e compilar
    • Procedimento com wpa_supplicant.conf para adicionar configuração de Wi‑Fi via SSH

Implementações de referência e inspiração

4 comentários

 
GN⁺ 2025-04-20
Opiniões no Hacker News
  • Muito legal. Se é um produto de hardware, recomendo que, ao montar a lista de materiais (BOM), você inclua links e custos estimados
    Os preços vão mudar, mas ter uma faixa aproximada de custo ajuda muito alguém que vê isso em lugares como o HN a decidir se vale a pena tentar fazer por conta própria. O importante não é o número exato, e sim a ordem de grandeza
    Vale a pena anotar o que você já pesquisou. Mesmo que não seja pelos outros, será útil para o seu eu do futuro. Há muitas peças com nomes confusos, então ter links facilita confirmar se é o mesmo item; e, durante o projeto, como você já comprou as peças, ter links e preços quase não toma tempo extra
    Depois de alguns dias ou semanas ninguém se lembra de nada, então é preciso documentar. Anotar por 10 segundos pode evitar 30 minutos de procura depois. Essa foi uma das maiores lições que aprendi quando comecei como engenheiro, e é preciso lutar contra aquela parte idiota da cabeça que sussurra “isso não vai economizar tempo”. O mesmo vale para documentação de código[0]
    Depois de procurar por uns 15 minutos, os valores que encontrei são estes, e podem não estar corretos. O Lidar é um destes: LD06 US$ 80 https://www.aliexpress.us/item/3256803352905216.html, LD19 US$ 70 https://amazon.com/DTOF-D300-Distance-Obstacle-Education/dp/…, STL27L US$ 160 https://www.dfrobot.com/product-2726.html; câmera e lente US$ 60 https://amazon.com/Arducam-Raspberry-Camera-Distortion-Compatible/dp/…, Raspberry Pi 4 US$ 50, motor de passo NEMA17 42-23 US$ 10 https://www.amazon.com/SIMAX3D-Nema17-Stepper-Motor/dp/B0CQLFNSMJ
    Mesmo sem a fonte de alimentação e o conversor buck, fica algo em torno de US$ 200 a US$ 280
    [0] Quando escrevi o código pela primeira vez, eu e Deus sabíamos o que estava acontecendo; com o tempo, agora só Deus sabe

    • Esses projetos de aprendizado provavelmente vão ficar muito menos acessíveis por causa das tarifas extremas e do fim da isenção para compras de baixo valor
      Talvez seja preciso multiplicar os preços da lista de materiais por 2 ou 3, dependendo da origem e do número de remessas
      É realmente deprimente que materiais baratos e bons para apresentar eletrônica a crianças e adultos, aos quais antes se tinha acesso, desapareçam com impostos em nome de coisas como aumentar a competitividade dos EUA. É um gol contra completo
    • Como está no GitHub, dá para ajudar enviando um PR com a lista de materiais
    • Eu sei o que é um conversor buck, mas fico curioso por que ele é chamado de “buck converter”
      Olhando no dicionário, não vejo um sentido próximo de “reduzir a quantidade de algo”. [0]
      A Wikipedia também não trata a etimologia em detalhes. [1]
      [0] https://www.merriam-webster.com/dictionary/buck
      [1] https://en.wikipedia.org/wiki/Buck_converter
    • É surpreendente que algo nesse nível seja caro demais para empresas como a Tesla
    • É o comentário mais ingrato que vi hoje, pressionando com um “era assim que deveria ter sido feito”
      Então faça você mesmo
      Para alguém com família e pouquíssimo tempo, só concluir um projeto já é pesado, e é bem provável que quase não dê para documentar. Se tiver que refazer depois, talvez eu simplesmente não faça. Nem todo mundo mora no porão da mãe com tempo sobrando
  • O scanner real está aqui: [1]
    A distância máxima é de 12 m, e parece que é a partir desse ponto que começa a ficar caro. A fonte de luz, os filtros e os sensores precisam todos ser melhores
    Para a maioria dos robôs pequenos, é suficiente, e também pode servir como sensor auxiliar em carros autônomos, para detectar crianças e cães de forma confiável ao redor do veículo. Mas o LIDAR de longo alcance montado na parte superior ainda é difícil
    [1] https://www.ldrobot.com/

    • Eu gostaria de saber de onde exatamente vem esse aumento de preço. Pesquisando, não encontrei muita coisa
      Meu primeiro palpite é que, a partir dessa distância, a segurança do laser talvez passe a exigir um processo de controle ativo. Como o espelho do scanner a laser precisa continuar se movendo para que não se acumule energia prejudicial à retina humana, torna-se necessário um sistema de controle obrigatório de segurança que monitore continuamente a velocidade e a posição do espelho e desligue o laser se ele ficar lento demais. Quão errado estou?
  • Havia muita coisa melhor nos “bons velhos tempos”, mas é realmente incrível viver numa época em que uma pessoa talentosa consegue criar esse tipo de tecnologia por conta própria

  • Um pouco relacionado: estou procurando uma forma barata de medir distância com cerca de 10 mícrons de precisão a uma distância de mais ou menos 300 mm. Alguma ideia?

    • Parece cair na faixa dos digital readouts (DROs) usados em fresadoras e tornos
      my mechanics publicou um vídeo de substituição há alguns dias, e o equipamento antigo tinha precisão de 5 mícrons
      Não sei bem o preço
    • O ponto importante é se o intervalo que você quer medir se move bastante e se o sistema de medição pode encostar ou ser fixado nele
      Parece possível até com um bom par de paquímetros. Dependendo do requisito de precisão, dá para usar a mesma abordagem: uma grade de células capacitivas que desliza sobre a célula de medição, com um microcontrolador lendo os valores conforme se move e depois usando Atan2() no resultado final. A parte de “medidor” disso, separadamente, é chamada de DRO (Digital ReadOut)
    • Tive um problema parecido e precisei criar um dispositivo sob medida caro a ponto de eu nem querer admitir. Por isso recomendo olhar primeiro kits de DRO para fresadoras CNC
      Se não houver restrição de orçamento, também existem soluções prontas de estágios em malha fechada:
      https://www.pi-usa.us/en/
      https://xeryon.com
      Boa sorte, e prepare-se para o choque dos preços
    • Tenho algumas ideias de projeto para um sistema DIY, mas tudo depende de quanto dinheiro e tempo você pode gastar em experimentos
      Também importa o que “barato” significa para você
      Estou pensando em automatizar algo nesta direção:
      https://youtu.be/hnHjrz_inQU?si=dNzXVBVFsr7e8m_6
      Lasers e sensores de câmera prontos também podem entregar uma precisão bem inesperada quando mexidos em modo DIY
    • Para ter ideias, isto também vale a pena ver: https://youtu.be/qMYBwbTIL-0
  • O exemplo no Sketchfab é fantástico. Dá para circular pelo espaço 3D como numa simulação de ficção científica
    Mas os controles do mouse são confusos demais. Aparece um ícone de “pegar”, mas na prática não dá a sensação de estar pegando nada, e a direção de movimento é invertida, então parece totalmente antinatural

  • Talvez dê para retirar peças desse tipo de robôs aspiradores do eBay ou da Goodwill

    • Aqui, “peças desse tipo” são sensores LIDAR
  • Realmente impressionante. Só passei os olhos pelo projeto, então talvez já esteja lá, mas fiquei curioso se há dados de precisão
    Por exemplo, a precisão a 10 m de distância; se este LIDAR não funcionar nessa distância, gostaria de saber para uma distância menor também
    Estou familiarizado com scanners FARO, que usam um mecanismo de outro tipo e são precisos o suficiente para medições de edificações
    Também percebi que o mercado de scanners tem várias vertentes, incluindo pessoas que precisam de precisão e pessoas que criam conteúdo para mídias como jogos. Este projeto é realmente difícil de acreditar

  • Ultimamente tenho mexido um pouco com fotogrametria para escanear cômodos e espaços internos. Até agora, o Metashape parece ser o mais adequado, mas a precisão ainda não é muito boa, e também estou melhorando a técnica de captura
    O objetivo principal é transformar interiores de edifícios reais em modelos digitais para preservação e análise. Cheguei a considerar LIDAR por um momento, mas descartei por parecer difícil e caro demais; este projeto parece abalar essa suposição
    Fico curioso para saber como é o software de pós-processamento. Dá para obter uma nuvem de pontos e combiná-la com outros dados, como fotos de DSLR, para texturização?
    Pela segunda imagem[1], uma parte da parede não foi escaneada por causa de uma luminária pendurada, e provavelmente o LIDAR também não viu a parte de cima do sofá. É possível juntar duas ou mais nuvens de pontos para enxergar atrás de objetos e cantos? O software consegue alinhar automaticamente com base em paredes ou pontos comuns, entendendo que se trata do mesmo cômodo real, ou é preciso ajustar bastante à mão? Existe no LIDAR algo equivalente a coded targets ou ARTag[0]? Dá para escalar para vários cômodos?
    Quero saber se vale a pena considerar isso em comparação com uma fotogrametria bem-feita, ou se só dá mais trabalho
    Desculpe se as perguntas são do tipo em que eu nem sei o que não sei
    0: https://en.wikipedia.org/wiki/ARTag
    1: https://github.com/PiLiDAR/PiLiDAR/raw/main/images/interior....

    • É propaganda descarada, mas, se você tiver um iPhone Pro ou iPad Pro com Lidar integrado, vale experimentar o Dot3D. Ele faz tudo que você descreveu e foi feito para ser fácil de usar
  • Obrigado por compartilhar este trabalho incrível. Fico curioso sobre a escalabilidade e o desempenho do PiLiDAR quando aplicado a grandes conjuntos de dados externos
    Se vocês fizeram benchmarks em datasets como SemanticKITTI ou nuScenes, poderiam compartilhar tempo de execução, uso de memória e até que ponto ele generaliza bem além das cenas internas usadas no artigo?

    • Acho que há algum mal-entendido. Corrija-me se eu estiver errado, mas isto não é um modelo para processamento de dados, e sim um scanner LIDAR DIY para aquisição de dados
      Esses datasets normalmente são criados com câmeras RGBA, e as nuvens de pontos são geradas depois na etapa de pós-processamento
      Então não é um modelo de processamento, mas um hack de hardware para obter dados reais de profundidade. Você pode rodar o que quiser em cima disso
  • Era exatamente isso que eu estava procurando algumas semanas atrás. Eu vinha mantendo peças no carrinho da Amazon há semanas para prototipar algo mais ou menos parecido, mas não tinha certeza sobre a escolha do scanner LIDAR em si
    Quando voltar do feriado de Páscoa, vou olhar isto como ponto de partida

 
chcv0313 2025-04-22

O que é a comunidade de lanternas?

 
savvykang 2025-05-03

https://www.reddit.com/r/flashlight/
É uma comunidade pequena dentro do Reddit, algo equivalente, no nosso contexto, à galeria minor de lanternas do DCInside.

 
chcv0313 2025-05-20

Obrigado.