CN114011066A - 一种适用于ROS系统的Unity3D下视觉传感器的仿真方法 - Google Patents

一种适用于ROS系统的Unity3D下视觉传感器的仿真方法 Download PDF

Info

Publication number
CN114011066A
CN114011066A CN202111186811.1A CN202111186811A CN114011066A CN 114011066 A CN114011066 A CN 114011066A CN 202111186811 A CN202111186811 A CN 202111186811A CN 114011066 A CN114011066 A CN 114011066A
Authority
CN
China
Prior art keywords
image
depth
ros
resolution
camera
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111186811.1A
Other languages
English (en)
Inventor
沈文婷
王赓
郑军奇
蒋李康
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Shanghai Robot Industrial Technology Research Institute Co Ltd
Original Assignee
Shanghai Jiaotong University
Shanghai Robot Industrial Technology Research Institute Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University, Shanghai Robot Industrial Technology Research Institute Co Ltd filed Critical Shanghai Jiaotong University
Priority to CN202111186811.1A priority Critical patent/CN114011066A/zh
Publication of CN114011066A publication Critical patent/CN114011066A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • A63F13/525Changing parameters of virtual cameras
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/60Generating or modifying game content before or while executing the game program, e.g. authoring tools specially adapted for game development or game-integrated level editor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Architecture (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Image Processing (AREA)

Abstract

本发明提供了一种适用于ROS系统的Unity3D下视觉传感器的仿真方法,通过Unity3D仿真的方式,实现一种虚拟环境中的视觉传感器,并与实际的ROS系统通信,为机器人仿真测试环境提供了关键技术方法。本发明通过添加可选择的图像噪声,模拟了真实相机会出现的噪点等干扰数据,提高了仿真相机的真实感。通过对RGB图像数据处理与编码,本发明生成了Image格式的ROS传感器数据,包含完整的未处理的RGB图像数据,实现了Unity3D中RGB相机的RGB原始数据仿真。通过对RGB图像数据的压缩与编码,本发明生成了CompressedImage格式的ROS传感器数据,实现了Unity3D中RGB相机的RGB压缩数据仿真。

Description

一种适用于ROS系统的Unity3D下视觉传感器的仿真方法
技术领域
本发明涉及一种适用于ROS系统的Unity3D下视觉传感器的仿真方法,为机器人仿真测试环境提供了关键技术方法。
背景技术
ROS作为一个开源机器人操作系统平台,凭借其活跃的生态社区,被广泛使用于服务机器人行业。在研究机器人的算法时,往往需要测试它在不同环境下的功能和性能表现。但是由于场地和资源限制,不太可能随时提供一个这样的任意变化的场所,所以一个虚拟的仿真环境是机器人算法评测的最好的解决办法。
申请号为201810021768.5的中国专利申请,公开了一种机器人跨平台通信协议和控制方法,该发明专利申请利用Unity3D、ROS-bridge和ROS系统实现了一种机器人跨平台通信协议和控制方法。上述发明专利申请中申明的跨平台通信协议只是包含了机器人控制指令,内容不足、适用性差。
发明内容
本发明的目的是:通过Unity3D仿真的方式实现一种虚拟环境中的视觉传感器,并与实际的ROS系统通信。
为了达到上述目的,本发明的技术方案是提供了一种适用于ROS系统的Unity3D下视觉传感器的仿真方法,其特征在于,用于获得RGB图像或者深度图像,其中:
通过所述仿真方法获得RGB图像包括以下步骤:
步骤101:使用Windows平台Unity3D三维游戏引擎中的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的CompressedImage的ROS话题数据包,其中,类型为Image的ROS话题数据包是基于未压缩的图像所得到的图像数据包;类型为CompressedImage的ROS话题数据包是基于经过压缩处理的图像所得到的图像数据包;
步骤107:根据设定的帧率,设置定时器,通过通信模块定时发布上一步得到的ROS话题数据包;
步骤108:Linux平台ROS系统利用ROS-Bridge模块接收ROS话题数据包;
步骤109:通过订阅类型为Image的ROS话题数据包或类型为Image的CompressedImage的ROS话题数据包,在Rviz软件中呈现RGB图像数据;
深度图像模块流程步骤如下:
步骤201:使用Windows平台Unity3D三维游戏引擎中的Camera组件获取原始可视域;
步骤202:将原始可视域进行线性投影操作,获取深度可视域,其中,进行线性投影操作时,透视投影下的深度值zvjew表示为下式:
Figure BDA0003299592780000021
式中,Far与Near分别为远近裁剪平面的距离,同时也是最远景深与最近景深的值;d为对于单一深度图像而言,每个像素点在经过空间正交投影后的深度值,d=0.5×zndc+0.5,zndc为NDC中顶点坐标Z轴分量的值;
步骤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软件中呈现深度点云数据。
优选的,步骤102及步骤203中,分辨率W×H、垂直视场角HFOV、水平视场角WFOV与相机焦距f的关系符合下式:
Figure BDA0003299592780000041
Figure BDA0003299592780000042
与现有技术相比,本发明具有如下优点:
1)通过添加可选择的图像噪声,模拟了真实相机会出现的噪点等干扰数据,提高了仿真相机的真实感。
2)通过对RGB图像数据处理与编码,生成了Image格式的ROS传感器数据,包含完整的未处理的RGB图像数据,实现了Unity3D中RGB相机的RGB原始数据仿真。
3)通过对RGB图像数据的压缩与编码,生成了CompressedImage格式的ROS传感器数据,通过C#脚本实现了可动态修改并设置的图像压缩率,实现了Unity3D中RGB相机的RGB压缩数据仿真。
4)通过对深度图像的空间转换计算,在Unity3D中实现了相机深度图像到相机点云数据的变换。
5)通过对点云数据的处理与编码,生成了PointCloud2格式的ROS传感器数据,包含相机视角内的全部点云信息,实现了Unity3D中深度相机的点云数据仿真。
6)通过基于webSocket的C#通信代码,实现了Windows下Unity3D与Linux中ROS-Bridge服务器的互联互通,并以此解决了非ROS环境的Unity3D三维仿真环境与ROS环境的数据交互问题。
附图说明
图1为深度相机流程;
图2为RGB相机流程。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
本发明提供的一种适用于ROS系统的Unity3D下视觉传感器的仿真方法,通过Unity3D仿真的方式,实现一种虚拟环境中的视觉传感器,并与实际的ROS系统通信,为机器人仿真测试环境提供了关键技术方法。
本发明适用于ROS系统的Unity3D下视觉传感器的仿真方法主要由Windows平台Unity3D三维游戏引擎(下文简称“Unity”)和Linux平台ROS系统(下文简称“ROS系统”)两个部分构成,按照功能可以分为两个模块:RGB图像模块和深度图像模块。
RGB图像模块流程步骤如下:
步骤1:使用Unity中Camera组件获取原始可视域。
步骤2:在原始可视域的基础上修改Camera组件自身参数,具体修改了分辨率、水平视场角与垂直视场角、景深、刷新率、图像质量这些参数。
对于分辨率,主要需要满足实际相机参数中的分辨率要求,根据实际相机参数中的分辨率在指定输入框中输入对应的分辨率尺寸(图像宽W×高H),即可完成对仿真RGB相机分辨率的修改。修改原理是每次修改分辨率时,新建一个符合分辨率尺寸(W×H)的RenderTexture,再将原始的Camera的targetTexture指定为这个RenderTexture,完成覆盖。
对于垂直视场角HFOV,主要需要满足实际相机参数中的垂直视场角要求,根据实际相机参数中的垂直视场角在指定输入框中输入对应的垂直视场角,即可完成对仿真RGB相机垂直视场角的修改。修改原理是修改原始Camera组件中的fieldOfView,并返回到仿真RGB相机中,完成垂直视场角的修改。
对于水平视场角,主要需要满足相机小孔成像原理。在相机分辨率、垂直视场角确定的情况下,根据相机分辨率(W×H)、垂直视场角HFOV、水平视场角WFOV、相机焦距f四者关系计算水平视场角WFOV,计算公式如下:
Figure BDA0003299592780000051
Figure BDA0003299592780000052
对于景深,分为最近景深与最远景深两部分,主要需要满足实际相机参数中的景深对应要求,根据实际相机参数中的景深在指定输入框中分别输入对应的最近景深与最远景深,即可完成对仿真RGB相机景深参数的修改。修改原理是修改原始Camera组件中的nearClipPlane与farClipPlane,并返回给仿真RGB相机对应参数。
对于刷新率,主要需要满足实际相机参数中的刷新率对应要求,根据实际相机参数中的刷新率在指定输入框中输入对应的刷新率,即可完成对仿真RGB相机刷新率的修改。修改原理是设定图像取帧间隔为对应刷新率要求,按照该取帧间隔,获取对应的图像,即可完成指定刷新率的取图像要求。
对于图像质量,主要需要满足企业算法的实际要求,根据带宽动态调整图像质量。在企业要求质量高且带宽满足要求的情况下调高图像质量,在带宽低的情况下降低图像质量。修改方法是在指定输入框中输入对应的压缩比例。修改原理是将相机图像按照指定的压缩比例进行压缩,再发送给对应的企业。
步骤3:建立可自由调节长宽比的画布组件对原始可视域进行二次修改,并获取彩色图像。修改原理是新建一个足够大的画布组件,按照指定的相机分辨率参数要求进行截取,获取和RGB相机分辨率一致的画布组件。按行按列将RGB相机获取的原始可视域像素赋值给画布组件,并返回对应的画布组件,即为生成的RGB图像。
步骤4:为了还原真实感,对RGB图像添加包括椒盐噪声、高斯噪声在内的多种可选噪声。
步骤5:根据ROS通信格式,对添加噪声后的RGB图像进行处理(压缩/未压缩、按对应发送格式编码),得到处理后的图像数据包。
步骤6:建立基于WebSocket的通信模块,连接到ROS系统中的ROS-Bridge服务器,并发布类型为Image和CompressedImage的ROS话题数据包。类型为Image的ROS话题是基于未压缩的图像所得到的图像数据包。类型为CompressedImage的ROS话题是基于经过压缩处理的图像所得到的图像数据包。
步骤7:根据设定的帧率,设置定时器,通过通信模块定时发布ROS话题数据包。
步骤8:ROS系统中利用ROS-Bridge模块接收ROS话题数据包。
步骤9:通过订阅RGB图像模块的ROS话题(Image和CompressedImage类型),在Rviz软件中呈现RGB图像数据。两种类型的图像数据可以同时接收,也可以选择一个接收,其中,Image是原始图像,不存在像素失真;CompressedImage是压缩为jpg格式后的压缩图像,存在一定程度上的失真,失真程度和Unity3D脚本中选择的压缩度有关系。
深度图像模块流程步骤如下:
步骤1:使用Unity中Camera组件获取原始可视域。
步骤2:根据Shader中渲染原理,将原始可视域进行线性投影操作,获取深度可视域,具体计算方法如下:
对于单一深度图像而言,每个像素点在经过空间正交投影后,其深度值对应了NDC中顶点坐标Z轴分量的值。因为在Unity中NDC空间值为[-1,1],所以深度值d(即为深度纹理中的像素值)需要经过下式转换:
d=0.5×zndc+0.5
式中,zndc对应了NDC坐标中顶点坐标Z分量的值。此时,获取的为单一像素顶点的深度值。
而在Unity中,透视投影是非线性的。对于透视投影进行深度计算会呈现近大远小的效果,如果需要获取线性的深度值,需要对透视投影中的深度值进行进一步的计算,才能得到在透视投影下的深度值zview
在使用透视投影的裁剪矩阵Pclip对视角空间下一个像素顶点进行转换后,裁剪空间下顶点的zclip和wclip分别为:
Figure BDA0003299592780000071
wclip=-zview
其中,Far与Near分别为远近裁剪平面的距离,同时也是最远景深与最近景深的值。之后可以通过齐次除法得到NDC上分量。
Figure BDA0003299592780000072
对于深度纹理深度值,已知与NDC的关系为:
d=0.5×zndc+0.5
所以可得出:
Figure BDA0003299592780000073
在Unity中,Camera组件正向对应的Z分量的值为负值,为了使得到的深度值为正,需要对上面结果取反,则有:
Figure BDA0003299592780000074
此时取值范围为视锥体深度范围[Near,Far]。后续需要对取值范围进行归一化处理,即使范围为[0,1],0表示该点与相机位于同一位置,1表示该点位于视锥体远裁剪平面Far上。所以上述结果需要进一步进行结算:
Figure BDA0003299592780000081
经过以上步骤,即可得到深度可视域。
步骤3:在深度可视域的基础上修改Camera自身参数,修改了分辨率、水平视场角与垂直视场角、景深、刷新率这些参数。
对于分辨率,主要需要满足实际相机参数中的分辨率要求,根据实际相机参数中的分辨率在指定输入框中输入对应的分辨率尺寸(图像宽W×高H),即可完成对仿真深度相机分辨率的修改。修改原理是每次修改分辨率时,新建一个符合分辨率尺寸(W×H)的RenderTexture,再将原始的Camera的targetTexture指定为这个RenderTexture,完成覆盖。
对于垂直视场角,主要需要满足实际相机参数中的垂直视场角要求,根据实际相机参数中的垂直视场角在指定输入框中输入对应的垂直视场角,即可完成对仿真深度相机垂直视场角的修改。修改原理是修改原始Camera组件中的fieldOfView,并返回到仿真RGB相机中,完成垂直视场角的修改。
对于水平视场角,主要需要满足相机小孔成像原理。在相机分辨率、垂直视场角确定的情况下,根据相机分辨率W×H、垂直视场角HFOV、水平视场角WFOV、相机焦距f四者关系计算水平视场角WFOV,计算公式如下:
Figure BDA0003299592780000082
Figure BDA0003299592780000083
对于景深,分为最近景深与最远景深两部分。主要需要满足实际相机参数中的景深对应要求,根据实际相机参数中的景深在指定输入框中分别输入对应的最近景深与最远景深,即可完成对仿真深度相机景深参数的修改。修改原理是修改原始Camera组件中的nearClipPlane与farClipPlane,并返回给仿真深度相机对应参数。
对于刷新率,主要需要满足实际相机参数中的刷新率对应要求,根据实际相机参数中的刷新率在指定输入框中输入对应的刷新率,即可完成对仿真深度相机刷新率的修改。修改原理是设定图像取帧间隔为对应刷新率要求,按照该取帧间隔,获取对应的图像,即可完成指定刷新率的取图像要求。
步骤4:建立可自由调节长宽比的画布组件对深度可视域进行二次修改,并获取深度图像。修改原理是新建一个足够大的画布组件,按照指定的相机分辨率参数要求进行截取,获取和深度相机分辨率一致的画布组件。按行按列将深度相机获取的深度可视域像素赋值给画布组件,并返回对应的画布组件,即为生成的深度图像。
步骤5:为了还原真实感,对深度图像添加包括椒盐噪声、高斯噪声在内的多种可选噪声。
步骤6:对深度图像进行空间转换计算,获取深度图像对应点云数据。本实施例提供了两种方法:
方式1:利用Unity3D函数Vector3 ScreenToWorldPoint(Vector3 position)将相机深度图像中的每一点提取出来,通过该函数计算得到点对应的世界坐标,然后将所有点的数据,也即点云数据打包到PointCloud2中。
方式2:利用上述相机参数,在Unity3D中编写CameraInfo格式数据和深度图像数据(该数据也分为Image和ComressedImage两种,包含相机的深度图像),然后通过步骤8所述的通信模块,发送到ROS系统中。在ROS系统中,接收到CameraInfo相机参数和深度图像数据,计算出深度图像上每一点对应XYZ点云坐标,打包所有点云数据,生成并发布PointCloud2的ROS话题。后续接步骤9。
参考针孔成像原理,方法2的计算公式与方法如下:
通过CameraInfo相机参数,获取并生成针孔相机模型PinholeCameraModel从而获得相机内参矩阵的图像中心的横纵坐标(centerx,centery),获得内参矩阵的f/dx(centerx)和f/dy(centery)。对于深度图像上的每一个点,都有的坐标(u,,epth),其中u表示点在图像中的高度值,v表示点在图像中的宽度值,depth表示点在图像中的深度值(范围在0-65535,float格式数据)。由此可以计算出该点对应的XYZ点云坐标,坐标需要做旋转调整:
Figure BDA0003299592780000091
X=-(u-centerx)×depth×centerx
Y=depth
Z=-(v-centery)×depth×centery
步骤7:根据ROS通信格式,对点云进行处理(按对应发送格式编码),得到处理的数据包。
步骤8:建立基于WebSocket的通信模块,连接到ROS系统中的ROS-Bridge服务器,并发布类型为PointCloud2的ROS话题数据包。
步骤9:根据帧率要求,设置定时器,定时发送ROS话题数据包,ROS系统进行接收。
步骤10:ROS系统中利用ROS-Bridge模块接收ROS话题数据包。
步骤11:通过订阅深度图像模块的点云话题(PointCloud2类型),在Rviz软件中呈现深度点云数据。

