cartographer

阅读 / 问答 / 标签

如何使用Google 的Cartographer SLAM算法包

0.安装所依赖项sudo apt-get install -y google-mock libboost-all-dev libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libprotobuf-dev libsuitesparse-dev libwebp-dev ninja-build protobuf-compiler Python-sphinx ros-indigo-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev1.首先安装ceres solver选择版本1.11,路径随意Git clone cd ceres-solver-1.11.0/buildcmake ..make –jsudo make install2.安装 cartographer,路径随意git clone cd cartographer/buildcmake .. -G Ninjaninjaninja testsudo ninja install3.安装cartographer_ros谷歌官提供安装比较繁琐我原文件进行少许修改核代码变修改编译文件载catkin_ws面src文件夹面git clone catkin_ws面运行catkin_make即4.数据载测试2d数据概500M用迅雷载3d数据8G左右同用迅雷载运行launch文件即roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bagroslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/cartographer_3d_deutsches_museum.bag图左侧2d,右侧3d

Cartographer_QuestInfo 怎么让箭头一直显示

设置

cartographer 可以用哪些传感器

Cartographer_QuestInfo比较好.首先Cartographer在地图插件方面很强大. 另外QuestHelpe虽然有很简单就能设置的路线规划但是任务数据方面是在太低了......

windows qtl cartographer如何安装啊

这个,只能复制别人的东西了。可以跟你明说,整个中国对QTL定位真正明白能用自己话说清楚的人不超过100个,而且这些人都不上百度。 一般而言,步骤就是,创建群体--分子标记筛选---做连锁图谱---性状测量(多重复)

超强采集路线:Cartographer_Routes模块

发错地方了~~~应该去专门的论坛和网站来求助。

求“游戏地图制作软件(Campaign Cartographer 3 )”的正常下载无毒地址!

http://115.com/lb/5lbq9kwm

怎么把cartographer一个账号中的点能用到另一个账号上

必须从头连的!

Cartographer查看其他地图时总是自动跳回当前地图?

额····我也是的 但是貌似不移动的时候它不会跳

如何看待谷歌在10月6日开源的SLAM算法cartographer

1. LIDAR SLAM,并且用了IMU辅助;2. 有submap,有scan matching,解决了一些基本的问题;3. 有Loop closure optimization,这个很好,非常好,这是在indoor环境里必须要有的,在visual slam中大幅降低accumulated error的方法,作者给加进来了;4. 给了一套node selection, branching, and computationof upper bounds的方法.结论:一套state-of-art的indoor LIDAR SLAM系统实现,该有的都有了,很robust,看得出作者为了降低accumulated error提高真正工程上的可用性做了很多努力。作者:立党链接:https://www.zhihu.com/question/51348391/answer/125439374来源:知乎著作权归作者所有,转载请联系作者获得授权。

Cartographer questinfo 怎么呼出,呼出命令是什么?

帮你顶起!

cartographer怎么支持倒装雷达建图

使用思岚rplidar雷达进行cartographer建图。

Cartographer调参

