Azure Kinect DK + ROS1 Noetic使用教程

news2024/12/23 17:14:49

作者: 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 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线,重新插入。

三、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

六、参考文献

官方

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.coloradmin.cn/o/850432.html

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

相关文章

Ajax同源策略及跨域问题

Ajax同源策略及跨域问题 同源策略ajax跨域问题什么是跨域&#xff1f;为什么不允许跨域&#xff1f;跨域解决方案1、CORS2、express自带的中间件cors3、JSONP原生JSONPjQuery发送JSONP 4、使用vscode的Live Server插件 同源策略 同源策略&#xff08;Same-Origin Policy&#…

Mybatis-plus实现【真·批量插入】

Mybatis基本是现在最为常用的ORM&#xff08;Object Relational Mapping&#xff0c;对象关系映射&#xff09;框架&#xff0c;进行普通的CRUD非常方便。 一. BaseMapper 实体类对应的mapper在继承BaseMapper后&#xff0c;就可以使用以下Mybatis-plus提供的方法进行数据操作…

3个月快速入门LoRa物联网传感器开发

在这里插入图片描述 快速入门LoRa物联网传感器开发 LoRa作为一种LPWAN(低功耗广域网络)无线通信技术,非常适合物联网传感器和行业应用。要快速掌握LoRa开发,需要系统学习理论知识,并通过实际项目积累经验。 摘要: 先学习LoRa基础知识:原理、网络架构、协议等,大概需要2周时间…

高德地图 SDK 接口测试接入(AndroidTest 上手)

学习资料 官方文档 在 Android 平台上测试应用 | Android 开发者 | Android Developers 测试了解 【玩转Test】开篇-Android test 介绍 Android单元测试全解_android 单元测试_一代小强的博客-CSDN博客 Android单元测试-对Activity的测试_activitytestrule_许佳佳233的博客…

SpringMVC的架构有什么优势?——异常处理与文件上传(五)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

PHP8定义字符串的方法-PHP8知识详解

字符串&#xff0c;顾名思义&#xff0c;就是将一堆字符串联在一起。字符串简单的定义方法是使用英文单引号&#xff08; &#xff09;或英文双引号&#xff08;" "&#xff09;包含字符。另外&#xff0c;还可以使用定界符定义字符串。本文还介绍了字符串的连接符。…

脑动极光冲刺上市:盈利能力存疑,永泰生物董事长谭铮为控股股东

8月8日&#xff0c;脑动极光医疗科技有限公司&#xff08;下称“脑动极光”&#xff09;向港交所递交招股书&#xff0c;准备在港交所主板上市&#xff0c;中金公司和浦银国际为其保荐机构。脑动极光在招股书中表示&#xff0c;其是一家根据上市规则18A寻求在港交所上市的生物科…

【80天学习完《深入理解计算机系统》】第二天 2.2 整数的表示【有符号数,无符号数,符号数的扩展,有无符号数的转变】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

重发布选路问题

一、思路 &#xff1b; 1.增加不优选路开销解决选路不佳问题 2.用增加开销的方式使R1 不将ASBR传的R7传给另一台ASBR解决R1、R2、R3、R4pingR7环回环路 二、操作 ------IP地址配置如图 1.ospf及rip的宣告 rip&#xff1a; [r1]rip 1 [r1-rip-1]version 2 [r1-rip-1]netw…

【android】mac mini m2安装android studio

文章目录 一、环境搭建1.1 安装路径1.2 mac arm1.3 安装android studio 二、安装sdk三、更新sdk3.1 关闭代理3.2 重新更新sdk 四、更新api五、项目创建六、gradle安装七、avd八、问题&#xff1a;build tools缺失九、编译运行小结 一、环境搭建 1.1 安装路径 windows&#xf…

HTML5 中新增了哪些表单元素?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ HTML5 中新增了的表单元素⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴趣、刚…

大数据培训课程-《机器学习从入门到精通》上新啦

《机器学习从入门到精通》课程是一门专业课程&#xff0c;面向人工智能技术服务&#xff0c;课程系统地介绍了Python编程库、分类、回归、无监督学习和模型使用技巧以及算法和案例充分融合。 《机器学习从入门到精通》课程亮点&#xff1a; 课程以任务为导向&#xff0c;逐步学…

linux之find命令

概览 Linux下find命令在目录结构中搜索文件&#xff0c;并执行指定的操作。Linux下find命令提供了相当多的查找条件&#xff0c;功能很强大。由于find具有强大的功能&#xff0c;所以它的选项也很多&#xff0c;其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络…

ESP32 Max30102 (1)检测 心率

1. 运行效果 未检测效果如下 检测效果如下

第九次作业

1. SSL工作过程是什么&#xff1f; 当客户端向一个 https 网站发起请求时&#xff0c;服务器会将 SSL 证书发送给客户端进行校验&#xff0c;SSL 证书中包含一个公钥。校验成功后&#xff0c;客户端会生成一个随机串&#xff0c;并使用受访网站的 SSL 证书公钥进行加密&#xf…

算法基础之插入排序

1、插入排序基本思想 插入排序的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。插入排序在实现上&#xff0c;通常采用in-place排序&#xff08;即只需用到O(1)的额外空间的排序&#xff09;&a…

Mobaxterm 突破 14个 session 限制

mobaxterm 可以说非常好用&#xff0c;但是免费版对会话有限制&#xff0c;对于有很多虚拟机会话需要存储的我来说确实太少了。 超过限制时&#xff0c;提示如下&#xff0c;再新建的 session 将不会被存储&#xff0c;说明下次登陆还需要输入一遍 ip、账号密码。 Mobaxterm 突…

剑指Offer68-I.二叉搜索树的最近公共祖先 C++

1、题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也…

基于Doris实时数据开发的一些注意事项

300万字&#xff01;全网最全大数据学习面试社区等你来&#xff01; 最近Doris的发展大家是有目共睹的。例如冷热分离等新特性的持续增加。使得Doris在易用和成本上都有大幅提升。 基于Doris的一些存储实时数仓在越来越多的场景中开始有一些实践。大家也看到了这种方案频繁出现…

【PostgreSQL内核学习(十一)—— OpenGauss源码学习(CopyTo)】

可优化语句执行 概述什么是列存储&#xff1f;列存的优势 相关函数CopyToCStoreCopyToCopyStatetupleDescCStoreScanDesc CStoreBeginScanRelationSnapshotProjectionInfo GetCStoreNextBatchRunScanFillVecBatchCStoreIsEndScan CStoreEndScan 声明&#xff1a;本文的部分内容…