'myIMU6-USB'에 해당되는 글 2건

  1. 2011.01.28 [myIMU6-USB] 그래, IMU 만들자! 팔자!
  2. 2011.01.05 [myIMU6-USB] 위드로봇의 골칫거리 IMU
2010년 작업2011.01.28 12:09
목차
1. 위드로봇의 골칫거리 IMU
2. 그래, IMU 만들자! 팔자! <- 여길 보고 계십니다.
3. myIMU6-USB 제작 및 동작 테스트
4. 양산 및 이벤트

자, 그럼 어떻해야 위드로봇 IMU를 구매해서 편하게 쓰실 수 있을까요? INS을 만들어 시장에 내놓으면 되겠죠. 그런데 잠깐 조사해 보니... 와우. INS 시스템은 외산 일색인데 수 백만원을 웃도는 가격으로 판매가 되고 있습니다. 그리고 다른 장비들과 비슷하게 만들다면... 굳이 위드로봇이 또 만들 이유는 없죠. 융합 알고리즘을 패키징하는데 꽤 많은 노력을 들여야만 하고, 그렇게 되면 제품 단가가 올라갈텐데 비슷한 가격대라면 고객들은 아무래도 검증된 유명 회사의 제품을 구매하시겠죠.

단가를 떨어뜨리는 방법은 가능한 리스크를 줄여 위드로봇에서도 부담없이 만들어 판매할 수 있는 구조밖에는 없습니다. 차분히 앉아 현재 상황을 다시 되돌아보기로 했습니다.

2010년 5월까지 사용했던 INS 시스템 개념도


위 블록 다이어그램이 2010년 상반기까지 위드로봇 맴버들의 머리속에 있던 INS 시스템 개념도입니다. 고객들이 사용하고자 하는 embedded system이 있을 것이고, 이 시스템에서는 이미 기존의 GPS 신호를 수신하고 있겠죠. 위드로봇에서 만들 IMU를 이 시스템과 연결하고(아마도 i2c가 될 것입니다), 융합 알고리즘을 embedded system에서 동작시켜 보다 정확한 위치 정보를 얻는 구조입니다.

위 블록 다이어그램대로라면 다음 문제를 해결해야 합니다.
  1. IMU 를 기존 사용 중인 임베디드 시스템에 손쉽게 연결할 수 있는 디바이스 드라이버를 제공해야 한다. (-> WinCE, Linux, 기타 OS 등의 디바이스 드라이버를 몽창 다 만들어야 하나? 아님 WinCE 정도만 만들면 되나? 드라이버를 제공한다고 해도 분명 이런저런 사용법 문의에 대응해야 하는데 다들 바빠서 이를 지원할 의사를 가진 맴버가 없다)
  2. Fusion Algorithm을 사용자가 손쉽게 사용할 수 있도록 패키징을 해야 하며, OS 별로 제공해야 한다 (-> 이 또한 위드로봇 맴버들 중 아무도 하고 싶어하지 않은 작업입니다)
자, 그럼 비슷해 보일지 모르지만 아래와 같이 개념을 바꾸면 어떻게 될까요?

융합 칩을 만들어 융합 알고리즘은 이 칩에서 담당하고, 기존 시스템에서는 GPS 신호와 동일한 인터페이스로 사용 가능하게 만듭니다.



FusionChip 하드웨어를 만들어 융합 알고리즘을 여기다 넣어 고객에게 공급합니다. 고객 입장에서는 기존 GPS 인터페이와 동일하게 인코딩된 데이터를 UART를 통해 받기에 이게 이전 GPS 일반 데이터인지, IMU와 융합되어 개선된 데이터인지 구별할 필요가 없어지게 됩니다. 위드로봇에서는 개선된 GPS 신호를 편의상 GPS+ 신호라 부르기로 하였습니다. 이 구조면 기존 고객들 입장에서는 technical support를 요청할 일이 없어집니다. 기존 GPS 사용법과 동일하니까요. OS가 뭐든, 프로세서가 뭐든 상관없어집니다. 위드로봇 입장에서는 FusinChip만 잘 설계하여 제공하면 되는 셈입니다.

