Azure Kinect SDK ubuntu安装脱坑指南

Azure Kinect SDK ubuntu安装脱坑指南

  • 平台
  • 先激动一下
  • Dependence
  • Before Build
    • Build
  • Tools Installation(Including DE)
  • Without Root
  • 多设备启动时第二设备报错

平台

ubuntu: 16.04, 18.04.

先激动一下

  1. 按官方文档说明检查自己的平台硬件配置是否达标.
  2. 怀着激动的心情拆机

Dependence

  1. 首先, (坑1)你必须用git clone的方式clone下sdk源码, 因为下载压缩文件将无法在cmake时自动git submodule clone各个三方库. git clone --branch v1.1.1 [email protected]:microsoft/Azure-Kinect-Sensor-SDK.git
  2. 按照官方文档说明的指示批下载部分依赖: 先进入sdk源码根目录,然后 sudo bash ./script/bootstrap-ubuntu.sh. 确保这些依赖都成功安装.
  3. (坑2) 确保你的git不是2.22 (官方貌似已修复对应bug)

Before Build

  1. docs/building.md中有记载相应步骤.
  2. 但是,在这之前你需要修改个东西:(坑3)一个submodule的仓库地址. 在官方给的一个submodule地址:libyuv是在墙外,https://chromium.googlesource.com/libyuv/libyuv, 你可以ping一下,如果能ping通,就不用进行后续蛋疼的操作了, 否则需要将该git submodule的仓库地址改为github上的地址[email protected]:lemenkov/libyuv.git. 修改步骤如下:
    1. 删掉子模块:
      rm -rf extern/libyuv/src
      gedit ./gitmodules 删除libyuv相关的几行
    2. 删除相关东西:
      cd .git;
      gedit config 如果有libyuv的相关内容,就删掉;
      cd modules 没有就 cd .. ; 否则 rm -rf extern/libyuv/src cd ../..
    3. 后续清理:
      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
    4. add新地址: git submodule add [email protected]:lemenkov/libyuv.git extern/libyuv/src
    5. 最后,如果之前删除过.gitmodules, 则需要把原先.gitmodules中其他的内容复制回来,记得删掉原先与libyuv有关的.

Build

  1. 按官方文档编译.
  2. 如果是在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 加到对应文件即可.

Tools Installation(Including DE)

16.04直接跳到步骤3

  1. 按照官方链接的指示添加MS仓库:https://docs.microsoft.com/windows-server/administration/linux-package-repository-for-microsoft-software
  2. sudo apt install k4a-tools; sudo apt install libk4a1.1-dev 至此,在ubuntu 18.04上已经可以使用了.
  3. 要想在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启动设备,需要进行如下操作:

  1. cp scripts/99-k4a.rules /etc/udev/rules.d/.
  2. 重连设备.

多设备启动时第二设备报错

在Linux上同时使用多个azurekinect时, 第二个设备start时会报错 libusb error ..........
原因是Linux系统中默认的USB IO缓存过小(应该只有16MB), 将缓存改大就好. 方法如下:

  1. 修改grub 文件. sudo gedit /etc/default/grub, 修改GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 改为GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=128" 保存
  2. sudo update-grub
  3. 重启电脑

你可能感兴趣的:(SLAM)