Azure Kinect DK + ROS1 Noetic使用教程

作者: 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
在这里插入图片描述

一、安装SDK相关软件包

警告: 对于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
该问题于2020年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的文件,同时指定了较老的版本以避免最新的传感器依赖等问题影响基础使用,比如Azure Kinect ROS 驱动程序需要 v1.3.0 版本的 Azure Kinect Sensor SDK 才能编译。

# 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 ArrayBUS!="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线,重新插入。

三、SDK基本测试

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

# Open a new terminal
k4aviewer

在这里插入图片描述

四、DK ROS基本测试

注意: 此处默认ROS1 Noetic已被正确安装并配置,如果还没有安装ROS1,请参考ROS1 Noetic一键安装脚本

  • 下载、依赖安装、编译、配置
mkdir -p galbot_ws/src
cd galbot_ws/src
git clone https://github.com/microsoft/Azure_Kinect_ROS_Driver.git
cd ..
rosdep install --from-paths src --ignore-src -r -y
catkin_make
echo "source ~/galbot_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
  • 运行
# Terminal 1
roslaunch azure_kinect_ros_driver driver.launch
# Terminal 2
rviz

添加DK可发布的话题数据在RViz中进行可视化如下:
在这里插入图片描述

五、重要的缺陷

  • SDK默认不支持Ubuntu20.04、Ubuntu22.04
  • Azure Kinect ROS Driver不支持自身的麦克风阵列
  • Azure Kinect ROS Driver官方默认只支持ROS1 Melodic
  • 不使用直插而使用USB拓展坞可能会造成ROS启动问题

六、参考文献

官方

DK official docs
DK official docs 中文
Azure Kinect Sensor SDK Github
Sensor SDK官方下载
Sensor SDK API文档
Sensor SDK示例代码
Sensor SDK示例代码2
更新DK固件
SDK安装文档及对应版本固件下载
Azure Kinect ROS Driver
麦克风使用参考
语音服务案例
DK 硬件规格书
麦克风硬件规格书部分

第三方

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当前服务器版本不支持该功能,请联系经销商升级服务器 - - 达梦数据库报错

当前服务器版本不支持该功能&#xff0c;请联系经销商升级服务器 - - 达梦数据库报错 环境介绍1 搭建测试环境2 报错内容3 标准版介绍 环境介绍 某项目使用标准版数据库中&#xff0c;使用insert into 正常操作表&#xff0c;插入数据时报错&#xff0c;表为普通表。 1 搭建测…

Maven: ‘mvn‘ is not recognized as an internal or external command

下载并配置好Maven之后&#xff0c;CMD测试安装是否成功&#xff1a;mvn -v 提示&#xff1a; mvn is not recognized as an internal or external command, operable program or batch file. 检查环境变量&#xff1a; MAVEN_HOME: %MAVEN_HOME%\bin: 看上去没问题&#x…

2.若依前后端分离版第一个增删查改

1.介绍 若依提供了代码生成功能&#xff0c;单表的CRUD可以直接用若依框架提供的代码生成进行创建。 2.实现 2.1 在数据库创建业务表test_teacher 2.2 生成代码 运行系统&#xff0c;进入菜单[系统工具]-》[代码生成],点击导入按钮&#xff0c;选择需要生成代码的表进行导…

UML—浅谈常用九种图

目录 概述: 1.用例图 2.静态图 3.行为图&#xff1a; 4.交互图&#xff1a; 5.实现图&#xff1a; 概述: UML的视图是由九种视图组成的&#xff0c;分别是用例图、类图、对象图、状态图、活动图、序列图、协作图、构件图、实施图。我们可以根据这9种图的功能和实现的目的…

JavaWeb学习|JavaBean;MVC三层架构;Filter;Listener

1.JavaBean 实体类 JavaBean有特定的写法: 必须要有一个无参构造 属性必须私有化。 必须有对应的get/set方法 用来和数据库的字段做映射 ORM; ORM:对象关系映射 表--->类 字段-->属性 行记录---->对象 2.<jsp&#xff1a;useBean 标签 3. MVC三层架构 4. Filter …

如何调教让chatgpt读取自己的数据文件(保姆级图文教程)

提示&#xff1a;如何调教让chatgpt读取自己的数据文件(保姆级图文教程) 文章目录 前言一、如何投喂自己的数据&#xff1f;二、调教步骤总结 前言 chatgpt提示不能读取我们提供的数据文件&#xff0c;我们应该对它进行调教。 一、如何投喂自己的数据&#xff1f; 让chatgpt读…

华为Mate30报名鸿蒙 HarmonyOS 4.0.0.108 系统更新

华为 Mate 30 系列于 2019 年 11 月 1 日上市&#xff0c;包括 Mate 30 4G / 5G、Mate 30 Pro 4G / 5G、保时捷设计版 Mate30 共五款机型。华为 Mate 30 系列 5G 版搭载麒麟 990 5G 处理器&#xff0c;同时支持 SA 及 NSA 5G 双模&#xff0c;适配三大运营商的 5G / 4G / 3G / …

