本人计划安装 v1.3.0 版本,但是git clone后,发现在其目录下并无该文件 “./script/bootstrap-ubuntu.sh”。
所以按照博客中所述,改为安装 1.2.0 版本的sdk。
1 - 已安装成功,可运行 k4aviewer。
2 - 另外,按照下文所述安装方法和 CMakeLists.txt 的编写建议,已成功编译自定义程序(用于数据采集等),连接运行相机没问题。
2020.03.12
这里我安装的是1.2.0版本的sdk。
1.下载sdk
git clone -b v1.2.0 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.下载依赖项
cd Azure-Kinect-Sensor-SDK
sudo ./script/bootstrap-ubuntu.sh
注意!!不知道为什么,直接运行它的脚本,有些依赖项可能下载不下来(即并没有安装脚本中的全部内容)。建议打开该脚本,直接按着脚本,自己手动进行apt-get install。
下面附上文件“bootstrap-ubuntu.sh”中的内容#!/usr/bin/env bash
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
# Setup machine to build amd64 and i386
sudo dpkg --add-architecture amd64
# Update list of packages
sudo apt update
# Install tools needed to build
sudo apt install -y \
pkg-config \
ninja-build \
doxygen \
clang \
gcc-multilib \
g++-multilib \
python3 \
git-lfs \
nasm \
cmake
# Install libraries needed to build
sudo apt install -y \
libgl1-mesa-dev \
libsoundio-dev \
libvulkan-dev \
libx11-dev \
libxcursor-dev \
libxinerama-dev \
libxrandr-dev \
libusb-1.0-0-dev \
libssl-dev \
libudev-dev \
mesa-common-dev \
uuid-dev
4.Kinect SDK的编译要求cmake在3.9以上,若cmake版本不够需要安装新的cmake,这里我们安装cmake3.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
cmake --version
看一下cmake版本是否为3.14.5
5.进入到Azure-Kinect-Sensor-SDK文件夹中
mkdir build
cd build
cmake ..
cmake时会自动下载一些文件,但是extern/libyuv/src这个文件下载不下来,因为它的下载地址在墙外
libyuv墙内的下载地址在https://github.com/lemenkov/libyuv
直接从https://github.com/lemenkov/libyuv里把它git clone下来,并将clone下来的libyuv文件夹改名为src,放到extern/libyuv/里。
然后继续
cmake ..
注,从上面这行开始( 使用 cmake 而没有加上 -GNinja )就是分水岭。网上很多帖子,包括我参考的博客,都是按照下面的方式来进行编译安装的。这样确实没问题,可以安装成功SDK,并启动k4aviewer。
# 其他帖子中的方法
cmake .. -GNinja
ninja
但是,但是,但是
在接下来编写 CMakeLists.txt 文件时,编译始终无法通过,总是缺东西(也可能是我没整明白)。
实验表明,我在Ubuntu 18.04 系统下按照官方说明安装了SDK,并编写 CMakeLists.txt ,成功编译并运行了自定义程序。整套流程是可行了。
但同样的 CMakeLists.txt,在这里(Ubuntu16.04,如果按照网上的方法)始终是无法成功的。
所以,这里按照我所述的方法,也就是通常的 cmake 编译的方式,就一切ok。 CMakeLists.txt 文件的编译示例放在本文最后
6.cmake成功后编译并安装
make
sudo make install
从这以下,继续照搬网上的方法,没有区别。
7.安装以下程序
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
8.然后就可以启动k4aviewer了
sudo ./bin/k4aviewer
接上 KinectDK 设备看看效果吧。
注意!一定要加上sudo,不然权限不够,如果不想使用sudo,那就
sudo cp scripts/99-k4a.rules /etc/udev/rules.d/
然后断开 KinectDK 连接,再重连,就可以不使用sudo打开k4aviewer了。
参考博客:
https://blog.csdn.net/u010497704/article/details/102542570
https://blog.csdn.net/weixin_41628710/article/details/98627332
最后,附上 CMakeLists.txt 示例
# cmake needs this line
cmake_minimum_required(VERSION 2.8)
# Define project name
project(WDKinectDKDemo)
# Kinect DK相机
find_package(k4a REQUIRED)# 关键。因为后面的target_link_libraries中用到了k4a::k4a,所以在这儿加了一行,否则会显示未定义声明
# Find OpenCV
find_package(OpenCV REQUIRED)
# Add includes
include_directories( ${CMAKE_CURRENT_LIST_DIR} ) # 包含当前目录下我的头文件
include_directories( ${OpenCV_INCLUDE_DIRS} )
# Declare the executable target built from your sources
add_executable(
WDKinectDKDemo
main_demo_Linux.cpp
)
# Link your application with other libraries
target_link_libraries(WDKinectDKDemo k4a::k4a ${OpenCV_LIBS})
# Enable C++11
set(CMAKE_CXX_FLAGS "-std=c++11")
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
# WD
# 2019/11/29
关于上面的解释和尝试过程,可以参考我的另外一篇博客:
《Azure Kinect DK + Ubuntu 18.04,从相机获取图像和点云数据》,
https://blog.csdn.net/denkywu/article/details/103305714
其中,最关键的有关 KinectDK 配置的其实就两句话:
# 相机驱动相关
find_package(k4a REQUIRED)
# 链接
target_link_libraries(ProjectName k4a::k4a)
完。