Nao机器人3D感知与自主计算集成

部署运行你感兴趣的模型镜像

Nao人形机器人上三维感知与 自主计算的集成

1 引言

如今,我们已经有了能够制造汽车或探索深空的机器人,但遗憾的是,我们还没有一种能替我们完成工作的通用型机器人。要实现这一目标,我们仍需达成一些里程碑,例如与人类的交互或自主导航。

对于机器人的自主导航,我们需要能够感知环境的传感器以及功能强大的机载计算机来处理传感器数据。在人形机器人上实现3D感知的想法是自然的,但如果该机器人未配备适用于此任务的合适传感器(如立体视觉、RGB‐D相机或三维激光测距仪),则具有很大的挑战性。在本研究中,我们专注于将RGB‐D相机集成到人形机器人上,具体案例为阿尔德巴兰的Nao。由于Nao的机载计算机没有足够的能力处理来自RGB‐D相机的数据,我们决定在其背部安装一台迷你PC。我们的目标是构建一个自主平台,使我们能够在机器人上测试自己的算法。

作为概念验证,我们专注于两个任务:第一个任务是一个简单的人机交互应用,使NAO机器人能够检测站在其前方人员的手臂,从而模仿其所观察到的动作。该应用将成为示范学习任务的重要组成部分,即用户可以通过示范教会机器人如何执行特定任务。第二个任务是同步建图与定位(SLAM),目标是创建环境地图,用于导航与定位。为此任务,我们采用了一种知名的 SLAM算法:RTABmap。此外,我们还测试了Nao行走行为的稳定性,以及行走动作对SLAM任务的影响。

本文的结构安排如下:第2节描述了相关工作。第3节介绍了我们针对计算自主性的解决方案。第4节专门介绍我们测试的RGB‐D相机、其软件以及它们在Nao的头部上的组装方式。第5节讨论了实验结果,最后部分则描述了结论和未来工作。

2 相关工作

我们受到一些需要巨大计算能力的研究的启发,因此使用外部迷你PC来执行繁重的任务。托米克等人[1]在无人机机载计算机上连接了三块Gumstix Overo Tide电路板,用于执行图像处理任务。达维拉·查孔在其硕士学位论文[2]中使用了一台Nao机器人,其胸部安装了一个fit‐PC2i 迷你PC,为其供电的电池则放置在背部。然而,这种电池和处理单元的布局使得Nao的声纳无法正常使用,并降低了Nao的行走稳定性。文中未提及电池的重量,但fit‐PC2i的重量为 0.370 kg,远超本文所建议的Odroid U3加Odroid UPS组合的重量。

我们的模仿应用程序基于罗德里格斯等人[3]提出的公式,用于实现Nao机器人对手臂运动的模仿。目前很少有研究将SLAM集成到Nao机器人上,主要原因在于Nao所配备的传感器并非此类任务的最佳选择。文等人[4]使用了测距激光仪和Nao的相机来完成SLAM任务。特耶尔贝里[5]展示了如何利用RGB‐D相机在Nao机器人上实现SLAM。本文中,我们的目标是提出一种硬件和软件平台,使NAO机器人能够完全自主,并在三维空间中感知其环境。为了完成SLAM任务,我们将采用一种广为人知的解决方案:RTABmap [6]。

3 计算自主性

Nao嵌入式系统的计算能力1非常有限。因此,我们决定使用连接到Nao机身的迷你PC。在本节中,我们将介绍实现Nao自主性所需的硬件和软件方案。

3.1 嵌入式系统

我们可以将迷你PC分为两大类:ARM架构和x86架构。ARM架构的问题在于缺乏对我们所需某些软件组件的支持(例如Nao的框架NaoQi)。另一方面,我们本可以使用x86开发板,但这类电路板存在功耗问题(例如 Gizmosphere gizmo 2需要12 V 2 A的电源供应)。其他重要特性还包括小巧的尺寸和轻重量。

在Nao的测试中,我们选择了Hardkernel的两款ARM电路板[9]( Odroid XU3和U3)。表1列出了所测试电路板的特性。我们选择Odroid U3电路板的原因是,为Odroid XU3供电所需的电池比Odroid U3的不间断电源更重。

表1 我们测试的嵌入式系统的特性。