技术标签: Cartographer 根据Cartographer_ros文档翻译 Cartographer是一个复杂的系统,调整它需要很好地理解其内部工作。此页面试图直观地概述Cartographer使用的不同子系统及其配置值。如果您对Cartographer的介绍不仅仅感兴趣,还应参考Cartographer论文。它仅描述了2D SLAM,但它严格定义了此处描述的大多数概念。这些概念通常也适用于3D。 W. Hess, D. Kohler, H. Rapp, and D. Andor, Real-Time Loop Closure in 2D LIDAR SLAM , in Robotics and Automation (ICRA), 2016 IEEE International Conference on . IEEE, 2016. pp. 1271–1278. Cartographer可以看作是两个独立但相关的子系统。第一个是 LocalSLAM (有时也称为 前端 或 局部轨迹构建器 )。它的工作是建立一系列 子图 。每个子图都是本地一致的,但我们接受LocalSLAM随着时间的推移而漂移。大多数地方SLAM选项中可以找到 install_isolated/share/cartographer/configuration_files/trajectory_builder_2d.lua 为2D和 install_isolated/share/cartographer/configuration_files/trajectory_builder_3d.lua 为3D。(对于本页的其余部分,我们将参考TRAJECTORY_BUILDER_nD作为常用选项) 另一个子系统是 全局SLAM (有时称为 后端 )。它在后台线程中运行,其主要工作是找到 回环约束 。它通过对子图的扫描匹配来实现。它还结合了其他传感器数据,以获得更高级别的视图,并确定最一致的全局解决方案。在3D中,它还试图找到重力方向。它的大多数选项都可以在 install_isolated / share / cartographer / configuration_files / pose_graph.lua中找到。 在更高的抽象上,LocalSLAM的工作是生成良好的子图,而全局SLAM的工作是将它们最一致地结合在一起。 测距传感器(例如:LIDAR)提供多个方向的深度信息。但是,有些测量与SLAM无关。如果传感器部分被灰尘覆盖或者如果它被引向机器人的一部分,则一些测量距离可被视为SLAM的噪声。另一方面,一些最远的测量也可能来自不需要的源(反射,传感器噪声),并且也与SLAM无关。为解决这些问题,Cartographer首先应用带通滤波器,并仅将范围值保持在某个最小和最大范围之间。应根据机器人和传感器的规格选择最小值和最大值。 注意 在2D中,Cartographer将比max_range更换范围 TRAJECTORY_BUILDER_2D.missing_data_ray_length 。它还提供了将3D点云过滤为2D切割的值 max_z 和 min_z 值。 注意 在Cartographer配置文件中,每个距离都以米为单位定义 距离是在一段时间内测量的,而机器人实际上正在移动。但是,距离是由大型ROS消息中的“批量”传感器提供的。Cartographer可以独立考虑每个消息的时间戳,以考虑机器人运动引起的畸变。Cartographer进行测量频率越高,测量结果组合成一个可以立即捕获的单个相干扫描就越好。因此,强烈建议通过扫描提供尽可能多的 rangedata (ROS消息)。 Rangedata通常从机器人上的单个点测量,但是以多个角度测量。这意味着靠近的表面(例如道路)经常被击中并提供许多点。相反,远处的物体不常被击中并且提供较少的点数。为了减少点处理的计算权重,我们通常需要对点云进行下采样。然而,简单的 随机抽样 将从我们已经具有低密度测量的区域移除点,并且高密度区域仍将具有比所需更多的点。为了解决这个密度问题,我们可以使用一个 体素滤波 ,将原始点下采样为一个恒定大小的立方体,并只保留每个立方体的质心。 较小的立方体大小将导致更密集的数据表示,从而导致更多计算。较大的立方体大小会导致数据丢失,但会更快。 在应用了固定尺寸的体素滤镜后,Cartographer还应用了 自适应体素滤镜 。此过滤器尝试确定最佳体素大小(在最大长度下)以实现目标点数。在3D中,两个自适应体素滤波器用于生成高分辨率和低分辨率点云,它们的使用将在 LocalSLAM中 阐明。 惯性测量单元可以是SLAM的有用信息源,因为它提供精确的重力方向(因此,地面)和机器人旋转的嘈杂但良好的整体指示。为了过滤IMU噪声,在一定时间内观察到重力。如果您使用2D SLAM,则可以实时处理范围数据而无需额外的信息来源,因此您可以选择是否要让Cartographer使用IMU。使用3D SLAM,您需要提供IMU,因为它用作扫描方向的初始猜测,大大降低了扫描匹配的复杂性。 注意 在Cartographer配置文件中,每次定义值都以秒为单位 一旦扫描组装并从多个范围数据中过滤,就可以为LocalSLAM算法做好准备。LocalSLAM 使用来自 位姿估计器 的初始估计通过 扫描匹配 将新扫描插入其当前子图构造中。位姿估计器背后的想法是使用除测距仪之外的其他传感器的传感器数据来预测下一次扫描应该插入子图的位置。 有两种扫描匹配策略: 无论哪种方式, CeresScanMatcher 都可以配置为给每个输入一定的权重。权重是衡量对数据的信任度,可以将其视为静态协方差。重量参数的单位是无量纲的数量,不能在彼此之间进行比较。数据源的权重越大,Cartographer在进行扫描匹配时就会越强调这个数据源。数据来源包括占用空间(扫描点),位姿外推器(或 RealTimeCorrelativeScanMatcher )的平移和旋转 注意 在3D中, occupied_space_weight_0 和 occupied_space_weight_1 参数分别与高分辨率和低分辨率滤波点云相关。 在 CeresScanMatcher 从得名 Ceres Solver ,以谷歌为解决非线性最小二乘问题的库。扫描匹配问题被建模为这样的问题的最小化,其中两个扫描之间的 运动 (变换矩阵)是要确定的参数。Ceres使用下降算法针对给定的迭代次数优化运动。Ceres可以配置为根据您自己的需要调整收敛速度。 该 RealTimeCorrelativeScanMatcher 可以根据您在传感器的信任进行切换。它的工作原理是在 搜索窗口中 搜索类似的扫描, 搜索窗口 由最大距离半径和最大角度半径定义。当使用此窗口中的扫描执行扫描匹配时,可以为平移和旋转组件选择不同的权重。例如,如果您知道机器人不会旋转很多,您可以使用这些权重。 为避免每个子图插入太多扫描,一旦扫描匹配器找到两次扫描之间的运动,它就会通过 运动滤波器 。如果导致它的运动不够重要,则扫描将被删除。仅当扫描的运动高于特定距离,角度或时间阈值时,才会将扫描插入到当前子图中。 当LocalSLAM已经接收到给定量的范围数据时,认为子图构建完成。LocalSLAM会随着时间漂移,GlobalSLAM用于解决这种漂移问题。子图必须足够小,以使其内部的漂移低于分辨率,以便它们在局部是正确。另一方面,子图应该足够大以使环路闭合能够正常工作。 子图可以将它们的范围数据存储在几个不同的数据结构中:最广泛使用的表示称为概率网格。但是,在2D中,还可以选择使用截断的有符号距离场(TSDF)。 概率网格将空间划分为2D或3D表格,其中每个单元格具有固定大小并包含被障碍物占有的概率。根据“ 命中 ”(测量范围数据)和“ 未命中 ”(传感器和测量点之间的自由空间)更新Odds。 命中 和 未命中 可以在占用概率计算不同的权重,赋予更多或更少的信任。 在2D中,每个子图仅存储一个概率网格。在3D中,出于扫描匹配性能的原因,使用两个 混合 概率网格。(术语“混合”仅指内部树状数据表示并被抽象给用户) 扫描匹配首先将低分辨率点云的远点与低分辨率混合网格对齐,然后通过将高分辨率点与高分辨率混合网格对齐来细化位姿。 注意 CartographerROS提供了一个可视化子图的RViz插件。您可以从其编号中选择要查看的子图。在3D中,RViz仅显示3D混合概率网格的2D投影(灰度)。RViz左侧窗格中提供了选项,可在低分辨率和高分辨率混合网格可视化之间切换。 TODO : 记录TSDF配置 当LocalSLAM生成其连续的子图时,全局优化(通常称为“ 优化问题 ”或“ 稀疏位姿调整 ”)任务在后台运行。它的作用是重新安排彼此之间的子图,以便它们形成一个连贯的全局地图。例如,该优化负责改变当前构建的轨迹以正确地对准关于环闭合的子图。 一旦插入了一定数量的轨迹节点,就会批量运行优化。根据您运行它的频率,您可以调整这些批次的大小。 注意 将 POSE_GRAPH.optimize_every_n_nodes 设置为 0 是禁用全局SLAM并专注于LocalSLAM行为的便捷方法。这通常是调整Cartographer的第一件事。 全局SLAM是一种“ GraphSLAM ”,它本质上是一种位姿图优化,它通过在 节点 和子图之间构建 约束 然后优化得到的约束图来工作。可以直观地将约束视为将所有节点捆绑在一起的小绳索。稀疏位姿调整完全固定这些绳索。生成的网称为“ 位姿图 ”。 注意 约束可以在RViz中可视化,调整全局SLAM非常方便。还可以切换 POSE_GRAPH.constraint_builder.log_matches 以获得格式化为直方图的约束构建器的常规报告。 注意 实际上,全局约束不仅可以在单个轨迹上查找循环闭包。它们还可以对齐由多个机器人记录的不同轨迹,但我们将保留此用法以及与“全局本地化”相关的参数超出本文档的范围。 为了限制约束(和计算)的数量,Cartographer仅考虑构建约束的所有关闭节点的子采样集。这由采样率常数控制。采样太少的节点可能导致错过约束和无效的循环闭包。对太多节点进行采样会降低全局SLAM的速度并阻止实时循环关闭。 当考虑节点和子图建立约束时,它们会通过名为的第一个扫描匹配器 FastCorrelativeScanMatcher 。该扫描匹配器专为Cartographer设计,可实现实时循环闭合扫描匹配。在 FastCorrelativeScanMatcher 依靠“ 分支定界 ”机制在不同的格点分辨率的工作,有效地消除不正确匹配数。这种机制在本文件前面介绍的制图文章中有广泛的介绍。它适用于可以控制深度的探索树。 一旦 FastCorrelativeScanMatcher 有足够好的建议(高于最低匹配分数),然后将其输入Ceres扫描匹配器以改进位姿。 当Cartographer运行 优化问题时 ,Ceres用于根据多个 残差 重新排列子图。残差是使用 加权损失函数 计算的。全局优化具有成本函数以考虑大量数据源:全局(循环闭包)约束,非全局(匹配器)约束,IMU加速和旋转测量,局部SLAM粗略姿态估计,测距源或固定框架(如GPS系统)。可以按照 LocalSLAM 部分中的说明配置权重和Ceres选项。 注意 通过切换,可以找到有关优化问题中使用的残差的有用信息 POSE_GRAPH.max_num_final_iterations 作为其IMU残差的一部分,优化问题为IMU姿态提供了一些灵活性,默认情况下,Ceres可以自由地优化IMU和跟踪帧之间的外部校准。如果您不信任您的IMU位姿,可以记录Ceres全局优化的结果并用于改进您的外部校准。如果Ceres没有正确优化您的IMU位姿并且您完全相信您的外在校准,则可以使此位姿保持不变。 在残差中,异常值的影响由配置有某个Huber量表的 Huber损失 函数处理。Huber量表 越大 ,(潜在)异常值 的影响越大 。 一旦轨迹完成,Cartographer就会运行一个新的全局优化,通常比以前的全局优化要多得多。这样做是为了完善Cartographer的最终结果,通常不需要是实时的,所以大量的迭代通常是正确的选择。

