Azure Kinect DK使用教程

news2024/10/7 14:32:10

作者: Herman Ye @Galbot @Auromix
版本: V1.0
测试环境: Ubuntu20.04
更新日期: 2023/08/08
1 本文内容中的硬件由 @Galbot 提供支持。
2 @Auromix 是一个机器人爱好者开源组织。
3 本文在更新日期经过测试,确认有效。

Azure Kinect DK使用教程

Azure Kinect DK 是一款开发人员工具包,配有先进的 AI 传感器,提供复杂的计算机视觉和语音模型。 Kinect 将深度传感器、带有视频摄像头的空间麦克风阵列和方向传感器整合成一体式的小型设备,提供多种模式、选项和软件开发工具包 (SDK)。

DK的硬件

  • RGB相机
    Azure Kinect DK 包含 OV12A10 12MP CMOS 滚动快门传感器。
  • 深度相机
    Azure Kinect DK 集成了 Microsoft 设计的 1 兆像素时差测距 (ToF) 深度相机。
  • IMU
    嵌入式惯性测量单元 (IMU) 为 LSM6DSMUS,包含加速度传感器和陀螺仪。 加速度传感器和陀螺仪同时按 1.6 kHz 采样。 样本以 208 Hz 的频率报告给主机,可以通过SDK来读取。
  • 七麦克风阵列
    正六边形x6+中心x1 标准 USB 音频类 2.0 设备的优质七麦克风环形阵列

DK的供电与数据传输

方式1.电源与数据拆分输入线

DK->Type-C转Type-A -> PC
DK->DC5V转Type-A-> PC

方式2.电源和数据合并线

DK->Type-C转Type-C-> PC

安装软件包

警告: 对于Ubuntu20.04用户,请直接参考安装软件包-> 5.安装k4a-tools->解决方法,不要执行以下步骤。

1.查看系统发行版和版本号

lsb_release -a

结果类似如下:

galbot@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.6 LTS
Release:	20.04
Codename:	focal

2.配置Microsoft软件包源

下载Microsoft的软件包配置文件,然后将其写入到 /etc/apt/sources.list.d/microsoft-prod.list 文件中,以配置系统以从Microsoft的软件源获取软件更新或安装软件包。

curl -sSL https://packages.microsoft.com/config/<distribution>/<version>/prod.list | sudo tee /etc/apt/sources.list.d/microsoft-prod.list

替换<distribution><version>为Distributor ID: Ubuntu和Release: 20.04

示例如下:

curl -sSL https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft-prod.list

3.配置Microsoft 存储库 GPG 公钥

下载公钥

下载 Microsoft 存储库的 GPG 公钥,然后将其写入到系统的信任 GPG 目录中,以便在之后的软件包验证过程中使用该公钥进行验证,确保下载的软件包的安全性和真实性。
/etc/apt/trusted.gpg.d/microsoft.asc: 是要写入数据的目标文件。它作为系统的信任 GPG 目录中的一个文件,存放了信任的 GPG 公钥。

curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc

注册、安装、删除认证相关软件包

注意: 需要先下载packages-microsoft-prod.deb ,可能是Microsoft安全认证相关包,官方未提及。

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb

安装Microsoft安全认证相关包

sudo dpkg -i packages-microsoft-prod.deb

安装后删除安装包文件以释放磁盘空间

rm packages-microsoft-prod.deb

4.更新包索引

sudo apt update

现在,Microsoft 相关产品包能够通过sudo apt install <microsoft_package_name>正确安装。

5.安装k4a-tools

k4a-tools 包中包含 Azure Kinect查看器、Azure Kinect 录制器和 Azure Kinect 固件工具

sudo apt install k4a-tools -y

报错

galbot@ubuntu:~$ sudo apt install k4a-tools
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package k4a-tools

其他用户提出的相关Issue:Unable to install k4a-tools in Ubuntu 20.04
该问题于2022年8月24日提出,2023年8月8日仍未得到解决,原因是SDK包在2023年8月8日只支持Ubuntu18.04

根据另一个用户提出的Issue中的解决办法,该用户于2020年10月17日提出该方法,但具体的方法已有部分过时失效不可用,通过参考该用户的思路,重新提出解决方法如下。

