어플/Sensor2012. 1. 30. 15:34

 

관련글 목차:

1. Wiimote로 프리젠테이션 하기
2. Wiimote MotionPlus로 자세 구하기
3. Wiimote로 만드는 전자칠판
4. Wiimote를 PC 리모컨으로 사용하자

 


 

Wiimote는 내부에 3차원 가속도 센서(accelerometer)를 가지고 있습니다. 여기에 3차원 각속도 센서(gyroscope)를 가지고 있는 MotionPlus를 연결하면 Wiimote의 회전 방향 계산이 가능합니다. 간단히 MotionPlus에서 측정한 각속도를 적분하면 3차원 각도(roll, pitch, yaw)를 구할 수 있을 것으로 생각됩니다만, 적분할수록 오차가 누적되어 각도가 얼마 못버티고 발산해 버립니다. 이것을 보정하기 위해 가속도 센서에서 측정한 중력 벡터를 사용합니다. 다른 외력이 없는 상태에서 중력은 항상 지구 중심으로 향하기 때문에, 가속도 센서에서 측정되는 중력 벡터의 방향을 보고 roll과 pitch 각을 보정 가능합니다. yaw 각을 보정하기 위해서는 지자기 센서(magnetometer)가 필요한데, Wiimote에는 포함되지 않았습니다.

 

다음 그림은 WiimotePosture 프로그램의 실행 화면입니다.

 

 

좌측 상단의 그래프는 각속도 센서에서 측정된 x(빨강), y(녹색), z(파랑) 축의 각속도 성분을 표시하는 그래프 입니다.  좌측 하단의 그래프는 가속도 센서에서 측정된 가속도 성분을 표시한 그래프 입니다. 중력이 항상 아래로 작용하고 있기 때문에 파란색 그래프가 -1g 근처에서 흔들리는 모습을 볼 수 있습니다.

 

오른쪽 상단의 직 육면체 막대기는 Wiimote를 그린 것입니다. 빨강, 녹색, 파란색 그래프는 각각 좌표계 x, y, z를 나타냅니다. 아래로 굵은 갈색 선은 중력 방향을 표시하며 굵은 남색 선은 각속도 방향을 표시합니다.

 

 

Wiimote와 연결하기 위해 블루투스 동글을 PC에 설치하거나, Windows XP에서 Wiimote를 인식시키는 방법, 프로그램 컴파일을 위해 필요한 라이브러리 다운로드와 Visual Studio 설정은 [여기]를 참조하시기 바랍니다. 

 

아래는 본 프로그램을 실행한 동영상 파일입니다. Wiimote의 움직임을 화면상의 막대기가 잘 추종하는 것을 볼 수 있습니다. 

 

 

실행 파일과 소스코드를 올려봅니다. 필요하신 분께서는 다운받아 사용해 보시기 바랍니다. 

 

 

 

WiimotePosture.exe

WiimotePosture.zip

 

WiimotePosture 소스코드 내에서 회전행렬 R로부터 오일러 각(roll, pitch, yaw)을 계산하는 식은 다음과 같습니다. 소스코드 내에서 행렬 R을 오일러 각으로 환산하는 식이 없어 여기다 적어둡니다. 

[출처] Open Robotics 

Posted by 프로처럼