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

ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路

ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路

一年前我们踏上IV ETSIIT技术挑战赛(视频)。我们是谁?西班牙格拉纳达大学电气工程与计算机科学专业四名学生。

团队Prometheus赢得RTI赞助的Tech Challenge。4-5人团队需针对外部合作伙伴提出的真实问题创建产品。当年主题:"多智能体视频分布式系统"。

参赛初衷是获取实战经验。一年后,仍在就读的我们发现商机,设计竞品Locaviewer,制定市场策略,构建工作原型——除完成学业外全额外完成。

Locaviewer

许多家长担心孩子在幼儿园健康与进展。Locaviewer给家长提供孩子实时可视化。我们制作宣传视频展示方案,源码MIT许可开源于GitHub。

团队组织与进度

项目耗时约250小时。每周固定4小时会议,冲刺月增至周20小时。为效率分两子团队:一组攻室内蓝牙定位算法,一组负责视频采集、编解码、通过RTI Connext DDS分发。

定位算法

核心是定位幼儿园内每个孩子。每童佩戴蓝牙传感器腕带,持续向墙壁固定接收器上报接收信号强度指示(RSSI)。我们将RSSI映射为距离,建立可靠关系。

ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路
图2. 蓝牙信号角度与距离实测。
ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路
图3. Locaviewer可穿戴设备。

RSSI读数传至微型计算机(树莓派或MK802 III)运行三角测量算法定位每童。知晓摄像头位置,可为每童选择最优摄像头。

ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路
图4. 室内三角测量。

视频录制应用

采用GStreamer for Java处理实时视频采集、编解码、显示。替代方案vlcj不支持树莓派或不满足延迟需求。经大量调研,GStreamer合适,允许通过AppSink和AppSource元素访问编码视频缓冲并发布至DDS主题。

选用VP8 (WebM)编码器。因Java封装兼容GStreamer 0.10,降低分辨率适配平台约束。测试配置用树莓派,计划迁移MK802 III获更强算力保持成本相当。

ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路
图5. 录制、编码、获取视频的GStreamer管线。

创建VP8编码器Java片段:

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"));

客户端管线配置:

ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路
图6. 设置、解码、播放视频的GStreamer管线。

VP8解码器Java代码:

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架构

发布订阅模型为核心,免去手动管理Socket连接。我们通过自研封装库DDStheus抽象DDS交互。

ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路
图7. 系统通用DDS架构。

最终系统包含六程序共享三主题,用三语言实现:

  1. Python处理底层蓝牙。
  2. MATLAB/Octave跑三角测量脚本。
  3. Java集成RTI Connext DDS与GUI开发。

需获取房间内所有RSSI值,编写脚本配置接收器采集数据。经本地Socket转发至Java程序,发布至传感器数据主题,含儿童ID(传感器MAC)、接收器ID、位置、当前房间(过滤键)、RSSI值、过期时间。

ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路
图8. 传感器程序流程图。

视频采集编码后,Java程序Gava通过视频数据主题传流,标记摄像头ID与房间信息。利用ContentFilteredTopic按摄像头位置和房间过滤流。

摄像头元数据——ID、房间、位置——存储在各发布者USER_DATA QoS字段。三角测量微机可发现房间内所有摄像头,实时检测新增/离线摄像头,动态调整选择算法。

ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路
图9. 视频程序流程图。

最后将传感器与视频数据聚合至儿童数据主题。房间服务器(树莓派或MK802 III)三角测量定位并选最优摄像头。按房间过滤传感器,获取摄像头信息,运行Octave脚本计算儿童位置与最优摄像头,发布至云端。儿童ID与视频质量作过滤键实现高效订阅。

为优化资源,房间服务仅当订阅者请求特定儿童数据时执行三角测量脚本,通过订阅者发现与ContentFilteredTopic过滤器判定。

还实现容错机制:各微机在USER_DATA发布优先级ID。最低ID节点成活动服务器,直到更低ID节点加入。

ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路
图10. 房间服务器程序流程图。

用户应用

开发两个终端应用。一供家长实时查看孩子。二供幼儿园员工监控所有摄像头、管理家长权限、自动考勤。

ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路
图11. 家长客户端应用。
ETSIIT技术挑战赛:从学生到创业者的Locaviewer之路
图12. 幼儿园安防摄像头程序。

结语

面临两大挑战:

  1. 从低成本蓝牙设备(~$5)获准确RSSI。开发算法将定位误差从3米降至0.5米。Java缺底层蓝牙支持,通过Python(pybluez)与Java交换数据解决。
  2. 优化视频编码。难找暴露编码缓冲的库,树莓派上调优GStreamer 0.10具挑战。最终配置达3-5秒延迟。替换为MK802 III(Wi-Fi+双核Cortex-A9)将提升性能。

RTI Connext DDS处理网络、序列化、QoS为我们节省大量精力。感谢工程学院与RTI提供机会与资源,让我们成功攻克此商业挑战。

了解更多:

自动驾驶汽车生产 »

自动驾驶系统连接性 »

什么是IIoT? »

什么是DDS? »

物联网技术

  1. Al Dean 评测 Mark Two 的 5 条金句 — 为何它意义非凡
  2. 黎巴嫩客户来厂考察学习CNC、等离子、激光设备操作
  3. 约旦客户来厂体验三轴木工雕刻机加工硬质PVC
  4. 加拿大客户考察1530气动三主轴CNC工厂内幕
  5. 专家工程师赴迪拜培训ELE2140圆盘ATC雕刻机
  6. 卡塔尔客户来厂考察1530双主轴CNC雕刻机
  7. 孟加拉客户来厂验收定制CNC木工雕刻机
  8. 印度客户来厂验机订制ELE1325 CNC雕刻机
  9. 韩国造纸企业客户考察CNC雕刻机生产基地
  10. 远程访问网络研讨会常见问题解答大全
  11. CEO 寄语:勇气与信任驱动 IXON 增长
  12. GBCC 增设早班课程支持倒班工人学习先进复材制造