解决方法

对于Ubuntu20.04用户,解决方式及注释如下:

清除旧配置

如果不幸已经按照微软官方提供的Ubuntu20.04 SDK安装方法来配置了,需要先清理相关资源。

  • 删除sources.list中有关Microsoft的内容
# Delete microsoft related line
sudo nano /etc/apt/sources.list
  • 删除packages-microsoft-prod
# remove packages-microsoft-prod
sudo apt remove packages-microsoft-prod
  • 删除sources.list.d中有关Microsoft的内容
# remove old 20.04 microsoft-prob.list
sudo rm /etc/apt/sources.list.d/microsoft-prod.list
sudo rm /etc/apt/sources.list.d/microsoft-prod.list.save 

执行新配置

如果已经清除了旧配置或者在警告提示下直接跳到了这一步,按照以下内容进行安装:

通过模拟18.04的软件下载源来欺骗Ubuntu20.04使用18.04的文件,同时指定了较老的版本以避免最新的传感器依赖等问题影响基础使用。

# Download key and add to system key list
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

# Add Microsoft Ubuntu18.04 packages list to source
curl -sSL https://packages.microsoft.com/config/ubuntu/18.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft-prod.list

# Update software source
sudo apt update

# Upgrade software
sudo apt upgrade

# Install package of Microsoft
sudo apt install libk4a1.3-dev -y
sudo apt install libk4abt1.0-dev -y
sudo apt install k4a-tools=1.3.0 -y

注意: 另一种可行的方式是直接手动下载微软源的文件,进行deb手动安装。因为微软服务器23.99.120.248虽然在亚东,但使用魔法似乎速度还是很慢,暂时不清楚原因,如果下载时间过长时建议手动,同时选择老版本的软件。
需要下载的文件如下:
libk4abt1.1-dev
libk4a1.4-dev
k4a-tools
对于ARM架构设备
libk4a1.4-dev ARM

设置Udev规则

  • 新建udev规则
sudo nano /etc/udev/rules.d/99-k4a.rules
  • 写入udev规则内容
# Bus 002 Device 116: ID 045e:097a Microsoft Corp.  - Generic Superspeed USB Hub
# Bus 001 Device 015: ID 045e:097b Microsoft Corp.  - Generic USB Hub
# Bus 002 Device 118: ID 045e:097c Microsoft Corp.  - Azure Kinect Depth Camera
# Bus 002 Device 117: ID 045e:097d Microsoft Corp.  - Azure Kinect 4K Camera
# Bus 001 Device 016: ID 045e:097e Microsoft Corp.  - Azure Kinect Microphone Array

BUS!="usb", ACTION!="add", SUBSYSTEM!=="usb_device", GOTO="k4a_logic_rules_end"

ATTRS{idVendor}=="045e", ATTRS{idProduct}=="097a", MODE="0666", GROUP="plugdev"
ATTRS{idVendor}=="045e", ATTRS{idProduct}=="097b", MODE="0666", GROUP="plugdev"
ATTRS{idVendor}=="045e", ATTRS{idProduct}=="097c", MODE="0666", GROUP="plugdev"
ATTRS{idVendor}=="045e", ATTRS{idProduct}=="097d", MODE="0666", GROUP="plugdev"
ATTRS{idVendor}=="045e", ATTRS{idProduct}=="097e", MODE="0666", GROUP="plugdev"

LABEL="k4a_logic_rules_end"
  • 重启udev服务
sudo service udev restart
  • 设置用户组权限
sudo usermod -aG plugdev $USER
  • 重启设备

拔出设备USB线,重新插入。

测试

通过官方k4aviewer确认红外图、深度图、色彩图、麦克风阵列、IMU功能正常。

# Open a new terminal
k4aviewer

在这里插入图片描述

重要的缺陷

  • SDK不支持Ubuntu20.04、Ubuntu22.04
  • Azure Kinect ROS Driver不支持自身的麦克风阵列

参考链接

官方

