移动机器人定位研究笔记

移动机器人定位的分类
以下内容来自于Probabilistic Robotics
局部定位和全局定位
定位问题是以最初及运行期间可供使用信息的类型为特征的。随着难度的增加,分为三种类型的定位间题。
局部定位(local localization)又被称为位置跟踪(position tracking) , 假定机器入初始位姿已知,通过适应机器人运动噪声来完成定位机器人。此类噪声影响通常很微弱,因此局部定位经常假设位姿不确定性用单峰分布(如高斯分布)来近似。局部定位局限于在真实位姿附近的区域。
全局定位(global localization) , 认为机器人初始位姿未知。机器入最初放置在环境中的某个地方,但是缺少它的位置信息。全局定位的方法不能假定位姿误差的有界性,使用单峰概率分布通常是不合适的。全局定位比局部定位更困难,因为事实上它包括了位置跟踪。
绑架问题(kidnapping problem) , 是全局定位问题的一个变种,但是它更加困难。在运行过程中机器人被绑架,瞬间移动到其他位置。绑架机器人问题比全局定位问题更困难,因为机器人首先要判断自己是否被绑架了,再进行全局定位。具备从失效中恢复的能力对于真正的自主机器人来说是必不可少的。通过绑架机器人可以测试一个定位算法,可以用来衡量该算法从全局定位失效中恢复的能力。

静态环境与动态环境
静态环境(static environments) 是指在环境里只有机器人是移动的,环境里全部其他目标永远保持在同一位置。静态环境具有一些很好的数学特性,使得机器人服从高效概率估计。
动态环境(dynamic environments) 是指在环境里除机器人外,还有位置或配置随时间变化的物体。
根据环境与机器人的关系,动态环境又可以分为以下两种:

  1. 低动态环境:环境发生了变化,但不在机器人的视野之中
  2. 高动态环境:机器人视野范围内存在正在移动的物体

特别有趣的是,变化在整个时间上持续,并对一个以上传感器(雷达或者相机等外部传感器)的读数产生影响。
显然,动态环境定位比静态环境定位更困难。主要有两种方法适用于动态环境:第一,状态向量里可能会包括动态实体。因此,可能会调整马尔可夫假设,但是这一方法会带来额外的计算负担和建模复杂性负担。第二,在某些情况下,滤除掉传感器数据以便消除未建模动态因素的破坏作用。

被动方法与主动方法
被动定位(passive localization) 是指定位模块仅观察机器人运行。机器人通过其他方式控制,并且机器人运动不针对便于定位。
主动定位(Active localization) 是指算法控制机器人移动,以便最小化定位误差和/或最小化定位不良机器人进入一个危险地方引起的花费。主动定位方法往往能产生比被动定位方法更好的定位结果。

单机器人与多机器人
定位问题的第四方面与涉及的机器人数目有关。
单机器人定位(Single-robot localization) 是定位研究最常用的方法。它仅仅处理单一机器人。单一机器人定位便于在单一机器人平台上收集所有数据,并且不存在通信问题。
多机器人定位(multi-robot localization) 问题来源于机器入团队。乍一看,每一机器入能独立地定位自身,因此多机器入定位问题可以通过单一机器入定位解决。然而,如果机器人能相互探测,定位有可能做得更好。这是因为如果两个机器人的相对位置信息可供使用,一个机器人的看法可以用于影响另一个机器人的看法。多机器人定位问题引出了一些有趣的有意义的问题,即置信表示问题与两者之间的通信属性问题。

上述四方面捕获了移动机器人定位问题的四个最重要特性。还有其他特性会影响问题的难度,如机器人测量提供的信息和运动过程中信息的丢失。而且,对称环境比非对称环境更加困难,因为其具有更高的模糊性。

热门文章

暂无图片
编程学习 ·

leetcode 124. 二叉树中的最大路径和

题目 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 思路 简单题,dfs返回当前节点为一端的最大链。答案有两种情况,1 当前节点到子孙的一条链 2 当前节点为中端,…
暂无图片
编程学习 ·

期末复习、化学反应工程科目(第四章)

@Author:Runsen @Date:2020/7/1人生最重要的不是所站的位置,而是内心所朝的方向。只要我在每篇博文中写得自己体会,修炼身心;在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰难,奋勇前行,不忘初心,砥砺前行,人生定会有所收获,不留遗憾 (作者:Runsen )作者介…
暂无图片
编程学习 ·

Embind用于将C ++和JavaScript交互

官方文档EmbindEmbind is used to bind C++ functions and classes to JavaScript, so that the compiled code can be used in a natural way by “normal” JavaScript. Embind also supports calling JavaScript classes from C++.Embind has support for binding most C++ …
暂无图片
编程学习 ·

FPGA之fifo设计

FPGA之手撕fifo(含设计代码和仿真)本文回答以下几个问题:1:fifo的读空和写满信号如何给出2:fifo的写控制模块设计3:fifo的读控制模块设计4:双口RAM使用5:顶层文件6:仿真文件编写7:modelsim的RTL仿真1:上一篇文章(FPGA之FIFO IP核详细教程)已经简单说了一下读写指针…
暂无图片
编程学习 ·

必应每日壁纸——7月