자, 위 구조라면 이제 맘 놓고 IMU를 판매할 수 있습니다. 이젠 안 만들 이유가 없네요. 여기까지 보신 분들이 '뭐야? 외부에 칩 하나 달아서 융합 알고리즘을 밖으로 빼내는 걸 생각하는데 그렇게 오래걸렸단 말이야?' 하실 것입니다. 그런데 콜롬부스 달걀처럼 듣고 나면 누구나 생각할 수 있는 아이디어지만 위 블록 다이어그램을 도출하는데 2년이 걸렸으며 2년간 여기저기 아디이어를 물으러 다녔지만 별 수확이 없었던 것이 사실입니다.

FusionChip은 회사에 여유가 있으면 ASIC을 하면 좋겠지만 당장은 RISK가 너무 크기에 적절한 one-chip micom을 이용하여 만들기로 하였습니다. 만만한 녀석들이 Cortex-M3 또는 M4 코어를 가지고 있는 녀석들이겠죠. 핵심은 FusionChip은 가능한 작게, 그리고 저렴하게 공급해야 하는데 이럴려면 코드를 쥐어짜서 다이어트를 해야죠. 문제는 꽤 차수가 높은 kalman filter는 쥐어짜는데 한계가 있기에 정 줄여야 하면 matrix 연산이 아닌 수식 자체를 다 풀어 헤치는 수 밖에 없습니다. 그런데... 이게 만만치 않은 작업입니다. 모여서 회의한 결과 한 달 이상이 소요될 것으로 파악되었습니다. 이 작업은 플랫폼 팀장님이 맡으셔서 하기로 했구요.

IMU도 설계에 착수합니다. 앞서 보여드린 uT 결과물(myIMU-DX)은 벌써 2년전에 제작한 모델인지라 그 사이에 성능 및 크기를 개선할 수 있는 여지가 많아졌습니다. 개발 시간이 추가로 들어가겠지만 이번에도 또 작게 만들어 보기로 합니다. 이름부터 정해야겠죠? 3축 가속도, 3축 자이로 센서가 들어간 IMU라는 것을 잘 표현하기 위해 myIMU6-USB로 정했습니다. 추후 지자기 센서까지 포함된 myIMU9-USB도 만들어 보겠다는 의지가 이름에 살짝 묻어있는 것이죠. USB 스텍도 잘 만들어 두었으니 이번에도 쓸 계획이구요.

그 사이에 IMU 회로도가 쓱삭쓱삭 나왔고, 아트워크가 끝났습니다. 크기는? 앞서 공개한 myARS-USB와 동일하게 만들기로 하였습니다. 핀도 똑같구요. 즉 소비자 입장에서는 동일한 인터페이스 보드로 myARS-USB와 myIMU6-USB를 사용하실 수 있는 것입니다.

순풍에 돛 단듯 쭉쭉 진행되던 myIMU6-USB는 역시나 역풍에 맞닥드리게 되는데요... 바로 칩 수급입니다. 이번에는 좀 큰맘 먹고 수량을 늘려 발주를 냈으나, 무려 28주라는 장납기를 받기에 이릅니다. 어떻할까요. 28주면 7달 뒤인데... 7달 뒤에 다시 먼지털고 프로젝트를 시작할까요?

또 이렇게 고민 보따리는 늘어만 갑니다만... 해결을 했습니다~

다음 이야기: 3. myIMU6-USB 제작 및 동작 테스트 (2월 초 포스팅 예정)

Posted by getcome
2010년 작업2011.01.05 15:39

3축 가속도와 3축 자이로 센서를 조합한 후 각각의 센서 출력을 내주는 장치를 IMU(Inertial Measurement Unit)이라고 부릅니다. 보통 움직이는 물체의 관성량을 측정해서 물체의 이동 방향, 현재 포즈(pose), 현재 위치 등을 파악하는데 사용하죠. 항공기의 기체 자세를 파악하는데 많이 사용하였고, 최근에는 게임에 적극적으로 활용되고 있습니다.

