Octomap使用记录

发布时间:2024年01月06日

?简介

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

文章来源:https://blog.csdn.net/m0_52250683/article/details/135404993
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。