1P by GN⁺ | ★ favorite | 댓글 1개
  • OptiGap은 유연한 구조 때문에 기존 센서를 붙이기 어려운 소프트 로보틱스에서, 센서가 어느 지점에서 구부러졌는지 알아내기 위해 개발된 시스템임
  • 유연한 광 파이프 안에 만든 공기 간격이 굽힘에 따라 빛 전달량을 바꾸고, 이 차이를 위치별 신호 패턴으로 활용함
  • 아이디어는 투명 1.75mm TPU 3D 프린터 필라멘트를 줄자에 붙여 굽히던 실험에서 시작됐고, Raspberry Pi·VL53L0X·ZeroMQ·Python GUI로 실시간 변화를 확인함
  • 초기에는 3가닥 TPU 필라멘트와 3:1 광섬유 커플러를 썼지만, 이후 500마이크론 PMMA 광섬유와 포토다이오드·IR LED·STM32 기반으로 더 작고 단순한 구조로 발전함
  • 최종 시스템은 STM32에서 나이브 베이즈 분류기와 2단계 필터링으로 굽힘 위치를 분류하며, EneGate 통합·소형 PCB·실제 소프트 로봇 검증·상용화 작업까지 이어짐

OptiGap의 역할

  • OptiGap은 밧줄처럼 생긴 센서가 구부러졌을 때 어느 지점이 구부러졌는지 알아내는 시스템임
  • 이 기능은 굽힘 위치 검출, 즉 bend localization에 해당함
  • 주요 적용 분야는 소프트 로보틱스임
    • 소프트 로보틱스는 유연하거나 말랑한 구조를 다루기 때문에, 전통적인 센서를 쓰기 어려운 경우가 많음
  • OptiGap이라는 이름은 “optical”과 “gap”의 결합임
    • 유연한 광 파이프 안의 공기 간격으로 굽힘 위치 검출에 필요한 코드 패턴을 만듦

우연한 발견에서 시작된 실험

  • 출발점은 광 파이프, 즉 광 케이블을 통해 빛이 전달되는 방식을 굽힘 감지 센서로 활용하려던 실험이었음
  • 투명 1.75mm TPU 3D 프린터 필라멘트를 줄자에 붙여 실험하던 중, 전기테이프가 붙은 지점을 구부리자 빛 전달량이 크게 줄어듦
  • 전기테이프의 끈적한 잔여물이 필라멘트를 늘리고, 그 결과 빛 전달이 줄어든다는 가설을 세움
  • 더 긴 TPU 조각을 줄자에 붙인 뒤 여러 지점을 구부리며 광 전달 변화를 관찰함
  • 실시간 검증을 위해 간단한 측정·시각화 시스템을 구성함
    • VL53L0X ToF 센서용 Linux I2C 드라이버를 작성함
    • Raspberry Pi에서 실행하고 데이터를 ZeroMQ 소켓으로 보냄
    • Python GUI가 소켓에서 데이터를 받아 실시간 광 전달 데이터를 시각화함
  • 이 검증이 OptiGap 개발로 이어진 결정적 순간이 됨

공기 간격으로 위치 정보를 인코딩

  • 빛이 약해지는 위치를 제어할 수 있다면, 센서 안에 구부러진 위치 정보를 인코딩할 수 있음
  • 전기테이프 방식은 실용적이지 않아 더 안정적이고 일관된 감쇠 구조가 필요했음
  • 해결책은 필라멘트를 자른 뒤 실리콘 슬리브로 다시 연결하고, 그 사이에 작은 공기 간격을 남기는 방식이었음
  • 공기 간격은 두 광 파이프 끝면의 상대적 이동이나 회전을 이용함
    • 한쪽 광 파이프 면이 다른 쪽과 어긋나면 간격을 건너 전달되는 빛의 비율이 달라짐
    • 굽힘 각도가 커질수록 간격에서 빠져나가는 빛이 많아짐
    • 이렇게 변한 광 신호 세기를 알려진 패턴과 연결해 센서 신호로 사용함