위드로봇에서는 국토해양부 국책 과제 "u-Transportation 기반 기술 사업"에서 차량의 위치를 GPS가 있건/없건 정확하게 파악해야 하는 과업을 수행한 바 있습니다. 이 때 약 1년간 국내에서 입수가 가능한 모든 가속도, 자이로 센서를 수급하여 일일히 그 성능을 비교하며 IMU에 적합한 MEMS 센서들을 찾았습니다. 이렇게 만들어진 IMU와 GPS, OBD 신호를 융합하여 GPS 신호가 수신될 때는 좀 더 정밀한 위치를 알려주고, GPS가 수신되지 않는 경우에도 일정 시간 동안은 GPS 오차 범위 내에서 차량의 위치를 알려줄 수 있는 시스템을 제작하여 데모를 보였었죠. 이렇게 IMU를 제작한 때가 2007년 ~ 2008년 사이었습니다. 이 당시만해도 자이로 센서가 무척 비쌌으며(자이로 센서 한 축짜리가 개당 6만원이 넘었었습니다), 1축 자이로만 시장에 풀려있었기에 3축 자이로 센서를 구축하려면 물리적으로 조합을 잘 해야만 했습니다. 그래서인지 상용 제품은 제일 싼 제품이 50만원이 넘곤 했습니다. 과제에서는 차량마다 장착한다는 전제조건을 깔고 있어 10만원 안팎의 시스템이 만들어져야만 했고, 그러다 보니 위드로봇 입장에서는 직접 만들어야만 하는 이슈로 변질되었습니다. 원래 과제 제안서에는 IMU를 만드는 일은 거의 비중이 없는 일처럼 되어있었습니다만, 결국 일 년간 열심히 IMU를 만들어야만 했습니다.

uT 과제에서 만들어진 IMU 입니다. 1축 자이로 센서를 X-Y-Z 축으로 배치하기 위해 나름 이런저런 아이디어를 냈고, 고생 꽤나 했습니다.


약 10개월간의 고생 끝에 나름 작고 성능도 괜찮은 IMU가 만들어졌고, 국토해양부에서는 국가 R&D 전시회가 있을 때마다 이 성과물을 전시해 달라고 요청이 들어왔었습니다. 전시를 몇 번 한 적이 있었는데 그 때마다 IMU와 데모를 보시고들 다들 구매 의사를 밝혀왔었습니다. 아마도 외산 장비는 구매도 힘들고 technical support를 받기 힘들뿐더러 꽤나 괜찮게 동작하는 것으로 보이는 동영상 데모를 보니 '이거다' 싶어하시는 것 같았습니다.  하지만 매번 구매 의사에 죄송하다는 말로 거절할 수 밖에 없었습니다.

이런 곳에서 하루 종일 서 있다가 질문하시는 분들이 오시면 답을 하곤 했습니다. 몇 번 전시회를 나가서 어느 정도 편해질 때도 됐습니다만, 아직도 전시회에 나가는 일은 낯설고 힘든 작업입니다

다 만들어졌고, 잘 동작한다면 파는데 무슨 문제가 있냐고 물어보시지만...

엄밀히 말하면 IMU가 필요하신 분들은 IMU가 아닌 AHRS 또는 INS를 필요로 하는 것입니다. AHRS는 ARS(Attitude Reference System)에 Heading 정보가 추가된 형태로 Attitude Heading Reference System의 약자입니다. INS은 Internal Navigation System의 약자로 IMU 정보와 기타 절대값 위치 정보를 융합하여 움직이는 물체의 위치, 속도 등을 파악하는 시스템이구요. 통상적으로 INS = GPS + IMU 로 구성하곤 하죠. 문제는 위 수식의 "+" 에 있습니다. GPS 신호와 IMU를 말 그대로 자알~ 합쳐야 하는데 통상적으로 이러한 이기종간의 데이터를 융합하는데 많이 쓰이는 방식이 Kalman filter 입니다. 정리해 보면 IMU는 3축 가속도, 3축 각속도를 출력하는 센서 덩어리일 뿐이고, 실제 사용자들이 원하는 정보는 위치 또는 각도 정보이기에 IMU에 무엇가 - kalman filter 던 particle filter 건, 아니면 DCM 이건 - 조작을 취해야 한다는 것입니다. 같은 개념이지만 분야에 따라 차량 쪽에서는 dead reckoning(DR) 이라고 부르는 것이 일반적입니다.

