FA_IPC_协议网络(VRPN)数据交互三

FA :Formulas and Algorithm, IPC :Inter-Process Communication, VRPN :Virtual Realiy Peripheral Network

VRPN是专门为"虚拟现实"技术适配的网络通信协议(当然适合于进程间通信)。VRPN本身囊括了三层,他们分别为:"会话层"、"表示层"和"应用层",对于1~4层的协议是整体复用的。一般情况下的vrpn通信链路可以表示如下:

层序号 层名称 归属 实现方
7 应用层(Application Layer) vrpn自研 设备抽象、Pub/Sub业务接口
6 表示层(Presentation Layer) vrpn自研 私有二进制序列化、端序处理
5 会话层(Session Layer) vrpn自研 连接握手、会话管理、断线重连
4 传输层(Transport Layer) 复用标准 TCP/UDP
3 网路层(Network Layer) 复用标准 IP
2 链路层(Data Link Layer) 复用标准 以太网/WiFi
1 物理层(Physical Layer) 复用标准 光纤、无线电
复制代码
备注:由于更改了会话层肯定会提升相应的传输效率(稳、快、准);由于涉及的有表示层的修改内容,在数据加密编辑有相应的适配更改;由于涉及的有应用层的适配,那么数据的格式、种类也会有优化。

一、协议层的适配和优化

5 会话层(Session):VRPN 自主实现全链路会话管理

VRPN 自研会话规则,属于会话层实现:

  • 客户端先用 UDP 上报本地端口 → 服务端 TCP 回连握手、版本校验

  • 协商成功后再切换专用 UDP 端口收发实时数据

  • 自动断线重连、设备会话保活、多客户端接入管理、会话销毁

    TCP 只负责初始握手,整套连接流程是 VRPN 在会话层实现

6 表示层(Presentation):VRPN 自定义数据序列化(私有二进制格式)

  • 自研报文头:消息类型、设备 ID、时间戳、数据长度、服务等级(可靠 / 非可靠)
  • 多字节大小端统一(htonl 网络字节序)、四元数 / 坐标结构体二进制打包
  • 无 Protobuf/JSON,全私有二进制编码 = VRPN 自研表示层

7 应用层(Application):设备抽象 + 业务接口(VRPN 核心)

  • 标准化设备类型:Tracker (位姿)、Analog (模拟量)、Button (按键)、力反馈设备四大类 API
  • 发布订阅回调模型:设备上报数据、客户端注册回调接收,应用层 Pub/Sub 逻辑
  • 硬件驱动适配层:对接 Vicon/OptiTrack、数据手套、IMU 等外设,向上统一接口

对于原有的协议中,vrpn做了轻量化的处理,删除、修改了不必要的数据传递指挥、流控、校验和加密等,用于动捕场景清优化设计 。另一方面,VRPN保留了双信道机制。1、TCP信道:会话 + 可靠指令(参数配置、设备启停);2、UDP信道:表示 + 应用, 高频位姿流(100~1000Hz)动捕数据

二、VRPN通讯代码实例

相关推荐
酷可达拉斯18 分钟前
Linux操作系统-tcpdump抓包定位网络问题实战
linux·运维·服务器·网络·tcpdump
byte轻骑兵24 分钟前
BlueZ 5.x 整体架构总览:用户态 + 内核态分层设计核心逻辑
linux·架构·bluez·电脑蓝牙·嵌入式蓝牙
ltl9 小时前
大多数「无锁」代码其实不是无锁的
linux
ltl9 小时前
Linux 内核的内存屏障:一个让我调了三天的 bug
linux
可爱系程序猿9 小时前
网络打印机地址正常却无法出纸:从 TCP/IP 端口到 Print Spooler 的排错步骤
网络·网络协议·tcp/ip
Dontla10 小时前
预置known_hosts如何防止中间人攻击(MITM)?(服务器公钥、服务器私钥)Runner、DNS污染、BGP劫持、同网络ARP欺骗、SSH握手
服务器·网络·ssh
Lonely 净土11 小时前
Rocky Linux 安装教程
linux·运维·服务器
liulilittle14 小时前
UCP 控制协议 [简述]
网络·网络协议·计算机网络·udp·ip·通信
李白你好15 小时前
Windows 离线 Linux 提权辅助查询工具
linux
Lust Dusk15 小时前
记一次Linux应急响应题目解析
linux·运维·服务器·网络·安全·网络安全