여러 공기 간격과 Inverse Gray Code

  • 다음 단계는 하나의 TPU 광 파이프를 따라 여러 개의 공기 간격을 만들고, 구부렸을 때의 감쇠 패턴을 측정하는 것이었음
  • 각 공기 간격에서 광 강도가 감소했고, 굽힘 각도가 커질수록 감소가 더 뚜렷해짐
  • 이 실험은 공기 간격 패턴으로 굽힘 위치를 인코딩하고, 마이크로컨트롤러의 나이브 베이즈 분류기로 위치를 디코딩한다는 최종 가설로 이어짐
  • OptiGap의 개념은 절대식 선형 인코더와 유사함
    • 선형 인코더는 위치별 코드를 읽어 선형 이동을 측정함
    • 절대식 인코더는 각 위치마다 고유한 코드를 내보내 변위를 식별함
  • OptiGap은 병렬 광 파이프에 배치된 굽힘 민감 공기 간격 패턴으로 절대 위치를 인코딩하며, 단일 광섬유 센서처럼 동작함
  • Inverse Gray Code 선택

    • 절대식 인코더는 흔히 Gray code를 사용함
    • Gray code는 연속된 두 값이 한 비트만 다른 이진 코드임
    • OptiGap에서는 연속 값이 가능한 한 많은 비트에서 달라져야 구분이 쉬움
    • 이 요구에 맞춰 Inverse Gray code를 사용함
    • Inverse Gray code는 연속된 두 값이 최대 n-1개 비트에서 달라지는 이진 코드임
    • 코드 시퀀스에서 1이 있는 위치마다 필라멘트를 잘라 공기 간격을 만듦
    • 이 방식은 임의의 비트 수로 확장 가능함
    • 프로토타입은 3비트로 8개 위치를 표현함

프로토타입 제작과 소형화

  • 첫 OptiGap 프로토타입은 서로 다른 공기 간격 패턴을 가진 투명 TPU 3D 프린터 필라멘트 3가닥으로 제작됨
  • 3가닥의 빛을 하나의 광섬유 케이블로 합치기 위해 상용 3:1 광섬유 커플러를 사용함
  • 이 프로토타입은 OptiGap의 가설과 작동 이론을 검증하는 최종 단계였음
  • PMMA 광섬유로 크기 축소

    • 초기 프로토타입은 3D 프린터 필라멘트 크기 때문에 크고 부피가 컸음
    • PMMA 플라스틱 광섬유는 더 작고 유연한 대안으로 평가됨
    • Industrial Fiber Optics, Inc.의 자켓 없는 PMMA 광섬유 500·750·1000마이크론 제품을 센서 가닥으로 테스트함
    • 세 종류 모두 충분한 유연성을 보였고, 전체적으로 500마이크론 광섬유가 가장 적합했음
  • 광 트랜시버 복잡도 축소

    • 복잡한 VL53L0X ToF 센서 대신 포토다이오드와 IR LED 구성을 사용함
    • 이 변경으로 시스템 복잡도를 줄이고 모듈성을 높임
    • 센서 데이터를 마이크로컨트롤러로 읽을 수 있게 된 점도 초기 프로토타입 대비 중요한 개선임
    • 이후 STM32 마이크로컨트롤러와 포토다이오드·IR LED 구성을 기반으로 데모 시스템을 제작함

STM32에서 실행되는 실시간 분류

  • 최종 개발 단계에서는 STM32 마이크로컨트롤러에 나이브 베이즈 분류기를 통합해 센서 데이터에서 굽힘 위치를 디코딩함
  • 나이브 베이즈 분류기를 선택한 이유는 세 가지임
    • if 문이나 조회 테이블보다 효율적임
    • 새 데이터나 이전에 보지 못한 데이터를 처리할 수 있음
    • 여러 입력 변수 사이의 관계를 고려해 정확도를 높일 가능성이 있음
  • 분류기는 베이즈 정리를 적용하는 확률 모델임
    • 이 시스템에서 클래스는 굽힘 위치를 의미함
    • 측정값이 어떤 클래스에 속하는지 판단하는 방식으로 동작함
  • 구현에는 Arm CMSIS-DSP library를 사용함
  • 센서 데이터 피팅

    • 분류기 통합을 위해 각 공기 간격 패턴의 센서 데이터를 가우시안 분포에 맞춤
    • 빠른 라벨링과 피팅을 위해 Python GUI를 개발함
    • scikit-learn의 GNB, 즉 Gaussian Naive Bayes를 사용함
    • 이후 더 일반적이고 복잡한 데이터 피팅이 가능하도록 UI를 개선함
    • 각 클래스의 확률은 계산된 뒤 마이크로컨트롤러에서 사용할 헤더 파일로 저장됨
  • 센서 데이터 필터링

    • 분류기 정확도를 높이기 위해 STM32에서 2단계 필터링을 구현함
    • 첫 단계는 기본 이동 평균 필터임
    • 두 번째 단계는 Kalman 필터임
    • 필터링은 입력 신호 대비 노이즈를 줄이는 데 사용됨

