Intel® RealSense™技术与Intel® Edison平台的结合应用

随着物联网(IoT)技术的不断发展,Intel®公司推出了许多创新产品,其中Intel® RealSense™技术与Intel® RealSense™ 3D摄像头和SDK尤为引人注目。这项技术能够实现手势识别、面部分析、背景分割、语音识别和语音合成等多种功能,SDK为CSharp、Java、JavaScript、Processing和Unity等软件框架提供了支持。开发者可以基于熟悉的框架轻松开始创建应用程序。

Intel® Edison平台是另一项激动人心的技术。物联网开发者可以利用它构建原型,收集传感器信息或向其他设备发送控制信号,创造出创新的产品。Intel® Edison已经集成了Wi-Fi和蓝牙低能耗(LE),因此可以连接到互联网,创建真正的物联网解决方案。

在Peter Ma的文章中,他展示了如何将Intel® RealSense™技术与Intel® Edison开发平台结合起来使用。其中一个示例使用Intel® RealSense™ 3D摄像头作为输入,Intel® Edison板作为输出,SDK触发板上的LED灯。在第二个示例中,使用Intel® Edison板作为输入,Intel® RealSense™ 3D摄像头作为输出,使用语音合成来读取板上的传感器数据。

这些项目激发了基于JavaScript创建类似项目的想法。在本文中,将使用Intel® RealSense™技术的JavaScript框架将手部手势数据发送到服务器,服务器将数据发送以触发通过Intel® Edison连接的蜂鸣器和LED灯。

硬件需求

以下是实现该项目所需的硬件列表:

  • 带有Arduino*扩展板的Intel® Edison板
  • Seeed Grove* – Starter Kit Plus - Intel® IoT Edition
  • 第四代(或更高版本)Intel® Core™处理器
  • 8GB空闲硬盘空间
  • USB 3.0
  • 系统集成或外设版本的Intel® RealSense™ 3D摄像头F200
  • 配备Node.js的服务器

软件需求

以下是实现该项目所需的软件列表:

  • Intel® XDK IoT Edition:
  • Intel® RealSense™ SDK R4:

步骤1:设置Intel® RealSense™

设置Intel® RealSense™非常简单。首先,将Intel® RealSense™ 3D F200摄像头连接到USB 3.0端口。安装摄像头驱动程序和Intel® RealSense™ SDK: 安装SDK后,导航到安装位置并使用浏览器打开JavaScript示例RSSDK\framework\JavaScript\FF_HandsViewer\FF_HandsViewer.html,它将执行一些检查。

在浏览器中点击链接安装Intel® RealSense™ SDK Webapp Runtime,然后重新启动浏览器并再次尝试打开文件。然后尝试在摄像头前举起手,如果一切顺利,将在浏览器上看到手势数据的可视化。

注意底部文本: Gesture:{"timeStamp": ,"handId": ,"state": ,"frameNumber": ,"name":"spreadfinger"} , 将发送"name":"spreadfingers"到服务器。

复制RSSDK\framework\JavaScript\FF_HandsViewer文件夹到另一个位置。 复制位于RSSDK\framework\common\JavaScriptrealsense.js并将其放在FF_HandsViewer文件夹中。 创建edisonconnect.js文件以接收手势数据并发送到服务器,*注意:请更改服务器IP地址。 编辑sample.js文件以拦截手势数据并将其传递给edisonconnect.js。 编辑FF_HandsViewer.html文件以重新定位realsense.js文件路径,链接socket.io和edisonconnect.js脚本。

至此,已经准备好将手势数据发送到服务器。下一步是设置服务器和Intel® Edison。

步骤2:设置服务器

假设已经设置了一个基于Debian的Linux服务器(使用的是Ubuntu发行版),并在该机器上设置了node.js服务器。 远程登录服务器并通过SSH登录。 更新服务器。 安装Nodejs。 安装npm。 安装socket.io express。 创建文件server.jsindex.html。 使用vim编辑server.js文件。 编写以下脚本:

// server.js 示例代码 const express = require('express'); const app = express(); const server = require('http').createServer(app); const io = require('socket.io')(server); app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); io.on('connection', function(client){ console.log('a user connected'); client.on('disconnect', function(){ console.log('user disconnected'); }); }); server.listen(1337, function(){ console.log('listening at port 1337'); });

最后,运行脚本,如果看到"listening at port 1337",则表示服务器已安全运行。

步骤3:设置Intel® Edison

Intel® Edison易于部署,Intel®提供了清晰的文档。可以在以下位置找到它:

组装Intel® Edison到Arduino板上:

运行集成安装程序:

设置串行终端连接:

将Intel® Edison连接到Wi-Fi:

安装并配置Intel® XDK IoT Edition:

现在,是时候在Intel® Edison中放置代码了,这段代码用于连接到服务器并监听服务器的任何广播。如果接收到手势数据,则Intel® Edison将触发数字引脚的开/关状态。

首先,打开Intel® XDK IoT Edition并从模板创建一个新项目。将使用数字写入模板。

编辑package.json添加依赖项socket.io-client。 编辑main.js连接到服务器并检查如果手势数据名称为"spreadfingers",则触发数字引脚2和数字引脚8的状态为1/开,如果接收到其他手势数据,则改回0/关状态。*请更改服务器IP地址,如果想改变引脚,请在mraa.Gpio(selectedpins)上进行更改。

// main.js 示例代码 const mraa = require('mraa'); // 包含mraa库 const gpio2 = new mraa.Gpio(2); // 使用数字引脚2 const gpio8 = new mraa.Gpio(8); // 使用数字引脚8 gpio2.dir(mraa.DIR_OUT); // 设置为输出模式 gpio8.dir(mraa.DIR_OUT); // 设置为输出模式 const socket = require('socket.io-client')('http://服务器IP地址'); socket.on('connect', function() { console.log('Connected to server'); }); socket.on('GestureData', function(data) { if (data.name === 'spreadfingers') { gpio2.write(1); // 打开引脚2 gpio8.write(1); // 打开引脚8 } else { gpio2.write(0); // 关闭引脚2 gpio8.write(0); // 关闭引脚8 } });

最后,安装/构建项目然后运行,*确保Intel® Edison设备已连接到互联网。

现在,让确保服务器正在运行,Intel® RealSense™笔记本电脑/计算机和Intel® Edison已连接到互联网。 可以在这里看到动作。

这是一个非常简单的项目,修改Intel® RealSense™ JavaScript框架示例脚本来发送捕获的手势数据到Node.js服务器。服务器将广播手势数据给任何socket客户端。安装了socket.io-client的Intel® Edison监听服务器的广播,如果手势数据名称为"spreadfingers",它将触发数字引脚改变状态。同样的方法可以用来创建基于面部数据、Blob数据和基于JavaScript框架的语音识别的项目。

将创造什么? Aulia Faqih - Intel®软件创新者 Intel® RealSense创新者 常驻印度尼西亚日惹,目前在UIN Sunan Kalijaga Yogyakarta任教。喜欢玩Galileo/Edison、Web和所有极客事物。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485