当前位置: 首页 > news >正文

Cartographer框架简述

catographer框架分为前端和后端

前端包括雷达数据处理;位姿预测;扫描匹配和栅格地图更新。

后端包括后端:线程池任务与调度;向位姿图添加节点,计算节点的子图内约束和子图间约束(回环检测);多分辨率地图;基于分支定界算法的粗匹配,优化问题的构建与求解。

前端

雷达数据处理

local_trajectory_builder_2d.AddRangeData

点云数据处理,具体包括多传感器时间同步,点云数据去畸,以及体素滤波。

位姿预测

local_trajectory_builder_2d.AddAccumulatedRangeData.ExtrapolatePose

利用pose,以及传入的里程计,imu数据计算出线速度和角速度,不同的情况选择参与运算的传感器不同。利用线速度角速度乘以时间预测平移和姿态。

详见《》

扫描匹配

扫描匹配的目的是找到雷达点云在栅格地图中的位置与角度。

扫描匹配包括相关性扫描匹配RealTimeCorrelativeScanMatcher2D和ceres扫描匹配

将相关性扫描匹配的位姿作为ceres扫描匹配的初始值。

详见《Cartographer 基于ceres的扫描匹配-CSDN博客》

更新概率栅格地图

将雷达数据写入概率栅格地图

详见《Cartographer 栅格地图更新-CSDN博客

后端

后端主要实现的是位姿图优化。向位姿图添加节点AddNode,计算节点的子图内约束和子图间约束(回环检测);多分辨率地图;基于分支定界算法的粗匹配,优化问题的构建与求解。

cartographer 中的节点共有两类---关键帧节点和子图节点。

关键帧指的是子图关键帧,而子图是由连续的若干个激光关键帧拼接到一起形成的子地图。

在carto中子图节点称为submap,关键帧节点称为node

构建约束是在这两类节点之间构建。

图中,三角表示子图,圆圈表示节点,由于传感器的一次扫描数据可能插入到多个不同的子图,所以同一个节点可能和多个子图之间存在一定的匹配关系。

子图内约束:

local 坐标系下,子图原点指向tracking_frame的坐标变换

    node和insertion_submaps之间的约束,由于在前端是,一个node只插入到了两个submap中,所以个node最多只有两个约束为子图内约束。

子图间约束:

根据global坐标计算初值,然后通过分支丁界算法粗匹配与ceres的精匹配,获取校准后的位姿,最后计算local坐标系下,子图原点指向校准后的节点间的坐标变换。

        使用分支定界算法之前需要先构建多分辨率地图。

构建优化问题,并求解:

  1. 确定2个节点在global坐标系下的相对位姿变换
  2. 通过其他方式再次获取这两个节点的相对位姿变换
  3. 对这2个先对位姿变换的差的最小二乘问题进行求解
  4. 进行求解之后会得到一个增量,将当前位姿加上这个增量后就得到了优化后的位姿

     cartographer中通过ceres添加残差项构建优化问题求解。

详见《》

相关文章:

Cartographer框架简述

catographer框架分为前端和后端 前端包括雷达数据处理;位姿预测;扫描匹配和栅格地图更新。 后端包括后端:线程池任务与调度;向位姿图添加节点,计算节点的子图内约束和子图间约束(回环检测)&…...

适用于 Linux、Windows 和 macOS 的免费 ONLYOFFICE 桌面应用程序

前言: 最近也是发现了一款特别好用的免费ONLYOFFICE 桌面应用程序忍不住分享给大家,这款编辑器能够打开、阅读和编辑多种文件类型,包括.docx文档、.pptx幻灯片和.xlsx表格等开放XML格式的Office文档。此外,ONLYOFFICE桌面编辑器还…...

C++面向对象程序设计-北京大学-郭炜【课程笔记(四)】

