ROS下kinect2驱动安装流程记录和遇到的问题解决心得

由于最近想在学习ROS机器人操作系统,发现很多机器人都会用kinect作为外部视觉传感器,用于导航和建图等。于是,我也想跳坑一下kinect(毕竟实验室闲置了这么多kinect2)。于是乎,边按教程来装kinect的驱动,然后一边记录安装流程,为以后再安装的时候提供一个参考,避免重复造轮子。首先按照这个博主的博客(该博主使用的是Ubuntu14.04,ROS-indigo,我使用的kinetic)来安装ROS下的kinect2驱动,把kinect2给驱动起来,才是后续实现各种功能的前提!

本人的Linux系统配置是:64位、Ubuntu16.04、ROS-kinetic。默认已经安装好了ROS,并可以无错误的运行roscore等。


1.下载libfreenect2源码,看其他教程我以为要把libfreenect2下载到~/catkin_ws/src,其实不是:

#注意libfreenect是个独立的kinect驱动,应该安装在ROS工作空间之外,我把它下载到了/home目录下了
git clone https://github.com/OpenKinect/libfreenect2.git
cd libfreenect2

2.安装编译工具:

sudo apt-get install build-essential cmake pkg-config

3.安装 libusb. 版本需求 >= 1.0.20:

sudo dpkg -i debs/libusb*deb

4.安装 TurboJPEG:

sudo apt-get install libturbojpeg libjpeg-turbo8-dev

5.安装 OpenGL:

sudo dpkg -i debs/libglfw3*deb
sudo apt-get install -f
sudo apt-get install libgl1-mesa-dri-lts-vivid

6.Build:

#当前目录为/home/用户名/libfreenect,即所下载的libfreenect文件夹下
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2 -DENABLE_CXX11=ON
make
make install

针对上面cmake命令的说明, 第一个参数, 是特别指定安装的位置, 你也可以指定别的你觉得高兴的地方, 但一般标准的路径是上述示例路径或者/usr/local第二个参数是增加C++11的支持。

7.设定udev rules:

sudo cp ../platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/
#上面的运行后,如果提示找不到文件或目录,可以运行下面的命令
sudo cp ~/catkin_ws/src/libfreenect2/platform/linux/udev/90-kinect2.rules /etc/udev/rules.d/

然后重新插拔Kinect2.

8.一切搞定, 现在可以尝试运行Demo程序:

#此时你所在的目录应该在libfreenect/build/,然后再运行以下命令
./bin/Protonect

不出意外, 应该能够看kinect的图像。

9.首先创建一个ros工作空间/并完成初始化:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ..
catkin_make

10.在ROS环境里使用Kinect2, 主要依靠iai-kinect2这个包。利用命令行从Github上面下载工程源码到工作空间内src文件夹内:

#还是到刚才那个工作空间
cd ~/catkin_ws/src/
git clone https://github.com/code-iai/iai_kinect2.git
cd iai_kinect2
rosdep install -r --from-paths . #注意最后这还有个点
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE="Release"

在运行 rosdep install -r --from-paths . 出问题了。

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
kinect2_viewer: Cannot locate rosdep definition for [kinect2_bridge]
iai_kinect2: Cannot locate rosdep definition for [kinect2_registration]
kinect2_calibration: Cannot locate rosdep definition for [kinect2_bridge]
kinect2_bridge: Cannot locate rosdep definition for [kinect2_registration]

参考本链接解决方法即可解决。

#将原来的:
rosdep install -r --from-paths . 
#替换为:
rosdep install --from-paths ~/catkin_ws/src/iai_kinect2 --ignore-src -r

在运行 catkin_make -DCMAKE_BUILD_TYPE="Release" 时出问题了。

CMake Error at iai_kinect2/kinect2_bridge/CMakeLists.txt:22 (find_package):
  Could not find a package configuration file provided by "freenect2" with
  any of the following names:

    freenect2Config.cmake
    freenect2-config.cmake

  Add the installation prefix of "freenect2" to CMAKE_PREFIX_PATH or set
  "freenect2_DIR" to a directory containing one of the above files.  If
  "freenect2" provides a separate development package or SDK, be sure it has
  been installed.


-- Configuring incomplete, errors occurred!
See also "/home/zsy/camyros_ws/kinect_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/zsy/camyros_ws/kinect_ws/build/CMakeFiles/CMakeError.log".
Makefile:1340: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed

这个问题困扰了我好久,虽然很多博客,和iai_kinect2的github上都有解决方案,但是作为初学者的我还是一脸懵比。。。

这个前面libfreenect2安装的位置不是标准的两个路径下, 需要提供参数指定libfreenect2所在路径:

catkin_make -Dfreenect2_DIR=path_to_freenect2/lib/cmake/freenect2 -DCMAKE_BUILD_TYPE="Release"

是啥意思啊?

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值