오일러 각도(Euler Angle)
오일러 각도는 x, y, z 등 3개의 축을 기준으로 회전시키는 각도계를 의미한다.
오일러 각도는 짐벌락(Gimbal-Lock)이라는 문제가 있어 모든 각도 변환을 표현하는데 한계가 있기 때문에 보완하여 만들어진게 쿼터니언(Qauternion)이다.
설명하자면, 아래와 같이 x, y, z축을 가진 오브젝트가 있고 화살표가 가리키는 방향을 유의해서 볼 때,
x축(빨강)을 90도 회전하고, y축(초록)을 90도 회전하면 z축(파랑)과 x축(빨강)이 한 축으로 겹치면서 한쪽 축에 대한 계산이 불가능해지는데, 이 현상을 짐벌락이라고 한다.
이러한 짐벌락 현상이 생기는 이유는 오일러 각도가 자체적으로 설정되어있는 순서로 해당 축들을 개별적으로 계산하기 때문이다. (예를 들면, x축->y축->z축 순서로 동시가 아닌 독립적으로 계산)
세 개의 축을 동시에 계산하지 않고 각 축을 독립적으로 판단하므로 축이 겹쳐지는 현상이 발생하는 것이다.
이렇게 축이 겹쳐버리면 한 축에 대한 계산이 불가능하기에, 정확한 각도 계산이 불가능하다.
2D 상에서는 오일러 각도로 각도 구현에 문제가 없지만, 모든 각도를 컨트롤 해야하는 3D 환경에서는 오일러 각도만으로는 구현에 한계가 있다. 이러한 문제를 해결하기 위해 나온 것이 쿼터니언이다.
쿼터니언(Quaternion)
쿼터니언은 각 축을 한꺼번에 계산하기 때문에 짐벌락 문제가 발생하지 않는다.
오일러 각도와 다르게 쿼터니언은 4개의 성분(x, y, z, w)로 이루어져 있다.
해당 성분은 벡터(x, y, z)와 스칼라(w)를 의미한다.
쿼터니언은 방향(orientation)과 회전(rotation)을 표현할 수 있다. 하지만 쿼터니언의 회전은 한 방향에서 다른 방향으로 측정하기 때문에 180보다 큰 값을 표현할 수 없다는 단점이 있다.
'Programming > ROS' 카테고리의 다른 글
Navigation stack 설명 (0) | 2022.02.22 |
---|---|
ROS 런치 파일 (0) | 2022.02.14 |
Vector 알아보기 (0) | 2022.02.09 |
ROS 카메라 원격 설정 (0) | 2022.02.07 |
ROS 폴더 및 파일 구성 (0) | 2022.02.07 |