ubuntu16.04\18.04安装Azure Kinect SDK+配置ros版 超全详细踩坑记录

一些参考:
1.官网教程Azure-Kinect-Sensor-SDK
官网教程Azure_Kinect_ROS_Driver
2.Azure Kinect SDK Ubuntu 16.04 18.04安装配置方法
3、ubuntu16.04安装配置azure_kinect驱动和ros驱动

2020.3.13更新,因为疫情被迫在自己电脑上重复一遍这个过程,回来填坑+系统记录一下遇到的所有问题

注:其实网上很多教程的操作都有些冗余,如果版本一致的话,建议直接按照官网教程走,遇到问题再去查。

一、大部分使用者直接根据官网的步骤安装即可

执行官网的教程配置存储库、安装包,然后运行sudo /usr/bin/k4aviewer即可使用。但是如果

If you are making changes to the SDK, you can build your own copy of the SDK from source

我们要配置ros版,就得按照下面的步骤啦。

二、安装配置azure_kinect驱动

1、在官网下载Azure Kinect SDK源码驱动包

git clone https://github.com/microsoft/Azure-Kinect-Sensor-SDK.git

2、下载libdepthengine.so.2.0文件

到网站中下载libk4a1.2里的deb文件https://packages.microsoft.com/ubuntu/18.04/prod/pool/main/libk/

解压缩deb文件,获得libdepthengine.so.2.0,然后把libdepthengine.so.2.0复制到/usr/lib/x86_64-linux-gnu/文件夹中
3、下载依赖项目
在 Azure-Kinect-Sensor-SDK文件夹下

sudo ./scripts/bootstrap-ubuntu.sh

如果直接按照教程运行bootstrap.sh脚本,有一些依赖项可能无法下载,导致后面操作出现一些问题。可在这一步直接打开脚本,手动sudo apt install
啊啊
确保所有依赖项都成功安装,不然后续cmake时会报错。
3、
Kinect SDK的编译要求cmake在3.9以上,安装好后检查cmake版本

cmake --version 

不符合要求的话安装新版本3.14.5

wget https://cmake.org/files/v3.14/cmake-3.14.5.tar.gz
tar -xzvf cmake-3.14.5.tar.gz
cd cmake-3.14.5/
./bootstrap
make -j8
sudo make install

4、修改url
在cmake时候需要克隆一些文件
打开Azure-Kinect-Sensor-SDK文件夹,ctrl+h打开隐藏显示项,找到.gitmodules文件或者直接运行gedit .gitmodules打开该文件
在这里插入图片描述可以看到libyuv的Url在国外,因此将其改为github上的链接。
https://github.com/lemenkov/libyuv.git
在这里插入图片描述
另一种方法是,直接在https://github.com/lemenkov/libyuv.gitgit clone下来,并将clone下来的libyuv文件夹改名为src,放到extern/libyuv/里。

5、进入到Azure-Kinect-Sensor-SDK文件夹中

mkdir build
cd build
cmake .. -GNinja

可以看到cmake的这个过程就是按照cmakelists里执行的,如果哪一步遇到了问题,可能是相应的包缺失,可以参考2中提到的方法手动安装一次。
在这里插入图片描述这一步在克隆的过程中可能会报错,原因可能是缓冲区溢出或者网速
Error 克隆失败,两个解决办法
(1)修改hosts文件
(2)找到github的镜像库【码云】上的url替换github,亲测速度从10k提升到了1M
就不展开写了,见知乎这个回答

这里cmake还可能报错

参照官网其他博客的解决办法