C面向对象程序设计-北京大学-郭炜【课程笔记(四)】 1、this指针1.1、this指针的作用1.2、this指针和静态成员函数 2、静态成员变量和静态成员函数2.1、基本概念2.2、基本概念总结2.3、如何访问静态成员2.4、静态成员变量的使用场景(重要&…...

前端构建效率优化之路

项目背景 我们的系统(一个 ToB 的 Web 单页应用)前端单页应用经过多年的迭代,目前已经累积有大几十万行的业务代码,30 路由模块,整体的代码量和复杂度还是比较高的。 项目整体是基于 Vue TypeScirpt,而构…...

react实现拖拽的插件

插件一:dnd-kit 插件官网链接https://docs.dndkit.com/introduction/installation 插件二:react-beautiful-dnd https://github.com/atlassian/react-beautiful-dnd/tree/master 两个插件的区别: 插件一可以做到从区域A拖住到区域B 插件二…...

解决Uncaught SyntaxError: Cannot use import statement outside a module(at XXX)报错

报错原因:这个错误通常是因为你正在尝试在一个不支持 ES6 模块语法的环境中使用 import 语句。这可能是因为你的代码是在一个只支持 CommonJS 或 AMD 模块系统的环境中运行的,或者你的代码运行的环境没有正确配置以支持 ES6 模块。如果是在浏览器环境&am…...

PHP如何利用post与get方式传值接收数据

目录 一、POST传值1. 使用curl库发送 POST 请求:2. 使用file_get_contents()函数发送 POST 请求:3. 使用stream_socket_client()函数发送 POST 请求:4. 利用from表单提交数据: 二、GET传值1. 使用http_build_query()函数构建 URL …...

在Mac上搭建MongoDB环境

最近工作中需要装MongoDB环境,搭建过程中遇到了一些问题,在这里记录一下安装MongoDB环境的方法以及问题的解决方法。有两种安装MongoDB的方法:brew安装和手动安装。 目录 使用Homebrew安装MongoDB 手动安装MongoDB(不使用Homebr…...

第三十九天| 62.不同路径、63. 不同路径 II

Leetcode 62.不同路径 题目链接:62 不同路径 题干:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “…...

提高代码质量的 10 条编码原则

提高代码质量的 10 条编码原则 本文转自 公众号 ByteByteGo,如有侵权,请联系,立即删除 今天来聊聊提高代码质量的 10 条编码原则。 软件开发需要良好的系统设计和编码标准。我们在下图中列出了 10 条良好的编码原则。 01 遵循代码规范 我们…...

SHERlocked93 的 2017 年终总结

回家的路上有点无聊,简短回顾一下2017年的得失收获 开始两个月3月到5月用C#完结了一个烂尾的wpf小项目,对自己前半年的.net生涯也算是一个句号(虽然不知道最后有没有采用),后面由于项目组转变技术栈,选择了…...

【FreeRTOS基础入门】任务通知

文章目录 前言一、任务通知介绍1.1 任务通知怎么通信1.2 任务通知与其他通信方式的区别1.3 优势及限制任务通知的优势任务通知的限制 1.4 内部原理 二、任务通知的使用2.1 发出与接收通知简化版2.1 发出与接收通知专业版 总结 前言 FreeRTOS 提供了丰富而灵活的任务通知机制&a…...

python opencv比较图片相似度

目录 一:均值哈希算法 二:三直方图算法 三:单通道直方图 一:均值哈希算法 均值哈希算法是一种快速比较图像相似度的方法。它首先将图像转化为灰度图像,然后计算图像的均值,接着将每个像素的...

校园兼职|大学生校园兼职小程序|基于微信小程序的大学生校园兼职系统设计与实现(源码+数据库+文档)

大学生校园兼职小程序目录 目录 基于微信小程序的大学生校园兼职系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户​微信端功能模块​ 2、管理员服务端功能模块 (1) 兼职管理 (2)论坛管理 (3&…...

linux系统离线安装docker服务教程

1、下载、上传docker-20.10.0.tgz压缩包至服务器,其中,docker下载地址https://download.docker.com/linux/static/stable/x86_64/ 2、新建安装docker脚本docker-install.sh #!/usr/bin/env bash tar -xvf docker-20.10.0.tgzcp docker/* /usr/bin/cat …...

【青龙】快速搭建青龙面板,部署属于你自己的应用!

青龙面板是一个支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台。 废话不多说,直接开始。 这里使用一台 雨云 的云服务器作为演示。雨云注册地址:https://www.rainyun.com/ 优惠码:lz932 使用优惠码注册后绑定微信可获得8折…...

shell脚本实现Mysql分库分表备份

一.数据库的分库分表? 12张图把分库分表讲的明明白白!阿里面试:我们为什么要分库分表https://mp.weixin.qq.com/s?__bizMzU0OTE4MzYzMw&mid2247547792&idx2&sn91a10823ceab0cb9db26e22783343deb&chksmfbb1b26eccc63b784879…...

【算法 - 动态规划】从零开始学动态规划!(总纲)

动态规划 动态规划(Dynamic Programming,DP)是一种优化问题求解方法,通常用于解决具有 重叠子问题 和 最优子结构 性质的问题。它的基本思想是将原问题分解成更小的子问题,通过求解和保存这些子问题的解,避…...

从 Elasticsearch 到 Apache Doris,统一日志检索与报表分析,360 企业安全浏览器的数据架构升级实践

导读:随着 360 企业安全浏览器用户规模的不断扩张,浏览器短时间内会产生大量的日志数据。为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检…...

【力扣 - 二叉树的直径】

题目描述 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 提示: 树中节点数目在范围 [1, 10000] 内…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

React Native 导航系统实战(React Navigation)

导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...