机器人姿态转换详解:python和c++案例

机器人姿态转换详解

一、姿态表示方法

机器人姿态由位置(XYZ坐标)和方向(旋转参数)组成,常用表示方法如下:

  1. 欧拉角(ZYX顺序):绕固定坐标系的Z轴(偏航Yaw)、Y轴(俯仰Pitch)、X轴(滚动Roll)旋转,表示为[A, B, C]
  2. RPY角(XYZ顺序):绕动坐标系的X轴(Roll)、Y轴(Pitch)、Z轴(Yaw)旋转,表示为[Rx, Ry, Rz]
  3. 旋转矩阵:3×3正交矩阵,描述坐标系间的旋转变换,可通过欧拉角或RPY角计算。
  4. 四元数:单位四元数[w, x, y, z],避免万向节锁,适合插值运算。
  5. 齐次变换矩阵:4×4矩阵,整合旋转矩阵(3×3)和平移向量(3×1),方便复合变换运算。
二、核心转换公式
  1. 欧拉角→旋转矩阵(ZYX顺序)

    def euler_to_rot_matrix(roll, pitch, yaw):
    R_x = np.array([[1, 0, 0],
    [0, np.cos(roll), -np.sin(roll)],
    [0, np.sin(roll), np.cos(roll)]])
    R_y = np.array([[np.cos(pitch), 0, np.sin(pitch)],
    [0, 1, 0],
    [-np.sin(pitch), 0, np.cos(pitch)]])
    R_z = np.array([[np.cos(yaw), -np.sin(yaw), 0],
    [np.sin(yaw), np.cos(yaw), 0],
    [0, 0, 1]])
    return R_z @ R_y @ R_x
    
  2. 四元数→旋转矩阵

    def quaternion_to_rot_matrix(q):
    w, x, y, z = q
    return np.array([
    [1-2*y*y-2*z*z, 2*x*y-2*z*w, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xMathematics

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值