Claims (2)

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:将原始可视域进行线性投影操作,获取深度可视域,其中,进行线性投影操作时,透视投影下的深度值zview表示为下式:
Figure FDA0003299592770000021
式中,Far与Near分别为远近裁剪平面的距离,同时也是最远景深与最近景深的值;d为对于单一深度图像而言,每个像素点在经过空间正交投影后的深度值,d=0.5×zndc+0.5,zndc为NDC中顶点坐标Z轴分量的值;
步骤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的关系符合下式:
Figure FDA0003299592770000031
Figure FDA0003299592770000032
CN202111186811.1A 2021-10-12 2021-10-12 一种适用于ROS系统的Unity3D下视觉传感器的仿真方法 Pending CN114011066A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111186811.1A CN114011066A (zh) 2021-10-12 2021-10-12 一种适用于ROS系统的Unity3D下视觉传感器的仿真方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111186811.1A CN114011066A (zh) 2021-10-12 2021-10-12 一种适用于ROS系统的Unity3D下视觉传感器的仿真方法

Publications (1)

Publication Number Publication Date
CN114011066A true CN114011066A (zh) 2022-02-08

Family

ID=80055677

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111186811.1A Pending CN114011066A (zh) 2021-10-12 2021-10-12 一种适用于ROS系统的Unity3D下视觉传感器的仿真方法

