带有SOG的贝叶斯范围SLAM(RO-SLAM)

  • 带有SOG的贝叶斯范围SLAM(RO-SLAM)已关闭评论
  • 1,304 views
  • A+
所属分类:工业4.0

1.说明
简洁版本:

该模块 mrpt-slam 提供了一个通用的C ++实现的RBPF的SLAM对于不同的地图类型,其中有一个解决方案区间仅SLAM与表示为高斯函数的总和地图,这被动态地适应于表示以及所有映射的信标的不确定性。存在独立的可执行文件(rbpf-slam)和演示配置文件和数据集。

长版本:

该 范围专用SLAM (RO-SLAM)的解决方案解决了在没有任何先验信息的情况下估计一组信标的位置的顺序跟踪车辆的贝叶斯推断问题。唯一的假设是测距的可用性和能够识别不同信标的距离传感器(即不需要解决数据关联)。

我们利用Rao-Blackwellized Particle Filter (RBPF) 内每个信标分布之间的 条件独立性来 为每个地图元素 维护独立 的高斯和(SOG)。

结果表明, 可以为在线操作导出适当的 概率观测模型,而不需要延迟初始化:

带有SOG的贝叶斯范围SLAM(RO-SLAM)

概率观测模型

我们对这个建议与作者以前的工作进行了严格的统计比较,其中采用蒙特卡洛近似代替条件密度。通过实验验证,这个新建议在准确性,计算时间以及针对异常值的稳健性方面均有显着改进。
2.描述该方法的论文
布兰科,JL和费尔南德斯-马德里加尔,JA和冈萨雷斯,J. “高效概率范围,只有SLAM”,IEEE / RSJ国际会议智能机器人与系统(IROS),第1017-1022,2008年。
3.示例屏幕截图和视频
下一个视频显示:(i)具有模拟传感器的2D RO-SLAM的结果,以及(ii)来自3D中的真实UWB无线电数据的结果。有关这些结果的更多详细信息,请参阅本文。
链接:https://pan.baidu.com/s/1qipV9YqibKCU1qWxB7UdJA 密码:9nim
链接:https://pan.baidu.com/s/1SD1G01bAq8b1vAv6J2H1WQ 密码:tac6
随着机器人以直线移动,一个标志性估计(作为SOG)的演变为4个时间步长(t1,t2,t3,t4):

带有SOG的贝叶斯范围SLAM(RO-SLAM)

下载视频
00:00
00:00
随着机器人以直线移动,一个标志性估计

