最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

基于Arduino的虚拟现实头戴显示器姿态跟随系统设计

IT圈 admin 50浏览 0评论

2024年4月14日发(作者:韩依云)

创新应用

Applications

基于Arduino的虚拟现实头戴显示器姿态

跟随系统设计

李舒驰

1,2

,齐占涛

3

(1. 沈阳新松虚拟现实产业技术研究院有限公司,沈阳 110168;

 2. 沈阳中德新松教育科技集团有限公司,沈阳 110015;

 3. 辽宁其仕盛和祥房地产集团有限公司,沈阳 110180)

摘要:为了实现虚拟现实视频转播,设计了一种基于Arduino控制的用于可穿戴头戴显示器姿态跟随

系统。通过PC端Unity3D引擎编写脚本将头戴显示器姿态数据通过串口通信的方式发送至Arduino。经

Arduino对数据的解析进而同时控制两路数字舵机,实现头戴显示器的俯仰和偏航姿态跟随。

关键词:Arduino,虚拟现实,头戴显示器,姿态跟随。

中图分类号:TP368.1,TP391.9 文章编号:1674-2583(2021)01-0074-02

DOI:10.19339/.1674-2583.2021.01.036

中文引用格式:李舒驰,齐占涛.基于Arduino的虚拟现实头戴显示器姿态跟随系统设计[J].集成电路应用,

2021, 38(01): 74-75.

Design of Virtual Reality Head Mounted Display

Attitude Following System Based on Arduino

LI Shuchi

1,2

, QI Zhantao

3

( 1. Shenyang Xinsong Virtual Industry Research Institute Co., Ltd., Shenyang 110168, China.

2. Shenyang Zhongde Xinsong Education Technology Group Co., Ltd., Shenyang 110015, China.

3. Liaoning Qisheng Hexiang Real Estate Group Co., Ltd., Shenyang 110180, China.

)

Abstract

— In order to realize virtual reality video broadcasting, this paper designs an attitude

following system for wearable head mounted display based on Arduino control. Through PC unity3d

engine script, the head mounted display posture data is sent to Arduino through serial communication.

Through Arduino's analysis of the data, two digital steering engines are controlled at the same time to

realize the attitude following of the head mounted display.

Index Terms

— Arduino, virtual reality, head mounted display, posture following.

0 引言

随着虚拟现实技术的发展,生活中与虚拟现实

技术相关场景的衍生需求逐渐增加。其中,使用虚

拟现实系统远程操作视频转播设备是在线教学、网

络直播、远程监控等领域中需求较多的。主要的技

术要求在于同步虚拟现实系统操作人员的视角和视

频转播设备的视角,视角同步后通过头戴显示器即

可在近眼端获得良好的临场感,远好于传统远程操

作的视频转播设备带来的体验。

本文所设计的基于Arduino的头戴显示器姿态跟

随系统旨在实现虚拟现实系统操作人员头部所佩戴

的头戴显示器的Pitch俯仰姿态和Yaw偏航姿态的同

步跟随,实现低头、仰头、左右摆头的动作捕捉,

进而同步视频转播设备与虚拟现实系统操作人员的

真实头部动作,最终获得同步的视角。

1 姿态跟随系统结构设计

本文姿态跟随系统使用基于Arduino平台的开发

平台进行设计与开发,本姿态跟随系统包括:头戴

显示器、Unity3D引擎、USB-Serial、Arduino以

及舵机。其中,头戴显示器作为虚拟现实的输入输

出设备,负责收集虚拟现实系统操作人员头部的姿

态以及将画面显示在近眼端;Unity3D引擎是一个

多平台的游戏开发工具

[1]

,负责创建虚拟现实场景

与交互脚本,并承担姿态跟随系统上位机的角色;

USB-Serial负责实现PC端与Arduino之间的串口通

信;Arduino作为姿态跟随系统主控制器,同时作

为下位机,控制舵机;舵机根据头部动作分解为俯

仰舵机和偏航舵机,作为最终执行端,负责执行头

