亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 物联网技术

ETSIIT 技术挑战 |从大学生到创业者

一年前,我们开始了 IV ETSIIT 技术挑战赛(视频)的工作。我们是谁?嗯,我们是在西班牙格拉纳达大学学习电气工程和计算机科学的四名学生。

我们的团队 Prometheus 赢得了由 RTI 赞助的技术挑战赛。对于这个挑战,四到五名学生组成的团队必须创建一个产品来解决外部公司提出的挑战。今年挑战赛的主题是“Multi-Agent Video Distributed System”。

我们为了实践经验加入了这个挑战。技术挑战赛一年后,我们仍然是学生,但我们现在已经研究了一个商机,设计了具有竞争力的产品 Locaviewer,制定了在市场上销售的策略,并创建了一个工作原型,以及所需的课程工作我们的学位。

Locaviewer

大多数有孩子在幼儿园的父母都担心孩子的健康和进步。我们的产品 Locaviewer 试图让父母实时跟踪和查看他们的孩子。作为我们营销计划的一部分,我们制作了一个宣传视频。我们的代码已根据 MIT 许可在 GitHub 上发布。

团队组织和日程

该项目花了我们大约 250 个小时才完成。我们每周至少会面 4 小时,除了上个月我们每周在项目上花费 20 小时。为了提高效率,我们分成了两个小组。两个人致力于室内蓝牙定位算法。另外两个专注于一个应用程序来捕获、编码/解码视频流,并使用 RTI Connext DDS 共享它。

定位算法

我们解决方案的第一步也是最重要的一步是确定儿童在幼儿园内的位置。每个孩子都需要佩戴带有蓝牙设备 -sensor- 的腕带,它会不断报告接收到蓝牙设备 -dongle- 的信号功率,该设备放置在房间墙壁上。此接收信号强度指示 (RSSI) 值通常以分贝 (dB) 为单位进行测量。我们确定了RSSI和距离之间的关系。

图2.通过角度和距离凭经验测量蓝牙信号。
图3。 Locaviewer 可穿戴设备。

RSSI 值被传输到小型计算机(Raspberry Pi 或 MK802 III)以运行三角测量算法并识别孩子的位置。由于我们知道了摄像机的位置,在确定了孩子的位置后,我们就知道了哪些摄像机正在记录孩子并选择了最好的摄像机。

图4.室内三角测量。

视频录制应用

为了录制、编码、解码和可视化视频,我们使用了 Java 版 GStreamer。我们尝试了其他库,例如 vlcj,但它们不支持 Raspberry Pi 或满足我们系统的实时限制。经过一番研究,我们发现 GStreamer 与 Raspberry Pi 配合使用,可以轻松地实时获取编码的视频缓冲区(使用 AppSinkAppSource 元素)。这允许我们封装它并将其发送到 DDS 主题。我们为此工作了几个月,甚至使用 vlcj 实施了 HTTP 流传输的临时解决方法,直到我们确定了最终方法。

我们使用了 VP8 (WebM) 视频编码器。由于 Java 的包装器仅适用于 GStreamer 0.10 版,我们无法对其进行优化,并且不得不减少视频尺寸。我们的测试使用了 Raspberry Pi,但我们计划在最终实现中使用 MK802 III 设备,因为它具有相同的价格但处理能力更强。最终的编码配置是:

图5.用于记录、编码和获取视频的 GStreamer 管道。

我们使用以下 Java 代码来创建 VP8 编码器元素。

Element codec =ElementFactory.make("vp8enc", null);codec.set("threads", 5);codec.set("max-keyframe-distance", 20);codec.set("speed", 5);Element capsDst =ElementFactory.make("capsfilter", null);capsDst.setCaps(Caps.fromString("video/x-vp8 profile=(string)2"));  

在客户端,我们使用了如下配置:

图6。用于设置、解码和播放视频的 GStreamer 管道。

我们使用以下 Java 代码来创建 VP8 解码器元素。

String caps ="video/x-vp8, width=(int)320, height=(int)240, framerate=15/1";Element capsSrc =ElementFactory.make(" capsfilter", null);capsSrc.setCaps(Caps.fromString(caps));Element queue =ElementFactory.make("queue2", null)Element codec =ElementFactory.make("vp8dec", null);Element convert =ElementFactory. make("ffmpegcolorspace", null); 

我们也尝试过JPEG编码,但由于数据包较大和数量较多,实时使用不可行。

DDS 架构

发布-订阅方法是我们解决方案的关键。它允许我们在许多客户端之间共享数据而不必担心网络套接字或连接。我们只需要指定要发送和接收的数据类型。我们创建了一个包装库 DDStheus,以抽象我们系统中的 DDS 用法。

图7.系统的一般DDS架构。