DK official docs
DK official docs 中文
Azure Kinect Sensor SDK Github
Sensor SDK官方下载
更新DK固件
Azure Kinect ROS Driver
麦克风使用参考
语音服务案例
DK 硬件规格书
麦克风硬件规格书部分

第三方

setup-azure-kinect-on-jetson-x-nx_18.04
Azure Kinect SDK 及 ROS 驱动安装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/848423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安全防御(3)

1.总结当堂NAT与双机热备原理&#xff0c;形成思维导图 2.完成课堂nat与双机热备试验 引用IDS是指入侵检测系统&#xff0c;它可以在网络中检测和防御入侵行为。IDS的签名是指根据已知入侵行为的特征制定的规则&#xff0c;用于检测和警告可能存在的入侵行为。签名过滤器可以根…

怎么理解linux内核栈?

内核栈有不同含义。一是内核线程使用的栈&#xff0c;比如初始化线程&#xff0c;idle&#xff0c;kthread&#xff0c;这些仅在内核空间运行&#xff0c;只有内核栈&#xff0c;没有用户态以及用户空间栈。还有就是用户线程发生中断&#xff0c;系统调用进入内核态时候使用的栈…

linux下.run安装脚本制作

1、安装文件(install.sh) PS: .run安装包内部执行脚本文件 2、资源文件(test.zip) PS: 待安装程序源文件 3、制作.run脚本(install.run) cat install.sh test.zip > install.run chmod ax install.run

【单片机】DS2431英文手册,中文手册,翻译

DS2431是一款1024位的1-Wire EEPROM芯片&#xff0c;以每个256位的四个内存页面组织。数据被写入8字节的暂存区&#xff0c;经过验证&#xff0c;然后复制到EEPROM存储器中。作为一个特殊功能&#xff0c;四个内存页面可以单独地被写保护&#xff0c;或者被置于EPROM仿真模式&a…

ETHERCAT转CANOPEN协议网关canopen分类

1.产品功能 JM-ECT-COP是自主研发的一款 ETHERCAT 从站功能的通讯网关。该产品主要功能是将 ETHERCAT 网络和 CANOPEN 网络连接起来。 本网关连接到 ETHERCAT 总线中做为从站使用&#xff0c;连接到 CANOPEN 总线中做为主站使用。 3.技术参数 ETHERCAT 技术参数 网关做为 E…

【论文阅读】基于深度学习的时序异常检测——TransAD

系列文章链接 数据基础&#xff1a;多维时序数据集简介 论文一&#xff1a;2022 Anomaly Transformer&#xff1a;异常分数预测 论文二&#xff1a;2022 TransAD&#xff1a;异常分数预测 论文链接&#xff1a;TransAD.pdf 代码库链接&#xff1a;https://github.com/imperial…

openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA

文章目录 openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA34.1 语法格式34.2 参数说明34.3 示例 openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA SCHEMA又称作模式。通过管理SCHEMA&#xff0c;允许多个用户使用同一数据库而不相互干扰&#xff0c;可以将数据库对象…

1706. 球会落何处;875. 爱吃香蕉的珂珂;1914. 循环轮转矩阵

1706. 球会落何处 核心思想&#xff1a;判断什么时候球会被卡住&#xff0c;1&#xff0c;当球在最左边的时候&#xff0c;挡板是向左的。2&#xff0c;当球在最右边的时候&#xff0c;挡板是向右的。3&#xff0c;当球当前的挡板是向左的&#xff0c;但是同一行的另一个挡板是…

模仿火星科技 基于cesium+ 贴地测量+可编辑

当您进入Cesium的编辑贴地测量世界&#xff0c;下面是一个详细的操作过程&#xff0c;帮助您顺利使用这些功能&#xff1a; 1. 创建提示窗&#xff1a; 启动Cesium应用&#xff0c;地图场景将打开&#xff0c;欢迎您进入编辑模式。在屏幕的一角&#xff0c;一个友好的提示窗将…

MongoDB:Unrecognized option: storage

MongoDB一直显示 Unrecognized option: storage try ‘mongod --help’ for more information 意思是我们配置的config文件出了问题。 说明&#xff1a;MongoDB采用的是YAML格式&#xff0c;所以我们只需要稍微改改就好。 在storage前面&#xff1a;没有空格 下面两行最前面…