Country Status (1)

Country Link
CN (1) CN114011066A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024078458A1 (zh) * 2022-10-10 2024-04-18 广州小鹏汽车科技有限公司 车载系统用户界面的三维控件实现方法、设备及存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024078458A1 (zh) * 2022-10-10 2024-04-18 广州小鹏汽车科技有限公司 车载系统用户界面的三维控件实现方法、设备及存储介质

Similar Documents

Publication Publication Date Title
CN109685891B (zh) 一种基于深度图像的建筑物三维建模与虚拟场景生成方法及系统
JP7007348B2 (ja) 画像処理装置
KR101145260B1 (ko) 3d 객체 모델에 텍스쳐를 매핑하는 방법 및 장치
WO2012037863A1 (zh) 三维模型数据化简、渐进传输方法及装置
CN111047506B (zh) 环境图生成和孔填充
US10964089B1 (en) Method and apparatus for coding view-dependent texture attributes of points in a 3D point cloud
TW201610915A (zh) 用以轉換二維影像為三維模型的影像處理方法
US11276150B2 (en) Environment map generation and hole filling
CN110568923A (zh) 基于Unity3D的虚拟现实交互方法、装置、设备及存储介质
CN113436559B (zh) 一种沙盘动态景观实时显示系统及显示方法
CN109358430A (zh) 一种基于二维led风扇屏的实时三维显示方法
JP6521352B2 (ja) 情報提示システム及び端末
CN114011066A (zh) 一种适用于ROS系统的Unity3D下视觉传感器的仿真方法
US7529418B2 (en) Geometry and view assisted transmission of graphics image streams
CN116977523B (zh) 一种step格式在web端的渲染方法
Lee et al. Real time 3D avatar for interactive mixed reality
JP4688316B2 (ja) シミュレーション装置とシミュレーション方法、及び映像生成装置と映像生成方法
CN115908755A (zh) 一种ar投影方法、系统及ar投影仪
CN116074485A (zh) 一种基于增强现实的通话方法及终端
CN116075860A (zh) 信息处理装置、信息处理方法、视频分发方法和信息处理系统
US8531453B2 (en) Augmenting virtual worlds simulation with enhanced assets
CN111354064B (zh) 一种纹理图像的生成方法和装置
US20240046546A1 (en) Method and system for creating virtual spaces
CN111899590B (zh) 一种仿真操作培训过程的混合现实观摩方法
CN114842127A (zh) 地形渲染方法及装置、电子设备、介质及产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination