1 pontos por GN⁺ 2024-04-12 | 1 comentários | Compartilhar no WhatsApp
  • OptiGap é um sistema desenvolvido para robótica macia, onde é difícil fixar sensores convencionais por causa da estrutura flexível, para identificar em que ponto o sensor foi dobrado
  • Um intervalo de ar criado dentro de um guia de luz flexível altera a quantidade de luz transmitida conforme a curvatura, e essa diferença é usada como padrão de sinal por posição
  • A ideia começou em um experimento dobrando filamento transparente de TPU 1,75 mm para impressora 3D preso a uma fita métrica, com mudanças em tempo real observadas via Raspberry Pi, VL53L0X, ZeroMQ e uma GUI em Python
  • No início foram usados 3 filamentos de TPU e um acoplador de fibra óptica 3:1, mas depois o sistema evoluiu para uma estrutura menor e mais simples baseada em fibra óptica de PMMA de 500 micrômetros, fotodiodo, LED IR e STM32
  • O sistema final classifica a posição da dobra no STM32 com um classificador Naive Bayes e filtragem em duas etapas, avançando até integração com o EneGate, PCB compacta, validação em robô macio real e trabalho de comercialização

Papel do OptiGap

  • OptiGap é um sistema para descobrir qual ponto foi dobrado quando um sensor em forma de corda se curva
  • Essa função corresponde à detecção da posição de dobra, ou bend localization
  • A principal área de aplicação é a robótica macia
    • Como a robótica macia lida com estruturas flexíveis ou maleáveis, muitas vezes é difícil usar sensores tradicionais
  • O nome OptiGap é a combinação de “optical” e “gap”
    • Ele cria os padrões de código necessários para detectar a posição da dobra usando um intervalo de ar dentro de um guia de luz flexível

Experimento iniciado por uma descoberta acidental

  • O ponto de partida foi um experimento que tentava usar a forma como a luz é transmitida por um guia de luz, ou cabo óptico, como sensor de detecção de curvatura
  • Durante testes com filamento transparente de TPU 1,75 mm para impressora 3D preso a uma fita métrica, ao dobrar o ponto onde havia fita isolante, a quantidade de luz transmitida caía bastante
  • Foi levantada a hipótese de que o resíduo adesivo da fita isolante esticava o filamento e, como resultado, reduzia a transmissão de luz
  • Depois, um pedaço maior de TPU foi preso à fita métrica e vários pontos foram dobrados para observar as mudanças na transmissão óptica
  • Para validação em tempo real, foi montado um sistema simples de medição e visualização
    • Foi escrito um driver Linux I2C para o sensor ToF VL53L0X
    • Ele rodava no Raspberry Pi e enviava os dados por sockets ZeroMQ
    • Uma GUI em Python recebia os dados pelo socket e visualizava os dados de transmissão óptica em tempo real
  • Essa validação foi o momento decisivo que levou ao desenvolvimento do OptiGap

Codificação de informação de posição com intervalo de ar

  • Se for possível controlar a posição em que a luz enfraquece, dá para codificar no sensor a informação sobre onde ele foi dobrado
  • O método com fita isolante não era prático, então era necessária uma estrutura de atenuação mais estável e consistente
  • A solução foi cortar o filamento, reconectá-lo com uma luva de silicone e deixar entre as partes um pequeno intervalo de ar
  • O intervalo de ar usa o deslocamento relativo ou a rotação entre as extremidades dos dois guias de luz
    • Quando a face de um guia de luz fica desalinhada em relação à da outra, a proporção de luz transmitida através do intervalo muda
    • Quanto maior o ângulo de dobra, mais luz escapa no intervalo
    • A intensidade desse sinal óptico alterado é então associada a padrões conhecidos e usada como sinal do sensor

