下载了ORB-SLAM2和相关的KITTI数据集运行ORB单目效果时出现了如下错误:
zhuwsh@zhuwsh-TM1705:~/Desktop/SLAM/ORB_SLAM2$ ./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml ../dataset/sequences/00/
./Examples/Monocular/mono_kitti: error while loading shared libraries: libOpenNI2.so.0: cannot open shared object file: No such file or directory
错误提示很明确,就是libOpenNI2.so找不到。
怎么办呢?自然是给安装openni2了。
一般安装有两种办法:
1)使用源码安装。就是下载源码,然后cmake、make、sudo make install来安装,openni2在github上的源码路径为:https://github.com/OpenNI/OpenNI2
2)使用安装包直接安装。就是使用apt-get install命令来安装,一般如果用户对软件的实现代码感兴趣或者说经常要使用需要修改的话可以使用源码安装方法,这样可以debug代码。这里我采用了安装包直接安装这个方式来安装的。步骤如下:
zhuwsh@zhuwsh-TM1705:~/Desktop/SLAM/ORB_SLAM2$ sudo apt-get install libopenni-dev libopenni2-dev
[sudo] password for zhuwsh:
Reading package lists... Done
Building dependency tree
Reading state information... Done
libopenni-dev is already the newest version (1.5.4.0-14).
libopenni-dev set to manually installed.
Suggested packages:
openni2-doc
The following NEW packages will be installed:
libopenni2-0 libopenni2-dev
0 upgraded, 2 newly installed, 0 to remove and 178 not upgraded.
Need to get 484 kB of archives.
After this operation, 2,009 kB of additional disk space will be used.
Get:1 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 libopenni2-0 amd64 2.2.0.33+dfsg-6 [409 kB]
Get:2 http://cn.archive.ubuntu.com/ubuntu xenial/universe amd64 libopenni2-dev amd64 2.2.0.33+dfsg-6 [74.4 kB]
Fetched 484 kB in 3s (157 kB/s)
Selecting previously unselected package libopenni2-0.
(Reading database ... 331091 files and directories currently installed.)
Preparing to unpack .../libopenni2-0_2.2.0.33+dfsg-6_amd64.deb ...
Unpacking libopenni2-0 (2.2.0.33+dfsg-6) ...
Selecting previously unselected package libopenni2-dev.
Preparing to unpack .../libopenni2-dev_2.2.0.33+dfsg-6_amd64.deb ...
Unpacking libopenni2-dev (2.2.0.33+dfsg-6) ...
Processing triggers for libc-bin (2.23-0ubuntu10) ...
Setting up libopenni2-0 (2.2.0.33+dfsg-6) ...
Setting up libopenni2-dev (2.2.0.33+dfsg-6) ...
Processing triggers for libc-bin (2.23-0ubuntu10) ...
zhuwsh@zhuwsh-TM1705:~/Desktop/SLAM/ORB_SLAM2$
需要说明的是,一般如果安装出错的话,有一种情况是该软件的依赖库文件需要提前安装。我这里没有出现该问题,应该是依赖库文件已经安装过了。
安装后,查看/usr/lib/OpenNI2中的so文件如下:
zhuwsh@zhuwsh-TM1705:/$ ll /usr/lib/OpenNI2/Drivers/
total 1328
drwxr-xr-x 2 root root 4096 4月 28 18:02 ./
drwxr-xr-x 3 root root 4096 4月 28 18:02 ../
lrwxrwxrwx 1 root root 19 1月 25 2016 libDummyDevice.so -> libDummyDevice.so.0
-rw-r--r-- 1 root root 105192 1月 25 2016 libDummyDevice.so.0
lrwxrwxrwx 1 root root 15 1月 25 2016 libOniFile.so -> libOniFile.so.0
-rw-r--r-- 1 root root 200728 1月 25 2016 libOniFile.so.0
lrwxrwxrwx 1 root root 14 1月 25 2016 libPS1080.so -> libPS1080.so.0
-rw-r--r-- 1 root root 643664 1月 25 2016 libPS1080.so.0
lrwxrwxrwx 1 root root 14 1月 25 2016 libPSLink.so -> libPSLink.so.0
-rw-r--r-- 1 root root 389440 1月 25 2016 libPSLink.so.0
此时再使用KITTI数据集运行ORB-SLAM2程序,没有再报错。