如何使用 Google Cartographer SLAM 演算法來建地圖

建立模拟环境我的测试环境是 Ubuntu 14.04 + ROS Indigo,不过使用的指令都很 general,即便你使用其他版本,应该也不会有什麼问题。首先我们确定已经安装所需要的套件:sudo apt-get install ros-indigo-gazebo-*接下来在终端机输入 gazebo 应该就可以成功启动 Gazebo 模拟器。然後我们可以用现成的 package 启动一个有 PR2 的复杂环境。roslaunch pr2_gazebo pr2_wg_world.launch理论上,你会碰到一个 error 说:unused args [paused, gui] for include of [/opt/ros/jade/share/gazebo_ros/launch/willowgarage_world.launch] The traceback for the exception was written to the log file这时候只要去编辑你的 pr2_wg_world.launch,把有 arg 的部分注解掉就好,注解完的档案看起来会像下面这样:<launch><!-- start up empty world --><!-- <arg name="gui" default="true"/><arg name="paused" default="true"/> --><!-- TODO:throttled not implemented in gazebo_ros/empty_world.launch<arg name="throttled" default="false"/>--><includefile="$(find gazebo_ros)/launch/willowgarage_world.launch"><!-- <arg name="gui" value="$(arg gui)" /><arg name="paused" value="$(arg paused)" /> --><!-- TODO:throttled not implemented in gazebo_ros/empty_world.launch<arg name="throttled" value="$(arg throttled)" />--></include><!-- start pr2 robot --><includefile="$(find pr2_gazebo)/launch/pr2.launch"/></launch>注解完毕就可以启动啦。启动之後的环境会长得像下面这样:安装 & 启动 Cartographer安装的方法满简单的,只要照著官方文件上的步骤做就可以了:# Install wstool and rosdep.sudo apt-get updatesudo apt-get install -y python-wstool python-rosdep ninja-build# Create a new workspace in "catkin_ws".mkdir catkin_wscd catkin_wswstool init src# Merge the cartographer_ros.rosinstall file and fetch code for dependencies.wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstallwstool update -t src# Install deb dependencies.rosdep initrosdep updaterosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y# Build and install.catkin_make_isolated --install --use-ninjasource install_isolated/setup.bash重点是装完之後,我们想要跑 cartographer_ros package 里面的 demo_pr2.launch,但里面原本预设是跑 bag file 的 demo 版本,所以我们要稍微修改一下 demo_pr2.launch :rosed cartographer_ros demo_pr2.launch<!--Copyright 2016 The Cartographer AuthorsLicensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.--><launch><paramname="/use_sim_time"value="true"/><nodename="cartographer_node"pkg="cartographer_ros"type="cartographer_node"args="-configuration_directory$(find cartographer_ros)/configuration_files-configuration_basename pr2.lua"output="screen"><remapfrom="scan"to="/base_scan"/></node><nodename="tf_remove_frames"pkg="cartographer_ros"type="tf_remove_frames.py"><remapfrom="tf_out"to="/tf"/><rosparamparam="remove_frames">- map- odom_combined</rosparam></node><nodename="rviz"pkg="rviz"type="rviz"required="true"args="-d $(find cartographer_ros)/configuration_files/demo_2d.rviz"/></launch>修改完之後就可以执行了,这时应该可以看到 Rviz 的视窗跳出来,也可以看到目前的地图。roslaunch cartographer_ros demo_pr2.launchTeleop PR2 来建地图罗只要启动 teleop_keyborad 就可以用键盤控制机器人移动:roslaunch pr2_teleop teleop_keyboard.launchWASD 四个按键分别代表前左後右四个方向的平移、QE两个按键是原地旋转,这边要注意必须选到启动 teleop_keyboard的视窗,按按键才有用。使用 teleop 来控制 PR2 走一走之後,就可以看得出我们已经建立了一个有模有样的地图。不过因为这个地图太大,我就不走完了。