Vários intervalos de ar e Inverse Gray Code

  • O passo seguinte foi criar vários intervalos de ar ao longo de um único guia de luz de TPU e medir o padrão de atenuação ao dobrá-lo
  • A intensidade da luz caiu em cada intervalo de ar, e a queda ficava mais evidente conforme o ângulo de dobra aumentava
  • Esse experimento levou à hipótese final de que o padrão de intervalos de ar poderia codificar a posição da dobra e que um classificador Naive Bayes em microcontrolador poderia decodificar essa posição
  • O conceito do OptiGap é semelhante ao de um encoder linear absoluto
    • Encoders lineares leem códigos por posição para medir movimento linear
    • Encoders absolutos emitem um código único para cada posição, identificando o deslocamento
  • O OptiGap codifica a posição absoluta com padrões de intervalos de ar sensíveis à curvatura dispostos em guias de luz paralelos, funcionando como um único sensor de fibra óptica
  • Escolha do Inverse Gray Code

    • Encoders absolutos costumam usar Gray code
    • Gray code é um código binário em que dois valores consecutivos diferem em apenas um bit
    • No OptiGap, os valores consecutivos precisam diferir no maior número possível de bits para facilitar a distinção
    • Para atender a essa necessidade, foi usado o Inverse Gray code
    • Inverse Gray code é um código binário em que dois valores consecutivos diferem em no máximo n-1 bits
    • Em cada posição com 1 na sequência do código, o filamento é cortado para formar um intervalo de ar
    • Esse método pode ser expandido para qualquer número de bits
    • O protótipo de 3 bits representa 8 posições

Fabricação do protótipo e miniaturização

  • O primeiro protótipo do OptiGap foi feito com 3 filamentos transparentes de TPU para impressora 3D, cada um com um padrão diferente de intervalos de ar
  • Para combinar a luz dos 3 filamentos em um único cabo de fibra óptica, foi usado um acoplador comercial de fibra óptica 3:1
  • Esse protótipo foi a etapa final de validação da hipótese e da teoria de funcionamento do OptiGap
  • Redução de tamanho com fibra óptica de PMMA

    • O protótipo inicial era grande e volumoso por causa do tamanho do filamento de impressora 3D
    • A fibra óptica plástica de PMMA foi avaliada como alternativa menor e mais flexível
    • Foram testadas como fios sensores fibras ópticas de PMMA sem capa de 500, 750 e 1000 micrômetros da Industrial Fiber Optics, Inc.
    • Os três tipos mostraram flexibilidade suficiente, e no geral a fibra de 500 micrômetros foi a mais adequada
  • Redução da complexidade do transceptor óptico

    • Em vez do complexo sensor ToF VL53L0X, foi usada uma configuração com fotodiodo e LED IR
    • Essa mudança reduziu a complexidade do sistema e aumentou a modularidade
    • O fato de os dados do sensor poderem ser lidos por um microcontrolador também foi uma melhoria importante em relação ao protótipo inicial
    • Depois disso, foi construído um sistema de demonstração baseado em microcontrolador STM32 com configuração de fotodiodo e LED IR

Classificação em tempo real rodando no STM32

  • Na etapa final de desenvolvimento, um classificador Naive Bayes foi integrado ao microcontrolador STM32 para decodificar a posição da dobra a partir dos dados do sensor
  • Três motivos levaram à escolha do classificador Naive Bayes
    • Ele é mais eficiente do que instruções if ou tabelas de consulta
    • Pode lidar com dados novos ou nunca vistos antes
    • Pode aumentar a precisão ao considerar relações entre múltiplas variáveis de entrada
  • O classificador é um modelo probabilístico que aplica o teorema de Bayes
    • Nesse sistema, as classes representam a posição da dobra
    • Ele funciona determinando a qual classe uma medição pertence
  • A implementação usou a Arm CMSIS-DSP library
  • Ajuste dos dados do sensor

    • Para integrar o classificador, os dados do sensor de cada padrão de intervalo de ar foram ajustados a uma distribuição gaussiana
    • Foi desenvolvida uma GUI em Python para rotulagem e ajuste rápidos
    • Foi usado o GNB do scikit-learn, ou Gaussian Naive Bayes
    • Depois, a UI foi aprimorada para permitir ajuste de dados mais geral e mais complexo
    • As probabilidades de cada classe foram então calculadas e salvas em arquivos de cabeçalho para uso no microcontrolador
  • Filtragem dos dados do sensor

    • Para melhorar a precisão do classificador, foi implementada no STM32 uma filtragem em duas etapas
    • A primeira etapa é um filtro básico de média móvel
    • A segunda etapa é um filtro de Kalman
    • A filtragem é usada para reduzir o ruído em relação ao sinal de entrada

