InfiniTAM配置过程

本文介绍如何配置环境并使用InfiniTAM进行图像处理。包括安装cuda8.0、openni2等依赖软件,配置freeglut库,安装KinectSDK1.8,以及用cmake编译InfiniTAM。最后通过示例展示了如何读取并处理GRB图像和深度图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件准备

配置环境及软件:

  • cuda 8.0
  • openni 2-2.2.0.33
  • freeglut-2.8.0.tar.gz
  • Kinect SDK 1.8

软件以及测试图片下载合集http://download.youkuaiyun.com/download/u012260117/10040005


配置freeglut

  • 解压软件安装包,用vs2010打开文件目录下的“freeglut.sln”文件。
  • 生成解决方案,使用release,分别生成win32和x64的。
  • 在lib中分别复制x64和win32下的freeglut.dll文件分别复制x64和win32下的“C:\windows\system32”和“C:\windows\sysWoW64”下。

注意!在64位版本的windows 7 下,win32版的freeglut.dll要放入sysWoW64,而x64版本的要放入system32。因为system32中的动态链接库其实是原生64位版本的。而为了兼顾兼容性,才有了sysWoW64,这个目录中存放的反而是32位的链接库。

  • 接着分别将x64和win32目录下的两个freeglut.lib放入“D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64”和“D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib”。这里就是正常对应的。
  • 最后将“include”下的“GL”目录复制到“D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include”即可。

安装cuda ,类似软件似的傻瓜安装,安装了系统默认位置。

安装Kinect SDK 1.8 配置到环境

安装openni2,它相当于一个Kinect 开发的工具包吧,驱动需要用kinect for sdk

用cmake编译InfiniTAM

  • cmake加载源文件InfiniTAM中根cmakelist.txt所在位置,点击configuration。
  • 报错原因,是因为未找到glut位置,添加freeglut.h和lib的路径
    freeglut_include_direction F:\freeglut-2.8.0\include
    freeglut_library_direction F:\freeglut-2.8.0\lib\x86
  • 点击生成。生成后,点击InfiniTAM.sln打开后,默认的是all_build是启动项,直接生成解决方案
  • 读入GRB图像和深度图像,添加路径,在main函数里
const char *arg1 = "F:\\InfiniTAMv2\\InfiniTAM\\Files\\Teddy\\calib.txt";
const char *arg2 = "F:\\InfiniTAMv2\\InfiniTAM\\Files\\Teddy\\Frames\\0000.ppm";//GRB图片
const char *arg3 = "F:\\InfiniTAMv2\\InfiniTAM\\Files\\Teddy\\Frames\\0000.pgm";//深度图像

运行之后即可。
这里写图片描述

### 不同建图算法的优缺点 #### Cartographer Cartographer 是由 Google 推出的一套基于图优化的 SLAM 算法。该算法采用 Ceres 进行问题优化,并利用四线程后端进行优化处理[^1]。 - **优点** - 高精度的地图构建能力。 - 支持多传感器融合,能够有效提高定位准确性。 - 提供了良好的回环检测机制,有助于减少累积误差。 - **缺点** - 计算资源消耗较大,对于硬件配置有一定要求。 - 实时性能相对较差,在某些场景下可能不适合快速移动平台。 #### GMapping GMapping 使用概率方法来解决同步定位与地图绘制(SLAM)问题, 它通过粒子滤波器实现环境感知并创建二维占据栅格地图[^2]. - **优点** - 对于静态环境中表现良好,可以生成高质量的二维栅格地图。 - 易于理解和实施,适合初学者入门学习SLAM技术。 - **缺点** - 动态物体的存在会影响其效果;难以应对复杂的动态变化环境。 - 当机器人运动速度较快或者存在较大的旋转角度时,可能会丢失跟踪目标。 #### Hector Hector 主要依赖于激光雷达数据来进行纯惯导系统的姿态估计以及局部区域内的地图更新工作[^3]. - **优点** - 只需依靠激光测距仪即可完成任务,无需其他外部设备辅助。 - 能够在GPS信号缺失的情况下正常运作,适用于室内等封闭空间的应用场合。 - **缺点** - 如果没有足够的特征点,则很难获得稳定可靠的位姿解算结果。 - 地形起伏剧烈的地方可能导致高度方向上的漂移现象加剧。 #### Karto Karto 同样是一种基于扫描匹配技术和贝叶斯网络模型的开源SLAM解决方案[^4]. - **优点** - 开源免费,社区活跃度高,拥有丰富的文档资料可供查阅参考。 - 设计灵活易于定制化开发,可以根据具体应用场景调整参数设置以达到最佳性能指标。 - **缺点** - 初次接触者上手难度较高,需要一定时间熟悉掌握核心概念和技术细节。 - 性能方面相较于商业产品可能存在差距,特别是在大规模复杂环境下长期运行稳定性有待验证。 #### EKF-SLAM (扩展卡尔曼滤波SLAM) EKF-SLAM 使用最大似然算法进行数据关联,但在实际应用中有一定的局限性[^5]. - **优点** - 数学理论基础扎实,推导过程严谨科学合理。 - 在特定条件下可以获得较为理想的估算精度。 - **缺点** - 计算负担重,尤其是在处理大量观测值时效率低下。 - 构建出来的地图形式为特征描述而非直观易懂的栅格表示方式,不利于后续路径规划等功能模块集成使用。 #### RGBD SLAM 类型(Bundle Fusion/InfiniTAM/RGBDSLAMv2/RTAB-MAP/ORBSLAM3) 这些算法主要针对带有深度信息的颜色图像作为输入源的情况设计而成[^6]. - **优点** - 结合视觉和深度信息的优势,可以在三维尺度上重建周围世界结构。 - 更加贴近人类认知习惯,所得到的结果更具有真实感和可解释性。 - **缺点** - 多模态传感增加了系统复杂程度,同时也带来了更多不确定因素影响最终质量。 - 对光照条件敏感,过强或过弱都会造成识别失败等问题发生。 ```python # 示例代码仅用于展示如何编写Python函数,不涉及任何具体的SLAM算法实现逻辑 def compare_slam_algorithms(): algorithms = ["Cartographer", "GMapping", "Hector", "Karto", "EKF-SLAM"] pros_cons = { alg: {"Pros": [], "Cons": []} for alg in algorithms } # 假设这里填充各个算法的具体优劣项... return pros_cons ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值