Azure Kinect SDK ubuntu安装脱坑指南
平台
ubuntu: 16.04, 18.04.
先激动一下
- 按官方文档说明检查自己的平台硬件配置是否达标.
- 怀着激动的心情拆机
Dependence
- 首先, (坑1)你必须用git clone的方式clone下sdk源码, 因为下载压缩文件将无法在cmake时自动git submodule clone各个三方库.
git clone --branch v1.1.1 git@github.com:microsoft/Azure-Kinect-Sensor-SDK.git
- 按照官方文档说明的指示批下载部分依赖: 先进入sdk源码根目录,然后
sudo bash ./script/bootstrap-ubuntu.sh
. 确保这些依赖都成功安装. - (坑2) 确保你的git不是2.22 (官方貌似已修复对应bug)
Before Build
- docs/building.md中有记载相应步骤.
- 但是,在这之前你需要修改个东西:(坑3)一个submodule的仓库地址. 在官方给的一个submodule地址:
libyuv
是在墙外,https://chromium.googlesource.com/libyuv/libyuv
, 你可以ping一下,如果能ping通,就不用进行后续蛋疼的操作了, 否则需要将该git submodule的仓库地址改为github上的地址git@github.com:lemenkov/libyuv.git
. 修改步骤如下:- 删掉子模块:
rm -rf extern/libyuv/src
gedit ./gitmodules
删除libyuv相关的几行 - 删除相关东西:
cd .git
;
gedit config
如果有libyuv的相关内容,就删掉;
cd modules
没有就cd ..
; 否则rm -rf extern/libyuv/src
cd ../..
- 后续清理:
git rm --cached extern/libyuv/src
确认下:git ls-files --stage www/topsdk
如果提示Please stage your changes to .gitmodules or stash them to proceed
只能删掉.gitmodules了.在删.gitmodules前先备份下.然后rm .gitmodules
- add新地址:
git submodule add git@github.com:lemenkov/libyuv.git extern/libyuv/src
- 最后,如果之前删除过.gitmodules, 则需要把原先.gitmodules中其他的内容复制回来,记得删掉原先与libyuv有关的.
- 删掉子模块:
Build
- 按官方文档编译.
- 如果是在16.04上编译
ninja
时,我还出现了如下报错 (18.04没有该错误 ):../examples/viewer/opengl/viewerwindow.cpp:73:15: error: ‘runtime_error’ is not a member of ‘std’
../examples/viewer/opengl/viewerutil.h:23:15: error: ‘runtime_error’ is not a member of ‘std’
将#include <stdexcept>
加到对应文件即可.
Tools Installation(Including DE)
16.04直接跳到步骤3
- 按照官方链接的指示添加MS仓库:https://docs.microsoft.com/windows-server/administration/linux-package-repository-for-microsoft-software
sudo apt install k4a-tools
;sudo apt install libk4a1.1-dev
至此,在ubuntu 18.04上已经可以使用了.- 要想在16.04上也使用设备, 进行完上面的操作后, 还需要将18.04上的一个文件拷贝过来:
libdepthengine.so.1.0
. 另外还需要将16.04上的/usr/local/lib/x86_64-linux-gnu/libstdc++.so.6 拷贝过来
我分享了自己的文件: https://pan.baidu.com/s/1wQsjT7XnhojO4cjZnQizlA 提取码: pdbv
将libdepthengine.so.1.0
放到/usr/lib/x86_64-linux-gnu/
中.
至此如果运行sudo ./bin/k4aviewer
失败,可以试着更新下stdc++6并把gcc版本切换到4.9.
Without Root
要想不用root启动设备,需要进行如下操作:
cp scripts/99-k4a.rules /etc/udev/rules.d/
.- 重连设备.
多设备启动时第二设备报错
在Linux上同时使用多个azurekinect时, 第二个设备start时会报错 libusb error .........
.
原因是Linux系统中默认的USB IO缓存过小(应该只有16MB), 将缓存改大就好. 方法如下:
- 修改grub 文件.
sudo gedit /etc/default/grub
, 修改GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
改为GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=128"
保存 sudo update-grub
- 重启电脑
版权声明:本文为u013270341原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。