在这里插入图片描述
6、cmake成功后编译`

ninja

然后就可以打开了!

sudo /usr/bin/k4aviewer

【ERRIR1】

libusb:error [libusb_get_bos_descriptor] failed to read BOS(-1)

emm 就是usb插拔的问题,重启一下kinect就好了

【ERROR2】
failed to start device!
If you unplugged the device,you must close and reopen the device.
在这里插入图片描述
看终端的报错
安装一下相关程序

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.9
sudo apt-get upgrade libstdc++6

我这边解决了

照理来说,无法获取深度流图像的问题,通过上面的命令也能解决。

【ERROR3】
在这里插入图片描述获得不了彩色图和深度图

7.去掉管理员权限也能启动
进入Azure Kinect sdk 源码根目录中 scripts 文件夹,复制99-k4a.rules文件至/etc/udev/rules.d/

cp scripts/99-k4a.rules /etc/udev/rules.d/.

注意!!!
如果后续还要配置ros版本的话,这一步一定要做,因为ros是不考虑你有没有权限的,直接就报错然后无法启动k4a

Error :[2020-02-26 22:39:38.407] [critical] [t=2928] /__w/1/s/extern/Azure-Kinect-Sensor-SDK/src/usbcommand/usbcommand.c (360): find_libusb_device(). libusb device(s) are all unavalable. Is the device being used by another application?
[ERROR] [1564506111.686955539]: Failed to open K4A device at index 0
[ERROR] [1564506111.687012324]: Failed to open a K4A device. Cannot continue.

**

三、安装ROS版本的azure kinect

**
官方教程https://github.com/microsoft/Azure_Kinect_ROS_Driver/blob/melodic/docs/building.md
官方里提到的ROS Melodic版也就是对应了ubuntu18.04下的ros,按照官方教程就可以顺利完成安装!不用
注意版本问题:
在这里插入图片描述1、下载ros驱动
在catkin_ws/src下

 git clone https://github.com/microsoft/Azure_Kinect_ROS_Driver.git

2、收集库文件
从https://packages.microsoft.com/ubuntu/18.04/prod/pool/main/libk/地址里把把libk4a1.3/里的deb文件和k4a1.3-deb/里的deb文件下载下来并解压

在catkin_ws/src/Azure_Kinect_ROS_Driver 里 创建文件夹mkdir -p ext/sdk.
结构如下

.\ext\sdk\
          bin\
          include\
          lib\

bin文件夹: 把编译SDK时build文件夹里面的那个bin文件夹拷贝过来
include文件夹:SDK源码里的include文件夹和从deb文件里提取出的include文件夹合并,拷贝过来
lib文件夹:从deb文件里提取出的两个lib文件夹合并,拷贝过来

3、

cd catkin_ws
catkin_make

ERROR:
k4a_ros_device.h:166:8: error: ‘atomic_int64_t’ in namespace ‘std’ does not name a type
std::atomic_int64_t last_capture_time_usec_;

头文件声明的问题
打开catkin_ws/src/Azure_Kinect_ROS_Driver/include/azure_kinect_ros_driver/k4a_ros_device.h
修改如下所示
在这里插入图片描述
如果报错catkin_make: command not found 让你用sudo apt install catkin重装
先看看是不是环境变量没设好!

source /opt/ros/melodic/setup.bash

正常来说catkin都是自带装好的,不要去网上搜什么用apitude装什么的,没用!

其他教程后面还有一步catkin install但是我会报错

Parse error.Function missing ending ")".
Instead found unterminated string with text ")

不管他,后面没影响

以上是ubuntu18.04的过程,16.04会有问题
报错
在这里插入图片描述
这里是因为我们下的是1.2版本的k4a,打开报错里提到的那个cmakelist改一下版本就行
在这里插入图片描述

4、
然后

source ./devel/setup.bash
roslaunch azure_kinect_ros_driver driver.launch

都没有报错的话 看看rostopic list有没有kinect的节点
在这里插入图片描述
然后命令行输入rviz打开
就成功了!!!
在这里插入图片描述

ubuntu16.04可能则需要进行一些修改

总之,我写的真的是手把手教学了,希望像我一样的小白们能成功,也希望过几年我会嘲笑自己现在,配置这点东西就要这么多天,这点报错都要查那么久。
欢迎讨论!

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值