高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十一)ESKF中融合速度观测量;发散的原因;如何解决发散;以及对slam的理解

news2025/1/13 15:49:47

带着问题去学习:

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 obs
    double velo_l =

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2215129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[AWS云]kafka调用和创建

背景:因为因为公司的项目需要使用AWS的kafka&#xff0c;但是在创建和使用过程中都遇到了一些报错和麻烦&#xff0c;毕竟老外的东西&#xff0c;和阿里云、华为使用起来还是不一样。 一、创建&#xff08;创建的配置过程就略了&#xff0c;就是配置一下可用区、型号&#xff0…

1. 到底什么是架构

1. 什么是架构 定义&#xff1a;架构&#xff0c;又名软件架构&#xff0c;是有关软件整体结构与组件的抽象描述&#xff0c;用于指导大型软件系统各个方面的设计优秀架构的特点&#xff1a;优秀的性能、超强的TPS/QPS的承载能力、高可用决定了你能够支撑多少PV的流量 2. 什么…

AUTOSAR_EXP_ARAComAPI的5章笔记(12)

☞返回总目录 5.4.6 方法 骨架侧的服务方法是抽象方法&#xff0c;必须由继承骨架的服务实现子类进行重写。让我们来看一下我们服务示例中的 Adjust 方法&#xff1a; /*** 对于所有输出和非空返回参数* 生成一个包含非空返回值和/或输出参数的封装结构。*/ struct AdjustOu…

智能之眼:如何用监督学习教机器看懂世界

智能之眼&#xff1a;如何用监督学习教机器看懂世界 智能之眼&#xff1a;如何用监督学习教机器看懂世界前言什么是监督学习&#xff1f;监督学习的工作流程监督学习的类型 监督学习的常用算法1. 线性回归&#xff08;Linear Regression&#xff09;线性回归的优缺点 2. 逻辑回…

ui入门

一、QWidget类 QWidget是Qt中所有用户界面对象的基类&#xff0c;即可视化组件和窗口的基类都是此类&#xff0c;因此QWidget类内部包含了大量的与UI相关的基础特性。 最最基础的属性&#xff1a; width : const int 宽度&#xff0c;单位像素&#xff0c;不计算边框。属性在文…

房屋租赁系统(论文+源码)-kaic

摘 要 社会的发展和科学技术的进步&#xff0c;互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱&#xff0c;也逐渐进入了每个用户的使用。互联网具有便利性&#xff0c;速度快&#xff0c;效率高&#xff0c;成本低等优点。 因此&#xff0c;构建符…

下载Edge/Chrome浏览器主题的背景图片

当我们为Edge安装了心仪的主题后&#xff0c;希望把对应的背景图片下载保存要怎么做呢&#xff0c;以下图的“湖心小屋”主题为例。如下图&#xff0c;我们已经在应用商店中按照了该主题。 当打开新标签页后&#xff0c;可以欣赏这个主题内置的背景图片。 如果想要下载这个背景…

安装macOS Sequoia注意事项

随着macOS Sequoia的发布&#xff0c;许多Mac用户开始计划升级到这一最新版本。然而&#xff0c;升级系统并非简单点击“升级”按钮即可。在安装新系统之前&#xff0c;有一些关键的注意事项可以帮助你避免潜在的问题&#xff0c;确保顺利过渡到macOS Sequoia。本文将详细介绍在…

《深度学习》【项目】自然语言处理——情感分析 <上>

目录 一、项目介绍 1、项目任务 2、评论信息内容 3、待思考问题 1&#xff09;目标 2&#xff09;输入字词格式 3&#xff09;每一次传入的词/字的个数是否就是评论的长度 4&#xff09;一条评论如果超过32个词/字怎么处理&#xff1f; 5&#xff09;一条评论如果…

源码编译 FunASR for windows on arm

源码编译 FunASR for windows on arm 这里有编译好的&#xff0c;直接下载使用 https://github.com/turingevo/FunASR-build/releases 编译 1 下载 onnxruntime-win-arm64&#xff1a; https://github.com/microsoft/onnxruntime/releases/download/v1.16.1/onnxruntime-win…

最优化方法-Goldstein准则学习记录(matlab代码实现)

目录 一、前言 二、定义 三、代码实现 四、改良后 五、总结 一、前言 作为非精确线性搜索方法的一种&#xff0c;旨在降低计算量&#xff0c;提高算法效率。在迭代过程中没有必要把线性搜索搞得十分精确&#xff0c;因此我们可以放松对的精度要求&#xff0c;只要求每一步…

葵花卫星影像数据NC转tif

数据介绍 葵花8号卫星(Himawari-8)是日本发射的静止轨道气象卫星,由日本气象厅(JMA)运营。该卫星自2015年7月7日开始正式启用,主要用于观测东亚和西太平洋区域的天气情况。葵花8号卫星搭载了先进的光学仪器,能够提供高分辨率的气象数据。 卫星分辨率 葵花8号卫星的主要…

Python学习-注释,输入,运算符

python中的注释 单行注释以#开头多行注释 这是一段多行注释。 你可以在这里写很多行注释&#xff0c; 这些内容都不会被Python解释器执行。 中文编码注释#coding:utf-8按住ctrl\ 多行注释 输入函数 input() 输入值的类型为str 基本使用 presentinput(输入的提示) print(pre…

STL.string(中)

string 迭代器findswapsubstrrfindfind_first_of&#xff08;用的很少&#xff09;find_last_of&#xff08;用的很少&#xff09;find_first_not_of&#xff08;用的很少&#xff09; 迭代器 int main() {//正向迭代器string s1("hello world!");string::iterator i…

PCL 渐进式形态学滤波

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 如果不太了解点云数学形态学的基本理论,可以先阅读这篇文章:https://blog.csdn.net/dayuhaitang1/article/details/123172437。形态学中的窗口结构一直存在着这样的问题:如果窗口结构元尺寸过小,则无法去除一些…

Qt入门教程:创建我的第一个小程序

本章教程&#xff0c;主要介绍如何编写一个简单的QT小程序。主要是介绍创建项目的过程。 一、打开QT软件编辑器 这里使用的是QT5.14.2版本的&#xff0c;安装教程参考以往教程&#xff1a;https://blog.csdn.net/qq_19309473/article/details/142907096 二、创建项目 到这里&am…

《OpenCV计算机视觉》—— 风格迁移

将下图中的图片换一种风格展示出来 如下图结果&#xff1a; 完整代码如下&#xff1a; import cv2image_yuantu cv2.imread("wechat.jpg") image cv2.resize(image_yuantu, dsizeNone, fx0.5, fy0.5) cv2.imshow(yuan tu, image) cv2.waitKey(0)""&q…

如何实现简单的 WinCC 项目分屏?

说明&#xff1a; 本文主要介绍了在不使用分屏器的情况下&#xff0c;通过 WinCC 项目中的设置&#xff0c;实现简单的分屏操作。两台显示器分别显示不同的 WinCC 画面&#xff0c;独自操作&#xff0c;互不影响。 试验环境 &#xff1a; 本文试验时所用硬件及软件环境…

python基础——网络编程

前言 互联网时代&#xff0c;现在基本上所有的程序都是网络程序&#xff0c;很少有单机版的程序了。网络编程就是如何在程序中实现两台计算机的通信。 Python语言中&#xff0c;提供了大量的内置模块和第三方模块用于支持各种网络访问&#xff0c;而且Python语言在网络通信方面…

如何避免日志中打印SQL语句:完整解决方案

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…