Odroid XU3 Odroid U3
CPU 三星Exynos‐5422:Cortex‐A15 和 Cortex‐A7 big.LITTLE 三星Exynos4412 Prime Cortex‐A9 四核
GPU Mali‐T628 MP6 Mali 400 MP
RAM 2GB LPDDR3 2GB LPDDR2
内部存储 eMMC 最大64GB eMMC 最大64GB
外部存储 micro SD卡槽 最大64GB micro SD卡槽 最大64GB
网络 10/100以太网 10/100以太网
端口 USB3 主机接口 x1, USB2主机×4, USB3 OTG×1,风扇PWM控制 Ethernet RJ‐45,耳机插孔,30针:通用输入输出/IRQ/串行外设接口/ADC USB2主机×3,设备×1 ,以太网 RJ‐45, 耳机插孔 通用输入输出, 通用异步收发传输器, 集成电路总线, 串行外设接口 (板载版本0.5 或更高)
电源供应 5V/4A 5V/2A
尺寸 9.4 x 7厘米 8.3 x 4.8厘米

3.2 电源供应

为了实现完全的电力自主,我们决定添加一个专用的充电宝。在为每个嵌入式设备选择电池时,我们考虑了以下特性

1 英特尔Atom Z530 1.6GHz 中央处理器,配备 1 GB 内存和 2 GB 闪存。

表2 我们测试的电池的特性。

Anker Astro3 Odroid UPS
容量 12800 毫安时 2 x 1500 毫安时
输入 5V/2A 5V/2A
输出 5V/4A 5V/2A
自主性 3 h 11.5 小时
尺寸 11.1 x 8.3 x 2.6 厘米 8.3 x 4.8 x 1 厘米
重量 298 克 64 克

电路板的要求是:为嵌入式系统提供足够的电源、尺寸小、重量轻,最后还需要能够在迷你PC运行时为电池充电。为了给Odroid XU3供电,我们需要一块5V/4A电池,因此我们选择了Anker Astro3。对于Odroid U3,我们需要一块5V/2A电池,所以我们选择了Odroid UPS[9]。表2显示了这两款电池的技术规格。

3.3 组装在Nao的身体上

我们制作了一个背包用于组装嵌入式系统和电池。为了制作这个背包,我们使用了Konstantinos Chatzilygeroudis提供的模型[7],通过3D打印机将 Odroid U3与UPS固定在Nao的背部。为了将背包安装到Nao的背部,我们用公制A‐2 17mm长螺丝替换了电池盖的螺丝。

我们原本更希望使用带外壳的Odroid U3来保护迷你PC,但遗憾的是,该外壳并未设计为可与UPS一起使用。因此,我们不得不通过进行多个穿孔来改装它。图1逐步展示了这一过程。

为了将Odroid XU3与安克电池组装在一起,我们必须使用一个额外的外壳来固定电池(图2(a))。由于重量对Nao至关重要,我们对每个硬件元件都进行了称重。表3显示了结果。

示意图0 U3外壳上的穿孔,b) U3加电池,c) NAO的包,d) 最终组装。)

示意图1 安克电池外壳,b) 最终组装。)

表3 计算自主性权重的硬件。

XU3+安克电池重量 U3+ UPS电池重量
NAO的包 29 g 29 g
WiFi 适配器 71克 O 3 g WiFi 适配器 droid U3
Odroid XU3 53 g
Odroid XU3 的外壳 298克 O 39 g Odroid U3 的外壳 droid UPS
安克电池 64 g
安克电池的电缆 29 g Odroid UPS的电缆
安克电池的外壳 141 克
总计 610 克 总计

3.4 嵌入式板软件

在两个嵌入式系统中,我们都安装了从Hardkernel的官方网站下载的 Lubuntu 14.04 LTS2,。关于机器人框架,我们选择了ROS Indigo版本 [12],,以便能够访问其所有算法和代码。为了与Nao进行交互,自然的选择是使用NaoQi封装器[13, 14],,即Nao的官方框架。

Lubuntu 是一个使用 LXDE 桌面而非 Unity 的轻量级 Ubuntu 版本。

最初,我们尝试在Odroid设备上安装NaoQi,但遇到了问题,因为 Aldebaran并未发布NaoQi的ARM版本。因此,我们无法在Odroid系统上运行 NaoQi的ROS封装器。我们探索了两种解决方案:一方面,我们在x86笔记本电脑上安装了ROS Indigo、NaoQi及其ROS封装器。该方案的优点是我们可以快速开发和测试代码,但主要缺点是Nao无法完全自主运行,且无线连接成为限制因素。关于另一种方案,我们在Nao的嵌入式系统(配备Intel Atom CPU)上安装了一套基本的ROS以及NaoQi的ROS封装器。我们遵循了ROS官方网站上的“操作指南”[11]并应用了两个已知补丁:将“emerge”的默认目录更改为 Nao内部SD卡挂载的目录,并安装tinyxml软件包,然后在ROS Nao节点查找的位置创建一个符号链接。然而,在基本安装后,Nao的摄像头节点仍无法工作。

