【MRPT】【icp-slam-live】Vs2013+ cmake3.6.1 + mrpt1.4.0+opencv2.9.4+wxWidget3.0.2环境配置
Win10下Vs2013 + cmake3.6.1 + mrpt1.4.0+opencv2.9.4+wxWidget3.1.0环境配置
所接触过的最令我崩溃的环境配置。之前没有考虑到vs2013 2015的问题,造成了很多麻烦。在此提示:
vs2013 的vc12和vs2015的vc14根部不是一回事!
虽然vs2012和vs2013都是vc12,但是 Vs2012的tool命令行和vs2013的也不是一回事(wxWidgets)其实很多问题都可以避免,一定要细心细心!
主要参考mrpt官网 http://www.mrpt.org/Building_and_Installing_Instructions
由于vs2015和之前版本的不一样,有很多需要注意之处,特别对opencv进行了补充。
如果报错说找不到什么文件,首先检查环境变量。
- 连接激光,若没有成功安装驱动,安装驱动(可以用360驱动大师安装)
2. 下载安装vs2013,添加环境变量
- 下载并安装cmake3.6.1(较低版本3.0.x不支持vs2015)
4. 修改wxWidget文件以支持vs2015:http://www.cnblogs.com/sqxy110/p/4897494.html
开始菜单——vs2013兼容工具命令提示符——cd到 WXWIDGETS/build/msw下
命令行build wxWidget(很久)http://www.mrpt.org/Building_and_Installing_Instructions
Build for 32bit:
Open the MSVC 32bit command-line prompt (from the start menu -> MSVC -> Visual Studio Tools), do a “cd” to the WXWIDGETS/build/msw directory and run:
nmake -f makefile.vc BUILD=release SHARED=1 RUNTIME_LIBS=dynamic DEBUG_INFO=0 VENDOR=mrpt USE_OPENGL=1
nmake -f makefile.vc BUILD=debug SHARED=1 RUNTIME_LIBS=dynamic DEBUG_INFO=1 VENDOR=mrpt USE_OPENGL=1
Build for 64bit:
Open the MSVC 64bit command-line prompt (from the start menu -> MSVC -> Visual Studio Tools), do a “cd” to the WXWIDGETS/build/msw directory and run:
nmake -f makefile.vc BUILD=release SHARED=1 RUNTIME_LIBS=dynamic DEBUG_INFO=0 VENDOR=mrpt USE_OPENGL=1 TARGET_CPU=amd64
nmake -f makefile.vc BUILD=debug SHARED=1 RUNTIME_LIBS=dynamic DEBUG_INFO=1 VENDOR=mrpt USE_OPENGL=1 TARGET_CPU=amd64
5. 下载opencv2.4.9 http://opencv.org/
!!!!注意:下载linux版的opencvxxx-zip 不要下载用于windows的exe文件!(因为vs2015编译器和之前版本的不一样,所以要自己编译)
解压后,Cmake Opencv
Cmake opencv 时候,如果报错std::tuple...可以在cmake时候,对tests和 pertests的钩去掉。引用自:code.opencv.org/issues/4376 四楼Nate Guerin
在vs中打开opencv build下的sln,重新生成(很久), 可看到Opencv/build/lib/Debug下有很多.lib
添加系统环境变量 ../opencv/build
- 下载mrpt ,
Cmake mrpt
看看wxWidgets的目录和opencv的目录有没有找到,没有的话,自己加上。
在vs中打开mrpt/build/apps/icp-slam-live 重新生成(很久)。
在这一步,可以先build mrpt-base等等模块,然后再编译别的。直接选allbuild时候,可能很久才发现问题。
7. 设置icp-slam-live为启动项。
找到icp-slam-live激光配置文件“icp-slam-live_demo_PRL_gridmap.ini”,复制到工程下。
修改ini文件,根据自己连接激光的端口号,更改端口号。修改之前是com10
Icp-slam-live右键——属性——调试——命令参数,设置为以上ini文件名称
启动icp-slam-live
工程目录build/Debug下有个rawlog文件,是输出的数据。
Mrpt/build/apps/icp-slam用来看此rawlog
或者apps/rawlogviewer。编译运行后,里面有个rawlogviewer.exe,可以看rawlog,可以把地图保存到txt。
使用rplida sdk
Sdk/output/win32/debug里面有现成的exe。具体参看sdk/doc
配置文件更改:
- 配置文件需要把端口改成连接的端口。
2. 需要ini的90行
# ========================================================
# MULTIMETRIC MAP CONFIGURATION
# See docs for (Google for) mrpt::maps::CMultiMetricMap
# ========================================================
# Creation of maps:
occupancyGrid_count=1
pointsMap_count=0
改为
occupancyGrid_count=0
pointsMap_count=1
查看机器人位置
/apps/icpslam/LOG_ICP_SLAM下面有个txt就是机器人的轨迹,是以机器人的初始位置为原点。
查看生成的png地图图片
在rawlog的文件夹下,如果正常退出程序:即关闭3D显示界面,就会生成png图片,否则(如果直接关闭控制台)程序运行不到生成图片的一行。
错误记录:
编译wx时候,手贱脑残点了vs2012,结果报错unresolved external symbol....检查是在wx里面出的错。
用vs2013编译过后,就好了