求知这个插件好用吗Cartographer_QuestInfo_3.0

Cartographer制图大师插件Cartographer_QuestInfo是他的一个模块(不过下载是分开的),需要Cartographer主插件支持Cartographer_QuestInfo任务模块还是蛮好用的,我一直在用,挺不错的

!!!!魔兽国服WLK~~~~~最强任务插件Cartographer报错!!!!

数据库过期了。去下载个carbonite吧,绝对是任务神器。

wow插件Cartographer QuestInfo

这个插件就是这个样子,没有办法,你可以联系插件作者然后向他说明这个问题,也许下个版本就能优化了,呵呵。

魔兽世界任务插件Cartographer_QuestInfo用不了!

插件冲突了

魔兽世界插件Cartographer_QuestInfo怎么用

不用设置,按“L”打开任务栏以后,你就看到效果了

关于Cartographer_QuestInfo

Cartographer_QuestInfo是Cartographer附属的插件 本来就是点就开地图标记的 下个新版的

魔兽世界,Cartographer_QuestInfo和QuestHelper这个两个插件,哪个好啊?

Cartographer_QuestInfo好 比QuestHelper多了很多功能

WOW插件问题 100分!!cartographer怎么用

这插件很强大...你点下地图.上面能显示出你所有任务的地点,掉落.交任务的地方等等.右边不是有任务的标题吗?点标题左边有个绿色的点.点上他会出现你到任务地点的路线...

