LaMa是由葡萄牙阿威罗大学的智能机器人与系统(IRIS)实验室开发的用于机器人定位和制图的C++ 11软件库。它包括一个用于3D体积网格(用于建图)的框架,一个基于扫描匹配的定位算法和两个SLAM解决方案(一个在线SLAM和一个粒子滤波SLAM)。
主要特点是效率。只要有可能,就使计算量少,内存使用量少。运行我们的定位和SLAM解决方案的最小可行计算机是Raspberry Pi 3 Model B+。
Github:https://github.com/iris-ua/iris_lama
要构建LaMa,请从GitHub克隆它并使用CMake进行构建。
$ git clone https://github.com/iris-ua/iris_lama
$ cd iris_lama
$ mkdir build
$ cd build
$ cmake ..
它唯一的依赖性是Eigen3。
注意:LaMa不提供任何可执行文件。有关如何使用它的示例,请查看我们与ROS的集成。
源代码包含package.xml
,因此可以将其用作外部ros包中的库。我们提供ROS节点来运行定位和两个SLAM解决方案。请访问iris_lama_ros了解更多信息。
稀疏-密集建图(SDM)是有效实施3D体积网格的框架。它将空间划分为小的稠密块,这些稠密块可通过稀疏数据结构寻址。为了提高内存使用率,可以在实时操作期间使用低损耗的无损数据压缩(当前为lz4和Zstandard)每个块。它可以替代OctoMap。
当前,它已实现以下网格图:
(1)Distance Map:它提供了到地图中最接近的占用像元的距离。我们提供了DynamicDistanceMap
,它是由以下人员提出的动态欧几里得地图的实现:
B. Lau, C. Sprunk, and W. Burgard Efficient Grid-Based Spatial Representations for Robot Navigation in Dynamic Environments Robotics and Autonomous Systems, 61 (10), 2013, pp. 1116-1130, Elsevier
(2)Occupancy Map:机器人技术中最常见的环境表示形式。提供了3个占用地图的变体:
SimpleOccupancyMap
,其中每个单元格都具有三种状态:空闲,已占用或未知ProbabilisticOccupancyMap
,用于对每个带有标识的单元格的占用概率进行编码FrequencyOccupancyMap
,它跟踪光束击中或穿越(错过)一个单元的次数并计算命中率/未命中率有关SDM的更多信息,请阅读:
Eurico Pedrosa, Artur Pereira, Nuno Lau A Sparse-Dense Approach for Efficient Grid Mapping 2018 IEEE International Conference on Autonomous Robot Systems and Competitions (ICARSC)
我们为连续似然域支持的移动机器人定位提供了一种快速扫描匹配方法。它可用于为配备激光和不太好的里程计的机器人提供准确的定位。但是,始终建议使用良好的里程计。
Eurico Pedrosa, Artur Pereira, Nuno Lau Efficient Localization Based on Scan Matching with a Continuous Likelihood Field 2017 IEEE International Conference on Autonomous Robot Systems and Competitions (ICARSC)
对于没有大量回环的环境,此解决方案可能是准确且非常有效的。它甚至可以在低规格的计算机上实时运行(我们可以在带有树莓派3B+的Turtlebot上运行)。它结合我们的定位算法和动态似然域来逐步构建占用地图。
欲了解更多信息,请阅读:
Eurico Pedrosa, Artur Pereira, Nuno Lau A Non-Linear Least Squares Approach to SLAM using a Dynamic Likelihood Field Journal of Intelligent & Robotic Systems 93 (3-4), 519-532
该粒子滤波SLAM是类似于GMapping的RBPF SLAM,它是Online SLAM解决方案对具有多线程支持的多个粒子的扩展。我们的解决方案能够并行化定位和建图过程。它使用线程池来管理工作线程的数量。
即使没有多线程,我们的解决方案还是轻量级,相对于重量级的GMapping。