今天加班又晚了,应鱼粉要求,再推荐一下超好用的Python坐标转换库

大家好,我是加班加到天荒地老的小惨鱼。今天看ROS2的tf文档,里面让安装一个库
在这里插入图片描述
小鱼一看这个我熟悉,不就是小鱼最常用的那个。又想起来之前有一位粉丝在CSDN上留言给小鱼说想让小鱼讲一讲这个库:
在这里插入图片描述
小鱼之前也有说过这个库,今天时间不多就结合之前的文章再详细说一说

transforms3d参考文档:http://matthew-brett.github.io/transforms3d/
(需要翻墙,建议直接看源码,非常清晰)

一、安装

这里安装pip不行就用pip3,ubuntu20之后算是统一了。

pip install transforms3d

如果安装过慢,可以尝试换清华源

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple transforms3d

二、模块介绍

打开官方文档,可以看到api的参考。这个库把每一个常用方法按照规则分类好了。小鱼常用的是euler、quaternions、affines这三个模块。

  • euler 模块,顾名思义就是和欧拉角相关的转换都在这里,比如欧拉角转旋转矩阵
  • quaternions、是和四元数相关的,比如四元数转成欧拉角、四元数转旋转矩阵
  • affines,可以用于合成矩阵,比如旋转矩阵和平移矩阵合并成齐次矩阵

其他的比如缩放、仿射变换、轴角等等,都非常齐全。
在这里插入图片描述

三、小鱼常用方法

下面的常用方法都是小鱼使用最多的一些方法。

将欧拉角转换为旋转矩阵

tfs.euler.euler2mat(math.radians(rx),math.radians(ry),math.radians(rz))

合并成齐次矩阵

tfs.affines.compose(np.squeeze(np.asarray((x,y,z))), rmat, [1, 1, 1])

旋转矩阵转四元数

tfs.quaternions.mat2quat(m[0:3,0:3])

四元数转旋转矩阵

tfs.quaternions.quat2mat([w,q[0],q[1],q[2]])

四、应用:Tsai_Lenz手眼标定算法实现

def get_matrix_eular_radu(x,y,z,rx,ry,rz):
    rmat = tfs.euler.euler2mat(math.radians(rx),math.radians(ry),math.radians(rz))
    rmat = tfs.affines.compose(np.squeeze(np.asarray((x,y,z))), rmat, [1, 1, 1])
    return rmat
    
def rot2quat_minimal(m):
    quat =  tfs.quaternions.mat2quat(m[0:3,0:3])
    return quat[1:]

def quatMinimal2rot(q):
    p = np.dot(q.T,q)
    w = np.sqrt(np.subtract(1,p[0][0]))
    return tfs.quaternions.quat2mat([w,q[0],q[1],q[2]])

print(tfs.affines.compose(Tcg,np.squeeze(Rcg),[1,1,1]))

五、总结

总结这里说一下最重要的事情,可能肯多同学都会遇到的一个问题,那就是欧拉角的形式有很多种,有多少种呢?
在这里插入图片描述
一共24种,学过机器人学基础知识的同学都知道,欧拉角的旋转可以绕着原来的坐标系旋转,也可以绕着自己本身坐标系进行旋转,s和r分别代表静态的和旋转之后的坐标系,而后面的xyz,xzy指的是旋转
顺序,所以从任何一个旋转方式转换成欧拉角的时候都要注意转成之后的欧拉角的旋转形式。

今天就到这里了,小鱼还要继续加班,大家早点休息哈~

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值