使用eigen时要确保数据类型一致

在使用Eigen库时,确保数据类型一致至关重要,否则会导致错误。本文介绍了两种解决方法:一是直接更改数据类型,例如将`Quaterniond`改为`Quaternionf`;二是利用`.cast<>()`方法进行类型转换。通过这些技巧,可以避免‘YOU_MIXED_DIFFERENT_NUMERIC_TYPES’错误,顺利进行矩阵和旋转的运算。示例中展示了将IMU数据的double类型转换为float类型以匹配后续计算的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用eigen时要确保数据类型一致 否则会报错:

Eigen: YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUME

Eigen::Quaterniond quaternion(imu->orientation.w, imu->orientation.x, imu->orientation.y, imu->orientation.z);
Eigen::Matrix3f rotation_matrix = quaternion.toRotationMatrix();

法一:将第一行的double类型改为float

Eigen::Quaternionf quaternion(imu->orientation.w, imu->orientation.x, imu->orientation.y, imu->orientation.z);
Eigen::Matrix3f rotation_matrix = quaternion.toRotationMatrix();

法二:通过.cast()改为相应类型

Eigen::Quaternionf quaternion(imu->orientation.w, imu->orientation.x, imu->orientation.y, imu->orientation.z);
Eigen::Matrix3f rotation_matrix = quaternion.toRotationMatrix().cast<float>();

pose 里是 Rigid2d double类型 需要转换

const Eigen::Vector2f transed_p = pose.cast<float>() * point.position.head<2>();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值