이번 장에서 다룰 내용은 서로 다른 좌표 표현 방식을 사용할 경우 발생하는 좌표계(Coodinate system) 불일치를 사전에 막기 위한 규칙이다.
예를 들어 로봇의 센서로서 널리 사용되는 카메라의 경우, 컴퓨터 비전 분야에서 널리 사용되는 z forward
x right
y down
을 기본 좌표계로 사용하고 있는데 로봇은 기본적으로 x forward
y left
z up
을 기본 좌표계로 사용한다. 이러한 상황에서 한쪽 좌표계를 기준으로 맞추어 지지 않는다면 두 좌표계를 사용함에 따른 논리적 문제에 빠지게 된다. 이 문제 이외에도 로봇에서 사용하는 Lidar 및 IMU, Torque 센서들도 제조사별로 서로 다른 좌표계를 사용할 수 있으며 좌표 변환 API가 있더라도 기본 출력이 무엇인가를 미리 알아볼 필요가 있다. 예를 들어 IMU가 NED타입x North, y East, z Down
이냐 ENU타입 x East, y North, z Up
이냐를 잘 살펴봐야한다.
ROS 커뮤니티에서는 모든 좌표계를 삼차원 벡터 표기관습을 이해하기 위한 일반적인 기억법인 오른손 법칙 에 따라 표현한다. 기본적으로 회전 축의 경우에는 아래 그림과 같이 검지, 중지, 엄지를 축을 사용하며 오른손의 손가락을 감는 방향이 정회전 + 방향이다.
예를 들어, 표준 단위와 함께 설명하자면 회전 각은 라디안(radian)단위를 이용하고 있고, 로봇이 제자리에서 시계 12시 방향에서 9시 방향으로 회전하였다면 로봇은 정방향 +1.5708 rad 만큼 회전하였다고 이야기한다.
ROS 커뮤니티에서는 아래 그림과 같이 축 방향 (Axis Orientation)으로 x forward, y left, z up
을 사용한다. 시각화 툴 RViz나 3차원 시뮬레이터 Gazebo에서 이러한 기본 3축의 표현에 있어서 햇갈리지 않도록 RGB의 원색으로 표현하는데 순서대로 Red는 x 축, Green은 y축, Blue는 z축을 의미한다.
회전의 경우 좌표계는 같아도 목적 및 계산 방법에 따라 표현하는 방법이 다양한데 대표적으로 사용하는 회전 표현 방식은 다음과 같다.
1) 쿼터니언 (quaternion)
2) 회전 매트릭스 (rotation matrix)
3) 고정축 roll, pitch, yaw (fixed axis roll, pitch, yaw about X, Y, Z axes respectively)
4) 오일러 각도 yaw, pitch, roll (euler angles yaw, pitch, and roll about Z, Y, X axes respectively)
이상으로 ROS2의 좌표 표현에 대한 설명을 끝내도록하자.