只分享,不科普 自行必应科普July1 Wednesday2 Thursday3 Friday4 Saturday5 Sunday6 Monday7 Tuesday8 Wednesday9 Thursday10 Friday11 Saturday12 Sunday July 1 Wednesday 班夫国家公园 莫兰湖德国卡塞尔威廉高地公园中的阿波罗神庙2 Thursday 3 Friday 4 Saturday 5 Sunda…
暂无图片
编程学习 ·

【备忘】PHP读取apk安装包信息

PHP读取apk安装包信息可以获取应用名称、包名、版本信息等[已测试通过]感谢前辈贡献的代码!!直接上代码->biu~以下是底层封装:<?phpnamespace libraries\apk;use think\Exception;class ApkParser{//----------------------// 公共函数,供外部调用//---------------…
暂无图片
编程学习 ·

Java之父 詹姆斯·高斯林 传奇的一生

Java之父 传奇的一生 Java之父 詹姆斯高斯林 詹姆斯高斯林 (James Gosling)是一名软件专家,1955年5月19日出生于加拿大,Java编程语言的共同创始人之一,一般公认他为“Java之父”。 1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算…
暂无图片
编程学习 ·

docsify 构建文档网站之定制功能(全网最全)

作者: wugenqiang 学习笔记:https://notebook.js.org/ 微信公众号:码客 E 分享(ID:enjoytoshare)文档后续更新地址:docsify 构建文档网站4 定制功能 文章目录4 定制功能4.1 支持 DOT 语言作图4.2 支持 LaTex 数学公式4.3 支持 PDF 页面展示4.4 支持回到顶部4.5 点击页面…
暂无图片
编程学习 ·

Linux防火墙安装与配置

Linux防火墙安装与配置流程一、iptables构建防火墙应用步骤如下 1、service iptables status 检查是否安装了iptables 2、systemctl stop firewalld 关闭Linux默认防火墙firewalld 3、systemctl mask firewalld 禁用firewalld服务4、y…
暂无图片
编程学习 ·

参考nacos写的Registry注册中心

Registry注册中心 github链接:https://github.com/lzj-github/registry 麻烦大家顺便点个star,谢谢啦! 在学习了SpringCloud的各个组件的使用以及研究过相关源码后,为了更好地理解其内部实现原理,模仿了nacos的部分设计思想,自己实现了该注册中心,代码量4000+,代码中有详…
暂无图片
编程学习 ·

python学习笔记——持久化-文件

open 函数open 函数负责打开文件,带有很多参数 第一个参数:必须有,文件的路径和名称 mode:表明文件用什么方式打开r:以只读方式打开 w:写方式打开,会覆盖以前的内容 x:创建方式打开,如文件已经存在,报错 a:append 方式,以追加的方式对文件内容进行写入 b:binary 方…
暂无图片
编程学习 ·

react中使用scss全局变量做留海屏幕适配

最近我的react工程需要做留海屏幕适配,用了公司的框架mtl(支持友空间),我们都知道现在大多数做留海适配都是在顶部设置25px的高度,那为什么做适配会用到scss全局变量呢? 答案就是方便!配置了全局变量后我们可以在想要的任何地方使用,设置使用css的calc动态计算一些宽度…
暂无图片
编程学习 ·

__use_two_region_memory ?

设置堆 0X6000设置栈 0X3000注意 根据启动代码.S 看出heap是8字节对齐的。这个extern __value_in_regs struct __argc_argv __rt_lib_init(unsigned /*heapbase*/, unsigned /*heaptop*/);进行heap分配经测试看起来这个函数本身耗费了一些字节,如下:char *initial_heap;char…
暂无图片
编程学习 ·

Leetcode 题解 - 双指针

双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。 有序数组的 Two Sum Leetcode :167. Two Sum II - Input array is sorted (Easy) Input: numbers={2, 7, 11, 15}, target=9 Output: index1=1, index2=2题目描述:在有序数组中找出两个数,使它们的和为…
暂无图片
编程学习 ·

二、三层交换机与路由器的工作原理总结

交换原理 转发决策 交换机的转发决策有三种操作:丢弃、转发和扩散。 丢弃:当本端口下的主机访问已知本端口下的主机时丢弃。 转发:当某端口下的主机访问已知某端口下的主机时转发。 扩散:当某端口下的主机访问未知端口下的主机时要扩散。 每个操作都要记录下发包端的源MAC地…
暂无图片
编程学习 ·

把二叉树打印成多行

1.题目2.解法(队列) import java.util.ArrayList; import java.util.ArrayDeque;/* public class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}} */ public class Solution {ArrayList<ArrayList<In…
暂无图片
编程学习 ·

智能小车实践教程

前言 先前做了一个外包app关于google的blockly二次开发,文见Android 基于Android blockly和蓝牙通信的机器人编程APP,于是乎对于硬件方面也产生了一些兴趣,自己实现了软件,但是硬件还不太懂,于是乎开始学习研究一下硬件方面的知识,也打算自己做一个智能小车。 如果你也是…
暂无图片
编程学习 ·

2020了,还不开始学react吗?| react 入门必知必会知识点

文章会涉及到react本身的基础知识(包括组件通讯、生命周期、路由管理、状态管理等方面),相信你认认真真看完这篇文章以后,你会对react开发有个大致的了解,并且能够快速入门。这篇文章也可用作面试复习 react 基础,并且这篇文章会持续更新,废话不多说,so ,Let’s go!!!组件…