四元数,相对变换
问题描述
- 精选答案
-
一号位姿 q1 = [0.35, 0.2, 0.3, 0.1],t1=[0.3, 0.1, 0.1]。
二号位姿 q2=[-0.5, 0.4, -0.1, 0.2], t2=[-0.1, 0.5, 0.3]。
某点在一号坐标系下坐标为p=[0.5, 0, 0.2]。求p在二号坐标系下的坐标。
假设在世界坐标系中p点的坐标为P。
用四元数做旋转则有(在Eigen中四元数旋转为q×v(左乘),数学中则为q×v×q^-1),进行世界坐标到机器人坐标的坐标变换:
q1 × P + t1 = p1
q2 × P + t2 = p2
两式联立消除P,得到:
p2 = q2 × q1^-1 × (p1 - t1) + t2
#include <iostream>
using namespace std;
#include <eigen3/Eigen/Core>
#include <eigen3/Eigen/Geometry>
int main()
{
//四元数
Eigen::Quaterniond q1 = Eigen::Quaterniond(0.35, 0.2, 0.3, 0.1).normalized();
Eigen::Quaterniond q2 = Eigen::Quaterniond(-0.5, 0.4, -0.1, 0.2).normalized();
//平移向量
Eigen::Vector3d t1 = Eigen::Vector3d(0.3, 0.1, 0.1);
Eigen::Vector3d t2 = Eigen::Vector3d(-0.1, 0.5, 0.3);
//目标向量
Eigen::Vector3d p1 = Eigen::Vector3d(0.5, 0, 0.2);
Eigen::Vector3d p2;
- 其他回答
-
四元数是一种数学工具,用于表示三维空间中的旋转。它由一个实部和三个虚部组成,可以用来进行相对变换。相对变换是指将一个坐标系相对于另一个坐标系进行旋转和平移的操作。通过使用四元数进行相对变换,可以更高效地进行旋转操作,避免了矩阵运算的复杂性。四元数的乘法运算可以实现多个旋转的组合,而不需要进行矩阵乘法。因此,四元数在计算机图形学和机器人学等领域中得到广泛应用。
猜你喜欢内容
-
简单网:构建全网教育数据枢纽,让知识检索化繁为...
简单网:构建全网教育数据枢纽,让知识检索化繁为“简”回答数有0条优质答案参考
-
去三亚有什么好玩的地方
去三亚有什么好玩的地方回答数有1条优质答案参考
-
石狮一日游必去景点推荐
石狮一日游必去景点推荐回答数有1条优质答案参考
-
电气工程师的证书考取条件是什么
电气工程师的证书考取条件是什么回答数有1条优质答案参考
-
房地产估价师的具体报考条件有啥
房地产估价师的具体报考条件有啥回答数有1条优质答案参考
-
房产经纪人的工作内容具体包含什么
房产经纪人的工作内容具体包含什么回答数有1条优质答案参考
-
学习小提琴都有哪些难点
学习小提琴都有哪些难点回答数有1条优质答案参考
-
企业行政管理证书的含金量怎么样
企业行政管理证书的含金量怎么样回答数有1条优质答案参考
-
初学者要怎么入门小提琴
初学者要怎么入门小提琴回答数有1条优质答案参考
-
报考珠宝鉴定师要啥条件
报考珠宝鉴定师要啥条件回答数有1条优质答案参考
















