北京航空航天大学王党校教授团队发表NPJ Flexible Electronics期刊综述论文,提出了一种泛在触觉的概念

自从普适计算的概念30年前提出以来,人类已经进入了泛在视觉的时代。相比于视觉显示技术的繁荣发展,作为人体重要的感知通道,触觉反馈技术仍旧处于研究探索期。如何将触觉技术赋能于物理世界和真实世界,产生“万物皆可触”、“所触即所得”的交互体验,是人机交互领域的一个热点问题。

在此背景下,北京航空航天大学虚拟现实与系统全国重点实验室王党校教授团队在NPJ Flexible Electronics期刊(影响因子:14.6)上发表了以“Active electronic skin: an interface towards ambient haptic feedback on physical surfaces”为题的综述论文,提出了一种泛在触觉的概念(如图1所示),旨在通过触觉装置随时随地、悄无声息地感知用户的交互行为以及呈现交互所需的触觉信息,有效地降低用户交互负荷,实现自然的人机交互。‍

image.png

图1 从泛在视觉到泛在触觉

在泛在触觉的智能交互空间内,万物皆可触、所触及所得。为了构建这样的智能交互空间,需要研发新一代的智能交互装置——主动电子皮肤(如图2所示)。该装置具备丰富性、交互性和不可见性三大特征,可以方便地贴附在不同物体的表面,从而让物体表面在任意地方、任意时刻都可以感知、辨识用户的多维度交互信息。同时,该电子皮肤可以为用户提供触觉纹理、振动、温度等多元触觉信息反馈,从而能够引导和辅助用户更加便捷、自然地完成不同的交互任务。在特定交互场景中,为了满足视触融合的交互需求,主动电子皮肤还需要具备高透明度的特性,确保不会对显示器上的图片和视频等视觉内容造成遮挡。
image.png

图2 实现泛在触觉的有效途径——主动电子皮肤

进一步,根据主动电子皮肤可贴附对象属性的不同,文章将泛在触觉的智能交互空间内分为两大类(如图3所示)。一种是面向物理世界,即将主动电子皮肤应用于无智能交互能力的物体表面(如墙面、家具表面、汽车座舱、文物表面等),通过主动电子皮肤赋予这些物体“灵魂”让他们“活”起来,实现物理世界的数字化;另一种是面向数字世界,将主动电子皮肤应用于具有智能交互能力的设备表面(如屏幕、穿戴式VR设备、裸手式VR设备),通过主动电子皮肤赋予这些智能设备“肉身”让他们“动”起来,实现数字世界物理化。
image.png

图3 主动电子皮肤的潜在应用场景

最后,文章详细阐述了现有纹理、温度、振动等触觉呈现技术与多维触觉信息传感技术的研究现状,通过分析当前交互技术与主动电子皮肤之间的差距,提出了四个未来的研究方向,包括:
(1)开展皮肤交互力学、感知生理机理和触幻觉效应等基础理论研究,为主动电子皮肤的设计与性能评估奠定坚实的理论基础;
(2)研究触觉呈现系统的供能与低能耗技术、以及多种触觉模态融合呈现所需的空间、时间和语义的配准技术,以提升交互的沉浸感与真实性;
(3)探索驱动器和传感器的空间配准方法、功能适配技术、数据传输与处理技术,构建驱动感知一体化交互系统;
(4)探究视触觉融合呈现技术,实现主动电子皮肤触觉信息与虚拟场景/电子屏幕等视觉信息的时空一致性配准。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
### 回答1: NVRJava是一个开源项目,它提供了一个Java库,用于与网络视频录像机(NVR)进行通信。它提供了一些基本的接口,使Java开发人员可以轻松地与NVR进行交互。 以下是使用NVRJava的示例代码: ``` import com.github.lkq.npj.Session; import com.github.lkq.npj.nvr.Nvr; import com.github.lkq.npj.nvr.NvrFactory; public class NvrJavaDemo { public static void main(String[] args) { // 创建Nvr对象 Nvr nvr = NvrFactory.create("192.168.1.100", "admin", "password"); // 创建会话对象 Session session = nvr.createSession(); // 查询摄像头列表 List<Camera> cameras = session.getCameraList(); for (Camera camera : cameras) { System.out.println(camera.getName()); } // 打开指定摄像头的实时视频流 Camera camera = cameras.get(0); Stream stream = session.openStream(camera); // 读取视频数据 byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = stream.read(buffer)) != -1) { // 处理视频数据 processVideoData(buffer, bytesRead); } // 关闭会话对象 session.close(); } private static void processVideoData(byte[] data, int length) { // 处理视频数据 } } ``` 在上面的示例代码中,我们首先创建一个Nvr对象,并指定NVR的IP地址、用户名和密码。然后,我们创建一个会话对象,并使用它来查询摄像头列表。接下来,我们选择第一个摄像头,并打开它的实时视频流。在while循环中,我们读取视频数据并进行处理。最后,我们关闭会话对象。 请注意,在使用NvrJava时,您需要确保您的NVR支持HTTP API,并且已经启用了它。同时,您需要查看您的NVR的文档,以了解如何使用HTTP API与NVR进行交互。 ### 回答2: NVR(Network Video Recorder)是一种通过网络连接的视频录制设备,可以将多个摄像头的视频流进行录制和存储。而Java是一种广应用于各种软件开发领域的编程语言。下面是一个简单的NVR功能的Java代码实现。 首先,为了能够接收和处理摄像头的视频流,我们需要导入一些Java相关的库。 ```java import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; ``` 接下来,我们定义一个NVR类,并为其添加一个保存视频流的方法。 ```java public class NVR { private OutputStream outputStream; public void saveVideo(String fileName, byte[] videoData) { try { outputStream = new BufferedOutputStream(new FileOutputStream(fileName, true)); outputStream.write(videoData); } catch (IOException e) { e.printStackTrace(); } finally { try { if (outputStream != null) { outputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } } ``` 在保存视频的方法中,我们首先创建一个输出流,指定要保存的文件名和数据流。然后,我们使用缓冲输出流将视频数据写入输出流。最后,我们关闭输出流。 以上是一个简单的NVRJava代码实现,实现了保存视频流的功能。当然,这只是一个基础的示例,实际的NVR系统还需要更多的功能和模块来处理视频流,如视频压缩、数据存储和实时视频播放等。这些功能可以根据具体需求进行开发和扩展。 ### 回答3: NVR是一种网络视频录像设备,它可以通过网络将视频信号传输到中央服务器进行录像存储。而NVRJava代码实现,则是基于Java语言来编写实现NVR相关功能的代码。 要实现NVRJava代码,首先需要使用Java Socket编程来建立与NVR设备之间的网络连接。通过建立套接字连接,可以实现与NVR设备的通信,包括发送命令、接收视频流等等。 其次,需要使用Java多线程编程来处理从NVR设备接收到的视频流数据。通过多线程技术,可以实现视频的实时接收和处理,并将其存储到本地或者远程服务器上。 同时,还需要使用Java图像处理库,如OpenCV等,来对接收到的视频流进行处理。可以对视频进行一些基本的处理,比如抓取关键帧、检测运动目标等。 此外,NVRJava代码实现还需要处理异常情况,比如网络连接中断、视频流传输错误等。可以使用Java异常处理机制来捕获和处理这些异常,保证程序的稳定性和可靠性。 总的来说,NVRJava代码实现包括与NVR设备建立网络连接、多线程处理视频流数据、使用图像处理库对视频流进行处理、处理异常情况等一系列步骤。通过这些步骤的组合,可以实现NVR相关功能的Java代码实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值