eigen欧拉角处理

Eigen的eulerAngles欧拉角转换

今天发现一个问题,有些旋转四元数利用eigen的eulerAngles转化出来的结果与ros的tf包的getRPY转化出来的结果不太一样,比如转化出来的yaw角中间差了 π \pi π,比如ros转换为-0.1,eigen转化出来3.0415926;简单搜了下好像是eigen的转化有点问题,但是我又不想用弄ros,所以这里干脆自己重新弄了一个函数处理

static Eigen::Vector3d R2ypr(const Eigen::Matrix3d& R) {
        Eigen::Vector3d n = R.col(0);
        Eigen::Vector3d o = R.col(1);
        Eigen::Vector3d a = R.col(2);

        Eigen::Vector3d ypr(3);
        double y = atan2(n(1), n(0));
        double p = atan2(-n(2), n(0) * cos(y) + n(1) * sin(y));
        double r = atan2(a(0) * sin(y) - a(1) * cos(y), -o(0) * sin(y) + o(1) * cos(y));
        ypr(0) = y;
        ypr(1) = p;
        ypr(2) = r;

        return ypr;
    }

这样就与ros的tf的getRPY的结果一样了。

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值