2016년 2월 28일 일요일

insight gyro 테스트

community sdk 3.1.1 이 릴리즈 된 기념으로 그동안 한번도 사용하지 못했던 gyro 가 어떻게 동작하는지 테스트를 해 봤다.

'community-sdk/examples/C++/GyroData' 를 빌드 해서 실행해 보면 되는데...

$ cd community-sdk/examples/C++/GyroData
$ mkdir build && cd build
$ cmake ..
$ make
$ ./gyro

이렇게 실행해 보면, 아래와 같이 로그가 1초에 한번씩 찍히고
(직전 버전까지는 xmax, ymax 가 모두 0 만 찍어 댔었다)

xmax : 9 ; ymax : 93.7567
xmax : -1 ; ymax : -10.4174
xmax : 9 ; ymax : 93.7567
xmax : -1 ; ymax : -10.4174
xmax : 9 ; ymax : 93.7567
xmax : -1 ; ymax : -10.4174
xmax : 9 ; ymax : 93.7567
xmax : -1 ; ymax : -10.4174
xmax : 9 ; ymax : 93.7567
xmax : -1 ; ymax : -10.4174

창이 하나 떠서 graphical 하게 결과를 보여준다.


그런데... 아무리 고개를 흔들고 이것저것 해봐도, 의미 있는 값을 얻지 못한다.
막연히 좌/우 로 움직일때 순간 xmax 가 -/+ 로 바뀐다 정도?

그래서 코드를 살펴 봤더니 sleep(1) 이 걸려 있어서 실시간으로 gyro 값을 표시하기에 적합하지 않았다.

뭐.. ugly 한 example 을 ugly 한 patch 로 공들이지 말고 테스트가 주 목적이기 때문에...
1초 sleep 을 10 ms 정도로 줄여 주면,

$ git diff main.cpp
diff --git a/examples/C++/GyroData/main.cpp b/examples/C++/GyroData/main.cpp
index 5d2d877..23c613f 100644
--- a/examples/C++/GyroData/main.cpp
+++ b/examples/C++/GyroData/main.cpp
@@ -188,7 +188,7 @@ void updateDisplay(void)
       Sleep(15);
 #endif
 #ifdef __linux__
-      sleep(1);
+      usleep(1*1000*10);
 #endif
    glutPostRedisplay(); 
 }

영상처럼 부드럽게 자이로 값을 확인 할 수 있다.


일단, 이제 gyro 값은 사용할 수 있다는 것에 만족 해야 겠다.

댓글 없음: