Ubuntu16.04+gcc5.4+g++5.4+ROS运行kinect
Ubuntu16.04+gcc5.4+g++5.4+ROS运行kinect
一、libfreenect2驱动安装:
1. 下载libfreenect2 驱动
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2
2. 下载升级deb文件
cd depends
./download_debs_trusty.sh
3. 下载工具
sudo apt-get install build-essential cmake pkg-config
4. 安装libusb
sudo apt-add-repository ppa:floe/libusb
sudo apt-get update
sudo apt-get install libusb-1.0-0-dev
5. 安装TurboJPEG
sudo apt-get install libturbojpeg libjpeg-turbo8-dev
6. 安装OpenGL
sudo dpkg -i debs/libglfw3*deb; sudo apt-get install -f; sudo apt-get install libgl1-mesa-dri-lts-vivid freeglut3-dev libxrandr-dev libxi-dev
7. 安装openni2(可选)
sudo apt-get install openni2-utils && sudo make install-openni2 && NiViewer2
8. 编译libfreenect2
cd ..
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
sudo make install
假如你把这个libfreenect2的包直接gitclone到了工作空间下的src里边,要注意新建的build不是在catkin_kinect下边,跟src在同一级目录下的build是catkin_make生成的,现在新建的这个build是在git的libfreenect2下边新建的
假如说之前cmake的时候路径不是$HOME/freenect2的话,可以使用下边的命令指定路径
catkin_make -Dfreenect2_DIR=path_to_freenect2/lib/cmake/freenect2 -DCMAKE_BUILD_TYPE="Release"
9. 获得设备udev权限
sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/
10. 测试驱动是否安装好
sudo chmod +x ./bin/Protonect
./bin/Protonect
或者分别执行
./bin/Protonect cpu
./bin/Protonect gl
./bin/Protonect cl
二、iai_kinect2安装(ROS):
1. iai_kinect2安装
https://github.com/code-iai/iai_kinect2
默认前提已经装好ROS,我用是的Ubuntu16.04,ROS是Kinetic版的
cd ~/catkin_kinect/src/
git clone https://github.com/code-iai/iai_kinect2.git
cd iai_kinect2
rosdep install -r --from-paths . (注意最后边的 . )
cd ~/catkin_kinect
catkin_make -DCMAKE_BUILD_TYPE="Release"
在rosdep install这一步出现cannot find的问题,然后经查阅,这个问题好像是正常的,没有什么影响
2. 测试(USB3.0)
先source一下devel/setuo.zsh (博主用的zsh)
roslaunch kinect2_bridge kinect2_bridge.launch
然后重新开一个新的终端
rosrun kinect2_viewer kinect2_viewer
三、遇到的错误
1.直接git clone 的iai_kinect到了src下然后catkin_make,出错显示缺少库
然后apt-get到了只是freenect,没有2,于是去github上找,后来查阅才找libfreenect这个库
2.由于之前装cuda的时候,有的教程说需要对gcc和g++进行降级,不支持5.0+的版本,于是乎就降到了4.9版本,然后在对iai_kinect包进行catkin_make的时候,出现出错,对ros库的未定义引用
查了好多地方,也给出了几种解决方案,但是对我这个错误均无用。
然后想到了去之前的工作空间也catkin_make一下,果不其然,同样的错误,所以怀疑是当时对gcc降级的原因,然后把个gcc和g++的版本升回了5.4,在对其编译,问题解决了。
如何对gcc和g++版本进行调整选择,请看我的另一篇博文
参考文章
http://blog.****.net/Lottie_yx/article/details/78360852
https://www.cnblogs.com/kunyuanjushi/p/5204436.html
http://blog.****.net/sunbibei/article/details/51594824
http://blog.****.net/lvchunlin1996/article/details/78302791