4.输入数据
该算法的输入是“动作+观察”对, 动作 是测距读数(mrpt::obs::CActionRobotMovement2D), 并将感测到的范围观察到一组静态信标(mrpt::obs::CObservationBeaconRanges)。
用户mrpt::slam::CMetricMapBuilderRBPF在设置其多指标地图 以保存仅一个信标地图后, 应通过通用类到达RBPF-SLAM算法 。
甲 RO-SLAM数据集样本 被包括在MRPT下: RO-SLAM_demo.rawlog (链接:https://pan.baidu.com/s/1e_6UDaD-ekemGhVWgcy0PA 密码:kw5e)
这是一个 Rawlog 文件,可以通过RawLogViewer 或 rawlog-edit 对其进行可视化和操作 。这两个程序都有预编译的MRPT版本,并且也在官方的Ubuntu存储库中。
为了执行 基于RO RBPF的SLAM 的 示例运行,请打开终端并执行:

打开 RO-SLAM_simulatedData_SOG.ini 查看所有相关参数。

$ cd MRPT/share/mrpt/config_files/rbpf-slam/
$ rbpf-slam RO-SLAM_simulatedData_SOG.ini

#------------------------------------------------------------
# Config file for the "RBPF-SLAM" application
# See: http://www.mrpt.org/list-of-mrpt-apps/application-rbpf-slam/
#------------------------------------------------------------

#=======================================================
# Section: [MappingApplication]
# Use: Here comes global parameters for the app.
#=======================================================
[MappingApplication]
# The source file (RAW-LOG) with action/observation pairs
rawlog_file=../../datasets/RO-SLAM_demo.rawlog
rawlog_offset=0

# The directory where the log files will be saved (left in blank if no log is required)
logOutput_dir=LOG_RO_SLAM_SOG
LOG_FREQUENCY=1 // The frequency of log files generation:
GENERATE_LOG_JOINT_H=0
GENERATE_LOG_INFO=0
SAVE_MAP_IMAGES=1
SAVE_3D_SCENE=1
SAVE_POSE_LOG=0
SAVE_ENOSE_READINGS=0
CAMERA_3DSCENE_FOLLOWS_ROBOT=0

SHOW_PROGRESS_IN_WINDOW=1
SHOW_PROGRESS_IN_WINDOW_DELAY_MS=100
PROGRESS_WINDOW_WIDTH=1000
PROGRESS_WINDOW_HEIGHT=700

insertionLinDistance=0.0 // The distance threshold for inserting observations in the map (meters)
insertionAngDistance_deg=0.0 // The distance threshold for inserting observations in the map (degrees)

localizeLinDistance = 0.1 // The distance threshold for actually running the PF, otherwise will rely on odometry (meters)
localizeAngDistance_deg = 10.0 // The rotational threshold for actually running the PF, otherwise will rely on odometry (degrees)

# Console verbosity level:
# One of: DEBUG, INFO (default), WARN, ERROR
verbosity_level = DEBUG

#----------------------------------------------------------------------------------
# The Particle Filter algorithm:
# 0: pfStandardProposal
# 1: pfAuxiliaryPFStandard
# 2: pfOptimalProposal *** (ICP,...)
# 3: pfAuxiliaryPFOptimal *** (Optimal Aux)
#
# See: /docs/html/topic_pf.html or http://mrpt.sourceforge.net/topic_pf.html
#----------------------------------------------------------------------------------
PF_algorithm=0
adaptiveSampleSize=0 // 0: Fixed # of particles, 1: KLD adaptive

#----------------------------------------------------------------------------------
# The Particle Filter Resampling method:
# 0: prMultinomial
# 1: prResidual
# 2: prStratified
# 3: prSystematic
#
# See: /docs/html/topic_resampling.html or http://mrpt.sourceforge.net/topic_resampling.html
#----------------------------------------------------------------------------------
resamplingMethod=3

sampleSize=10 // Sample size (for fixed number)
BETA=0.50 // Resampling ESS threshold

# ========================================================
# MULTIMETRIC MAP CONFIGURATION
# See docs for (Google for) mrpt::maps::CMultiMetricMap
# ========================================================
# Creation of maps:
occupancyGrid_count=0
gasGrid_count=0
landmarksMap_count=0
pointsMap_count=0
beaconMap_count=1

# Selection of map for likelihood: (FuseAll=-1,occGrid=0, points=1,landmarks=2,gasGrid=3,beaconMap=4)
likelihoodMapSelection=-1

# Enables (1) / Disables (0) insertion into specific maps:
enableInsertion_pointsMap=1
enableInsertion_landmarksMap=1
enableInsertion_gridMaps=1
enableInsertion_gasGridMaps=1
enableInsertion_beaconMap=1

# ====================================================
# CHybridMetricMapPDF::TPredictionParams
# ====================================================
powFactor=1 // A "power factor" for updating weights
pfAuxFilterOptimal_MaximumSearchSamples=100 // For PF algorithm=3

# -----------------------------------------------------------------
# pfOptimalProposal_mapSelection
# Only for PF algorithm=2 (Exact "pfOptimalProposal")
# Select the map on which to calculate the optimal
# proposal distribution. Values:
# 0: Gridmap -> Uses Scan matching-based approximation (based on Stachniss' work)
# 1: Landmarks -> Uses matching to approximate optimal
# 2: Beacons -> Used for exact optimal proposal in RO-SLAM
# -----------------------------------------------------------------
pfOptimalProposal_mapSelection=2

# Adaptive sample size parameters ------------------
KLD_maxSampleSize=6
KLD_minSampleSize=5
KLD_binSize_XY=10.00
KLD_binSize_PHI_deg=30
KLD_delta=0.01
KLD_epsilon=0.40

# ====================================================
# MULTIMETRIC MAP: BeaconMap #00
# ====================================================
# Creation Options for BeaconMap 00:
[MappingApplication_beaconMap_00_insertOpts]
insertAsMonteCarlo=0 // 0:Insert as SOG, 1: Insert as MC, after convergence pass to Gaussian
maxElevation_deg=0 // [-90,90]
minElevation_deg=0 // [-90,90]
MC_numSamplesPerMeter=1000 // Number of particles per meter of range, i.e. per meter of the "radius of the ring".
MC_maxStdToGauss=0.07 // Threshold for colapsing samples into a Gaussian
MC_thresholdNegligible=30 // For deleting samples
SOG_thresholdNegligible=40 // For deleting SOG modes
SOG_maxDistBetweenGaussians=0.60 // For initializing the SOG modes
SOG_separationConstant=2 // A constant to compute the std. dev. in the tangent direction

# Likelihood Options for BeaconMap 00:
[MappingApplication_beaconMap_00_likelihoodOpts]
rangeStd=0.02

 

5. API文档
本文实验结果中使用的程序是:

仿真信标:该程序生成信标的随机二维或三维地图,并根据某个预定义路径生成机器人的仿真观测结果。
rbpf-slam:这个应用程序实际上是类 mrpt :: slam :: CMetricMapBuilderRBPF的前端。算法的所有参数都通过命令行中的配置文件传递。过滤器处理来自rawlog文件的动作和观察结果,并可选地生成许多描述过滤器和地图演变的文件。
更具体地说,本文描述的SOG方法是在类中实现的 mrpt::maps::CBeacon,和 mrpt::maps::CBeaconMap。

6.硬件/软件要求
该实现是移动机器人编程工具包(MRPT)中的C ++库“mrpt-slam”的一部分。基本要求是:

Windows / Linux,Visual Studio 2008 + / GCC 4.1+
Eigen 3(如果没有找到系统版本,将使用MRPT的嵌入版本)。
wxWidgets(可选,仅限于GUI)
请参阅关于如何编译MRPT 或查看 Ubuntu PPA和官方 存储库的常见说明 。

7.许可证信息
自MRPT 1.0.0以来,所有MRPT代码都是在新BSD许可证下发布的。

weinxin
微信公众号
agvba是一个分享AGV知识和agv案例视频的网站。