以mod_jk方式整合apache与tomcat(动静分离)

前言&#xff1a; 为什么要整合apache和tomcat apache对静态页面的处理能力强&#xff0c;而tomcat对静态页面的处理不如apache&#xff0c;整合后有以下好处 提升对静态文件的处理性能 利用 Web 服务器来做负载均衡以及容错 更完善地去升级应用程序 jk整合方式介绍&#…

【构建卷积神经网络】

构建卷积神经网络 卷积网络中的输入和层与传统神经网络有些区别&#xff0c;需重新设计&#xff0c;训练模块基本一致 全连接层&#xff1a;batch784&#xff0c;各个像素点之间都是没有联系的。 卷积层&#xff1a;batch12828&#xff0c;各个像素点之间是有联系的。 impor…

将vsCode 打开的多个文件分行(栏)排列,实现全部显示,便于切换文件

目录 1. 前言 2. 设置VsCode 多文件分行(栏)排列显示 1. 前言 主流编程IDE几乎都有排列切换选择所要查看的文件功能&#xff0c;如下为Visual Studio 2022的该功能界面&#xff1a; 图 1 图 2 当在Visual Studio 2022打开很多文件时&#xff0c;可以按照图1、图2所示找到自…

Golang struct 结构体指针类型 / 结构体值类型

struct类型的内存分配机制 结构体变量之间的赋值是值拷贝。 type stu struct {Name stringSlice []stringMap1 map[string]string }func main() {s : stu{}s.Slice make([]string, 6)s.Slice[1] "ssss"s.Slice[2] "xxxx"s.Map1 make(map[string]stri…

基础堆排序

目录 基础堆排序 一、概念及其介绍 二、适用说明 三、过程图示 基础堆排序

【Opencv入门到项目实战】(十):项目实战|文档扫描|OCR识别

所有订阅专栏的同学可以私信博主获取源码文件 文章目录 1.引言1.1 什么是光学字符识别 (OCR)1.2 应用领域 2.项目背景介绍3.边缘检测3.1 原始图像读取3.2 预处理3.3 结果展示 3.轮廓检测4.透视变换5.OCR识别5.1 tesseract安装5.2 字符识别 1.引言 今天我们来看一个OCR相关的文…

桂林小程序https证书

现在很多APP都相继推出了小程序&#xff0c;比如微信小程序、百度小程序等&#xff0c;这些小程序的功能也越来越复杂&#xff0c;不可避免的和网站一样会传输数据&#xff0c;因此小程序想要上线就要保证信息传输的安全性&#xff0c;也就是说各种类型的小程序也需要部署https…

怎么用PS的魔术棒抠图?PS魔术棒抠图的操作方法

使用PS的魔术棒抠图教程&#xff1a; 1、首先&#xff0c;在ps界面上方点击“文件”选项&#xff0c;再在其弹出的选项栏中选择“打开”选项。然后&#xff0c;打开你所需要的图片。 2、然后&#xff0c;单击左侧的“魔术棒”工具。 3、然后&#xff0c;用鼠标点击图片的背景&…

【C++11】类的新功能 | 可变参数模板

文章目录 一.类的新功能1.默认成员函数2.类成员变量初始化3.强制生成默认函数的关键字default4.禁止生成默认函数的关键字delete5.继承和多态中final与override关键字 二.可变参数模板1.可变参数模板的概念2.可变参数模板的定义方式3.参数包的展开方式①递归展开参数包②逗号表…

Vue过滤器(时间戳转时间)

目录 过滤器 HTML写法&#xff1a; 定义过滤器: 定义全局过滤器&#xff1a; 过滤器串联&#xff1a; 带参数过滤器&#xff1a; 时间戳转时间 过滤器 官方地址&#xff1a;过滤器 — Vue.js (vuejs.org) 过滤器是指Vue.js支持在{{}}插值的尾部添加一个管道符“&#xff0…

vue3 + vite + ts 封装 SvgIcon组件

环境 vite vue3 ts "vue": "^3.3.4", "vite": "^4.4.0", "typescript": "^5.0.2",# 需要下载的依赖 "vite-plugin-svg-icons": "^2.0.1",不同版本可能存在一定差异, 这篇文章不可能对应所…

通达OA SQL注入漏洞【CVE-2023-4166】

通达OA SQL注入漏洞【CVE-2023-4166】 一、产品简介二、漏洞概述三、影响范围四、复现环境POC小龙POC检测工具: 五、修复建议 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损…

宋浩线性代数笔记(五)矩阵的对角化

本章的知识点难度和重要程度都是线代中当之无愧的T0级&#xff0c;对于各种杂碎的知识点&#xff0c;多做题复盘才能良好的掌握&#xff0c;良好掌握的关键点在于&#xff1a;所谓的性质A与性质B&#xff0c;是谁推导得谁~