为什么cartographer不出现三维地图

M键,打开大地图!只有在你探索到该区域,该区域才会在地图上从阴影中显示出来!如果你使用插件,那么你可以使用插件的“地图信息”中的“打开全部地图”功能,将地图探开!

魔兽世界采矿插件Cartographer 怎么用?

把插件都删了只装Cartographer和相关的插件试下,可以的话再装别的插件。

魔兽世界 Cartographer 插件

见意用大脚或六魔包。玩wow5年我就用这2个最好。不丢号。省内存。别的插件多少都有后门。用个插件丢号不值得。

魔兽插件Cartographer制图大师里的矿点显示怎么不能用?

那个功能的意思貌似是你挖过之后会在地图上显示。

如何使用Google 的Cartographer SLAM算法包

1. LIDAR SLAM并且用IMU辅助;2. submapscan matching解决些基本问题;3. Loop closure optimization非indoor环境必须要visual slam幅降低accumulated error作者给加进;4. 给套node selection, branching, and computationof upper bounds.结论:套state-of-artindoor LIDAR SLAM系统实现该都robust看作者降低accumulated error提高真工程用性做努力作者:立党链接:源:知乎著作权归作者所转载请联系作者获授权

香蕉派 如何配置32位cartographer?

性教派如果想配置32位的话,还是比较麻烦的,可以上网查询一下过程。

大脚插件和地图插件Cartographer不兼容,怎么解决?

因为大脚插件里的地图单体插件已经有了所以和新的单提插件会冲突的建议要么只用大脚要么只用那个地图插件集合类插件和单体插件一起用肯定会不兼容的

如何使用Google 的Cartographer SLAM算法包

0.安装所依赖项sudo apt-get install -y google-mock libboost-all-dev libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libprotobuf-dev libsuitesparse-dev libwebp-dev ninja-build protobuf-compiler Python-sphinx ros-indigo-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev1.首先安装ceres solver选择版本1.11,路径随意Git clone cd ceres-solver-1.11.0/buildcmake ..make –jsudo make install2.安装 cartographer,路径随意git clone cd cartographer/buildcmake .. -G Ninjaninjaninja testsudo ninja install3.安装cartographer_ros谷歌官提供安装比较繁琐我原文件进行少许修改核代码变修改编译文件载catkin_ws面src文件夹面git clone catkin_ws面运行catkin_make即4.数据载测试2d数据概500M用迅雷载3d数据8G左右同用迅雷载运行launch文件即roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bagroslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/cartographer_3d_deutsches_museum.bag图左侧2d,右侧3d

E.S. Posthumus的专辑二《Cartographer》

E.S. Posthumus 早在专辑《Unearthed 出土》惊艳世间之后,一直没有新动作,在2008奥运年伊始,他们的第二张专辑《Cartographer 制图师》横空出世,并且还是双CD规格,这是一张融合了古典和流行元素的专辑,制作灵感来自于一张上古地图——“Piri Reis 皮瑞·雷斯”地图。该地图于1929年在君士但丁堡被发现,其制图师 Piri Reis 皮瑞·雷斯,他于1513年综合史料绘制的非洲和南美洲的海岸地图及南极洲地图,与现代的卫星地图极为相似,并且精确到了半个经度。其特别之处在于这比人类能够在海上确定位置早250年。因此当代科学家推断出来,上古时期(至少大约6000年前)的南极洲其实并未被冰雪覆盖,并且其上有文明存在,才留下了供 Piri Reis 皮瑞·雷斯 绘制地图的史料。在《Cartographer 制图师》中,E.S. Posthumus 引领我们探索、畅想了这片处于印度洋南端的海域、岛屿和土地,如同那些经验丰富、技术高超、遨游了地球上每一个角落的航海家一样。E.S. Posthumus 创造了一种独特“语言”,并用这种语言在音乐中给听众讲述一个个神话、传说和故事,这些描述包括了创造、探险和一切的终结。听了,很棒,风格应该说是 New Age。从 BT 上下载下来分享,会持续供源至少半年吧。音质倒是没什么缺憾, 可惜没有 log,只有cue ,下一帖贴出。专辑曲目:Cd 1 Luna Sans Nolitus Isunova Vorrina Selisona Marunae Mosane Decifin Sollente Caarano ⒑ Ratamei⒒ Oraanu⒓ Nivaos⒔ NasivernCd 2 Piri Reis Remixes Aschielf Piri Reis - Bonus Track Oraanu Piri Reis Marunae Piri Reis Mosane Piri Reis Isunova Piri Reis Nasivern Piri Reis Selisona Piri Reis Raptamei Piri Reis Caarano Piri Reis ⒑ Nivaos Piri Reis⒒ Sollente Piri Reis⒓ Decifin Piri Reis⒔ Vorrina Piri Reis⒕ Nolitus Piri Reis⒖ Odenall Piri Reis - Bonus Track

如何看待谷歌在 10 月 6 日开源的 SLAM 算法 cartographer

