Open Source Robotics

고품질 오픈소스 로봇 프로젝트, 도구 및 소프트웨어의 엄선된 컬렉션.

6D rotation representation

  • 다른 이름: 6D rotation, continuous 6D rotation representation
  • 카테고리: Foundations & spatial maths › Frames & transforms
  • 태그: rotations, pose-estimation, deep-learning, spatial-math, so3

3D 회전을 두 개의 3D 벡터, 즉 회전 행렬의 처음 두 열로 부호화하여, 신경망이 오일러 각이나 쿼터니언의 불연속성 없이 회전을 예측할 수 있게 하는 것.

정의

6D 회전 표현(6D rotation representation)은 3D 회전을 여섯 개의 수, 즉 정규직교화한 뒤 회전 행렬의 처음 두 열이 되는 두 개의 3D 벡터로 부호화한다. 2019년 Zhou 등이 회전을 예측하거나 입력으로 받는 신경망을 위해 도입했다. 신경망의 여섯 출력을 회전으로 바꾸려면, 첫 번째 벡터를 정규화하고, 두 번째 벡터에서 첫 번째 벡터 방향의 성분을 제거한 뒤 그 결과를 정규화하며(Gram-Schmidt 직교화와 같다), 세 번째 열은 앞의 두 열의 외적으로 구한다. 두 벡터가 0이 아니고 평행하지 않은 어떤 여섯 수든 유효한 회전 행렬로 사상된다.

동기는 연속성이다. Zhou 등은 4차원 이하의 실수 공간에서 3D 회전을 나타내는 모든 표현이 불연속임을 보였다. 어딘가에서는 서로 가까운 회전이 멀리 떨어진 표현으로 사상되거나, 그 반대가 일어난다. 오일러 각은 각도가 한 바퀴 돌아 넘어가는 곳에서 값이 튀고 짐벌 락을 겪는다. 축-각 표현은 회전 π에서 넘어간다. 쿼터니언에는 q와 −q가 같은 회전을 나타내는 이중 피복이 있으며, 이 모호함을 없애려고 한쪽 반구로 제한하면 경계에서 값이 튄다. 이런 목표값을 회귀하도록 학습한 신경망은 불연속 함수를 근사해야 하며, 이는 일부 회전에 대해 큰 오차를 낳는 경향이 있다. 6D 표현은 전체 9D 회전 행렬과 마찬가지로 연속이며, 그들의 실험에서 이 표현으로 학습한 신경망이 회전을 더 정확하게 학습했다.

6D 형식은 최소 표현이 아니라 중복 표현이며, 그 Gram-Schmidt 단계는 첫 번째 열을 두 번째 열과 다르게 다룬다. 흔한 대안은 행렬의 아홉 원소를 모두 예측하고 특이값 분해로 가장 가까운 회전에 투영하는 것으로, 이는 열들에 대해 대칭이다. 손실은 보통 여섯 개의 원시 수가 아니라 복원한 회전 행렬에서, 예를 들어 측지 각도나 프로베니우스 거리로 계산한다. 이 표현은 학습용 도구다. 고전적인 추정과 최적화는 보통 쿼터니언이나 리 대수 갱신으로 회전군 위에서 직접 작동한다.

중요한 이유

많은 로봇 학습 및 인식 시스템은 물체와 손의 자세, 인간 관절 회전, 엔드 이펙터 행동 같은 방향을 예측한다. 회전 표현의 선택은 이런 신경망이 얼마나 잘 학습되는지에 영향을 주며, 6D 표현은 회전인 출력과 입력에 흔히 쓰는 기본값이 되었다.

주요 응용

  • 신경망을 이용한 물체 및 손 자세 추정
  • 관절 회전을 예측하는 인간 자세 및 신체 모델
  • 학습된 로봇 정책과 행동 공간에서의 엔드 이펙터 방향
  • 카메라 자세 회귀와 상대 자세 추정
  • 운동과 파지의 생성 모델

실제 사례

한 팀이 손목에 착용한 센서로부터 사람의 팔 자세를 추정하는 신경망을 학습시킨다. 신경망은 어깨와 팔꿈치에 대해 오일러 각을 출력하는 대신 관절마다 여섯 개의 수를 출력한다. 작은 층이 각 여섯 수 묶음을 Gram-Schmidt와 외적으로 회전 행렬로 바꾸고, 손실은 이 행렬들과 모션 캡처 실측값 사이의 측지 각도로 둘을 비교한다. 센서에서 들어오는 방향 입력에도 같은 부호화를 쓰므로, 신경망은 각도가 한 바퀴 돌아 넘어가는 현상을 전혀 보지 않는다. 배치 시에는 예측한 회전 행렬을 로봇 제어기를 위해 쿼터니언이나 관절 각도로 변환한다.

흔한 오해

  • 6D는 완전한 6-DoF 자세를 뜻한다 — 이 표현은 회전만 다루며, 자유도가 3인 회전을 여섯 개의 수로 부호화한다
  • 신경망의 여섯 출력은 이미 회전이다 — 유효한 회전 행렬이 되려면 정규직교화하고 외적으로 완성해야 한다
  • 학습에는 쿼터니언이 언제나 최선이다 — 이중 피복과 한쪽 반구로 제한할 때 생기는 값의 튐 때문에 회귀 목표로서 불연속이다
  • 6D 표현은 모든 곳에서 쿼터니언을 대체한다 — 신경망의 입력과 출력을 위해 설계된 것이며, 필터와 최적화기는 보통 회전군 위에서 직접 작동한다

알아야 할 사람

  • 행동 공간과 관측 공간을 설계하는 로봇 학습 연구자
  • 자세 추정을 다루는 컴퓨터 비전 엔지니어
  • 인간 운동 및 애니메이션 연구자
  • 파지 및 조작 신경망을 학습시키는 엔지니어

관련 기술

  • 회전 행렬(Rotation Matrix)
  • 쿼터니언(Quaternions)
  • 그람-슈미트 직교화(Gram-Schmidt Orthogonalization)
  • SVD 직교화
  • PyTorch3D

관련 용어

  • SE(3)
  • Yaw / Pitch / Roll
  • Transform
  • Coordinate Frame
  • Equivariance

관련 프로젝트

  • pySLAM: Hybrid Python/C++ visual SLAM pipeline with classic and deep-learning front-ends
  • AprilTag: The standard visual fiducial marker system for robot localization and pose estimation
  • manif: Header-only C++ Lie theory library for robotics state estimation
  • PyPose: PyTorch library for differentiable robotics with deep learning and Lie group optimization
  • Intrinsic Core: Intrinsic's open industrial robot stack: real-time control, planning and perception
  • PULP-Dronet: Visual navigation for nano-drones with CNN inference onboard a PULP processor.

이 웹사이트는 JavaScript가 필요합니다. 오픈소스 로봇 프로젝트를 탐색하려면 JavaScript를 활성화하세요.