我们不得不安装其依赖项:ros-image-common-1.11.3和camera_info_manager_py。

最终,我们安装在Nao上的ROS已完全正常运行。

4 3D感知

在本节中,我们将展示所测试的不同RGB‐D相机、在Nao头部的组装、用于测试RGB‐D相机的软件,以及最后对RGB‐D相机进行的测试。

4.1 RGB-D相机

本研究考虑了三种RGB‐D相机:微软Kinect [15],XtionPro Live[16]和Creative Senz3D3 [17]。表4展示了这些设备的技术特性

根据SoftKinetic官方网站,Creative Senz3D与SoftKinetic DS325是同一款相机,只是外壳和产品ID不同。

表4 测试的RGB‐D相机特性。

微软 Kinect Pro Live Senz3D
视场角 43o V, 57o H 45o V, 58o H 58o V, 74o H
深度最小距离 0.8 米 0.8 米 0.15 米
深度最大距离 4.0 米 3.5 米 1.5 米
彩色流帧率 30 帧/秒 30 帧/秒 30 帧/秒
深度流帧率 30 帧/秒 30 帧/秒 30 帧/秒
彩色流分辨率 640 x 480 1280 x 1024 1280 x 720
深度流分辨率 640 x 480 640 x 480 320 x 240
重量(不含底座) 204 克 179 克
头盔重量 54 g 57 g

华硕Xtion创新

这三台相机。最后,我们舍弃了微软Kinect,因为其重量较重。我们的计划是使用华硕Xtion Pro Live进行建图与定位,而Creative Senz3D将用于操作任务中检测小物体(例如当Nao需要抓取触觉指针[8]时)。

4.2 Nao头部的组装

为了在Nao的头部安装摄像头,我们使用了一个头盔。我们的头盔基于K. 查齐利耶鲁迪斯设计的头盔[7]。图3展示了安装在Nao的头部的选定摄像头以及Nao头盔的部件。与迷你PC一样,我们称量所有组件以将摄像头安装到Nao的头部。表4中显示了结果。

在初步测试中,我们观察到使用华硕Xtion头盔的第一个原型(图3(a))时,相机在Nao行走动作过程中发生振荡,最终导致机器人失去平衡。因此,我们必须重新设计头盔,并添加两个加强件(图3(b))。

示意图2

4.3 RGB-D相机软件

首先需要安装的软件是每个RGB‐D相机的驱动程序及其对应的ROS封装。我们选择了OpenNI2驱动程序 [18] 及其封装

用于ROS 19 访问华硕Xtion Pro Live相机。为了访问 Creative Senz3D相机,我们使用了官方的SoftKinetic DS325软件开发工具包 [20]。该相机没有“官方”的ROS封装器,但我们选择了由沃尔特·卢切蒂开发的堆栈 ros_depthsense_camera。弗劳恩霍夫IPA4,提供了另一个ROS封装器,但遗憾的是它无法在ARM架构上运行。

此外,我们安装了用于执行特定任务的库,这些库受到支持或具有适用于ROS 的封装。对于实时人体检测与跟踪任务,我们选择了NITE库(版本1.5.2.23)[22]。为了处理RGB‐D相机生成的大量点云数据,我们选择了点云库[23]。在测试Creative Senz3D相机时,我们发现其ROS封装器(ros_depthsense_camera)与点云库5不兼容。

最后,对于同步建图与定位任务,我们选用了著名的RTABmap算法[6]。然而,当尝试在Odroid U3上运行RTABmap ROS包装器时,由于总线错误而失败。我们无法解决此问题,因为该问题非常新且缺乏详细文档。幸运的是,独立的RTABmap应用程序在ARM嵌入式主板上可以正常工作。作为临时解决方案,在此故障修复之前,我们可以在x86机器(我们的开发笔记本)上使用RTABmap ROS包装器,主要用于可视化目的。

5 实验结果

我们使用两套迷你PC加电池(表3)测试了Nao机器人的稳定性。将Odroid XU3和安克电池(610克)安装在Nao机器人背部后,其机器人明显晃动,最终摔倒。使用Odroid U3和Odroid UPS(188克)后,机器人在行走时能够保持平衡。我们在不同速度下进行了测试(分别为 NAO全速的20%、50%、80%和100%),发现NAO行走越快,其运动越稳定。显然,较大的重量对NAO的稳定性有影响。另一方面,当两块电路板全容量运行时,附加在机器人上的额外电池可持续供电两到三个小时,而 NAO自身的电池在行走时仅能持续半小时,空闲时则可维持一个半小时。