1. LIDAR SLAM,并且用了IMU辅助;2. 有submap,有scan matching,解决了一些基本的问题;3. 有Loop closure optimization,这个很好,非常好,这是在indoor环境里必须要有的,在visual slam中大幅降低accumulated error的方法,作者给加进来了;4. 给了一套node selection, branching, and computationof upper bounds的方法.结论:一套state-of-art的indoor LIDAR SLAM系统实现,该有的都有了,很robust,看得出作者为了降低accumulated error提高真正工程上的可用性做了很多努力。作者:立党链接:来源:知乎著作权归作者所有,转载请联系作者获得授权。

在cartographer上调试自己录制的数据(Pandar64 + IMU)

最近使用一个pandar64线激光(和赛)+IMU在cartographer上建图,总结以下几点,备忘。 1. 准备数据 自己录制的IMU和Pandar64 线Point2数据(一个激光雷达传感器),并且有LiDAR到IMU的外参。 修改数据包时,注意frame_id要与cartorgrapher参数urdf中描述的一致。 IMU数据因为要被用于Robot的位姿估计,所以要注意当前数据与Cartographer中的坐标一致性。 注意激光雷达扫描一周时所生成帧的频率,此处是每旋转一周生成一帧点云数据,当采用npackages模式时,每个UDP包就生成一帧,一个旋转周期可能会上百帧,要注意跟 参数 TRAJECTORY_BUILDER_3D.num_accumulated_range_data 配合使用。2. 在cargographer中的数据校验 只要没有特别醒目的报错,即可认为没问题。 类似以下这样的报警,可以不必在意,基本不影响建图, Point data (frame_id: "horizontal_vlp16_link") has a large gap, largest is 0.118117 s, recommended is [0.0005, 0.05] s with no jitter.3. launch和lua参数配置 按照demo_backpack_3d.launch以及对应的lua和urdf参数进行配置即可,需要注意以下参数 map_frame = "map",   tracking_frame = "imu_link",   published_frame = "base_link",   odom_frame = "odom",   provide_odom_frame = false, use_odometry = false, num_point_clouds = 1, TRAJECTORY_BUILDER_3D.num_accumulated_range_data = 1  #这个参数一定要注意,如果不改成对应的频率,可能会出现点云一直不动,没有轨迹生成的情况 同时也要注意,urdf中 欧拉角给出的顺序,参考backpack_3d.urdf可知,实际顺序为 rpy="pitch roll yaw",而不是想象中的RPY。 4.建好的图

Cartographer

Data代表数据 就是说你下的这个是原始的 不带数据的 把原来的删了 下个带数据的外面没有单下数据的

Cartographer CPU满负载

冗余的技术计算参数导致的。CartographerCPU满负载是因为他的前端和后端都使用了比较冗余的计算参数。1、可以把激光的采样间隔设置大一些。2、demo的帧率为30Hz,将其设置为12Hz。

Cartographer调参

