크게 두가지 방법이 있습니다.

Physics Controller 를 이용한 접근

혹은

Supervisor Controller 를 이용한 접근


이렇게 두가지 방법이 있는데
제가 테스트 해본 바로는 신뢰성이 Physics Controller 가 더 높아보입니다.

Aibo ERS-7 의 Trajectory 를 구성하고 로봇이 실제 움직이는 모양이
Trajectory 와 어느정도 비슷한지를 평가하기 위해 Supervisor Controller 의
supervisor_field_get 함수를 이용해서 값을 추출해 봤는데
좌표값이 제대로 매칭이 안되는 것으로 판단됩니다.

로봇의 루트 노드를 타겟으로 잡고 값을 추출 할 때는 매칭이 되지만
하나의 일부 노드를 타겟으로 잡고 값을 추출 할 때는 제대로 매칭이되지 않는 것 같습니다.

반면에

Physics Controller 에서 ODE 라이브러리의 dBodyGetPosition 함수를 통해 값을 추출했을때는 로봇의 위치와 추출된 좌표값이 제대로 매칭이 되는 것으로 판단됩니다.

그리고 상대적 좌표값으로 변환했을 때, 나타나는 점들의 자취또한 Physics Controller 를 이용해 추출해 낸 값들에서 더 올바른 형태가 나타났습니다.

정리해보면

로봇이 현재 위치한 포인트를 잡아내는 방법은 두가지가 있는데
Physics ControllerdBodyGetPosition 이 있고,
Supervisor Controllersupervisor_field_get 이 있는데,

로봇의 한 노드의 포인트를 잡아내기에는 Physics Controller 를 쓰는것이 더 좋고,
현재 로봇의 루트노드의 포인트를 잡아 위치한 곳을 판단하기에는
Supervisor Controller 를 이용하는 것이 더 편합니다.

P.S 아직 정확히 왜 차이를 보이는지는 알아내지 못했습니다. -ㅠ-

Posted by SHHyun

Webots 시뮬레이터를 혹시라도 이용하시는 분이 있으시다면

참고해 볼만한 내용 입니다.

제작자인 Olivier 씨에게 문의를 해 보았는데

x,y,z 좌표계의 1 이라는 수치가 의미하는 길이가

실세계의 1 미터 라고 하는 군요

그리고 Webots 에서 구현되어 있는 모든 로봇들의 좌표계에 대한 것인데

좌표들은 다 부모 노드에 종속되어 있는 상대적 좌표계 라고 하네요

즉 가장 외부로 나와 있는 것은 dWorld 객체에 종속되어 있는 좌표계를 이용하는 것이고

로봇의 각각의 부분은 그것이 부착되어 있는 부모 노드의 좌표를 원점으로 종속되어 있다고 하는군요.

혹시 웹봇을 이용하시는분이 계신다면 저한테 연락좀 주시겠습니까?

서로 자료에 대해 공유도 하고 토론도 하게요 ^^

Posted by SHHyun