戴显示器位姿的跟随动作。

2 硬件系统

本系统头戴显示器为HTC VIVE VR显示器,

USB-Serial为基于PL2303芯片的四线通信转换单

元,Arduino为基于ATMEGA328P单片机的Arduino

Uno开发平台,舵机为TBS-K20型数字舵机。

作者简介:李舒驰,沈阳新松虚拟现实产业技术研究院有限公司,研究方向:姿态跟随系统设计。

收稿日期:2020-11-02,修回日期:2020-12-02。

74 集成电路应用 第

38

1

期(总第

328

期)2021

1

2.1 HTC VIVE

HTC VIVE通过Lighthouse定位技术实现操作者

的动作捕捉。Lighthouse由两个定位基站构成,每

个定位基站内有一个红外LED阵列和两个转轴互相

垂直的旋转的红外激光发射器。通过固定时间内循

环扫描待定位空间获得操作者头戴式显示器的X、

Y、Z三轴位移

[2]

。通过内置MPU-6500六轴陀螺仪及

加速计芯片,可获得操作者头部的R、P、Y三轴旋

转角。由Lighthouse获得的(X,Y,Z,R,P,Y)数据可

以通过Unity3D引擎进行采集和处理。

2.2 Arduino开发平台

Arduino编程语言建立在C语言的基础上,将

AVR单片机相关参数设置模块化,不需要处理底层

系统,从事C/C++开发的人员能够迅速掌握Arduino

编程语言,提高应用程序的开发效率

[3]

。本文采用

基于ATMEGA328P芯片的UNO版Arduino,性能参数和

引脚定义均可以查找DataSheet获得,是完全开放

的平台。

2.3 TBS-K2舵机

TBS-K20舵机负载高达20kg,运动范围为

±135

o

,该舵机需要20ms的时基脉冲进行控制

[4]

在写舵机控制程序的时候注意舵机处理时间限制在

20ms以上,以防舵机来不及执行。Arduino提供了

内置舵机库函数Servo.h方便舵机的控制。需要注

意的是,同时开启串口通信和使用舵机库函数控

制Pin9和Pin10引脚电平时,会出现舵机抖动的现

象,应避免。

3 软件系统设计

软件系统分为上位机软件和下位机软件两大部

分,上位机软件主要在Unity3D引擎中进行编写,

下位机软件在Arduino中进行编写。

3.1 上位机软件设计

上位机软件的设计流程为:(1)在Unity3D引

擎中建立继承MonoBehaviour的子类PortTest,声

明用于串口通信的变量;(2)在Unity3D引擎自带

Start函数中对Unity3D对象进行初始化;(3)自

建OpenPort函数创建串口,并打开串口;(4)自

建协同进程IEnumerator Ctrl函数接收串口数据、

调用头戴显示器Inspector组件数据创建舵机控制

字符串;(5)向Arduino发送字符串;(6)程序

退出时关闭串口。

3.2 下位机控制软件

下位机软件的设计流程为:(1)声明舵机库

函数、软串口库函数;(2)创建舵机类并使用结

构体初始化舵机状态;(3)编写舵机使能函数;

(4)自建uRec函数接收串口发来的字符串;(5)

自建pInStrCmd函数解析串口接收字符串;(6)自

建hServo函数实现两路舵机连续控制;(7)setup

主函数初始化两路舵机控制引脚与串口通信;

Applications

创新应用

(8)loop函数循环执行uRec、pInStrCmd、hServo

函数。

4 系统测试

操作人员在佩戴虚拟现实头戴显示器运动的时

候,会出现眩晕效应,主要因为头戴显示器中观察

到的运动存在着迟延滞后现象,2019年国家对虚拟

现实设备显示参数提出要求,以60Hz为最基本的显

示刷新率

[5]

,市面上也已经出现了90Hz甚至120Hz

刷新率的头戴显示器,但提高头戴显示器刷新率并

不能解决其他硬件带来的时延。理论上,数字舵机

