激光SLAM7-基于已知位姿的构图算法

2023-11-13

1. 通过覆盖栅格建图算法进行栅格地图的构建

1.1 Theory

算法流程
判断是否为free

1.2 code

这里没有判断idx和hitPtIndex是否有效:

//start of TODO 对对应的map的cell信息进行更新.(1,2,3题内容)
GridIndex hitPtIndex = ConvertWorld2GridIndex(world_x, world_y);
std::vector<GridIndex> freeIndexs = TraceLine(robotIndex.x, robotIndex.y, hitPtIndex.x, hitPtIndex.y);
for (const auto& idx : freeIndexs) {
   
    const auto& linIdx = GridIndexToLinearIndex(idx);
    if (pMap[linIdx] == 0) {
   
        continue;
    }

    pMap[linIdx] += mapParams.log_free;
}

const auto& linIdx = GridIndexToLinearIndex(hitPtIndex);
pMap[linIdx] += mapParams.log_occ;
if (pMap[linIdx] > mapParams.log_max) {
   
    pMap[linIdx] = mapParams.log_max;
}
//end of TODO

1.3 result

栅格地图

2. 通过计数建图算法进行栅格地图的构建

2.1 Theory

在这里插入图片描述
在这里插入图片描述

2.2 Code

//start of TODO 对对应的map的cell信息进行更新.(1,2,3题内容)
GridIndex hitPtIndex = ConvertWorld2GridIndex(world_x, world_y);
std::vector<GridIndex> freeIndexs = TraceLine(robotIndex.x, robotIndex.y, hitPtIndex.x, hitPtIndex.y);
for (const auto& idx : freeIndexs) {
   
    if (!isValidGridIndex(idx)) {
   
        continue;
    }
    const auto& linIdx = GridIndexToLinearIndex(idx);
    pMapMisses[linIdx] += 1;
}

if (isValidGridIndex(hitPtIndex)) {
   
    const auto& linIdx = GridIndexToLinearIndex(hitPtIndex);
    pMapHits[linIdx] += 1;
}
//end of TODO
//start of TODO 通过计数建图算法或TSDF算法对栅格进行更新(2,3题内容)
for (uint32_t i = 0; i < mapParams.width * mapParams.height; ++i) {
   
    int visNum = pMapHits[i] + pMapMisses[i];
    if (visNum > 0) {
   
        pMap[i] = pMapHits[i] * 100 / (pMapHits[i] + pMapMisses[i]); 
    }
}
//end of TODO

2.3 Result

Result

3. TSDF建图算法

3.1 Theory

在这里插入图片描述
在这里插入图片描述

Ref

  1. 激光SLAM理论与实践(七)–基于已知定位的建图 ( 有课件)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

激光SLAM7-基于已知位姿的构图算法 的相关文章

