ubuntu14.04调试ElasticFusion之Kinect 的使用

  上一篇文章详细介绍了在ElasticFusion上测试数据集的编译过程,接下来我将介绍下如何使用Kinect 1深度相机实时构建场景三维模型。

环境:ubuntu14.04 + cuda7.5 + GTX 1070

相机:Kinect 1

1、安装Kinect驱动

cd OpenNI2
git clone https://github.com/OpenKinect/libfreenect.git 
cd libfreenect
mkdir build
cd build
cmake .. -DBUILD_OPENNI2_DRIVER=ON
make -j8
cp -L lib/OpenNI2-FreenectDriver/libFreenectDriver.so ~/OpenNI2/Bin/x64-Release/OpenNI2/Drivers

2、获取权限

cd OpenNI2
sudo cp libfreenect/platform/linux/udev/51-kinect.rules /etc/udev/rules.d
sudo reboot 重启

连接Kinect ,使用 lsusb 确保有以下三个输出:

xbot camera

xbot motor

xbot audio

3、安装成功测试

cd ~/OpenNI2/Bin/x64-Release/
./NiViewer

如果安装成功的话,会出现Kinect相机同时获取rgb 图像和depth图像的界面。

接下来,就是在~/ElasticFusion/GUI/build 下运行./ElasticFusion,如果幸运的话就可以利用kinect实时构建场景地图了。

点击窗口左侧的save可以保存.ply文件,就是重建得到的三维地图;直接关闭窗口,可以得到.freiburg文件,就是估计的相机轨迹。

ply文件可以通过MeshLab软件打开,下载地址http://meshlab.sourceforge.net/,这个软件还可以对重建后的模型进行处理,去除杂点之类的。

freiburg文件保存的是每一帧对应的时间戳;位置(x,y,z);姿态四元数(qx,qy,qz,qw),利用draw.py绘制估计轨迹

#!/usr/bin/env python
# coding=utf-8

import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d


f = open("./dyson_lab.klg.klg.freiburg")
x = []
y = []
z = []
for line in f:
    if line[0] == '#':
        continue
    data = line.split()
    x.append( float(data[1] ) )
    y.append( float(data[2] ) )
    z.append( float(data[3] ) )
ax = plt.subplot( 111, projection='3d')
ax.plot(x,y,z)
plt.show()

python draw.py

得到轨迹

但是kinect的驱动不是很稳定,开始我用kinect相机测试成功了,但是过了几天再运行./ElasticFusion就出现了问题。

Creating live capture... failed!
DeviceOpen using default: no devices found

卸载重新安装驱动,尝试了很多方法都没有成功,后来我在github中看到可以利用Logger2来解决这个问题,通过Kinect 相机直接获取真实场景的klg文件(就是将rgb和depth直接转换成了klg格式),利用测试数据集的方式得到真实场景的三维地图。

下载编译Logger2参考了博客

点击record就可以开始捕获场景信息,退出后在~/Kinect_Logs中看到保存的.klg文件;将该klg文件复制到~/ElasticFusion/GUI/build,运行./ElasticFusion -l  *.klg 就可以得到重建模型和估计轨迹了。 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值