的控制脉冲响应时间刚好为20ms,但实际测试过程

中,处理头戴显示器定位信息、通信、下位机信息

处理等步骤耗费的时间要远超20ms,所以目前大多

产品都是通过放大与引导头部旋转算法的方式

[6,7]

进行眩晕补偿。在软件方面,上、下位机中都应该

尽量少的使用全局延时,使程序效率更高。

5 结语

使用本系统能够在最高30~50ms延迟范围内

实现头戴显示器动作跟随,基本满足要求,并且

Arduino开发平台成本合理,具有一定的稳定性和

拓展性,能够按需求增减功能,对完善与改进系统

性能有着良好的支持。

参考文献

[1] 倪乐波,戚鹏,遇丽娜,王婧.Unity3d产品虚

拟展示技术的研究与应用[J].数字技术与应

用,2010(09):54-55.

[2] Fu-ping Deng,Guang Hong,Shuai

Zhang,Bing ch on motion

sensing interaction technology

based on HTC Vive[A].信息化与工

程国际学会.Proceedings of 2016

4th International Conference on

Machinery,Materials and Information

Technology Applications(ICMMITA 2016)

[C].信息化与工程国际学会:计算机科学与

电子技术国际学会(Computer Science and

Electronic Technology International

Society),2016:4.

[3] 蔡睿妍.Arduino的原理及应用[J].电子设计工

程,2012,20(16):155-157.

[4] 蔡睿妍.基于Arduino的舵机控制系统设计[J].

电脑知识与技术,2012,8(15):3719-3721.

[5] GB/T 38259-2019,信息技术 虚拟现实头戴式

显示设备通用规范[S].2019.

[6] 马明明,业全,胡杨,薄正,孙东标,王党校.头部

旋转重定向的交互效率和眩晕感研究[J].图

学学报,2019,40(03):452-459.

[7] 曾建超,俞志和.虚拟现实的技术及其应用[M].

北京:清华大学出版社,1996.

集成电路应用 第

38

1

期(总第

328

期)2021

1

月 75

2024年4月14日发(作者:韩依云)

创新应用

Applications

基于Arduino的虚拟现实头戴显示器姿态

跟随系统设计

李舒驰

1,2

,齐占涛

3

(1. 沈阳新松虚拟现实产业技术研究院有限公司,沈阳 110168;

 2. 沈阳中德新松教育科技集团有限公司,沈阳 110015;

 3. 辽宁其仕盛和祥房地产集团有限公司,沈阳 110180)

摘要:为了实现虚拟现实视频转播,设计了一种基于Arduino控制的用于可穿戴头戴显示器姿态跟随

系统。通过PC端Unity3D引擎编写脚本将头戴显示器姿态数据通过串口通信的方式发送至Arduino。经

Arduino对数据的解析进而同时控制两路数字舵机,实现头戴显示器的俯仰和偏航姿态跟随。

关键词:Arduino,虚拟现实,头戴显示器,姿态跟随。

中图分类号:TP368.1,TP391.9 文章编号:1674-2583(2021)01-0074-02

DOI:10.19339/.1674-2583.2021.01.036

中文引用格式:李舒驰,齐占涛.基于Arduino的虚拟现实头戴显示器姿态跟随系统设计[J].集成电路应用,

2021, 38(01): 74-75.

Design of Virtual Reality Head Mounted Display

Attitude Following System Based on Arduino

LI Shuchi

1,2

, QI Zhantao

3

( 1. Shenyang Xinsong Virtual Industry Research Institute Co., Ltd., Shenyang 110168, China.

2. Shenyang Zhongde Xinsong Education Technology Group Co., Ltd., Shenyang 110015, China.

3. Liaoning Qisheng Hexiang Real Estate Group Co., Ltd., Shenyang 110180, China.

)

Abstract

— In order to realize virtual reality video broadcasting, this paper designs an attitude

following system for wearable head mounted display based on Arduino control. Through PC unity3d

engine script, the head mounted display posture data is sent to Arduino through serial communication.

