## 0.1 옵티컬 플로우(Optical Flow) 비전 프로세싱 및 하드웨어 연동
수직 고도(Z축) 안정화가 LiDAR의 몫이라면, 수평 방향(X, Y축)의 쏠림 현상(Drift)을 틀어막아 실내나 GPS 음영 지역에서 위치 유지를 단행하는 기술이 바로 하향 카메라 기반 영상 처리계인 **옵티컬 플로우(Optical Flow)**이다. Pixhawk 생태계에서 초창기 자체 개발한 PX4Flow 보드부터 시작하여, 최근에는 가볍고 저렴하며 강력한 마우스 센서 변종인 PixArt의 PMW3901 / PAW3902 칩셋이 옵티컬 플로우 센서의 사실상 표준(De-facto Standard)으로 자리 잡았다.
픽셀 쉬프트(Pixel Shift) 기반 각속도(Angular Velocity) 연산 모델
옵티컬 플로우 카메라는 바닥 면의 특정 텍스처(질감, 코너점 등)를 연속된 두 프레임(\Delta t) 사진에서 비교 분석하여, 해당 텍스처가 렌즈(FOV) 픽셀 평면상에서 얼마나 우측이나 아래측으로 흘러갔는지(Shift)를 추적한다. 센서는 이 움직임을 고유한 단위인 rad/s (라디안/초, 각속도) 로 환산하여 메인 제어기로 뱉어낸다. (v_x\_rad, v_y\_rad)
이때 치명적인 수학적 변수가 하나 존재한다. 카메라가 바닥 패턴의 흘러감을 인식했다고 해서 그것이 무조건 드론이 ’옆으로 이동’했음을 의미하지는 않는다는 점이다. 드론이 제자리에서 가만히 호버링한 채 기수(Roll, Pitch)만 까딱거려도(Rotation), 렌즈 시야에 잡힌 바닥면은 동일하게 흘러가는(Shift) 것처럼 보인다.
자이로스코프(IMU) 연동을 통한 회전 성분(Rotational Flow) 보상
이 착시를 해결하기 위해 PX4Flow나 간이형 PMW3901 드라이버 모듈은 반드시 **자체 초소형 자이로스코프(IMU)**를 동반 내장하고 있거나 기체의 메인 자이로스포크 데이타를 융합해야만 한다.
바닥 텍스처 흘러감(Total Flow)에서 기체가 제자리에서 비틀린 각속도(Gyro Rate)만큼의 픽셀 이동량을 빼버린(Subtraction) 순수 병진 이동(Translational Flow) 성분만을 남겨야 진정한 드론의 평면 이동 벡터가 도출되기 때문이다.
라이다(LiDAR) 거리 데이터를 통한 스케일 팩터(Scale Factor) 보정
순수 병진 이동 각도 단위(rad/s)를 얻어냈다 하더라도, 이것을 물리적인 미터 단위 속도(m/s)로 바꾸려면 바닥까지의 정확한 높이(Distance \ Z) 값 곱셈 인자가 필수적이다. 동일한 1^\circ (Degree)의 픽셀 흘러감이라도, 바닥에서 1m 떴을 때의 1m/s 이동과 100m 떴을 때의 100m/s 이동은 카메라 렌즈 상에서 완전히 똑같이 보이기 때문이다.
따라서 최적의 옵티컬 플로우 모듈 셋업은 카메라 옆에 항상 고성능 점장 LiDAR 모듈을 쌍으로(Pair링) 묶어 두는 아키텍처를 취하게 된다. 수직 LiDAR가 측정한 고도 Z(m) 와 카메라가 포착한 흐름 강도 rad/s 를 EKF2 내에서 곱해(V_{xy} = Z \times \dot{\theta}_{flow}) 최종 평면 이동 속도(m/s)를 도출하는 삼위일체의 방정식이다.