데모, 통합, 다음 단계

  • OptiGap 데모에는 조립 과정과 최종 센서 시스템의 동작이 포함됨
  • 데모 항목은 TPU 필라멘트 기반 조립, OptiGap 센서를 통한 빛 감쇠, 센서 데이터 피팅, PMMA 광섬유와 TPU 필라멘트를 이용한 세그먼트 분류, 수중 동작으로 구성됨
  • OptiGap은 EneGate라는 모듈형 구동·센싱 시스템에도 통합됨
  • 이 통합에는 맞춤형 PCB 설계와 시스템 통합이 포함되며, 자세한 내용은 온라인 공개 논문에서 다룸
  • EneGate 시스템의 PCB와 연결하기 위한 소형 광학 PCB 버전도 프로토타입으로 제작됨
  • 실제 소프트 로봇 시스템에서도 OptiGap을 검증함
    • 전체 세부 내용은 RoboSoft 논문 “Embedded Optical Waveguide Sensors for Dynamic Behavior Monitoring in Twisted-Beam Structures”에서 다뤄질 예정임
  • 이 연구는 상용화 작업으로도 이어지고 있음

댓글과 토론

Hacker News 의견들
  • 아름다운 연구이고 문서화도 아주 꼼꼼함
    처음엔 개념적으로 시간 영역 반사 측정법과 많이 닮았다고 쓰려 했는데, Cindy Harnett이 지도교수인 것 같으니 이미 알고 있을 듯함 :)

    • CATV 부정 사용 탐지 분석을 하면서 TDR 분석을 조금 해봤는데, 실제로는 각 CPE가 광섬유 설비의 어디에 있는지 대체로 알고 있고, 그 장비들에서 DOCSIS 타이밍 데이터를 수집하는 비용이 사실상 0에 가까웠음
  • 정말 멋짐. 재료를 더 자기 인식적이거나 검사 가능하게 만드는 발상이 좋고, 아주 SF 같음
    지금 직장 전 연구에서도 이와 아주 살짝 맞닿은 일을 했어서, 이게 메인에 올라온 걸 보니 더 반가움. 우리가 한 일은 복소값 신경망으로 광섬유의 전송 행렬을 학습하는 것이었음. 광학 분야에서는 이전에 Maxwell 방정식을 전파시키는 방식으로 했지만, 우리는 실제 물리가 단일 복소 행렬 곱셈으로 귀결되는 아주 단순한 구조로 최신 성능을 몇 자릿수나 앞섰음. 여기 연구와의 연결점은 광섬유가 휘면 새 행렬을 다시 학습해야 한다는 데 있음. 입력/출력 측정을 몇 번 해서 광섬유의 스플라인 형태를 모델링할 수 있도록, 매개변수화된 특성화를 학습하는 것도 가능할 수 있음. 다만 우리는 거기까지는 못 갔음
    관심 있으면 논문은 여기 있음
    CS 중심 논문: https://papers.nips.cc/paper_files/paper/2018/hash/148510031...
    물리 중심 논문: https://www.nature.com/articles/s41467-019-10057-8

    • 휘어짐 대신 비틀림도 감지할 수 있을까?
  • 정말 훌륭함. 약간만 다듬으면 아주 높은 정확도로 대량 생산도 가능해 보임
    응용처도 풍부함. 공간 채움 곡선을 쓰면 로봇에 촉각을 비용 효율적으로 줄 수 있는 2D/3D 센서를 만들 수 있을 것 같음. 유연한 튜브 같은 것에 감으면 방향 민감성을 갖춰 고유수용감각에도 쓸 수 있겠음. 온도 차이처럼 공기 간격에 영향을 주는 다른 요소도 감지하고 위치를 특정할 수 있을 가능성이 높아 보임

    • 멋진 응용처가 정말 많음. 소프트 로봇 다리의 보행에 써볼 수 있었지만, 논문이 올해 말 출판되기 전까지는 자세히 말하기 어려움
  • “훌륭한 지도교수 덕분에”라는 부분이 핵심임. 비참한 경험과 좋은 경험을 가르는 차이가 바로 거기에 있음

  • 훌륭한 글임. 설명이 아주 명확하고, 개념을 보여주는 GIF와 시각 자료 활용도 딱 맞았음
    이 분야 이해가 제한적인 소프트웨어 엔지니어일 뿐이지만, 읽는 내내 즐거웠고 많이 배웠음. 잘했고 박사 학위도 축하함

  • 정확히 같은 건 아니지만, 여러 음향 감지 작업에 광섬유 케이블을 쓰는 DAS가 떠오름. 기본적으로 지오폰/하이드로폰의 대안 같은 방식임
    해저 광섬유를 여러 감시 작업에 쓰는 논문도 꽤 있었음. Luna Innovations가 변형률 감지 같은 산업 응용에 쓰기도 하고, Schlumberger도 예인 스트리머 관련 광섬유 감지 특허를 여러 개 갖고 있는 걸로 앎. 다만 소프트 로봇에 쓰는 건 본 적이 없음

    • 문헌 조사를 처음 할 때는 기존 연구가 너무 많아서 꽤 부담스러웠음. 특히 FBG 계열 센서가 그랬음
      하지만 이 아이디어는 너무 근본적으로 단순해서, 더 똑똑한 사람들이 오히려 대체로 지나쳐온 듯함
  • 정말 놀라운 아이디어이고 훌륭한 작업임
    센서 데이터에 데드존이 꽤 커 보이는데, 센서 간 거리를 줄이면 쉽게 고칠 수 있는 것 아닌가?
    휘어지는 방향을 감지하는 것도 유용할까? Mercedes 로고처럼 튜브를 나누고, 하나의 외부 튜브 안에 센서 세트를 3개 넣으면 가능할 것 같음
    여러 군데 휘어짐을 감지할 방법도 있을까? 현재 구성에서는 값을 사실상 OR 처리하는 셈이라 잘못된 판독이 나올 듯함. 좋은 해결책이 있을지 궁금함

    • 좋은 아이디어들임. 아직 완전히 구현하진 않았지만, 각 굽힘은 항상 가닥들 사이에서 같은 상대 감쇠를 가지므로 여러 굽힘을 감지하는 것도 가능함
      결국 한 판독값에서 다음 판독값으로 바뀐 상대 델타를 맞춰보는 문제가 됨. 다만 모든 관절이 많이 휘면 어느 시점에는 끝까지 빛이 도달하지 않는다는 함정이 있음. 이를 완화하는 방법도 있지만 이미 댓글이 너무 길어졌음
  • 골프채가 센서 위를 지나갈 때 얼마나 가까운지, 얼마나 빠른지, 스윙 호가 어떤지 정확히 감지할 수 있는 센서를 찾고 있었음
    공을 치지 않아도 되는 골프 런치 모니터를 만들어서 실내에서 시뮬레이션 골프를 할 수 있게 하려는 아이디어임. 거실에서 TV로 Masters를 보며 같이 플레이하되, 골프공으로 TV를 박살내지 않는 식임
    이 센서 하나나 여러 개를 묶어서 쓰면 적합할지 궁금함

    • 아버지가 90년대에 컴퓨터에 연결하는 비슷한 물건을 갖고 있었음
    • 센서를 때려서 방을 가로질러 TV로 날아가는 위험이 너무 커 보임
      앞서 말했듯 고속 카메라와 Kinect식 골격 추출 기술을 함께 쓰는 편이 훨씬 나을 것 같음. PlayStation Eye와 기존 오픈소스 기술만으로도 차고에서 만들 수 있을 듯함
    • 이미 존재하는 제품이고 Optishot이라고 부름. 최신 레이더나 카메라 기반 센서와 비교하면 그다지 잘 작동하지 않음
    • 홀 센서 한두 개와 자석이 달린 클럽 헤드가 필요해 보임
  • 이건 첫 Nintendo Power Glove에 들어간 기술과 같은 것 아닌가? https://www.youtube.com/watch?v=3g8JiGjRQNE
    튜브에 빛을 넣고 그 빛을 측정해서 키 입력을 트리거했음. 그래서 손가락이나 손을 구부리면 동작이 일어났던 것임. 이후 세대에서는 메커니즘을 바꿨음

    • 여기서 새로워 보이는 점 중 하나는 각 굽힘 지점마다 광섬유가 하나씩 필요하지 않고도 여러 굽힘 지점을 감지할 수 있다는 것임
  • 센서가 둘 이상의 위치에서 휘면 무슨 일이 일어나는지 이해가 안 됨
    초반에 ToF 센서를 언급해서 굽힘에서 오는 반사를 보고 그 거리까지 측정하는 줄 알았는데, 실제로는 아닌 것 같음. 센서를 두 군데에서 구부리면 두 굽힘에서 생긴 로그 감쇠의 합만 얻는 것처럼 보임. 굽힘의 “세기”가 감쇠를 연속적으로 바꾼다고 가정하면, 임의의 두 굽힘 조합을 구분하려면 간격 위치 수만큼 가닥이 필요해 보임
    내가 잘못 읽은 건지, 아니면 굽힘이 하나만 있다고 아는 경우에 쓰도록 의도된 건지 궁금함

    • “Visualization of the OptiGap Sensor System” 단락을 보면, 여러 센서의 간격 패턴이 센서 길이상의 정확한 위치로 변환될 수 있는 고유한 서명을 제공하는 것 같음
      “Realtime Machine Learning on a Microcontroller” 단락에 따르면, 파형을 실제 위치로 변환하는 메커니즘은 베이지안 모델 기반으로 보임