图漾深度相机PM801调试,windows环境下camke调试
图漾深度相机PM801 windows环境下cmake调试
最近项目上决定使用图漾的PM801深度相机,从图漾公司借来样机之后便开始准备调试,由于项目要求在windows环境下进行软件开发,以前都是在ubuntu下做传感器调试,第一次在windows里做,正好把过程做个记录,也算是自己的工作备忘(还成了第一篇CSDN文章)。
全部过程并不复杂,但是中间有些坑还是值得记录一下,大致分为几个步骤
CMAKE安装
Cmake是一个跨平台的安装平台工具,可以输出各种makefile和project,例如在windows中可以生成Visual C++的projects和workspace,然后在依据一般的建构方式使用。图漾提供的SDK可以使用CMAKE来进行标准的工程构建,所以首先需要下载安装CAMKE。
CMAKE的下载非常简单,直接去官网选择自己合适的版本下载就好。
传送门:CMAKE官网链接(https://cmake.org/download/).
同时一篇博主的详细安装流程也相当不错,同样传送门给出来:Windows下CMake安装教程(https://blog.csdn.net/u011231598/article/details/80338941/).
当然,必须提前安装好Visual Studio,否则后面cmake没办法编译的,同样也是直接在官网下载就好。
OpenCV安装编译
用深度相机必然是要用来做图像处理的,OpenCV必不可少,我的windows环境里什么库也没装过,所以得先把opencv装起来,也方便后面的开发。
首先在opencv官网选择要下载的版本和对应的平台,我下载的是opencv3.4.4,图漾的SDK支持opencv2.4.8及以上版本,所以我认为只要是2.4.8以上的都没问题。
OpenCV官网中在releases里选择想要下载的版本和对应的平台。
点击之后会跳转的下载界面,等待几秒之后就下载完成了。
下载成功之会在下载地址里看到opencv的文件夹,在一级目录下新建一个build文件,这是文件夹里的东西应该是这个样子:
其中build文件夹目前是空的,一会cmake生成的东西会放在这里,source里就是源码。
现在打开cmake里的cmake_gui.exe,就是cmake的图形界面来编译opencv(cmake_gui.exe一般在cmake文件夹中的bin文件夹里)。
这里where is the source code填源码的地址,where to build里填刚刚新建的build文件夹的地址,其中源码地址貌似只要地址里有源码即可,不需要写到源码的根目录地址,但是我没试过,各位可以试试。
填完之后点击Configure,选择自己的VS版本,然后Configure,等待一会之后出现configure done,就完成了Configure,如果中间有报错,根据提示解决掉,一般只可能是路径给错了,没有出现过什么其他error。
Configure完成后,点击Generate,同样等待一会,出现generate done,就完成了cmake编译OpenCV的过程了
cmake编译成功后,就要进行最后一步VS编译opencv源码,在cmake编译之后,原本空的build文件夹多出了很多东西,这就是cmake生成的VS project,我们找到其中的工程文件——OpenCV.sln,打开之后就可以看见VS project了。
在工具栏选择Debug(或者Release),然后右键ALL_BUILD,点击生成,等待一段时间(这里生成的时间会比较长),就会看到编译成功的提示,我这里是成功77个,失败0个,跳过0个
到此,OpenCV的安装和编译就全部完成了,有兴趣的小伙伴可以拿一个简单的例程来测试一下,这里就不放opencv的测试过程了。
图漾相机的SDK编译
图漾的深度相机在Linux和windows平台下用的是同一个SDK,Camport3,下载地址在图漾给的用户手册里就有:
Camport3下载地址:https://github.com/percipioxyz/camport3
下载完成后的文件夹结构是这个样子:
由于PM801深度相机采用以太网传输,所以不需要安装usb驱动,如果是usb传输的深度相机需要啊先安装usb驱动,在图漾操作手册里有流程介绍,这里就不详述了,直接进入Cmake过程。
在cmake编译SDK之前,我们先在系统的环境变量中设置一下opencv库的路径。
首先右键我的电脑,点击属性(或者控制面板->系统和安全->系统)
点击高级系统设置,选择环境变量
选择用户变量下的path,然后点击编辑,注意不是系统变量,是上面的用户变量,就是你的用户名+变量,改动系统变量会发生什么,我也不知道,总之不会有什么好事。
选择一个空白的路径,点击新建,然后输入自己的opencv库路径,就是opencv文件夹里bin的路径,我得路径如下图所示,改成自己的路径就可以,然后点击确定,完成路径配置。
路径配置完成后就可以开始cmake编译SDK了,先在Camport3里的sample文件夹下新建一个build,用来装cmake生成的文件,打开cmake_gui,这里source路径写sample的路径,下面的同样写build的路径,然后点Configure,选择VS版本,等待configure done,然后点击Generate,同样等到generating done,跟编译opencv流程一样。
编译完成后同样会在build文件夹里生成许多文件,找到VS project——Project.sln,双击打开
在VS project里右键ALL_BUILD,点击生成,等待一段时间,显示编译成功,编译过程中会有一堆warning,只要没有error,并且最终显示编译成功,就可以了(我这里显示成功22个,失败0个,跳过0个)。
编译成功后,点击build里的bin文件,生成的可执行文件就在里面了,按道理说这里只要点击要运行的exe文件,连上相机就可以用了。
但是!坑就在这里出现了,我点击Simpleview_FetchFrame.exe,提示出现缺少很多.dll文件,可能有的小伙伴不会遇到这种情况,如果遇到了,也不用慌张,很好解决。
首先,确认缺少的.dll文件,前面带opencv的,比如我缺少的opencv_core344d.dll,opencv_imgcodecs344.dll等,可以在opencv/build/bin/Debug里面找到,把这些缺失的.dll文件复制到系统的C:\Windows\System32和C:\Windows\SysWOW64中(我是两个文件夹都粘贴了)。
对于没有opencv前缀的,例如我缺失了一个tycam.dll,这个文件在camport3-master\lib\win\hostapp\x86
路径下,同样把它复制到C:\Windows\System32和C:\Windows\SysWOW64中,点击exe文件,应该就没有文件缺失提醒了。
此时点击.exe文件,应该是这个样子:
不用担心,这是由于相机和PC没有连接上导致的,下一步就是连接相机了。
网络IP 设置与相机连接
由于PM801采用以太网传输,所以只需要将电脑的主机IP与相机的IP地址设置在同一网段即可,相机的IP 地址我在Linux系统里已经设置过了,如果没有设置的可以参照图漾用户手册进行静态IP设置,同时PM801也支持动态IP设置,但是这里我采用的还是静态IP,我设置的相机IP 是192.168.0.10,所以在相机和电脑通过网线连接后,需要在网络设置里,右键以太网连接(选择连接上的那个),点击属性,然后选择Ineternet协议版本4(TCP/IPv4),在里面点击使用下面的IP地址,然后在第一行设置主机IP,最后一位只要在0-255之间都可以,不要和相机IP重复就行,然后掩码和网关也按照这么设置,点确定。
这里可以验证电脑和相机是否已经连接成功了,打开命令行(运行输出cmd),输入ping 相机IP地址,例如:
ping 192.168.0.10
如果连接成功,会看到电脑和相机之间的通信,如:
测试相机
到此,所有流程都完成了,接下来就可以测试SDK是否能在windows平台上运行啦。
连接相机,点击SimpleView_FetchFrame.exe,听到相机启动的声音,然后RGB图,深度图等都可以显示出来了:
VS2017的安装包,cmake的文件包以我上传到附件上去了,如果不想去官网上找,直接下载下来用也是可以的。