技术标签: Cartographer 根据Cartographer_ros文档翻译 Cartographer是一个复杂的系统,调整它需要很好地理解其内部工作。此页面试图直观地概述Cartographer使用的不同子系统及其配置值。如果您对Cartographer的介绍不仅仅感兴趣,还应参考Cartographer论文。它仅描述了2D SLAM,但它严格定义了此处描述的大多数概念。这些概念通常也适用于3D。 W. Hess, D. Kohler, H. Rapp, and D. Andor, Real-Time Loop Closure in 2D LIDAR SLAM , in Robotics and Automation (ICRA), 2016 IEEE International Conference on . IEEE, 2016. pp. 1271–1278. Cartographer可以看作是两个独立但相关的子系统。第一个是 LocalSLAM (有时也称为 前端 或 局部轨迹构建器 )。它的工作是建立一系列 子图 。每个子图都是本地一致的,但我们接受LocalSLAM随着时间的推移而漂移。大多数地方SLAM选项中可以找到 install_isolated/share/cartographer/configuration_files/trajectory_builder_2d.lua 为2D和 install_isolated/share/cartographer/configuration_files/trajectory_builder_3d.lua 为3D。(对于本页的其余部分,我们将参考TRAJECTORY_BUILDER_nD作为常用选项) 另一个子系统是 全局SLAM (有时称为 后端 )。它在后台线程中运行,其主要工作是找到 回环约束 。它通过对子图的扫描匹配来实现。它还结合了其他传感器数据,以获得更高级别的视图,并确定最一致的全局解决方案。在3D中,它还试图找到重力方向。它的大多数选项都可以在 install_isolated / share / cartographer / configuration_files / pose_graph.lua中找到。 在更高的抽象上,LocalSLAM的工作是生成良好的子图,而全局SLAM的工作是将它们最一致地结合在一起。 测距传感器(例如:LIDAR)提供多个方向的深度信息。但是,有些测量与SLAM无关。如果传感器部分被灰尘覆盖或者如果它被引向机器人的一部分,则一些测量距离可被视为SLAM的噪声。另一方面,一些最远的测量也可能来自不需要的源(反射,传感器噪声),并且也与SLAM无关。为解决这些问题,Cartographer首先应用带通滤波器,并仅将范围值保持在某个最小和最大范围之间。应根据机器人和传感器的规格选择最小值和最大值。 注意 在2D中,Cartographer将比max_range更换范围 TRAJECTORY_BUILDER_2D.missing_data_ray_length 。它还提供了将3D点云过滤为2D切割的值 max_z 和 min_z 值。 注意 在Cartographer配置文件中,每个距离都以米为单位定义 距离是在一段时间内测量的,而机器人实际上正在移动。但是,距离是由大型ROS消息中的“批量”传感器提供的。Cartographer可以独立考虑每个消息的时间戳,以考虑机器人运动引起的畸变。Cartographer进行测量频率越高,测量结果组合成一个可以立即捕获的单个相干扫描就越好。因此,强烈建议通过扫描提供尽可能多的 rangedata (ROS消息)。 Rangedata通常从机器人上的单个点测量,但是以多个角度测量。这意味着靠近的表面(例如道路)经常被击中并提供许多点。相反,远处的物体不常被击中并且提供较少的点数。为了减少点处理的计算权重,我们通常需要对点云进行下采样。然而,简单的 随机抽样 将从我们已经具有低密度测量的区域移除点,并且高密度区域仍将具有比所需更多的点。为了解决这个密度问题,我们可以使用一个 体素滤波 ,将原始点下采样为一个恒定大小的立方体,并只保留每个立方体的质心。 较小的立方体大小将导致更密集的数据表示,从而导致更多计算。较大的立方体大小会导致数据丢失,但会更快。 在应用了固定尺寸的体素滤镜后,Cartographer还应用了 自适应体素滤镜 。此过滤器尝试确定最佳体素大小(在最大长度下)以实现目标点数。在3D中,两个自适应体素滤波器用于生成高分辨率和低分辨率点云,它们的使用将在 LocalSLAM中 阐明。 惯性测量单元可以是SLAM的有用信息源,因为它提供精确的重力方向(因此,地面)和机器人旋转的嘈杂但良好的整体指示。为了过滤IMU噪声,在一定时间内观察到重力。如果您使用2D SLAM,则可以实时处理范围数据而无需额外的信息来源,因此您可以选择是否要让Cartographer使用IMU。使用3D SLAM,您需要提供IMU,因为它用作扫描方向的初始猜测,大大降低了扫描匹配的复杂性。 注意 在Cartographer配置文件中,每次定义值都以秒为单位 一旦扫描组装并从多个范围数据中过滤,就可以为LocalSLAM算法做好准备。LocalSLAM 使用来自 位姿估计器 的初始估计通过 扫描匹配 将新扫描插入其当前子图构造中。位姿估计器背后的想法是使用除测距仪之外的其他传感器的传感器数据来预测下一次扫描应该插入子图的位置。 有两种扫描匹配策略: 无论哪种方式, CeresScanMatcher 都可以配置为给每个输入一定的权重。权重是衡量对数据的信任度,可以将其视为静态协方差。重量参数的单位是无量纲的数量,不能在彼此之间进行比较。数据源的权重越大,Cartographer在进行扫描匹配时就会越强调这个数据源。数据来源包括占用空间(扫描点),位姿外推器(或 RealTimeCorrelativeScanMatcher )的平移和旋转 注意 在3D中, occupied_space_weight_0 和 occupied_space_weight_1 参数分别与高分辨率和低分辨率滤波点云相关。 在 CeresScanMatcher 从得名 Ceres Solver ,以谷歌为解决非线性最小二乘问题的库。扫描匹配问题被建模为这样的问题的最小化,其中两个扫描之间的 运动 (变换矩阵)是要确定的参数。Ceres使用下降算法针对给定的迭代次数优化运动。Ceres可以配置为根据您自己的需要调整收敛速度。 该 RealTimeCorrelativeScanMatcher 可以根据您在传感器的信任进行切换。它的工作原理是在 搜索窗口中 搜索类似的扫描, 搜索窗口 由最大距离半径和最大角度半径定义。当使用此窗口中的扫描执行扫描匹配时,可以为平移和旋转组件选择不同的权重。例如,如果您知道机器人不会旋转很多,您可以使用这些权重。 为避免每个子图插入太多扫描,一旦扫描匹配器找到两次扫描之间的运动,它就会通过 运动滤波器 。如果导致它的运动不够重要,则扫描将被删除。仅当扫描的运动高于特定距离,角度或时间阈值时,才会将扫描插入到当前子图中。 当LocalSLAM已经接收到给定量的范围数据时,认为子图构建完成。LocalSLAM会随着时间漂移,GlobalSLAM用于解决这种漂移问题。子图必须足够小,以使其内部的漂移低于分辨率,以便它们在局部是正确。另一方面,子图应该足够大以使环路闭合能够正常工作。 子图可以将它们的范围数据存储在几个不同的数据结构中:最广泛使用的表示称为概率网格。但是,在2D中,还可以选择使用截断的有符号距离场(TSDF)。 概率网格将空间划分为2D或3D表格,其中每个单元格具有固定大小并包含被障碍物占有的概率。根据“ 命中 ”(测量范围数据)和“ 未命中 ”(传感器和测量点之间的自由空间)更新Odds。 命中 和 未命中 可以在占用概率计算不同的权重,赋予更多或更少的信任。 在2D中,每个子图仅存储一个概率网格。在3D中,出于扫描匹配性能的原因,使用两个 混合 概率网格。(术语“混合”仅指内部树状数据表示并被抽象给用户) 扫描匹配首先将低分辨率点云的远点与低分辨率混合网格对齐,然后通过将高分辨率点与高分辨率混合网格对齐来细化位姿。 注意 CartographerROS提供了一个可视化子图的RViz插件。您可以从其编号中选择要查看的子图。在3D中,RViz仅显示3D混合概率网格的2D投影(灰度)。RViz左侧窗格中提供了选项,可在低分辨率和高分辨率混合网格可视化之间切换。 TODO : 记录TSDF配置 当LocalSLAM生成其连续的子图时,全局优化(通常称为“ 优化问题 ”或“ 稀疏位姿调整 ”)任务在后台运行。它的作用是重新安排彼此之间的子图,以便它们形成一个连贯的全局地图。例如,该优化负责改变当前构建的轨迹以正确地对准关于环闭合的子图。 一旦插入了一定数量的轨迹节点,就会批量运行优化。根据您运行它的频率,您可以调整这些批次的大小。 注意 将 POSE_GRAPH.optimize_every_n_nodes 设置为 0 是禁用全局SLAM并专注于LocalSLAM行为的便捷方法。这通常是调整Cartographer的第一件事。 全局SLAM是一种“ GraphSLAM ”,它本质上是一种位姿图优化,它通过在 节点 和子图之间构建 约束 然后优化得到的约束图来工作。可以直观地将约束视为将所有节点捆绑在一起的小绳索。稀疏位姿调整完全固定这些绳索。生成的网称为“ 位姿图 ”。 注意 约束可以在RViz中可视化,调整全局SLAM非常方便。还可以切换 POSE_GRAPH.constraint_builder.log_matches 以获得格式化为直方图的约束构建器的常规报告。 注意 实际上,全局约束不仅可以在单个轨迹上查找循环闭包。它们还可以对齐由多个机器人记录的不同轨迹,但我们将保留此用法以及与“全局本地化”相关的参数超出本文档的范围。 为了限制约束(和计算)的数量,Cartographer仅考虑构建约束的所有关闭节点的子采样集。这由采样率常数控制。采样太少的节点可能导致错过约束和无效的循环闭包。对太多节点进行采样会降低全局SLAM的速度并阻止实时循环关闭。 当考虑节点和子图建立约束时,它们会通过名为的第一个扫描匹配器 FastCorrelativeScanMatcher 。该扫描匹配器专为Cartographer设计,可实现实时循环闭合扫描匹配。在 FastCorrelativeScanMatcher 依靠“ 分支定界 ”机制在不同的格点分辨率的工作,有效地消除不正确匹配数。这种机制在本文件前面介绍的制图文章中有广泛的介绍。它适用于可以控制深度的探索树。 一旦 FastCorrelativeScanMatcher 有足够好的建议(高于最低匹配分数),然后将其输入Ceres扫描匹配器以改进位姿。 当Cartographer运行 优化问题时 ,Ceres用于根据多个 残差 重新排列子图。残差是使用 加权损失函数 计算的。全局优化具有成本函数以考虑大量数据源:全局(循环闭包)约束,非全局(匹配器)约束,IMU加速和旋转测量,局部SLAM粗略姿态估计,测距源或固定框架(如GPS系统)。可以按照 LocalSLAM 部分中的说明配置权重和Ceres选项。 注意 通过切换,可以找到有关优化问题中使用的残差的有用信息 POSE_GRAPH.max_num_final_iterations 作为其IMU残差的一部分,优化问题为IMU姿态提供了一些灵活性,默认情况下,Ceres可以自由地优化IMU和跟踪帧之间的外部校准。如果您不信任您的IMU位姿,可以记录Ceres全局优化的结果并用于改进您的外部校准。如果Ceres没有正确优化您的IMU位姿并且您完全相信您的外在校准,则可以使此位姿保持不变。 在残差中,异常值的影响由配置有某个Huber量表的 Huber损失 函数处理。Huber量表 越大 ,(潜在)异常值 的影响越大 。 一旦轨迹完成,Cartographer就会运行一个新的全局优化,通常比以前的全局优化要多得多。这样做是为了完善Cartographer的最终结果,通常不需要是实时的,所以大量的迭代通常是正确的选择。

cartographer中的三维插值如何实现的

cartographer中的三维插值实现可以这样操作:1、使用cartographer_ros进行3d建图;2、需要三维点云数据和IMU数据,三维点云由速腾聚创3d激光雷达提供,IMU数据则由小强xq5开发平台提供。