我们的最终解决方案由共享三个主题的六个程序组成。我们使用了不同的编程语言:

  1. Python 在低级别 (HCI) 上与蓝牙设备一起工作
  2. MATLAB/Octave 制作三角测量脚本
  3. Java 与 RTI Connext DDS 和图形用户界面配合使用

我们需要知道房间中的所有 RSSI 值。我们创建了一个脚本来配置蓝牙加密狗并获取 RSSI 信息。这些值使用同一台机器中的简单套接字连接发送到 Java 程序。 Java 应用程序在 Sensor Data 中发布数据 话题。它发送儿童 ID(传感器蓝牙 MAC)、蓝牙加密狗 ID 和位置、当前房间(作为 key 按房间过滤)、RSSI 值和过期时间。

图8。传感器程序流程图。

摄像机录制视频并编码后,Java程序Gava通过视频数据发送视频 话题。它将摄像机 ID 作为键值发送以使用 ContentFilteredTopic 过滤流 包含摄像机位置、房间、编码帧和编解码器信息。

此外,应用程序将摄像机 ID、房间和摄像机位置放在每个视频发布者的 USER_DATA QoS 值中。然后三角测量小型机可以通过发现发布者来获取房间中的所有相机信息。它还可以实时检测新的和损坏的相机并更新定位脚本以改进相机选择算法。

图9.视频节目流程图。

最后一步,我们处理了数据,将结果写成子数据 话题。这是由房间服务器(使用 Raspberry Pi 或 MK802 III 实现)完成的,该服务器对孩子的位置进行三角测量并选择合适的相机。它仅过滤当前房间中的传感器并收集该房间中的所有视频发布者信息。数据被发送到 Octave 脚本,该脚本返回孩子的位置和最佳相机 ID。以子数据为主题发送到云端的信息 ,包括儿童 ID、视频质量、摄像机 ID、儿童位置和房间 ID。为了提高效率,子 ID 和质量作为键发送,可以过滤或用于对视频进行排序。

为了优化应用程序,房间服务器仅在有订阅者要求孩子时才调用三角测量脚本。我们使用订阅者发现并查看 ContentFilteredTopic 来确定这一点 过滤参数。

最后,我们实现了冗余机制来处理房间服务器故障。房间中的每台小型机都创建了一个发布者,并将其 USER_DATA 值设置为房间和默认(唯一)优先级 ID。如果其中一台小型机检测到它的房间ID最小,则启动服务器应用程序,并充当服务器,直到出现一个新的具有更低ID的小型机。

图10:房间服务器程序流程图。

用户应用

我们开发了两个最终用户应用程序。第一个将被父母用来在托儿所看他们的孩子。第二个程序将被托儿所员工用于实时查看所有摄像头,管理家长访问(添加和删除)并自动处理考勤控制。

图11。父客户端应用程序。
图12。托儿所的安全摄像头程序。

最后的想法

我们在挑战中不得不应对两个大问题:

  1. 获取 RSSI 值:我们购买了质量非常低的低成本蓝牙设备(约 5 美元)。信号有很多错误和噪声。我们必须开发一种算法来优化这些值,将误差从 3 米减少到 0.5 米。我们在 Java 中找不到任何用于蓝牙设备低级操作的库(我们最终使用了 pybluez)。我们必须使用 Python 和 Java 程序进行通信。
  2. 视频编码:找到一个允许我们获取编码视频缓冲区的库并不容易。优化 GStreamer 0.10 管道中的元素以在 Raspberry Pi 中以最高性能工作更加困难。使用最终配置,图像延迟约为 3-5 秒。为了获得更好的性能,我们计划用价格类似的 MK802 III 设备替换 Raspberry Pi,其中包括 Wi-Fi 和双核 Cortex A9 处理器。

RTI Connext DDS 通过实施网络、数据序列化和服务质量机制为我们节省了大量工作。我们感谢我们的工程学院和 RTI 为我们提供了成功应对这一业务挑战的机会和资源。

了解详情:

自动驾驶汽车生产»

自治系统中的连通性»

什么是工业物联网? »

什么是DDS? »


物联网技术

  1. 远程访问网络研讨会中的常见问题
  2. 来自我们的 CEO:勇气和信任是前进的必要条件
  3. Develop3D 评论中我们喜欢的 5 条引述
  4. 社区学院为高级复合材料制造学生增加了灵活性
  5. 来自黎巴嫩的客户学习如何操作数控机床
  6. 约旦客户来厂参观
  7. 加拿大客户参观我们的工厂
  8. 我司工程师赴迪拜提供海外技术支持
  9. 2017年4月卡塔尔客户来厂参观
  10. 我们的孟加拉客户检查我们新建的木工机械
  11. 印度客户来我厂验机
  12. 来自韩国的CNC路由器机