- 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 조각을 줄자에 붙인 뒤 여러 지점을 구부리며 광 전달 변화를 관찰함
- 실시간 검증을 위해 간단한 측정·시각화 시스템을 구성함
- 이 검증이 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”에서 다뤄질 예정임
- 이 연구는 상용화 작업으로도 이어지고 있음