一种适用于ROS系统的Unity3D下视觉传感器的仿真方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 202111186811.1
(22)申请日 2021.10.12
(71)申请人 上海机器人产业技术研究院有限公
地址 200063 上海市普陀区武宁路509号18
申请人 上海交通大学
(72)发明人 沈文婷 王赓 郑军奇 蒋李康 
(74)专利代理机构 上海璀汇知识产权代理事务
所(普通合伙) 31367
代理人 王文颖
(51)Int.Cl.
A63F  13/525(2014.01)
A63F  13/60(2014.01)
G06T  17/00(2006.01)
G06T  19/20(2011.01)
(54)发明名称一种适用于ROS系统的Unity3D下视觉传感器的仿真方法(57)摘要本发明提供了一种适用于R O S 系统的Unity3D下视觉传感器的仿真方法,通过Unity3D 仿真的方式,实现一种虚拟环境中的视觉传感器,并与实际的ROS系统通信,为机器人仿真测试环境提供了关键技术方法。本发明通过添加可选择的图像噪声,模拟了真实相机会出现的噪点等干扰数据,提高了仿真相机的真实感。通过对RGB 图像数据处理与编码,本发明生成了Image格式的ROS传感器数据,包含完整的未处理的RGB图像数据,实现了Unity3D中RGB相机的RGB原始数据仿真。通过对RGB图像数据的压缩与编码,本发明生成了CompressedImage格式的ROS传感器数据,
实现了Unity3D中RGB相机的RGB压缩数据仿真。权利要求书2页  说明书7页  附图1页CN 114011066 A 2022.02.08
C N  114011066
A
1.一种适用于ROS系统的Unity3D下视觉传感器的仿真方法,其特征在于,用于获得RGB 图像或者深度图像,其中:
通过所述仿真方法获得RGB图像包括以下步骤:
步骤101:使用Windows平台∪nity3D三维游戏引擎中的Camera组件获取原始可视域;
步骤102:在原始可视域的基础上修改Camera组件的分辨率、水平视场角与垂直视场角、景深、刷新率以及图像质量,其中:
根据实际相机参数中的分辨率修改Camera组件的分辨率,分辨率表示为图像宽W×高H;
实际相机参数中的垂直视场角要求修改垂直视场角HFOV;
根据分辨率W×H、垂直视场角HFOV、水平视场角WFOV与相机焦距f的关系计算得到水平视场角WFOV,根据计算得到的水平视场角WFOV修改Camera组件的水平视场角WFOV;
根据实际相机参数中的最近景深与最远景深完成对景深的修改;
根据实际相机参数中的刷新率对应要求完成对刷新率的修改;
根据目标用户的带宽动态设定对应的图像压缩比例以调整图像质量;
步骤103:新建画布组件,根据步骤102确定的分辨率对画布组件进行截取,获取和分辨率一致的画布组件,按行按列将获取的原始可视域像素赋值给画布组件,并返回对应的画布组件,即为生成的RGB图像;
步骤104:对生成的RGB图像添加相应的噪声;
步骤105:根据Linux平台ROS系统通信格式,对上一步得到的RGB图像进行处理,得到处理后的图像数据包,其中,对RGB图像进行处理包括将RGB图像安装图像质量进行压缩后按对应发送格式编码,或者将原始大小的按对应发送格式编码;
步骤106:建立基于WebSocket的通信模块,连接到Linux平台ROS系统中的ROS‑Bridge 服务器,并发布类型为Image的ROS话题数据包或类型为Image的Compressedlmage的ROS话题数据包,其中,类型为Image的ROS话题数据包是基于未压缩的图像所得到的图像数据包;类型为CompressedImage的ROS话题数据包是基于经过压缩处理的图像所得到的图像数据包;
步骤107:根据设定的帧率,设置定时器,通过通信模块定时发布上一步得到的ROS话题数据包;
步骤108:Linux平台ROS系统利用ROS‑Bridge模块接收ROS话题数据包;
步骤109:通过订阅类型为Image的ROS话题数据包或类型为Image的Compressedlmage 的ROS话题数据包,在Rviz软件中呈现RGB图像数据;
深度图像模块流程步骤如下:
步骤201:使用Windows平台Unity3D三维游戏引擎中的Camera组件获取原始可视域;
步骤202:将原始可视域进行线性投影操作,获取深度可视域,其中,进行线性投影操作
表示为下式:
时,透视投影下的深度值z
view
式中,Far与Near分别为远近裁剪平面的距离,同时也是最远景深与最近景深的值;d为
对于单一深度图像而言,每个像素点在经过空间正交投影后的深度值,d=0.5×z
+0.5,
ndc 为NDC中顶点坐标Z轴分量的值;
z
ndc
步骤203:在深度可视域的基础上修改Camera组件的分辨率、水平视场角与垂直视场角、景深以及刷新率,其中:
根据实际相机参数中的分辨率修改Camera组件的分辨率,分辨率表示为图像宽W×高H;
实际相机参数中的垂直视场角要求修改垂直视场角HFOV;
根据分辨率W×H、垂直视场角HFOV、水平视场角WFOV与相机焦距f的关系计算得到水平视场角WFOV,根据计算得到的水平视场角WFOV修改Camera组件的水平视场角WFOV;
根据实际相机参数中的最近景深与最远景深完成对景深的修改;
根据实际相机参数中的刷新率对应要求完成对刷新率的修改;
步骤204:新建画布组件,根据步骤102确定的分辨率对画布组件进行截取,获取和分辨率一致的画布组件,按行按列将获取的深度可视域像素赋值给画布组件,并返回对应的画布组件,即为生成的深度图像;
步骤205:对生成的深度图像添加相应噪声;
步骤206:对上一步得到的深度图像进行空间转换计算,获取深度图像对应点云数据;
步骤207:根据ROS通信格式,对点云数据进行处理,得到处理的数据包;
步骤208:建立基于WebSocket的通信模块,连接到ROS系统中的ROS‑Bridge服务器,基于步骤207得到的数据包发布类型为PointCloud2的ROS话题数据包;
步骤209:根据帧率要求,设置定时器,定时发送ROS话题数据包,Linux平台ROS系统进行接收;
步骤210:Linux平台ROS系统中利用ROS‑Bridge模块接收ROS话题数据包;
步骤211:通过订阅类型为PointCloud2的ROS话题数据包,在Rviz软件中呈现深度点云数据。
2.如权利要求1所述的一种适用于ROS系统的Unity3D下视觉传感器的仿真方法,其特征在于,步骤102及步骤203中,分辨率W×H、垂直视场角HFOV、水平视场角WFOV与相机焦距f 的关系符合下式:
一种适用于ROS系统的Unity3D下视觉传感器的仿真方法
技术领域
[0001]本发明涉及一种适用于ROS系统的Unity3D下视觉传感器的仿真方法,为机器人仿真测试环境提供了关键技术方法。
背景技术
[0002]ROS作为一个开源机器人操作系统平台,凭借其活跃的生态社区,被广泛使用于服务机器人行业。在研究机器人的算法时,往往需要测试它在不同环境下的功能和性能表现。但是由于场地和资源限制,不太可能随时提供一个这样的任意变化的场所,所以一个虚拟的仿真环境是机器人算法评测的最好的解决办法。
[0003]申请号为201810021768.5的中国专利申请,公开了一种机器人跨平台通信协议和控制方法,该发明专利申请利用Unity3D、ROS‑bridge和ROS系统实现了一种机器人跨平台通信协议和控制方法。上述发明专利申请中申明的跨平台通信协议只是包含了机器人控制指令,内容不足、适用性差。
发明内容
[0004]本发明的目的是:通过Unity3D仿真的方式实现一种虚拟环境中的视觉传感器,并与实际的ROS系统通信。
[0005]为了达到上述目的,本发明的技术方案是提供了一种适用于ROS系统的Unity3D下视觉传感器的仿真方法,其特征在于,用于获得RGB图像或者深度图像,其中:
[0006]通过所述仿真方法获得RGB图像包括以下步骤:
[0007]步骤101:使用Windows平台Unity3D三维游戏引擎中的Camera组件获取原始可视域;
[0008]步骤102:在原始可视域的基础上修改Camera组件的分辨率、水平视场角与垂直视场角、景深、刷新率以及图像质量,其中:
[0009]根据实际相机参数中的分辨率修改Camera组件的分辨率,分辨率表示为图像宽W ×高H;
[0010]实际相机参数中的垂直视场角要求修改垂直视场角HFOV;
[0011]根据分辨率W×H、垂直视场角HFOV、水平视场角WFOV与相机焦距f的关系计算得到水平视场角WFOV,根据计算得到的水平视场角WFOV修改Camera组件的水平视场角WFOV;[0012]根据实际相机参数中的最近景深与最远景深完成对景深的修改;
[0013]根据实际相机参数中的刷新率对应要求完成对刷新率的修改;
[0014]根据目标用户的带宽动态设定对应的图像压缩比例以调整图像质量;
[0015]步骤103:新建画布组件,根据步骤102确定的分辨率对画布组件进行截取,获取和分辨率一致的画布组件,按行按列将获取的原始可视域像素赋值给画布组件,并返回对应的画布组件,即为生成的RGB图像;
[0016]步骤104:对生成的RGB图像添加相应的噪声;
[0017]步骤105:根据Linux平台ROS系统通信格式,对上一步得到的RGB图像进行处理,得
到处理后的图像数据包,其中,对RGB图像进行处理包括将RGB图像安装图像质量进行压缩后按对应发送格式编码,或者将原始大小的按对应发送格式编码;
[0018]步骤106:建立基于WebSocket的通信模块,连接到Linux平台ROS系统中的ROS‑Bridge服务器,并发布类型为Image的ROS话题数据包或类型为Image的CompressedImage的ROS话题数据包,其中,类型为Image的ROS话题数据包是基于未压缩的图像所得到的图像数据包;类型为CompressedImage的ROS话题数据包是基于经过压缩处理的图像所得到的图像数据包;
[0019]步骤107:根据设定的帧率,设置定时器,通过通信模块定时发布上一步得到的ROS 话题数据包;
[0020]步骤108:Linux平台ROS系统利用ROS‑Bridge模块接收ROS话题数据包;[0021]步骤109:通过
订阅类型为I m a g e的R O S话题数据包或类型为I m a g e的CompressedImage的ROS话题数据包,在Rviz软件中呈现RGB图像数据;
[0022]深度图像模块流程步骤如下:
[0023]步骤201:使用Windows平台Unity3D三维游戏引擎中的Camera组件获取原始可视域;
[0024]步骤202:将原始可视域进行线性投影操作,获取深度可视域,其中,进行线性投影操作时,透视投影下的深度值z
表示为下式:
vjew
[0025]
[0026]式中,Far与Near分别为远近裁剪平面的距离,同时也是最远景深与最近景深的
值;d为对于单一深度图像而言,每个像素点在经过空间正交投影后的深度值,d=0.5×z
ndc 为NDC中顶点坐标Z轴分量的值;
+0.5,z
ndc
[0027]步骤203:在深度可视域的基础上修改Camera组件的分辨率、水平视场角与垂直视场角、景深以及刷新率,其中:
[0028]根据实际相机参数中的分辨率修改Camera组件的分辨率,分辨率表示为图像宽W ×高H;
[0029]实际相机参数中的垂直视场角要求修改垂直视场角HFOV;
[0030]根据分辨率W×H、垂直视场角HFOV、水平视场角WFOV与相机焦距f的关系计算得到水平视场角WFOV,根据计算得到的水平视场角WFOV修改Camera组件的水平视场角WFOV;[0031]根据实际相机参数中的最近景深与最远景深完成对景深的修改;
[0032]根据实际相机参数中的刷新率对应要求完成对刷新率的修改;
[0033]步骤204:新建画布组件,根据步骤102确定的分辨率对画布组件进行截取,获取和分辨率一致的画布组件,按行按列将获取的深度可视域像素赋值给画布组件,并返回对应的画布组件,即为生成的深度图像;
[0034]步骤205:对生成的深度图像添加相应噪声;
[0035]步骤206:对上一步得到的深度图像进行空间转换计算,获取深度图像对应点云数据;

本文发布于:2024-09-20 15:32:31,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/416961.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   机器人   组件   方法   深度   视场
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议