Robotics 분야에서 각도 표현에 자주 사용되는 것이 1) Quaternion과 2) Euler이다.
일반적으로 roll, pitch, yaw로 표현되는 Euler 각도에 다들 익숙할 것인데, 짐벌락이라는 한계때문에 각도는 Quaternion으로 계산하곤 한다. 거두절미하고 바로 코드를 보자
1. Quaternion to Euler 코드
#include <tf/tf.h>
tf::Quaternion q(
msg->pose.pose.orientation.x,
msg->pose.pose.orientation.y,
msg->pose.pose.orientation.z,
msg->pose.pose.orientation.w);
tf::Matrix3x3 m(q);
double roll, pitch, yaw;
m.getRPY(roll, pitch, yaw);
반대도 알아야겠죠~~
2. Euler to Quaternion 코드
#include <tf2/LinearMath/Quaternion.h>
// input : 오일러 각(roll, pitch, yaw)
tf2::Quaternion quat;
quat.setRPY(roll, pitch, yaw);
quat.normalize();
'💻 Computer Science > C,C++' 카테고리의 다른 글
[C++] 코드 한줄로 이더넷 ip, subnetmask, gateway 변경하기 : PowerShell 명령어 (0) | 2025.04.08 |
---|---|
[C++] 각도 제한 [ -pi ~ pi ] (0) | 2024.03.01 |
[C++] 알고리즘 수행 시간 측정 (0) | 2024.02.21 |
[C++] 코딩테스트 때 자주 사용하는 STL 및 알고리즘 정리 (2) | 2024.02.20 |
[C++] 열거형 enum 손쉽게 쓰자 (1) | 2021.01.27 |