将 Intel® RealSense™ 技术与 Intel® Edison 开发平台结合使用
本文档中有两个此类应用的示例:一个示例使用 Intel RealSense 3D 摄像头作为输入,Intel® Edison 板作为输出,SDK 触发板上的 LED 灯。
获取新的 Intel® 物联网开发人员套件,这是一个完整的软硬件解决方案,可让开发人员使用 Intel® Galileo 和 Intel® Edison 板创建令人兴奋的新解决方案。访问 Intel® 物联网开发人员中心。
引言
在移动电话普及的时代,我们现在看到了智能设备的兴起,它们连接到我们从未想象过的东西,构建了一个我们称之为“物联网”或 IoT 的世界。物联网设备仍处于起步阶段,从带有计步器的手表到通过手机启动的汽车。物联网设备有趣之处在于它们可以配备各种低成本传感器,这些传感器可以读取我们手机或电脑上找不到的温度、湿度、心率等信息,从而使这些信息在我们的生活中首次触手可及。借助 Intel® Edison 平台和 Intel® Quark™ 处理器,我们可以轻松构建收集传感器信息并创建创新产品的原型。
Intel 的另一项创新是 Intel® RealSense™ 技术。借助 Intel RealSense 3D 摄像头和 SDK,应用程序可以执行手势检测、面部分析、背景分割、语音识别、语音合成等功能,几乎就像一个能够检测许多事物的超级传感器。结合 Intel® Edison 套件的多功能用途及其输出,我们可以构建许多既有用又有趣的创意应用程序。
本文档中有两个此类应用的示例:一个示例使用 Intel RealSense 3D 摄像头作为输入,Intel® Edison 板作为输出,SDK 触发板上的 LED 灯。在第二个示例中,它使用 Intel® Edison 板作为输入,Intel RealSense 3D 摄像头作为输出,语音合成用于朗读板上的传感器数据。
硬件
- 带有 Arduino* 分线板的 Intel® Edison 板
- Seeed Grove* – 入门套件 Plus - Intel® 物联网版
- 第四代(或更高版本)Intel® 酷睿™ 处理器
- 8GB 可用硬盘空间
- USB 3.0
- 一款 Intel® RealSense™ 3D 摄像头 F200(系统集成版或外设版)
- (可选)搭载第四代 Intel 酷睿处理器的 Intel® NUC(下一代计算)
软件
- Arduino IDE:https://software.intel.com/en-us/articles/install-arduino-ide-on-intel-iot-platforms
- Microsoft Visual Studio* 2010-2013 及更高版本的 Service Pack 1 https://www.visualstudio.com/
- Intel RealSense SDK https://software.intel.com/en-us/intel-realsense-sdk
什么是 Intel® RealSense™ SDK?
Intel RealSense SDK 通过结合硬件、软件和 3D 摄像头,提供面部分析、手部和手指跟踪、语音识别、语音合成、增强现实对象跟踪、背景分割、增强现实等众多功能。当前 SDK 支持 Microsoft .NET 4.0 框架、Unity* Pro 4.1.0 或更高版本、Processing* 2.2.1 或更高版本以及 JDK 1.7.0_11 或更高版本。在我们的示例中,我们将使用 .NET 和 C#。
可以使用 Intel RealSense SDK 开发的典型应用程序包括沉浸式协作、游戏、自然交互、交互式故事叙述和 Intel® Capture and Share,但这仅仅是可能性的冰山一角。
有关 Intel RealSense 技术的更多信息,请访问 http://www.intel.com/content/www/us/en/architecture-and-technology/realsense-overview.html。
您可以从 https://software.intel.com/en-us/realsense/home/download 下载免费的 SDK。
硬件近距离观察
Intel® Edison 板是拟议系列低成本通用计算平台中的首批产品之一。它旨在为物联网项目提供快速简便的原型制作,同时为商业化提供产品就绪的路径。
Intel® Edison 板使用 22nm 双核 Intel® Atom™ SoC,运行频率为 500MHz。它支持 40 个 GPIO,包括 1GB LPDDR3 RAM、4GB EMMC 存储、双频 Wi-Fi* 和蓝牙*,所有这些都包含在一个小巧的外形中。
它运行完整的 Linux* 内核,为了获得最佳性能,您需要编写硬件级别的 Linux 代码。
此外,Intel® Edison 板版本的 Linux 包含一个作为 Linux 程序的 Arduino 实现。简而言之,这意味着您可以编写熟悉的 Arduino 草图并在板上运行它们。这正是我们将要做的。
在此处了解有关 Intel® Edison 板的更多信息:http://www.intel.com/content/www/us/en/do-it-yourself/edison.html
Arduino* 分线板
Arduino 分线板有两个目的。首先,它提供了一个更大的原型制作平台,可以轻松访问 IO 引脚。其次,它提供了一个与 Arduino 兼容的硬件平台,这意味着我们可以将标准的 Arduino 扩展板与 Intel® Edison 板一起使用。图 1 显示了安装在 Arduino 分线板上的板。
Grove Starter Kit Plus
该套件的全名是“Grove Starter Kit Plus - Intel® IoT Edition”,最初是为 Intel Galileo 第二代板设计的。幸运的是,通过 Arduino 分线板,它可以与 Intel® Edison 板完全兼容。
该套件(如图 2 所示)旨在简化传感器、执行器和扩展板的使用和原型制作。它包含一个与 Arduino 兼容的扩展板,带有标准化的四个 (4) 针连接器。这些连接器连接到 IO 端口,通过随附的电缆与套件中的传感器和控件连接。这意味着您可以构建项目,而无需处理小电线和上拉/下拉电阻,也无需担心极性。
在此处了解更多或购买该套件:http://www.seeedstudio.com/depot/Grove-starter-kit-plus-Intel-IoT-Edition-for-Intel-Galileo-Gen-2-p-1978.html
Grove 套件的创建者 Seeed Studios 在线提供了许多有用的资源。
我建议在此处克隆或下载 Sketchbook Starter 仓库:http://Github.com/Seeed-Studio/Sketchbook_Starter_Kit_V2.0
并在此处将 Grove Wiki 页面加入书签
http://www.seeedstudio.com/wiki/index.php?title=Main_Page#Grove
一款 Intel® RealSense™ 3D 摄像头 F200
无论是系统集成版还是外设版,Intel RealSense 3D 摄像头都专为游戏互动、娱乐、摄影和内容创作而设计。3D 摄像头是一款复杂的传感器,在某种程度上,它也是物联网的一部分(毕竟,它的名字是 RealSense)。 该摄像头的最低要求是 USB3、第四代 Intel® 酷睿™ 处理器和 8GB 硬盘空间。
该摄像头(如图 3 所示)具有全 1080p 彩色和深度传感器,可为 PC 提供 3D 视觉和身临其境的体验。
您可以在 https://software.intel.com/en-us/realsense/devkit 购买包含摄像头的完整开发人员套件。
Intel® 下一代计算 (Intel® NUC),搭载第四代 Intel® 酷睿™ 处理器或更高版本
Intel NUC 是一个可选设备,可用作 Intel RealSense 3D 摄像头和 Intel® Edison 模块的集中式集线器,还可以处理其他功能,例如将数据存储和检索到云端以及进行进一步分析。它不是开发所必需的,因为您可以通过 USB 串行端口连接摄像头和 Intel® Edison 分线板套件。但是,如果使用,可以处理从摄像头接收到的信息并将其发送到板上以激活警报、电机、LED 等输出。从板上的传感器接收到的信息可以发送到 Intel NUC,使用 Intel RealSense SDK 激活语音合成。
由于摄像头需要 USB3、8GB RAM 和第四代(或更高版本)Intel 酷睿处理器,Intel NUC(如图 4 所示)轻松满足这些要求。另一个优点是其用户界面,带有 HDMI 端口,如果需要,可以轻松用作计算机。如果您没有配备所需软件的 PC,Intel NUC 可以是一个相对便宜的选择。
有关 Intel NUC 的更多详细信息,请访问:http://www.intel.com/content/www/us/en/nuc/products-overview.html
安装软件并准备编码
我们将使用两个代码示例
- 捕获 Intel RealSense 3D 摄像头的姿势以控制 Intel® Edison 板上的 LED。
- 使用 Intel® Edison 板温度传感器的数据激活 Intel RealSense SDK 语音合成。
适用于 Intel® 物联网平台的 Arduino IDE
您需要下载特别准备的 Arduino IDE 版本才能将 Sketches 部署到您的板上。当前版本是 1.6.0,可在此处获取
https://software.intel.com/en-us/articles/install-arduino-ide-on-intel-iot-platforms
Intel® Edison 板驱动程序
您还需要从以下位置下载并安装 Intel® Edison 板的驱动程序
https://software.intel.com/en-us/iot/hardware/edison/downloads
它应该是列出的页面上“驱动程序软件”下的最后一个链接。当前版本是 1.2.1。
有关进一步说明,请参阅入门指南
https://software.intel.com/en-us/iot/library/edison-getting-startedVisual Studio
Visual Studio 是一个全面的开发人员工具和服务集合,可帮助您为多个平台创建应用程序。Intel RealSense SDK 需要 Visual Studio 和 Windows 8.1 作为最低软件要求。Visual Studio 支持 C、C++、VB.NET、C#、F#、M、Python*、Ruby、JavaScript* 以及许多其他语言。本指南特别使用 C#。
您可以免费下载 Visual Studio Express Edition。可以通过 DreamSpark*(针对学生)和 BizSpark*(针对初创公司)等计划免费获得商业版 Visual Studio。
您可以在 https://www.visualstudio.com/ 找到有关 Visual Studio 的更多信息,在 https://msdn.microsoft.com/en-us/default.aspx 找到有关 C# 的更多信息
Intel® RealSense™ SDK
Intel RealSense SDK 允许开发人员利用前面描述的功能来利用 3D 功能。当前版本是 4.0.0.112526(或 Gold R2 版本),可在此处获取
https://software.intel.com/en-us/intel-realsense-sdk/download
测试 Intel® Edison 板
在开始下面的演练之前,请确保您能够运行 Blink 示例草图。它包含在 Arduino IDE 下载包中,位于 examples -> 01.Basics -> Blink 文件夹。
https://software.intel.com/en-us/blinking-led-with-arduino-ide-on-intel-edison-board
安装 Visual Studio* 和 Intel® RealSense™ SDK
安装 Visual Studio 应该非常简单。然而,Intel RealSense SDK 需要将 3D 摄像头插入 USB3 才能安装。当您在桌面上看到 Intel RealSense SDK 示例浏览器(图 5)时,即表示安装成功,您可以在其中浏览 C++ 和 C# 示例。还提供特定于摄像头的示例;我们将使用 Hand Viewer 示例。
F200 Depth Camera Manager 必须在安装 SDK 后单独下载。它位于
https://software.intel.com/en-us/intel-realsense-sdk/download.
没有摄像头管理器,代码示例将无法正确初始化。
示例 #1:将信号从 Intel® RealSense™ 3D 摄像头发送到 Intel® Edison 板
对于第一个示例,我们将构建一个简单的应用程序,该应用程序使用手势将信号从摄像头发送到板上的 LED 以进行控制。
Intel® Edison 板的代码
我们首先需要构建代码的接收端。我们将 Grove 套件连接到 Arduino 分线板,然后将 LED 插座套件 v1.3 连接到 D2,如图 6 所示。
将 USB 端口连接到您的 PC 或 Intel NUC,使用 Windows* 设备管理器查找 Intel® Edison 板正在使用的串行端口。从图 7 中可以看出,在这种情况下它是“COM16”。当我们将板连接到 PC 时,Windows 会自动检测到板并分配端口。
在 Arduino IDE 的 Tools 下,我们将选择“Intel® Edison”作为板,选择“COM16”作为端口,如图 8 和 9 所示。
最后,我们来编写一些程序。由于该板用作输出设备,以下几行代码将控制其串行端口,其中 1 打开灯,0 关闭灯。
const int ledPin = 2; // the number of the pushbutton pin
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available()>0)
/* read the most recent byte */
{
int tmp = Serial.parseInt();
if(tmp == 0)
{
// turn LED off:
digitalWrite(ledPin, LOW);
}
else if (tmp == 1)
{
// turn LED on:
digitalWrite(ledPin, HIGH);
}
}
}
至此,Intel® Edison 板的代码示例已完成。
Intel® RealSense™ 应用程序的代码
在 C# F200 示例下,有一个 Hand Viewer 应用程序。单击右侧的源文件,然后打开 RSSDK/FF_HandsViewer.cs 文件夹。将整个文件夹复制到桌面,以便我们可以修改此项目。
我们将使用的特定手势是张开手指。如果您愿意,可以随时切换到其他手势。图 10 显示了为此示例选择张开手指手势。
在 MainForm.cs 中修改并添加以下代码。该程序相对简单,因为我们只是声明串行端口并跟踪最后一个手势。当手势不同时,我们会更改 LED 的标志。UpdateInfo 是现有示例代码更新用户手势的地方。我们可以使用 status 变量来跟踪是否正在给出张开手指手势。当给出该手势时,我们将 SerialPort 的标志设置为 1 并打开 LED。当手势结束时,我们向标志发送 0 来关闭 LED。
using System.IO.Ports;
…
public partial class MainForm : Form
{
private SerialPort _serialPort;
private int _lastGesture;
…
public MainForm(PXCMSession session)
{
…
_serialPort = new SerialPort();
_serialPort.PortName = "COM16"; //Serial port Edison is connected to
_serialPort.BaudRate = 9600;
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
}
private void WriteToSerialPort(int value)
{
if (_lastGesture != write)
{
Console.WriteLine(write.ToString());
_serialPort.Write(write.ToString());
}
_lastGesture = write;
}
public void UpdateInfo(string status,Color color)
{
…
if (status.Contains("spreadfingers") || status.Contains("spreadfingers"))
{
WriteToSerialPort(1);
}
else
{
WriteToSerialPort(0);
}
}
private void Start_Click(object sender, EventArgs e)
{
…
_serialPort.Open();
}
private void Stop_Click(object sender, EventArgs e)
{
…
_serialPort.Close();
}
如果一切正常,请单击开始按钮,将跟踪设置为张开手指。然后,当手指张开时,LED 应该亮起,如图 11 所示。
示例 #2:读取 Intel® Edison 板的数据并使用 Intel® RealSense™ 应用程序进行输出
在此示例中,我们将连接到 Intel® Edison 板的温度传感器用作输入,并在 Intel RealSense 应用程序中使用语音合成,使传感器数据更加人性化。
Intel® Edison 板的代码
Grove* - Temperature sensor v1.1 是一个模拟传感器,我们可以通过 Grove 套件将其插入板上的 A0。以下 Arduino 代码以摄氏度读取温度。代码每 15 秒延迟一次,以便扬声器中的文本到语音部分有时间完成。您可以根据需要调整延迟。您还可以添加额外的逻辑,在温度过高或过低时发送警告。
#include <math.h>
int a;
float temperature;
int B=3975; //B value of the thermistor
float resistance;
void setup()
{
Serial.begin(9600);
}
void loop()
{
a=analogRead(0);
resistance=(float)(1023-a)*10000/a; //get the resistance of the sensor;
temperature=1/(log(resistance/10000)/B+1/298.15)-273.15;//convert to temperature via datasheet ;
Serial.print("Current temperature is ");
Serial.print(temperature);
Serial.println(" celcius");
delay(15000);
}
Intel® RealSense™ 应用程序
在 Common Samples 下,您会看到 Speech Synthesis。复制源文件夹“ambitious, persistence, resilient risk taker”,就像我们在上一个 Hand Viewer 示例中所做的那样。界面可能不会改变,但目标是使用语音合成来朗读板上的传感器数据。我们仍然使用“COM16”。
像这样更改 MainForm.cs 文件
using System.IO.Ports;
…
public partial class MainForm : Form
{
private SerialPort _serialPort;
private static bool _continue;
protected static string curr_module_name;
protected static uint curr_language;
protected static int curr_volume;
protected static int curr_pitch;
protected static int curr_speech_rate;
Thread readThread = new Thread(Read);
static public void Read()
{
while (_continue)
{
try
{
string message = _serialPort.ReadLine();
Console.WriteLine(message);
VoiceSynthesis.Speak(curr_module_name, (int)curr_language, message, curr_volume, curr_pitch, curr_speech_rate);
}
catch (TimeoutException) { }
}
}
public MainForm(PXCMSession session)
{
…
_serialPort = new SerialPort();
_serialPort.PortName = "COM16"; //Serial port Edison is connected to
_serialPort.BaudRate = 9600;
_serialPort.ReadTimeout = 500;
_serialPort.WriteTimeout = 500;
_serialPort.Open();
_continue = true;
readThread.Start();
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
_continue = false;
readThread.Join();
_serialPort.Close();
}
…
}
如果一切运行正常,程序将每 15 秒朗读一次温度传感器数据。您可以根据个人需求修改程序,例如更改界面或简单地将 VoiceSynthesis.cs 和 VoiceOut.cs 复制到您自己的项目中。
展望未来
我希望这两个示例能帮助开发人员和企业家扩展他们的思维,并想出更多利用这两种技术强大功能的想法。我构思的一个原型是 Anti-Snoozer,其中 Intel RealSense 3D 摄像头检测到驾驶员是否感到困倦,并通过 Intel Edison 板发送警报,以提供额外的警告唤醒驾驶员。利用这两种技术强大功能的组合有数千种可能性。那么,您将制造什么?
关于作者
Peter Ma 在 Web、移动和物联网应用程序开发方面拥有超过 14 年的经验。他之前曾在五家初创公司工作,专注于数据库、Web 后端、Web 前端、移动(Android* 和 iOS*)和物联网开发。他是 Intel® 软件创新者,使用 Intel® 技术构建各种演示。
Peter 目前居住在旧金山,担任快速原型专家,为大公司和初创公司提供咨询。他业余时间参加许多黑客马拉松,并且经常获胜(!)。人们形容他雄心勃勃、坚持不懈、坚韧且敢于冒险。
版权所有 2015 Peter Ma
根据 Apache 许可证 2.0 版(“许可证”)许可;除非符合许可证的规定,否则您不得使用本文件。您可以在以下网址获取许可证副本
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”分发,不附带任何形式的保证或许可。有关控制许可证下的权限和限制的具体语言,请参阅许可证。
立即开始创新!Intel® 物联网开发者计划提供知识、工具、套件以及专家社区,助您快速轻松地将您的创新想法转化为物联网解决方案。
通过适用于 Intel® Edison 和 Intel® Galileo 平台的 Intel® 物联网开发人员套件,梦想它,实现它。这些套件是多功能、性能优化的集成端到端物联网解决方案,支持各种编程环境、工具、安全、云连接和硬件。
如需更多资源并了解新的 Intel® 物联网开发者套件 v1.0 如何帮助您简化物联网项目
- 下载 Intel® 物联网开发者套件
- 访问 Intel® 物联网开发者中心
- 参加我们的 Roadshows,获取创建您自己的物联网项目的实践培训