Octomap使用记录

 简介

Octomap是一种基于八叉树的高效概率3D建图框架,目前大多用于储存地图,涉及机器人、传感器、地图等领域。特点是,内存小,可动态调整分辨率。

我使用是因为他和点云有相关之处,也有一些早期的神经网络做过将点云体素化再使用的工作,虽然都效果不理想,在Charles Qi提出PointNet和PointNet++后更是几乎没人在这么做,但做为一种可能性和新的工具,我还是简单探索了一下。

使用资源链接

octomap官方网址:OctoMap - 3D occupancy mapping

octomap代码网址:https://github.com/OctoMap/

octomapAPI网址:octomap: OctoMap

octomap源码下载:

git clone https://github.com/OctoMap/octomap.git

部署

Windows

Windows里面他的octovis工具是有问题的,即使是按官网提供的方法也可能出现问题,但octomap可以正常使用。基本是跟着官网教程做的,在此进行记录。

octomap和octovis可以分开编译,也可以一起编译,我在windows上只成功做完了Octomap,Octovis没复现出来。

Octomap
cd .\octomap
mkdir build
cd .\build
cmake ..

 编译可以用Visual studio,在cmake的时候可能需要选一下vs的版本。

在build文件夹内打开octomap.sln,构建其中的ALL_BUILD即可,构建完成会弹出无法访问某个文件夹的报错,不用理。

Octovis

贴一下官方文档的教程(https://github.com/OctoMap/octomap/tree/devel/octovis),但两种方式在尝试后都出现了问题。其实思路是和上面octomap是一样的,只是多了个QT库,我严重怀疑是什么神奇的版本问题。

MinGW:成功生成.dll和.a文件,但在mingw32-make时报错:no target makefile found,所以我认为这个cmake多多少少有点问题

VS:在执行qmake -t vclib QGLViewer.pro后,开始build QGLViewer.vcxproj时,报错ALL_BUILD文件拒绝访问,切无法通过修改权限解决,只能生成.dll文件,无.lib文件

Linux

Linux使用octomap简单方便。

先装依赖

sudo apt-get install cmake doxygen libqt4-dev libqt4-opengl-dev libqglviewer-dev-qt4

然后直接编译链接即可 

mkdir build
cd build
cmake ..
make

在项目中使用octomap库

通过Makefile来编译

在cpp文件同级目录下创建CMakeLists.txt,内容如下

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)

project(porject name)

find_package(OCTOMAP REQUIRED)

include_directories(${OCTOMAP_INCLUDE_DIRS})
link_directories(${OCTOMAP_LIBRARY_DIRS})
link_libraries( ${OCTOMAP_LIBRARIES})

add_executable (exe_name your_cpp.cpp)
target_link_libraries (exe_name ${OCTOMAP_LIBRARIES})

随后

mkdir ./build
cd ./build
cmake ..
make

通过VS来使用

建议通过属性表来配置,这样要用就拉过来。

属性表管理器(Property Manager)在visual studio中的view->other windows->property manager下来配置。

选择合适的平台,Release和Debug只是涉及静态链接库的版本,Release无报错提示,Debug有,.lib文件最后一个字母是d的就是debug版本的,正常来讲,没差,都能用,但不排除某些库不能混着用,是所以最好分开。

配置主要是有两件事,第一是头文件的目录,第二是静态链接库的目录和文件。

头文件目录在VC++ Directories中的Include Directories中配置,要写全,octomap有三个:

D:\lib\octomap-1.9.1\octovis\include
D:\lib\octomap-1.9.1\dynamicEDT3D\include
D:\lib\octomap-1.9.1\octomap\include

静态链接库要配置两个地方,一是指明静态链接库所在的文件夹,二是指明你需要用哪些景天链接库文件

D:\lib\octomap-1.9.1\lib
dynamicedt3d.lib;octomap.lib;octomath.lib

  • 43
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
c OctoMap 是一个用于3D环境建模的软件包,基于八叉树数据结构设计。它被广泛应用于机器人导航、自动驾驶和虚拟现实等领域。 它的工作原理是将三维空间划分为一个个立方体,然后通过二进制表示空间中每个立方体的存在与否。对于已知的空间区域,标记为“占用”;对于未知的空间区域则标记为“未探测”;对于自由空间则标记为“空闲”。通过八叉树的层次结构,OctoMap 可以按需添加或删除立方体,并动态地更新地图。 OctoMap 支持输入不同类型的数据源,如激光雷达数据、RGB-D相机数据等。它可以根据这些数据来生成或更新3D环境模型。同时,OctoMap 还提供了一些其他的功能,如碰撞检测、路径规划等,以帮助机器人在复杂的环境中做决策和导航。 OctoMap 的优点在于其高效的数据结构和算法设计,使得内存占用较小,同时也能保证较高的建模精度。此外,OctoMap 还具有较好的可扩展性和通用性,可以应用在不同类型的机器人系统中。通过不断地更新,OctoMap 可以实时感知和建模环境的变化,从而为机器人系统提供更准确、更可靠的地图信息。 总之,c OctoMap 是一个功能强大的3D环境建模软件包,能够广泛应用于机器人导航、自动驾驶和虚拟现实等领域。它通过八叉树数据结构和高效的算法设计,可以快速生成和更新环境地图,并提供一些其他的功能来辅助机器人系统的决策和导航。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Caesala

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值