坐标系变换与坐标变换的关系

问题: 假如坐标系A变换到坐标系B的变换关系为T,那么坐标系B中的点Pb变换到坐标系A中将如何计算呢?

回顾一个实际例子: 在激光SLAM中,假如雷达的位姿已知为pose,雷达坐标系下点云坐标为Point,则点云在地图坐标系中的坐标计算公式为:P(map)=Pose*Point;

在该例子中,Pose相当于地图坐标系变换到雷达坐标系的变换关系,也就是说P(map)=T(map-lidar)*P(lidar)。

总结:
从上述例子中可以看出坐标系变换与坐标变换的关系为:P(B)=T(B-A)*P(A)
式中:
T(B-A):B坐标系变换到A坐标系中的变换关系;
P(B): 变换到B坐标系的坐标;
P(A): A坐标系中的坐标。

应用:
1、在组合导航或者SLAM领域,已知惯导输出的导航坐标系位姿为X,Y,Z,yaw,pitch,roll,激光雷达点云坐标系的局部坐标为P(lidar),假设雷达坐标系与惯导坐标系完全重合而不需要变换,那么如何计算点云坐标在导航坐标系下的坐标呢?
求解:根据组合导航位姿计算变换矩阵T,则P(导航)=T*P(lidar)。

//姿态角计算旋转矩阵
template<typename T>
		void INS2Matrix(const T &r, const T &p, const T &h, Eigen::Matrix<T, 4, 4> &m)
		{
			T rr = r * PI / 180.0;
			T pr = p * PI / 180.0;
			T hr = -h * PI / 180.0;//负号的添加很关键
			T sh = sin(hr);
			T ch = cos(hr);
			T sp = sin(pr);
			T cp = cos(pr);
			T sr = sin(rr);
			T cr = cos(rr);
			m = Eigen::Matrix<T, 4, 4>::Identity();
			m(0, 0) = ch * cr - sh * sp * sr;
			m(0, 1) = -sh * cp;
			m(0, 2) = ch * sr + sh * sp * cr;

			m(1, 0) = sh * cr + ch * sp * sr;
			m(1, 1) = ch * cp;
			m(1, 2) = sh * sr - ch * sp * cr;

			m(2, 0) = -cp * sr;
			m(2, 1) = sp;
			m(2, 2) = cp * cr;
		}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值