精华内容
下载资源
问答
  • 大部分现有的移动机器人地图构建方法都是基于静态环境的假设,而实际应用中移动机器人的工作环境是随时间变化的。综述了动态环境中移动机器人地图构建的最新研究进展,介绍了基于地图、基于运动和基于跟踪的检测动态...
  • 煤矿救援机器人地图构建与路径规划研究
  • 针对目前多机器人构建地图的动态分区方法对机器人之间协作的限制问题,提出一种基于分布式控制系统的改进方法。该方法通过坐标转换把机器人的局部坐标信息转换到全局坐标中,利用Ad hoc网络对信息进行传递,加强...
  • 空中视觉地面机器人地图构建和路径规划
  • 毕业设计做移动机器人的路径规划和地图构建,在地图构建这块实在做不出来,有没有大神可以有关这方面的开源程序或者资料可以分享下吗?谢谢啦
  • 针对复杂环境以及无法获知机器人位置信息的情况,提出一种多移动机器人协作构建地图的新方法。该方法采用独立探索、集中建图的探索策略,对环境建立局部栅格地图并予以融合。在地图融合过程中,无需已知机器人的相对...
  • 700帧 激光扫描数据 地图 机器人运动轨迹 转载于:https://www.cnblogs.com/yuhua4/archive/2009/05/24/1488338.html

     

    700帧 激光扫描数据 地图 机器人运动轨迹

    转载于:https://www.cnblogs.com/yuhua4/archive/2009/05/24/1488338.html

    展开全文
  • 实时的移动机器人语义地图构建系统.pdf,语义信息可以使机器人更充分地理解未知环境,为更高级的人机交互和完成更复杂的任务奠定基础。为了能够使移动机器人实时地创建语义地图,在Jetson TX1嵌入式电脑上开发了一种...
  • 使用机器人构建地图

    千次阅读 2018-03-12 23:16:50
    使用机器人构建地图发布时间:2016年11月04日 11:40:53 浏览数:1013次 来自:Kaka Blogrosbag可以录制一段时间的message,这是一个调试新算法时候非常有用的工具。可以帮助我们快速的分离bug。rosbagrosbag可以...

    使用机器人构建地图

    发布时间:2016年11月04日 11:40:53    浏览数:1013次    来自:Kaka Blog
    rosbag可以录制一段时间的message,这是一个调试新算法时候非常有用的工具。可以帮助我们快速的分离bug。

    rosbag

    rosbag可以录制一段时间的message,这是一个调试新算法时候非常有用的工具。可以帮助我们快速的分离bug。(相同的数据很容易对比出算法改进后的效果)

    录制消息时候可以用record函数后面跟topic名字,例如要录制所有scan和tf topic,

    rosbag record scan tf
    

    将生成一个格式为YYYY_MM_DD_HH_mm_ss.bag,时间是开始录制的时间,如果想不想生成这种格式名字有两种方法

    rosbag record -O foo.bag scan tf
    rosbag record -o foo scan tf
    

    第一个名字是foo.bag第二个格式是foo_YY_MM_DD_HH_mm_ss.bag

    我们通常录制所有的topic,用-a参数

    rosbag record -a
    

    输入Ctrl+C停止录制。它有一些参数可以控制回放速度的快慢等。

    使用方法

    rosbag play --clock foo.bag
    

    这将回放foo.bag记录的topic messages,如果指定多个bag会按顺序播放。--clock参数是让topic发布录制时候的clock。这在构建地图时候非常重要。

    注意:clock 参数使rosbag回放时候发布当时的clock,如果同时有其它topic发布消息,可能会出一些问题,例如在Gazebo模拟器,有两个不同的clock,在构建地图时候,时间会跳跃出现,这会导致构建地图算发混乱。

    所以使用rosbag的–clock参数时确保没有其它结点发布topic,一个简单的方法就是把所有模拟器关了。。。

    可以查看bag文件的信息:

    rosbag info foo.bag
    

    会展示一些录制时间和录制topic的信息。

    构建地图

    构建地图用到gmapping包中的slam_gmapping结点,算法是Rao-Blackwellized(粒子概率假设密度算法),保持机器人跟踪位置。

    首先我们要生成构建地图的数据,虽然可以在世界里移动机器人得到数据,这里我们采用另一种方法,我们用rosbag保存驾驶机器人存储的数据,然后回放让slam_gmapping为我们构建地图。这是一个好的主意,可以让我们的slam_gmapping结点每次都得到一个好的地图,不用每次都操作小车走。

    首先,启动模拟器:

    roslaunch turtlebot_stage turtlebot_in_stage.launch
    

    启动了Stage机器人在rviz中

    使用键盘控制它,启动写好的launch文件

    roslaunch turtlebot_teleop keyboard_teleop.launch
    

    然后我们需要收集一些传感器信息,slam_gmapping构建地图需要laser和odometry系统,odometry用tf报告,我已我们订阅/scan和/tf

    rosbag record -O data.bag /scan /tf
    

    现在可以驾驶机器人走了,但是嫌麻烦,我这里用的是导航功能走的。。。录制完成后用Ctrl+C停止录制,用rosbag info data.bag可以看到录制信息

    在构建地图之前要把模拟器关掉,因为模拟器发布的激光数据和要回放的冲突。我们现在来构建地图,启动roscore,在另一个termianl中告诉ROS我们要使用录制的bag文件,并启动slam_gmapping结点

    rosparam set use_sim_time true
    rosrun gmapping slam_gmapping
    

    如果你的激光topic不叫scan,需要重映射。我们开始回放消息

    rosbag play --clock data.bag
    

    这是slam_gmapping应该输出一堆信息,当回放完成后slam_gmapping也停止输出。地图也构建完了,我们需要保存地图,不停止slam_gmapping运行:

    rosrun map_server map_saver
    

    会在硬盘上存储map.pgmmap.yaml,打开图片

    出现转弯墙面错位的情况,地图很差劲,一个原因是传感器不能很好地创建地图,slam_gmapping期待/scan消息,turtlebot没有激光测距仪,他用的数据是由Microsoft Kinect传感器合成的。问题是假的激光测距仪相对于一般激光测距仪范围小而窄,slam_gmapping使用激光数据来估计robot如何移动,并且没有里程计来纠正误差,所以效果很差。(现实中也可以用3dcamera模拟激光数据,例子 点击跳转 )

    我们可以设置一些gmapping参数改善mapping的质量。

    rosparam set /slam_gmapping/angularUpdate 0.1
    rosparam set /slam_gmapping/linearUpdate 0.1
    rosparam set /slam_gmapping/lskip 10
    rosparam set /slam_gmapping/xmax 10
    rosparam set /slam_gmapping/xmin -10
    rosparam set /slam_gmapping/ymax 10
    rosparam set /slam_gmapping/ymin -10
    

    gmapping参数介绍:

    <launch>
      <arg name="scan_topic"  default="scan" /> //laser的topic名称,与自己的激光的topic相对应
      <arg name="base_frame"  default="base_footprint"/>//机器人的坐标系  <arg name="odom_frame"  default="odom"/>//世界坐标  <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">//启动slam的节点    <param name="base_frame" value="$(arg base_frame)"/>
        <param name="odom_frame" value="$(arg odom_frame)"/>
        <param name="map_update_interval" value="0.01"/>//地图更新的一个间隔,两次scanmatch的间隔,地图更新也受scanmach的影响,如果scanmatch没有成功的话,是不会更新地图的    <param name="maxUrange" value="4.0"/>//set maxUrange < maximum range of the real sensor <= maxRange
        <param name="maxRange" value="5.0"/>
        <param name="sigma" value="0.05"/>
        <param name="kernelSize" value="3"/>
        <param name="lstep" value="0.05"/>optimize机器人移动的初始值(距离)    <param name="astep" value="0.05"/>//optimize机器人移动的初始值(角度)    <param name="iterations" value="5"/>//icp的迭代次数    <param name="lsigma" value="0.075"/>
        <param name="ogain" value="3.0"/>
        <param name="lskip" value="0"/>//为0,表示所有的激光都处理,尽可能为零,如果计算压力过大,可以改成1    <param name="minimumScore" value="30"/>//很重要,判断scanmatch是否成功的阈值,过高的话会使scanmatch失败,从而影响地图更新速率    <param name="srr" value="0.01"/>//以下四个参数是运动模型的噪声参数    <param name="srt" value="0.02"/>
        <param name="str" value="0.01"/>
        <param name="stt" value="0.02"/>
        <param name="linearUpdate" value="0.05"/>//机器人移动linearUpdate距离,进行scanmatch    
        <param name="angularUpdate" value="0.0436"/>机器人选择angularUpdate角度,进行scanmatch    
        <param name="temporalUpdate" value="-1.0"/>
        <param name="resampleThreshold" value="0.5"/>
        <param name="particles" value="8"/>//很重要,粒子个数  <!--
        <param name="xmin" value="-50.0"/>
        <param name="ymin" value="-50.0"/>
        <param name="xmax" value="50.0"/>
        <param name="ymax" value="50.0"/>
      make the starting size small for the benefit of the Android client's memory...
      -->
        <param name="xmin" value="-1.0"/>//map初始化的大小    <param name="ymin" value="-1.0"/>
        <param name="xmax" value="1.0"/>
        <param name="ymax" value="1.0"/>
        <param name="delta" value="0.05"/>
        <param name="llsamplerange" value="0.01"/>
        <param name="llsamplestep" value="0.01"/>
        <param name="lasamplerange" value="0.005"/>
        <param name="lasamplestep" value="0.005"/>
        <remap from="scan" to="$(arg scan_topic)"/>
      </node>
    

    重要参数说明: 1. particles (int, default: 30) gmapping算法中的粒子数,因为gmapping使用的是粒子滤波算法,粒子在不断地迭代更新,所以选取一个合适的粒子数可以让算法在保证比较准确的同时有较高的速度。

    1. minimumScore (float, default: 0.0) 最小匹配得分,这个参数很重要,它决定了对激光的一个置信度,越高说明对激光匹配算法的要求越高,激光的匹配也越容易失败而转去使用里程计数据,而设的太低又会使地图中出现大量噪声,所以需要权衡调整。

    我们要改善质量需要慢一点驾驶机器人,尤其是在机器人转弯的时候。我们在启动gmapping前将上面的参数设置,会得到一个比较不错的地图。注意参数是如何影响slam_gmapping的你可以两次使用同一个bag文件,看看构建地图的效果对比。你可以改变不同的参数,然后用同一个bag做对比,找到合适的效果。

    启动Map Server并查看map

    rosrun map_server map_server map.yaml
    

    map.yaml就是我们刚才保存的map文件,运行map server会发布两个topic,map和 map_metadata,map发布的messages类型是 nav_msgs/OccupancyGrid对应map本身。map_metadata发布messages类型是nav_msgs/MapMetaData,对应YAML文件

    $ rostopic echo /map_metadata
    map_load_time:
      secs: 0
      nsecs:         0
    resolution: 0.0500000007451
    width: 4000
    height: 4000
    origin:
      position:
        x: -100.0
        y: -100.0
        z: 0.0
      orientation:
        x: 0.0
        y: 0.0
        z: 0.0
        w: 1.0
    

    有4000*4000个格子,每个格子是5cm,下面是坐标系圆点的位置和角度,我们可以用rviz看到,可以用如下格式命令

    roscd mapping/maps
    rosrun map_server mapserver willow.yaml
    

    也就是切换到有地图的yaml文件目录中运行mapserver,然后启动rviz就可以看到地图

    rviz rviz
    

    注意要监听map消息。这样就可以看到地图在rviz上显示了

    展开全文
  • 基于多传感器数据融合的移动机器人3D地图构建和路径规划
  • 移动机器人定位与地图构建算法与仿真
  • 不依赖里程计的机器人定位与地图构建
  • 基于激光传感器的服务机器人室内环境地图构建
  • 详细讲解了移动机器人室内地图的生成与定位的方法
  • 未知环境中自主机器人环境探索与地图构建
  • 针对煤矿井下无GPS环境下巡检机器人自主定位问题,研究了基于激光雷达的同步定位与地图构建方法。首先建立激光雷达观测模型和里程计预测模型,将机器人定位和地图构建的实际问题转换为概率数学模型的逻辑推理问题。...
  • 提出一种高效的基于全景视觉的室内移动机器人地图构建和定位方法. 该方法充分利用全景视觉系统视野广阔、获取环境信息完整的特点, 根据全景图像生成环境描述子; 利用上述环境描述子描述环境, 创建拓扑地图, 将地图...
  • 机器人探索预先未知的环境时通常需要同步定位和地图构建(SLAM),例如,在救援场景中,可以利用雾计算这种新兴的计算模式来实现更快、更精确、更节能的机器人SLAM。基于此,提出了雾计算赋能机器人SLAM的框架设计,...
  • 分析了机器人坐标系、局部环境坐标系和目标的相对关系,给出了机器人局部环境自定位算法和基于坐标变换的服务机器人全息地图构建方法。家庭环境下机器人实物实验表明,基于局部几何—全局拓扑表示的全息地图,服务...
  • 定位与地图构建1 了解机器人定位和地图构建的基本概念1.1定位基本逻辑1.2定位需要哪些信息2了解定位和建图的常用方法2.1网格定位2.1.1空间的离散化2.1.2概率理论2.1.3贝叶斯理论2.1.4用网格化解释实例2.1.5网格定位...

    0 问题的提出&定位与地图构建

    被绑架的机器人问题当一个正在运行中的机器人被人为的放到了某个位置,机器人如何知道这个位置在环境中的坐标
    WHERE AM I?
    通常来说,定位的前提是需要知道地图信息,但在新的未知环境中,机器人需要在建立地图的同时进行自身的定位,这被称为即时定位与地图构建 simultaneous localization and mapping (SLAM)
    在这里插入图片描述

    定位是自主移动机器人的一个基本且核心的任务,即在已知的地图中确定自身的位置。这一任务普遍适用于所有的可移动的机器人,如无人车,无人船,四足机器人,人形机器人等。更适用于飞机、火箭、导弹等尖端领域。

    1 了解机器人定位和地图构建的基本概念

    1.1定位基本逻辑


    STEP1:探索到门,每个门的概率为1/3
    在这里插入图片描述



    STEP2:机器人继续前进,没有探索到门的情况下,不断丢失信息,定位准确性下降。
    在这里插入图片描述



    STEP3:探索到第二个门,位置基本确定,概率上升。
    在这里插入图片描述


    1.2定位需要哪些信息

    • 内部信息:里程计,动力学模型
    • 外部信息:相机,激光雷达,声呐,红外传感器,GPS等
      在这里插入图片描述

    2了解定位和建图的常用方法

    2.1网格定位

    之前的例子是通过人类理解方式来讲解的,但是如何用数学和算法可描述的语言来实现?
    核心元素:

    • 空间的离散化:把连续的空间(无限)转换成离散的空间(有限),在有限的集合中搜索,而不是在无限的实数空间搜索。
    • 概率论
    • 贝叶斯理论
      网格定位是基于概率地图的定位方法。

    2.1.1空间的离散化

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

    2.1.2概率理论

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

    2.1.3贝叶斯理论

    在这里插入图片描述

    2.1.4用网格化解释实例

    在这里插入图片描述

    在这里插入图片描述

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

    2.1.5网格定位总结

    • 移动会引入不确定性,使定位精度下降,而感知会获得新的信息,可以增加精度
    • 移动/感知的循环是一个不断处理丢失信息、获得新信息和更新信息的过程
    • 优势:算法简单,易于实现,容易从定位丢失中复位
    • 劣势:可拓展性差,不适用于大地图,精细的网格需要消耗巨大的内存和计算量 50m x 50m地图,5cm分辨率,1°角分辨率,则共有 10001000360=3.6亿个状态

    2.2粒子滤波

    为什么要用粒子滤波?

    • 网格定位适用于小地图,大地图消耗太多内存
    • 卡尔曼滤波适用于线性、单模态、高斯分布的问题,不适用于多模态非高斯分布模型
    • 粒子滤波可以解决这些问题,单计算量更大
      在这里插入图片描述
    • 通过寻找一组在状态空间中传播的随机样本来近似的表示概率密度函数,用样本均值代替积分运算,进而获得系统状态的最小方差估计的过程,这些样本被形象的称 为“粒子”,故而叫粒子滤波。
    • 粒子滤波的思想基于蒙特卡洛方法(Monte Carlo methods),它是利用粒子集来表示概率,可以用在任何形式的状态空间模型上粒子滤波用粒子表示置信概率
    • 尽管算法中的概率分布只是真实分布的一种近似,但由于非参数化的特点,它摆脱了解决非线性滤波问题时随机量必须满足高斯分布的制约,能表达比高斯模型更广泛的分布,也对变量参数的非线性特性有更强的建模能力。因此,粒子滤波能够比较精确地表达基于观测量和 控制量的后验概率分布,可以用于解决SLAM问题。

    2.2.1拒绝采样(Rejection Sampling)

    下图的密度函数曲线无法直接表达,如何获得这个随机变量的样本?
    在这里插入图片描述


    STEP1:用一个矩形将该密度曲线包含在内
    在这里插入图片描述



    SETP2:落在密度曲线上面的用绿色表示,下面的用蓝色表示
    在这里插入图片描述



    SETP3:只保留落在密度曲线下面的蓝色点,则有
    在这里插入图片描述



    SETP4:提取每个蓝色点的横坐标值,构成样本即为我们的目标样本,构建直方图和密度估计。
    在这里插入图片描述



    STEP5:上面的矩形称为建议分布,在实际采样中很多绿色的点 都被浪费了,所以可以选择其他曲线来包含目标密度曲线
    在这里插入图片描述



    SETP6:设目标密度曲线为𝑓(𝑥),即下图蓝色曲线;建议分布密度曲线为𝑔(𝑥),把𝑔(𝑥)乘上常数因子𝑐,用𝑐𝑔(𝑥)将目标密度曲线包围
    在这里插入图片描述



    SETP7:假定𝑔(𝑥)便于采样,则拒绝采样步骤如下:

    1. 从𝑔(𝑥)获得一个样本数据,记为𝑥∗,我们把这个样本作为一个建议
    2. 是否采纳该样本作为满足𝑓(𝑥)分布的一个样本数据?在 [0, 𝑐𝑔(𝑥∗)]上均匀采样获得𝑢∗,如果𝑢∗ < 𝑓(𝑥∗) 则保留, 否则回到1重复
      在这里插入图片描述

    2.2.1.1拒绝采样的典型分布

    在这里插入图片描述
    在这里插入图片描述
    拒绝采样存在的问题

    • 拒绝采样需要大量的样本才能很好的近似非高斯方程
    • 实际应用中计算量可能会非常大
    • 导致这一问题的部分原因是拒绝采样的随机性本质
    • 一种更好的采样方法可以提升效率

    2.2.2重要性采样(Importance Sampling)

    • 之前的采样方法中没有给出𝑓与𝑔之间的关系和重要性
    • 目标密度曲线f和建议分布g之间差别越大的地方越重要
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    2.2.3粒子滤波的实例

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

    2.3地图构建

    为什么要构建地图?

    • 学习/构建地图是机器人领域的基础和核心问题之一
    • 构建地图能够让机器人更好的完成定位和其他任务
    • 复杂的机器人系统依赖地图来完成定位、路径规划等任务
    • 地图构建是自主智能机器人不可或缺的功能之一
      在这里插入图片描述

    3了解定位和建图的难点和存在的问题

    SLAM难在哪?

    • 机器人轨迹和地图特征全都未知
    • 错误的数据匹配可能带来灾难性的后果
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    展开全文
  • 自动映射ROS软件,用于使用多个机器人自主构建高清晰度地图。 该应用程序使用户能够使用多个自主机器人(F110轿车)使用任何2D / 3D SLAM软件自主导航蓝图/平面图并覆盖整个自由空间,以构建高清晰度地图。 注意...
  • 移动服务机器人的空间语义混合地图构建及应用
  • 未知环境中移动机器人的环境探索与地图构建
  • 基于 ROS 与 Kinect 的移动机器人同时定位与地图构建
  • 针对温室环境中机器人依靠自身携带的传感器无法获取全面的环境信息,从而常导致路径规划错误的问题,提出了一种结合外部传感器系统获取温室环境信息,构建复合栅格地图的方法。利用无线传感器网络定时采集对机器人...
  • 室内机器人视觉同步定位及地图构建的技术规范
  • 基于6-DOF姿态估计的移动机器人三维地图构建系统 ,戚传江,温程璐,在三维点云配准算法中,经典ICP算法存在过分依赖初始值的问题。本文构建了一个基于6-DOF姿态估计的移动机器人三维地图构建系统。系�

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 654
精华内容 261
关键字:

机器人地图构建