机器人的视觉很难模拟。虚拟环境通常不够逼真,但RoboDK的真实感刚刚得到了提升!
不久前,一个RoboDK用户问了我们一个问题…
“有可能同时拥有多个摄像头视图吗?”
你可能会想,这是个简单的问题。答案也很简单:是的!你已经可以在RoboDK中拥有多个摄像头。
但是,我们有一个重要的问题要问用户:“你想达到什么目的?”
对于任何新的机器人编程项目,在开始之前定义想要实现的目标总是很重要的。虽然我们的客户想要更多的摄像头视图,但当我们进一步研究时,发现他真的想要一些更广泛的功能……
这个功能也是许多机器人程序员感兴趣的——使模拟相机更逼真的能力。
我们的客户解释说“我对相机光线的控制特别感兴趣。如果我能在多个相机之间使用一个共同的光源,那对我来说就非常有用了。”
问题:对于机器人视觉来说,模拟不够逼真
机器人仿真是非常强大的。它可以让你在现实世界中尝试机器人程序之前解决问题,节省您的时间,并改善您的整个编程过程.
然而,机器人视觉有时是一个挑战。如果你想正确地测试你的计算机视觉算法,你需要一个视觉逼真的模拟。
在此之前,RoboDK仅为其相机模拟提供了一种非常简单的照明形式。这对于视觉算法的粗略测试来说非常好,但对于要求更高的测试来说还不够现实。
这是有原因的。
一般来说,离线编程不需要raybet雷竞app下载高级的表面建模或视觉效果。这种美学特征实际上会让OLP软件变得不那么有用,正如我们之前讨论过的.
对于大多数机器人应用来说,花哨的视觉效果只会不必要地分散模拟功能的注意力……
当谈到机器人的视觉时。
解决方案:可定制的着色器
我们需要找到一种解决方案,可以保留RoboDK的所有高性能机器人编程,同时允许用户仅在需要测试计算机视觉算法时提高视觉真实感水平。
解决方案?可定制的着色器!
着色器是一个极其强大的工具用于操作3D模拟的视觉效果。它们被广泛用于3D游戏和动画电影的创作。
以下是引入可定制着色器是一个完美解决方案的一些原因:
- 他们使用图形处理器-着色器在计算机的图形处理器(GPU)上运行。这意味着它们不会干扰RoboDK为计算机器人轨迹而进行的计算。
- 它们重量轻,速度快RoboDK采用高性能图形引擎OpenGL。为OpenGL编写的简单着色器对图形处理时间的影响很小,并且在图形处理器上并行执行。
- 它们很容易编码你用来创建OpenGL着色器的GLSL编程语言非常容易学习。有一些很好的教程可以帮助你开始。
在RoboDK的最新版本中,我们引入了对可定制着色器的支持。
新的可定制着色器如何在RoboDK中工作
在基本层面上,着色器的工作方式如下:
- 有一个输入:例如,一个像素的RGB颜色值。
- 着色器算法在输入上执行:例如,在像素的绿色值上添加一个0.2的值。
- 着色器输出结果值:例如,像素现在比以前绿了0.2个单位。
着色器是在GPU上执行的。因此,所有的输入(例如,图像中的所有像素)都以相同的方式同时进行操作。这与CPU计算不同,CPU计算将在循环中单独运行每个像素。
当然,上面的例子是非常基本的-它只是增加了所有像素的绿色值。着色器的真正力量来自于我们开始添加稍微更高级的算法,比如那些用于计算光照的算法!
要了解着色器照明工作原理的视频,看看这个视频.
着色器的类型
在OpenGL中有几种类型的着色器可用。每一个都在图形渲染“管道”中执行不同的功能(这意味着为显示3D模型而计算的算法序列)。然而,对于机器人视觉仿真,您不需要了解所有这些。
有两个着色器对机器人视觉非常重要:
- 顶点着色器-这是在RoboDK的3D模型中的每个顶点(即3D点)上执行的。它首先执行,并负责相机的视角。
- 碎片着色器-这是在输出图像的每个像素上执行的。它是最后执行的,是实现更真实的照明的关键。
RoboDK的新功能允许你加载这些着色器中的每一个。你用GLSL编程语言编写着色器,并在RoboDK中使用Python脚本加载它们。
您将能够通过使用相机窗口看到着色器的效果,该窗口显示模拟相机看到的图片。RoboDK的主窗口不会显示灯光效果,这意味着计算不会干扰模拟。
如何开始与RoboDK的自定义着色器
这个新功能可以通过Python API中的“Cam2D_Add”函数访问。它有两个你可以传递的新参数:
- 顶点着色器-这是一个到GLSL顶点着色器文件的链接。
- 片段着色器-这是一个指向GLSL片段着色器文件的链接。
要想看到这个新功能的实际效果,最好的方法是尝试最新版本RoboDK中包含的演示。
您可以通过以下步骤访问它:
- 雷电竞app下载安卓下载并安装最新版本的RoboDK如果还没有(4.0或更高版本)
- 打开示例项目10。Example-10.a-Shader-Customized-Light。robdk安装所在的库目录。
- 运行名为“相机的设置打开两个带有着色器设置的相机窗口。
- 运行“Weld3”程序来查看实际的模拟。
- 你可以通过打开shader_fragment文件来编辑着色器代码。Glsl”和“shader_vertex。在Library/Macros/Camera-Shaders目录下。
如果你需要OpenGL着色器编程的入门知识,我推荐这个教程。如果你被卡住了,你可以在上面提问RoboDK论坛!
在RoboDK中使用更逼真的模拟摄像机可以实现什么?请在下面的评论中告诉我们,或者加入讨论LinkedIn,推特,Facebook,Instagram或在RoboDK论坛.
伟大的工作。真的很神奇。问候:最佳相机中心