Through Arduino's analysis of the data, two digital steering engines are controlled at the same time to

realize the attitude following of the head mounted display.

Index Terms

— Arduino, virtual reality, head mounted display, posture following.

0 引言

随着虚拟现实技术的发展,生活中与虚拟现实

技术相关场景的衍生需求逐渐增加。其中,使用虚

拟现实系统远程操作视频转播设备是在线教学、网

络直播、远程监控等领域中需求较多的。主要的技

术要求在于同步虚拟现实系统操作人员的视角和视

频转播设备的视角,视角同步后通过头戴显示器即

可在近眼端获得良好的临场感,远好于传统远程操

作的视频转播设备带来的体验。

本文所设计的基于Arduino的头戴显示器姿态跟

随系统旨在实现虚拟现实系统操作人员头部所佩戴

的头戴显示器的Pitch俯仰姿态和Yaw偏航姿态的同

步跟随,实现低头、仰头、左右摆头的动作捕捉,

进而同步视频转播设备与虚拟现实系统操作人员的

真实头部动作,最终获得同步的视角。

1 姿态跟随系统结构设计

本文姿态跟随系统使用基于Arduino平台的开发

平台进行设计与开发,本姿态跟随系统包括:头戴

显示器、Unity3D引擎、USB-Serial、Arduino以

及舵机。其中,头戴显示器作为虚拟现实的输入输

出设备,负责收集虚拟现实系统操作人员头部的姿

态以及将画面显示在近眼端;Unity3D引擎是一个

多平台的游戏开发工具

[1]

,负责创建虚拟现实场景

与交互脚本,并承担姿态跟随系统上位机的角色;

USB-Serial负责实现PC端与Arduino之间的串口通

信;Arduino作为姿态跟随系统主控制器,同时作

为下位机,控制舵机;舵机根据头部动作分解为俯

仰舵机和偏航舵机,作为最终执行端,负责执行头

戴显示器位姿的跟随动作。

2 硬件系统

本系统头戴显示器为HTC VIVE VR显示器,

USB-Serial为基于PL2303芯片的四线通信转换单

元,Arduino为基于ATMEGA328P单片机的Arduino

Uno开发平台,舵机为TBS-K20型数字舵机。

作者简介:李舒驰,沈阳新松虚拟现实产业技术研究院有限公司,研究方向:姿态跟随系统设计。

收稿日期:2020-11-02,修回日期:2020-12-02。

74 集成电路应用 第

38

1

期(总第

328

期)2021

1

2.1 HTC VIVE

HTC VIVE通过Lighthouse定位技术实现操作者

的动作捕捉。Lighthouse由两个定位基站构成,每

个定位基站内有一个红外LED阵列和两个转轴互相

垂直的旋转的红外激光发射器。通过固定时间内循

环扫描待定位空间获得操作者头戴式显示器的X、

Y、Z三轴位移

[2]

。通过内置MPU-6500六轴陀螺仪及

加速计芯片,可获得操作者头部的R、P、Y三轴旋

转角。由Lighthouse获得的(X,Y,Z,R,P,Y)数据可

以通过Unity3D引擎进行采集和处理。

2.2 Arduino开发平台

Arduino编程语言建立在C语言的基础上,将

AVR单片机相关参数设置模块化,不需要处理底层

系统,从事C/C++开发的人员能够迅速掌握Arduino

编程语言,提高应用程序的开发效率

[3]

。本文采用

基于ATMEGA328P芯片的UNO版Arduino,性能参数和

引脚定义均可以查找DataSheet获得,是完全开放

的平台。

2.3 TBS-K2舵机

TBS-K20舵机负载高达20kg,运动范围为

±135

o

,该舵机需要20ms的时基脉冲进行控制

[4]

在写舵机控制程序的时候注意舵机处理时间限制在

20ms以上,以防舵机来不及执行。Arduino提供了

内置舵机库函数Servo.h方便舵机的控制。需要注

意的是,同时开启串口通信和使用舵机库函数控