以肠道微生物群为新视角的研究和治疗癫痫

谷禾健康 在漫长的历史中&#xff0c;一种神秘而令人不安的疾病一直困扰着人类&#xff0c;那就是癫痫。 癫痫是最常见的神经系统疾病之一&#xff0c;影响着全世界近7000万人。它会导致突发性的、不可控制的、反复发作的痉挛和意识丧失。 突如其来的发病行为&#xff0c;不仅让…

Simulink仿真模块 - Rate Transition

Rate Transition处理以不同速率运行的模块之间的数据传输 在仿真库中的位置为:Simulink / Signal Attributes模型为: 双击模型打开参数设置界面为: 参数设置 Initial conditions:初始条件设置 此参数仅适用于慢速到快速转移。它指定当连接到 Rate Transition 模…

【Kubernetes】Kubernetes之kubectl详解

kubectl 一、陈述式资源管理1. 陈述式资源管理方法2. 基本信息查看3. 项目周期管理3.1 创建 kubectl create 命令3.2 发布 kubectl expose命令3.3 更新 kubectl set3.4 回滚 kubectl rollout3.5 删除 kubectl delete 4. kubectl 的发布策略4.1 蓝绿发布4.2 红黑发布4.3 灰度发布…

生态系统服务(InVEST模型)供给与需求、价值核算技术及人类活动、重大工程项目、自然保护区、碳中和等领域中实际案例分析

对接工作实际项目及论文写作&#xff0c;解决参会者关注的重点及实际项目过程问题&#xff0c;采取逐步延伸的逻辑&#xff0c;不论您是小白亦或是已经能够成功运行InVEST模型生成结果&#xff0c;您可以自由选择课程内容&#xff0c;如果您是小白老师手把手教您&#xff0c;如…

自媒体行业如何使用ChatGPT提高效率?

文章目录 自媒体公司如何充分利用ChatGPT提高效率自媒体公司使用ChatGPT提高效率的具体案例训练ChatGPT&#xff0c;让它更懂你 ✍创作者&#xff1a;全栈弄潮儿 &#x1f3e1; 个人主页&#xff1a; 全栈弄潮儿的个人主页 &#x1f3d9;️ 个人社区&#xff0c;欢迎你的加入&a…

分布式系统监控Zabbix

分布式系统监控Zabbix 一、Zabbix监控1.什么是Zabbix2.Zabbix功能3.Zabbix运行机制4.Zabbix的三种架构5.Zabbix工作原理及数据走向6.zabbix监控模式 二、Zabbix部署1.安装&#xff0c;部署准备2.zabbix图形化页面显示设置 三、Zabbix监控使用1.安装zabbix监控客户端2.服务端验证…

一个逗号引发的血案——变量定义得值类型总是tuple

问题背景 今天准备用python写个mysql连接脚本&#xff0c;实现脚本执行sql语句&#xff0c;哪知脚本写好了运行时一直报一个mysql连接入参类型错误的提示&#xff0c;提示我host这个变量取值不是str类型&#xff0c;仔细检查一番&#xff0c;cfg配置的类型没错啊&#xff0c;下…

Spring security之JWT

JWT 这里写目录标题 JWT一级目录二级目录三级目录1.什么是JWT 2.JWT的组成部分3.编码/解码4.特点5. 为什么使用JWT5.1传统的验证方式 5.2基于JWT的验证方式6.JWT进行登录验证6.1依赖安装6.2编写UserDetailServiceImpl类6.3编写UserDetailsImpl类6.4 实现config.SecurityConfig类…

简单的员工工资管理 ssm人事考勤jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 简单的员工工资管理 ssm 系统有1权限&#xff1a;管理…

8年软件测试工程师感悟——写给还在迷茫中的朋友

去年还在全网声讨互联网企业996呢&#xff0c;今年突然没声音了&#xff0c;也不用讨论在哪个路灯上吊死互联网资本家了&#xff0c;因为都被裁了。 继教育培训领域大幅度裁员之后&#xff0c;大厂裁员消息也开始陆续传出&#xff0c;百度AIG,MEG多条业务线进行精简&#xff0…