为了测试所选RGB‐D相机(图4)的质量,我们对其点云进行了比较。为此,我们首先使用PCL和C++实现了“平面检测”,并将其作为ROS节点。该节点从原始点云中提取出主要平面的点云(通常是地面平面)以及其余部分的点云,并将它们作为两个ROS话题发布。可以使用Rviz工具实时可视化这些数据。然而,Creative Senz3D的ROS封装器发送的数据无法与PCL兼容。因此,为了比较点云,我们将相机对准地面,并使用Rviz截取了两个相机各自的ROS封装器发送数据的两幅画面。在图5中可以看出,Creative Senz3D的点云比华硕Xtion Pro Live的点云噪声更多。

示意图3 华硕Xtion Pro Live,b)Creative Senz3D。)

我们开发了一个名为“Mimo Nao”的小程序 [24]。该程序可检测并跟踪人的手臂运动,从而使Nao能够复制该动作。图6展示了我们软件的一个截图。我们的软件工作方式可分为以下几个阶段:首先使用NITE库过滤除一个位于摄像头前方。其次,检测用户肢体的坐标并将其投影到相机空间,最后按照[3]中描述的过程计算用户关节形成的角度值,将其转换到NAO空间,并通过ROS消息将此信息发送给机器人Nao。

示意图4

示意图5

最后,我们尝试在Nao于环境中行走时,使用安装在其上的华硕 Xtion和Odroid U3创建地图。为了构建地图,我们将华硕Xtion当作虚拟激光使用,并结合了RTABmap算法的视觉里程计。Odroid XU3能够处理 11帧每秒,而Odroid U3能够处理4帧每秒。我们的测试非常简单,让Nao 在机器人实验室中走一个弧形路径(图7(a))。其中一次测试获得的捕获结果如图7(b)和7(c)所示。我们录制了一些视频,可在[24]中查看。

示意图6 环境,b) Nao轨迹中点处的点云,c) 最终占用栅格。)

6 结论与未来工作

在本研究中,我们将一台RGB‐D相机和一台迷你PC集成到一个人形Nao机器人中,旨在实现两个目标:首先,我们为Nao配备了一台RGB‐D相机(华硕Xtion Pro Live),使其能够感知环境。我们还测试了Creative Senz3D相机在短距离下的表现,但由于其缺乏对ARM架构的支持且获取的数据噪声较大,最终未予采用。

我们的第二个目标是尝试提升机器人的计算能力。在此情况下,我们在机器人背部安装了一块ARM嵌入式主板。我们测试了Odroid U3和XU3,均取得了非常好的效果,但由于U3功耗较低,因此更受青睐。为了简便起见,我们还配备了一个专用的外置电池为嵌入式主板供电。

为了测试Nao机器人在计算自主性和3D感知方面的性能,我们实现了两个基本任务:第一个任务是一个简单的应用程序,用于实时检测和跟踪站在机器人面前的人的身体和手臂。我们的应用程序能够使Nao机器人模仿人类的动作。我们完成的第二个任务是在Nao机器人在环境中行走时使用RTABmap算法进行 SLAM(同步定位与地图构建)。该第二项任务的另一个目的是验证Nao在携带额外配件(嵌入式主板、相机、电池及组件)情况下的行走稳定性。如前所述,存在一些限制:一方面,某些ROS封装器在ARM电路板上无法完全正常工作 (如RTABmap、Creative Senz3D、NaoQi)。为解决此问题,一种简便的方案是使用x86嵌入式主板,例如MeegoPad T02(一款类似于新型英特尔计算棒的产品)。另一种选择是逐一修复每个ROS封装器。最后,当Nao携带 Odroid XU3及其电池时,将需要更优的平衡控制能力。

本文提出并测试的模仿应用程序将使我们的机器人能够通过示范学习,即任何人都可以教Nao一些简单的行为(抓取、行走)。新的Nao的3D感知能力将使其能够检测任务中的相关物体:例如用于玩游戏的指示器和电路板 [8]。此时,对Creative Senz3D的更好支持或一种适用于短距离的新RGB‐D相机将会受到欢迎。

我们将从多个方面扩展基本的SLAM应用:主动探索、自主建图、室内定位和场景识别。我们将研究如何将人类显著性模型集成到SLAM数据中。

您可能感兴趣的与本文相关的镜像

Wan2.2-I2V-A14B

Wan2.2-I2V-A14B

图生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值