이 분이 Rudolf E Kalman입니다. 제어 분야에서 좀 잘 나가는 분들은 모두 이름 끝에 ~man 이 붙어있습니다. 소시적 제어공학을 열심히 공부할 때 영어 이름에 나도 man을 붙이면 논문이 잘 써질까해서 영문 이름의 개명을 심각히 고민하던 적이 있습니다. 지금요? 제어분야에서 멀어진지 오래됐습니다요.


노이즈 모델이 정규분포를 가지고 시스템이 선형 시스템이라면 kalman filter가 최적이라는 것이 수학적으로 증명되었기에 융합 알고리즘 동네에서는 한마디로 kalman filter가 대장 노릇을 하죠. non-linear 시스템일 경우 particle filter 기법들이 쓰이곤 합니다만, 이것도 extended kalman filter와 비교하면 수학적 완결성 측면에서는 비교가 안됩니다. kalman filter가 20년 전에도 대세였고, 아직도 대세입니다(Kalman filter가 왜 필터인지, Kalman 보다 앞서 더 훌륭한 논문이 있었음에도 불구하고 모든 영광을 Kalman이 가져가게 되었지는지 등의 뒷 이야기도 꽤 흥미진진합니다. 나중에 이 이야기 보따리를 풀어 놓도록 하죠). 또한 냅다 IMU의 출력값을 kalman filter에 넣는다고 잘 동작하는 것이 아닙니다. 적용 시스템에 알맞는 pre-processing이 꽤 필요하죠.

정리해 보면 위드로봇에서 만든 것은 센서 덩어리인 IMU인데 IMU를 구매하시겠다는 분들은 사실은 IMU가 아니라 INS 또는 AHRS를 필요로 한다는데 문제가 있는 것이죠. 물론 Kalman filter를 기반으로한 INS 알고리즘은 나름 훌륭히 만들어져 있으니 제공을 하려면 할 수는 있으나 이를 패키징하는 방법 및 기술 지원에 있어 여러가지로 복잡한 부분이 많다는 점이 문제입니다.

어쨌건 "IMU 하나 산다고 해서 지금 해결하려고 하는 움직이는 물체의 위치를 잘 파악하려는 작업이 해결될 것이라는 생각은 너무나도 순진한(조금 과격하게 표현하면 무식한) 생각"이라는 것입니다. 그런데 다들 동영상 보시고 위드로봇의 IMU를 이용하면 되겠구나 생각하셔서 구매하신다면 그건 말 그대로 "낚인 것" 이라는 것이죠.


이 와중에 지원팀 ioyoi 양이 사고를 하나 칩니다. 양산되어 수 백개씩 쌓여있는 IMU의 사진을 덜컥 찍어 홈페이지에 올린 후, "좀 있으면 팔꺼에요~"라고 올린 것입니다. 그 다음부터 문의 전화, 문의 메일 폭주~~.

이 사진이 문제의 사진입니다. IMU 200여개의 사진을 찍어 올리니 저가형 IMU를 찾던 분에게는 눈이 번쩍 떠지는 사진이었겠죠.



하지만 문의 전화 주신 분들과 잠깐 통화해 보면 역시나 IMU 만 제공해서는 고객들이 원하는 결과를 얻을 수 없음을 금방 알 수 있습니다. 결국 그 다음 솔루션(INS)까지 제공하지 않으면서 IMU를 판매하는 것은 '열심히 공부해서 한 번 잘 써봐~'하고 놀리는 것 밖에는 안됩니다.

위드로봇 내부에서 회의를 몇 번이나 열었습니다만 '융합 솔류션 내지 기타 다른 technical support 기획없이 IMU를 외부에 판매하는 것은 끝도 없을 문의에 일일이 대응해야 하는 대재앙을 불러올 것이다'라는 결론을 내리고 판매 불가 방침을 결정합니다.

이게 2008년도 결론이었습니다. 그리고 2009년, 2010년, 끊임없이 "IMU 안팔아요?" 문의는 계속됩니다. 한 두번이면 모르겠습니다만 지속적으로 문의가 들어오기에 고민을 안할 수가 없습니다. 만들어 놓고도 팔 수 없는 이 고통을 누가 알까요?

다음 이야기:  2. 그래, IMU 만들자! 팔자!
Posted by getcome