制Pin9和Pin10引脚电平时,会出现舵机抖动的现

象,应避免。

3 软件系统设计

软件系统分为上位机软件和下位机软件两大部

分,上位机软件主要在Unity3D引擎中进行编写,

下位机软件在Arduino中进行编写。

3.1 上位机软件设计

上位机软件的设计流程为:(1)在Unity3D引

擎中建立继承MonoBehaviour的子类PortTest,声

明用于串口通信的变量;(2)在Unity3D引擎自带

Start函数中对Unity3D对象进行初始化;(3)自

建OpenPort函数创建串口,并打开串口;(4)自

建协同进程IEnumerator Ctrl函数接收串口数据、

调用头戴显示器Inspector组件数据创建舵机控制

字符串;(5)向Arduino发送字符串;(6)程序

退出时关闭串口。

3.2 下位机控制软件

下位机软件的设计流程为:(1)声明舵机库

函数、软串口库函数;(2)创建舵机类并使用结

构体初始化舵机状态;(3)编写舵机使能函数;

(4)自建uRec函数接收串口发来的字符串;(5)

自建pInStrCmd函数解析串口接收字符串;(6)自

建hServo函数实现两路舵机连续控制;(7)setup

主函数初始化两路舵机控制引脚与串口通信;

Applications

创新应用

(8)loop函数循环执行uRec、pInStrCmd、hServo

函数。

4 系统测试

操作人员在佩戴虚拟现实头戴显示器运动的时

候,会出现眩晕效应,主要因为头戴显示器中观察

到的运动存在着迟延滞后现象,2019年国家对虚拟

现实设备显示参数提出要求,以60Hz为最基本的显

示刷新率

[5]

,市面上也已经出现了90Hz甚至120Hz

刷新率的头戴显示器,但提高头戴显示器刷新率并

不能解决其他硬件带来的时延。理论上,数字舵机

的控制脉冲响应时间刚好为20ms,但实际测试过程

中,处理头戴显示器定位信息、通信、下位机信息

处理等步骤耗费的时间要远超20ms,所以目前大多

产品都是通过放大与引导头部旋转算法的方式

[6,7]

进行眩晕补偿。在软件方面,上、下位机中都应该

尽量少的使用全局延时,使程序效率更高。

5 结语

使用本系统能够在最高30~50ms延迟范围内

实现头戴显示器动作跟随,基本满足要求,并且

Arduino开发平台成本合理,具有一定的稳定性和

拓展性,能够按需求增减功能,对完善与改进系统

性能有着良好的支持。

参考文献

[1] 倪乐波,戚鹏,遇丽娜,王婧.Unity3d产品虚

拟展示技术的研究与应用[J].数字技术与应

用,2010(09):54-55.

[2] Fu-ping Deng,Guang Hong,Shuai

Zhang,Bing ch on motion

sensing interaction technology

based on HTC Vive[A].信息化与工

程国际学会.Proceedings of 2016

4th International Conference on

Machinery,Materials and Information

Technology Applications(ICMMITA 2016)

[C].信息化与工程国际学会:计算机科学与

电子技术国际学会(Computer Science and

Electronic Technology International

Society),2016:4.

[3] 蔡睿妍.Arduino的原理及应用[J].电子设计工

程,2012,20(16):155-157.

[4] 蔡睿妍.基于Arduino的舵机控制系统设计[J].

电脑知识与技术,2012,8(15):3719-3721.

[5] GB/T 38259-2019,信息技术 虚拟现实头戴式

显示设备通用规范[S].2019.

[6] 马明明,业全,胡杨,薄正,孙东标,王党校.头部

旋转重定向的交互效率和眩晕感研究[J].图

学学报,2019,40(03):452-459.

[7] 曾建超,俞志和.虚拟现实的技术及其应用[M].

北京:清华大学出版社,1996.

集成电路应用 第

38

1

期(总第

328

期)2021

1

月 75

发布评论

评论列表 (0)

  1. 暂无评论