IMU와 LiDAR를 사용할 때 주의해야하는 점 (번역)

원 저자 - Mateusz Sadowski 블로그

M. Sadowski는 SLAM toolbox 소프트웨어와 Weekly robotics 뉴스레터로 유명한 로보틱스 개발자다!

그 분이 쓰신 글을 살포시 번역했다.

출처: https://msadowski.github.io/basic-sensors-for-mobile-robots/

 


IMUs

Mobile Robot을 쓴다면 IMU를 쓸 확률이 굉장히 높다.

IMU를 고를 때 고려해야하는 점들은 다음과 같다.

  • 가격
  • 센서의 속도
    • 바퀴로 움직이는 로봇은 ~50Hz면 충분하다
    • UAV는 100~500Hz 정도 되야한다
  • Attitude fusion이 센서 단에서 일어나는지, 아니면 여러 센서를 퓨전해야하는지?
  • 인터페이스
    • ROS를 쓴다면 USB가 제일 쉬움
  • 해상도, 최대치, gyro drift
  • 캘리브레이션의 필요 유무

&nbsp

IMU 사용할 때 고려해야할 점

내 경험상으로는, 모바일 로봇에서 사용하기 가장 까다로운 센서는 IMU이다.

자기장 간섭

내가 사용하던 IMU는 magnetometer를 사용해서 heading (i.e. 북쪽방향)을 감지하고, 이를 통해 IMU 값도 보정하는 시스템이였다. 이 IMU는 드론에 탑재되어 heading 값으로 방향도 추정하고 IMU 값으로 움직임 값도 추정했는데, 며칠을 튜닝해도 heading 값이 안정화가 되지 않았었다. 그러다가 ‘우연히’ heading 값에서 보이는 노이즈의 원인을 알게 되었는데, 드론의 메인 로터의 속도가 올라가면서 노이즈도 같이 올라가는 것을 알 수 있었다. 나중에 알고보니, 우리 드론의 날개가 철을 포함하고 있어서 자기장 간섭을 일으켰던 것이다.

로봇에 IMU를 쓴다면, 무조건 자기장이 발생할 수 있는 위치에서 최대한 멀리 떼놔야한다. 자기장이 발생하기 쉬운 곳은 1. 철로 된 파트, 2. 액추에이터, 3. 고전류 케이블이다.

진동

모든 로봇은 진동한다. 다만 그 진동의 형태는 로봇이 어떤 재료로 만들어져있고 어떤 땅을 밟고 있냐에 따라 달라진다. 우리 팀이 만든 규칙으로는, 드론을 날려서 x,y,z축의 움직임을 그렸을 때, x축이나 y축의 움직임이 z축을 교차한다면 진동이 너무 강하다고 판단하기로 했다.

로봇을 평지에 가만히 세워놨는데, x/y축 움직임이 z축을 교차한다면 아마 그 진동을 댐프닝 해야할 것이다.

축 방향 정의

회사마다 IMU 축을 다르게 정의한다. IMU를 쓰고 있다면, 지금 당장 당신이 생각했던 축이랑 실제 축이랑 같은지 확인하길 추천한다. 심지어 종종 IMU 회사에서 제공하는 소프트웨어에서 정의한 축과 실제 축이 다를 때도 있다. 얼른 가서 확인해라. 왜냐면 나도 엄청 많이 틀렸거든.

실제 IMU 센서의 축과, 소프트웨어의 축이 맞는지 다시 한번 확인하자.

캘리브레이션

종종 직접 캘리브레이션 해야하는 IMU 들이 있다. 그리고 진짜 가끔, 캘리를 해줬는데 껐다가 키면 캘리 정보가 날아가는 IMU도 있다 (너 말하는거다, BNO055…). IMU를 타겟 디바이스에 탑재하고나서 모든 축으로 회전할 수 있는지, IMU를 사기 전에 꼭 확인하자. 탑재까지 다 했는데 캘리 다시해야하면 진짜 골치아프다.

 


LiDARs

라이다를 쓰면 ‘스마트’해진다. 내 로봇이 드디어 주변 환경을 ‘인식’할 수 있게 되고, 또 라이다라는거 그 자체가 그냥 엄청 미래적이잖아!

라이다를 쓴다는건 레이저 펄스를 쏴서 돌아오는 시간이 얼마나 걸리는지 측정한다는걸 의미한다. (종종 phase shift 같은거도 고려할거다.)

라이다는 다음과 같은 종류가 있다.

  1. 단일 점 거리 센서 (e.g. Terabee TeraRanger Evo, Lightware SF11/C)
  2. 2D 라이다 (e.g. RPLidar A1, Hokuyo UTM-30LX)
  3. 3D 라이다 (e.g. Ouster, Velodyne Puck)
  4. 비-반복 패턴의 라이다 (e.g. Livox Mid-40)

원하는 목적에 맞춰서, 원하는 인터페이스에 맞춰서, 필요한 파워에 맞춰서 제품을 고르면 된다.

 

LiDAR를 사용할 때 고려해야하는 점

라이다를 써보기 전 까지는 빛이 이렇게 짜증난다는걸 몰랐다.

눈 피로

자, 여기서 얘기할 내용에 과학적인 증거는 없다는 점을 미리 밝힌다.

근데 라이다 쓰다보면 눈이 겁나 빨리 피곤해진다. 뭔가 엄청 얼얼한데, 내 동료 말로는 ‘아프진 않은데 아픈 느낌’이라고 한다. 대부분의 라이다들은 ‘Eyes-safe’하다고 하지만, 그래도 라이다를 직접 쳐다보지 않는걸 추천한다.

라이다를 오래 쓰면서 생기는 시력문제들에 대해 아는 사람들이 있으면 댓글로 좀 알려주길.

Flip effect

아주 가끔 나타나는 현상이지만, 한번 나타나면 사람 돌아버리게 하는 현상이다.

이건 뭐 어떻게 고쳐야할지도 모르겠다. 그냥 센서 펌웨어를 업데이트하고 기도할 수밖에.

정확히 어떤 현상이나면, 실제 거리보다 훨씬 적은 거리로 센서 값이 나오는 것이다.

실제 거리는 초록색+빨간색이다. 근데 센서는 초록색이라고 말하는거고.

시야각

LiDAR에 탑재된 레이저 에미터도 시야각이 있다. 약 1~3도 정도 된다.

아래 그림처럼 생긴 상황에서 레이저를 쏘면, 센서는 어떤 값을 내놓을거라고 생각하는가?

정답: 센서마다 다르다. 어떤 센서는 Y를 주고, 어떤 센서는 X,Y 다 주고, 어떤 센서는 X랑 Y의 평균값을 준다. 이런-

최대거리 vs 외부환경

LiDAR의 데이터시트를 보면 최대거리를 보통 알려준다. 하지만 실제로 쓸 떄는 이 최대거리에서 센서 값 절대로 안나온다.

이런 라이다 스펙은 보통 어느정도 반사가 가능한 물체들에 대해서 테스트 되기 때문이다. 완전 시꺼먼 물체에서는 절대로 최대거리로 나오지 않는다.

아래 그림은 태양빛에 있는 여러 빛의 스펙트럼이다. 보통 라이다 센서들은 여기 빨간색으로 표시된 부분에서 푹 떨어지는 곳들의 파장으로 레이저를 쏜다. 그래야 태양빛에 대한 간섭을 덜 받게 된다.

라이다를 사려고 하는데 몇 nm의 파장을 쓰는지 안알려준다? 그 라이다 회사는 걸러야한다.