您的位置:首页 > 房产 > 建筑 > 济南网络推广外包公司_南昌定制网站建设_沧州网站建设推广_上海职业技能培训机构一览表

济南网络推广外包公司_南昌定制网站建设_沧州网站建设推广_上海职业技能培训机构一览表

2025/4/21 13:53:00 来源:https://blog.csdn.net/xiaoyaolangwj/article/details/142619050  浏览:    关键词:济南网络推广外包公司_南昌定制网站建设_沧州网站建设推广_上海职业技能培训机构一览表
济南网络推广外包公司_南昌定制网站建设_沧州网站建设推广_上海职业技能培训机构一览表

带着问题去学习:

1、slam发散的原因?

2、如何解决/限制发散?

3、如何在已经有观察值和预测值的ESKF中,再引入一个其他其他观察量?

一、多传感器融合的思考——轮速计

反思为何需要融合多个传感器

我认为根本上的原因,是因为有些传感器在某些场景下会失灵、效果不佳。

比如RTK在过隧道时,无法使用,单IMU工作下,里程计很多就发散了。

发散的原因是缺少速度的观测。所以引入了轮速计。

  1. 位移单位时间采样即为速度。
  2. 轮速观测是在前进方向的上的观测;两个轮子的位移差,结合车身尺寸计算车身的旋转。
  3. 颠簸路面,轮式编码器不太适用。平路slam效果更佳。
  4. 编码器也有效果不佳时——打滑时。融合可以纠正。

轮速观测作为一个速度观测,并非XYZ三个方向上的速度观测,只观测了前进方向上的速度。对IMU有一个单一约束,就可以使得整体位姿没有那么容易发散。

template <typename S>
bool ESKF<S>::ObserveWheelSpeed(const Odom& odom) {assert(odom.timestamp_ >= current_time_);// odom 修正以及雅可比// 使用三维的轮速观测,H为3x18,大部分为零Eigen::Matrix<S, 3, 18> H = Eigen::Matrix<S, 3, 18>::Zero();H.template block<3, 3>(0, 3) = Mat3T::Identity();// 卡尔曼增益Eigen::Matrix<S, 18, 3> K = cov_ * H.transpose() * (H * cov_ * H.transpose() + odom_noise_).inverse();// velocity obsdouble velo_l =

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com