随机推荐

  • 防火墙的目标地址转换和源地址转换

    遇到一起防火墙故障 对防火墙的工作原理和目标地址转换 源地址转换有了进一步的了解 记录于此 结果说在前面 网络结构非常简单 外网 防火墙 内网 内网中架有网站 在外网使用域名访问 内网中机器需要上外网 也需要用域名互访 在这种情况下 地址转
  • 熵最大定理 两种理解

    在信息论中 我们会关注一个信息源熵的大小 简单的说 熵表征了一个信源的不确定度 我们已经对下面这个定理烂熟于心 在所有定义在有限字符集上的随机符号中 熵最大发生在等概时 为H x logM M为符号个数 首先我们可以从直观上理解熵最大定理
  • FlatBuffer在JAVA下的使用

    早听说FatBuffer的大名 据说比Protobuffer效率还要高 出于当初对Protobuf良好的印象 FlatBuffer同样是Google出品 因此在一个项目中尝试使用了FlatBuffer IDL之类的描述语言 轻车熟路地过了
  • IntelliJ IDEA快速自动生成Junit测试类

    前言 之前在写业务逻辑的时候 都很少有写单元测试 因公司项目用的分布式架构 将整个系统抽成了很多微服务 测试一个接口 需要启动好几个服务 才能进行测试 并且有时候 我们只是改了一点代码 并不需要全部启动 太耗时 这个时候 就可以编写单元测试
  • 数字图像处理——图像锐化

    图像增强是图像处理的一个重要环节 早期的图像处理就是从图像增强开始的 人们研究对质量低的图像进行处理以获得改善质量后的图像 现今的图像增强还为后续的图像处理 如图像信息提取 图像识别等 提供更高识别度的图像 从图像处理技术来看 图像的摄取
  • 关于fiddler手机(APP)抓包时无法连接网络问题处理

    个人在新入职公司 想安装fiddler 尝试通过手机连接本地电脑访问服务器网络 然后再通过fidder在本地和与服务器之间抓取数据 之前也有在上家公司用过 但不知是网络认证的原因 还是这次下载的fidder自身的问题 当我将认证书传到手机端
  • ubuntu 下 screenfetch 的安装及使用

    ubuntu 下 screenfetch 的安装及使用 origin link https linux cn article 1947 1 html screenfetch 是一个CLI bash 脚本 用于在屏幕截图中显示系统 主题信息
  • 【数据库系统概论】第七章:数据库设计

    视频 参考 文章目录 概念设计 E R图 逻辑结构设计 把E R图转化为表 物理结构设计 概念设计 E R图 E R图 矩形 实体 椭圆 属性 菱形 联系 联系 两个实体之间的联系 1 1 一对一的联系 身份证和人民 1 N 一对多的联系
  • Java 基于Excel模板实现导出Excel并插入数据

    本案例基于spring boot架构 一 需求介绍 给定一个Excel模板 在指定位置插入数据 然后将生成的excel导出 二 实现方法介绍 1 准备Excel模板 模板中要插入数据的地方用 代替 其实就是占位符 与mybatis的sql语
  • openwrt luci使用本地软件源更新软件包,更新package.sig签名

    官方的源在国外 一般访问速度比较慢 本地源可以快速解决这个问题 有时自己编译的软件升级发布版本使用本地源 能够更好的维护与安装 为了保证兼容性 尽量使用同一个源提供的SDK打包的源软件 把编译出来的ipk文件上传到本地服务器 在索引中添加新
  • HBase讲解

    1 HBase在Hadoop中的位置 HBase Hadoop Database 是一个开源的 面向列 Column Oriented 适合存储海量非结构化数据或半结构化数据的 具备高可靠性 高性能 可灵活扩展伸缩的 支持实时数据读写的分布
  • 竞赛选题 基于机器视觉的车道线检测

    文章目录 1 前言 2 先上成果 3 车道线 4 问题抽象 建立模型 5 帧掩码 Frame Mask 6 车道检测的图像预处理 7 图像阈值化 8 霍夫线变换 9 实现车道检测 9 1 帧掩码创建 9 2 图像预处理 9 2 1 图像阈值
  • Vue+elementUI el-input输入框手机号校验

    1 限制input框内只能输入数字 且为11位 type number 数字类型 maxlength属性对type number 类型的输入框无效 ninput if value length gt 11 value value slice
  • 达梦数据库教程:docker安装DM8数据库

    安装前准备 软硬件 版本 终端 X86 64 架构 Docker 2023 年 6 月版 下载 Docker 安装包 请在达梦数据库官网下载 Docker 安装包 导入安装包 拷贝安装包到 opt 目录下 执行以下命令导入安装包 docke
  • windows下nginx的安装及使用

    1 下载nginx http nginx org en download html 下载稳定版本 以nginx Windows 1 12 2为例 直接下载 nginx 1 12 2 zip 下载后解压 解压后如下 2 启动nginx 有很多
  • 为什么寄存器比内存快?

    原文出处 Mike Ash 译文出处 阮一峰 计算机的存储层次 memory hierarchy 之中 寄存器 register 最快 内存其次 最慢的是硬盘 同样都是晶体管存储设备 为什么寄存器比内存快呢 Mike Ash写了一篇很好的解
  • Vue使用routerlink实现点击导航栏进行页面跳转

    实现内容 如图所示 要实现的是 点击导航栏中的Data Set Data Mining Result List Model List区域跳转至对应界面 使用router link来实现跳转 1 如代码所示 router link后面的to需
  • linux笔记--文件内容操作和历史命令

    目录 cat命令 more命令 less命令 head命令 tail命令 sed命令 vim编辑器 history命令 clear命令 cat命令 查看文件内容 标准输出 补充 1 标准输出 在linux中规定为输出到屏幕 2 标准输入 在
  • 如何用cin读入空格

    在我们使用cin读入字符时 默认是跳过中间的空格以及可能的制表符和换行符 那么 如何让其不跳过空格呢 我们可以使用操作符noskipws来实现 cin gt gt noskipws 设置cin读取空白符 char ch while cin
  • 激光SLAM7-基于已知位姿的构图算法

    1 通过覆盖栅格建图算法进行栅格地图的构建 1 1 Theory 1 2 code 这里没有判断idx和hitPtIndex是否有效 start of TODO 对对应的map的cell信息进行更新 1 2 3题内容 GridIndex h