Demo, integração e próximos passos

  • A demo do OptiGap inclui o processo de montagem e o funcionamento do sistema final de sensor
  • Os itens da demo incluem montagem baseada em filamento de TPU, atenuação de luz pelo sensor OptiGap, ajuste de dados do sensor, classificação de segmentos usando fibra óptica de PMMA e filamento de TPU, e operação subaquática
  • O OptiGap também foi integrado ao EneGate, um sistema modular de atuação e sensoriamento
  • Essa integração inclui projeto de PCB customizada e integração do sistema, com mais detalhes no artigo disponibilizado online
  • Uma versão compacta de PCB óptica para conexão com a PCB do sistema EneGate também foi prototipada
  • O OptiGap também foi validado em um sistema real de robótica macia
    • Os detalhes completos serão tratados no artigo da RoboSoft “Embedded Optical Waveguide Sensors for Dynamic Behavior Monitoring in Twisted-Beam Structures”
  • Esta pesquisa também está avançando para a comercialização

1 comentários

 
GN⁺ 2024-04-12
Comentários no Hacker News
  • É uma pesquisa belíssima e a documentação é extremamente cuidadosa.
    No começo eu ia escrever que, conceitualmente, ela se parece muito com reflectometria no domínio do tempo, mas, como parece que Cindy Harnett é a orientadora, provavelmente já sabem disso :)

    • Fiz um pouco de análise TDR ao analisar a detecção de uso indevido de CATV e, na prática, em geral já sabíamos onde cada CPE estava na infraestrutura de fibra óptica, e o custo de coletar dados de temporização DOCSIS desses equipamentos era basicamente próximo de zero.
  • Muito legal. Gosto da ideia de tornar materiais mais autoconscientes ou inspecionáveis; parece bem ficção científica.
    Em uma pesquisa antes do meu emprego atual, trabalhei em algo que tangencia isso de leve, então foi ainda mais legal ver isto chegar à página principal. O que fizemos foi aprender a matriz de transmissão de uma fibra óptica com uma rede neural de valores complexos. Na área de óptica, antes isso era feito propagando as equações de Maxwell, mas nós superamos o estado da arte por várias ordens de grandeza com uma estrutura muito simples, em que a física real se reduz a uma única multiplicação por uma matriz complexa. A conexão com este trabalho é que, quando a fibra óptica se dobra, é preciso reaprender uma nova matriz. Talvez também fosse possível aprender uma caracterização parametrizada, para que algumas medições de entrada/saída permitissem modelar a forma de spline da fibra óptica. Mas não chegamos a esse ponto.
    Se houver interesse, os artigos estão aqui:
    Artigo mais focado em CS: https://papers.nips.cc/paper_files/paper/2018/hash/148510031...
    Artigo mais focado em física: https://www.nature.com/articles/s41467-019-10057-8

    • Será que também dá para detectar torção, em vez de curvatura?
  • Excelente mesmo. Com um pouco de refinamento, parece que seria possível fazer produção em massa com precisão muito alta.
    Também há muitas aplicações. Usando uma curva de preenchimento de espaço, daria para criar sensores 2D/3D capazes de dar tato a robôs de forma econômica. Enrolado em algo como um tubo flexível, poderia ter sensibilidade direcional e servir também para propriocepção. Parece bem provável que outros fatores que afetem a lacuna de ar, como diferenças de temperatura, também possam ser detectados e localizados.

    • Há muitas aplicações realmente interessantes. Poderíamos ter usado isso para a marcha de pernas robóticas macias, mas é difícil falar em detalhes antes de o artigo ser publicado no fim deste ano.
  • A parte “graças a um excelente orientador” é o ponto central. É exatamente isso que separa uma experiência miserável de uma boa experiência.

  • Ótimo texto. As explicações são muito claras, e o uso de GIFs e recursos visuais para demonstrar os conceitos ficou na medida certa.
    Sou apenas um engenheiro de software com compreensão limitada dessa área, mas gostei de ler do começo ao fim e aprendi bastante. Muito bom trabalho, e parabéns pelo doutorado.

  • Não é exatamente a mesma coisa, mas isso me lembrou o DAS, que usa cabos de fibra óptica em várias tarefas de detecção acústica. Basicamente, é uma alternativa a geofones/hidrofones.
    Também houve um bom número de artigos usando fibras ópticas submarinas para várias tarefas de monitoramento. A Luna Innovations usa isso em aplicações industriais, como detecção de deformação, e, pelo que sei, a Schlumberger também tem várias patentes de sensoriamento por fibra óptica relacionadas a streamers rebocados. Mas nunca vi isso sendo usado em robótica macia.

    • Quando comecei a revisão bibliográfica, fiquei bem intimidado pela quantidade de trabalhos existentes. Especialmente os sensores da família FBG.
      Mas esta ideia é tão fundamentalmente simples que parece que pessoas mais inteligentes acabaram, em geral, passando por ela sem notar.
  • Uma ideia realmente incrível e um trabalho excelente.
    Parece haver uma zona morta bem grande nos dados do sensor; isso não seria fácil de corrigir reduzindo a distância entre os sensores?
    Detectar a direção da curvatura também seria útil? Parece possível dividindo o tubo como o logo da Mercedes e colocando três conjuntos de sensores dentro de um tubo externo.
    Também haveria uma forma de detectar curvaturas em vários pontos? Na configuração atual, os valores parecem ser efetivamente tratados como um OR, então imagino que haveria leituras incorretas. Fico curioso para saber se existe uma boa solução.

    • Boas ideias. Ainda não implementei completamente, mas cada dobra sempre tem a mesma atenuação relativa entre os filamentos, então também é possível detectar várias dobras.
      No fim, o problema vira combinar o delta relativo que mudou de uma leitura para a próxima. A pegadinha, porém, é que, se todas as articulações dobrarem muito, em algum momento a luz deixa de chegar até o fim. Há formas de mitigar isso, mas este comentário já ficou longo demais.
  • Eu estava procurando um sensor capaz de detectar com precisão quão perto e quão rápido um taco de golfe passa sobre ele, e qual é o arco do swing.
    A ideia é criar um launch monitor de golfe que não exija acertar uma bola, permitindo jogar golfe simulado dentro de casa. Algo como jogar junto enquanto assiste ao Masters na TV da sala, mas sem destruir a TV com uma bola de golfe.
    Fico imaginando se um desses sensores, ou vários deles agrupados, seria adequado.

    • Meu pai tinha algo parecido nos anos 90, conectado ao computador.
    • O risco de você acertar o sensor e mandá-lo voando pela sala até a TV parece grande demais.
      Como foi dito acima, acho que seria muito melhor usar câmeras de alta velocidade junto com tecnologia de extração de esqueleto no estilo Kinect. Com uma PlayStation Eye e tecnologia open source existente, talvez já dê para montar isso na garagem.
    • Já existe um produto assim, chamado Optishot. Ele não funciona tão bem quando comparado a sensores modernos baseados em radar ou câmera.
    • Parece que você precisa de um ou dois sensores Hall e uma cabeça de taco com ímã.
  • Isso não é a mesma tecnologia usada na primeira Nintendo Power Glove? https://www.youtube.com/watch?v=3g8JiGjRQNE
    Eles colocavam luz no tubo e mediam essa luz para disparar entradas de tecla. Então, ao dobrar os dedos ou a mão, uma ação acontecia. Nas gerações posteriores, mudaram o mecanismo.

    • Uma das coisas que parecem novas aqui é que dá para detectar vários pontos de curvatura sem precisar de uma fibra óptica para cada ponto de dobra.
  • Não entendo o que acontece se o sensor se dobra em mais de uma posição.
    No começo, como mencionavam sensores ToF, achei que ele observasse a reflexão causada pela dobra e medisse também a distância até ela, mas não parece ser o caso. Se você dobrar o sensor em dois pontos, parece que obtém apenas a soma das atenuações logarítmicas geradas pelas duas dobras. Supondo que a “intensidade” da dobra altere a atenuação de forma contínua, parece que seriam necessários tantos filamentos quanto o número de posições de espaçamento para distinguir qualquer combinação arbitrária de duas dobras.
    Fico me perguntando se li errado, ou se a intenção é usar isso em casos em que se sabe que há apenas uma dobra.

    • Pela seção “Visualization of the OptiGap Sensor System”, parece que o padrão de espaçamento de vários sensores fornece uma assinatura única que pode ser convertida em uma posição exata ao longo do comprimento do sensor.
      Segundo a seção “Realtime Machine Learning on a Microcontroller”, o mecanismo que converte a forma de onda em posição real parece ser baseado em um modelo bayesiano.