如何让RoboDK模拟摄像机更真实?

机器人的视觉很难模拟。虚拟环境通常不够逼真,但RoboDK的逼真度得到了提升!

不久前,一位RoboDK用户问了我们一个问题…

“有可能同时拥有多个摄像头视图吗?”

你可能会认为这是一个简单的问题。答案也很简单:是的!你已经可以在RoboDK中拥有多个摄像头。

但是,我们有一个重要的问题要问用户:“你想要达到什么目的?”

在任何一个新的机器人编程项目中,在开始之前定义我们想要实现的目标总是很重要的。虽然我们的客户想要更多的摄像头视图,但当我们进一步深入研究时,我们发现他真的想要一些更广泛的功能……

这个功能是许多机器人程序员也感兴趣的——使模拟相机更真实的能力。

正如我们的客户所解释的“我对相机光线的控制特别感兴趣。如果我能在多个相机之间有一个共同的光源,这对我来说将是非常有用的。”

用OpenGL Shaders进行逼真的相机模拟

问题:对于机器人视觉来说,模拟不够逼真

机器人模拟可以非常强大。它可以让你在把机器人应用到现实世界之前,先解决它的问题,节省你的时间,改善你的整个编程过程

然而,机器人的视觉有时是一个挑战。如果你想要正确地测试你的计算机视觉算法,你需要一个视觉逼真的模拟。

在此之前,RoboDK只为其相机模拟提供非常简单的照明形式。这对于视觉算法的粗略测试来说非常好,但对于要求更高的测试来说不够现实。

这是有原因的。

一般来说,离线编程不需要2022世界杯8强赛时间高级的表面建模或视觉效果。这种美学特征实际上会让OLP软件变得不那么有用,正如我们之前讨论过的

对于大多数机器人应用程序来说,花哨的视觉效果只是对模拟功能的不必要干扰……

当涉及到机器人的视觉时。

解决方案:可定制的着色器

我们需要找到一种解决方案,既能保留RoboDK所有的高性能机器人编程,又能让用户在需要测试计算机视觉算法时提高视觉真实感水平。

解决方案?可定制的着色器!

着色器是非常强大的工具操纵3D模拟的视觉效果。它们被广泛应用于3D游戏和动画电影的创作中。

CPU
中央处理器(CPU)

以下是引入可定制着色器是一个完美解决方案的一些原因:

  • 他们使用图形处理器-着色器在计算机的图形处理器(GPU)上运行。这意味着它们不会干扰RoboDK为计算机器人轨迹所进行的计算。
  • 它们重量轻,速度快RoboDK采用高性能图形引擎OpenGL。为OpenGL编写的简单着色器对图形处理时间的影响很小,在图形处理器上并行执行。
  • 它们很容易编码用于创建OpenGL着色器的GLSL编程语言非常容易学习。有一些很好的教程可以帮助你开始。

在RoboDK的最新版本中,我们引入了对可定制着色器的支持。

新的可定制着色器如何在RoboDK中工作

在基本层面上,着色器的工作方式如下:

  1. 有一个输入:例如一个像素的RGB颜色值。
  2. shader算法在该输入上执行:例如,在像素的绿色值上添加一个0.2的值。
  3. 着色器输出结果值:例如,像素现在比以前绿了0.2个单位。

着色器在GPU上执行。因此,所有的输入(例如图像中的所有像素)都以相同的方式同时进行操作。这与CPU计算不同,后者会在一个循环中单独运行每个像素。

当然,上面的例子是非常基本的——它只是增加了所有像素的绿色值。当我们开始添加稍微更高级的算法时,着色器的真正力量就来了,比如那些用来计算照明的算法!

要想观看着色器照明工作原理的视频,看看这个视频

类型的材质

OpenGL中有几种类型的着色器。每一个都在图形渲染“管道”中执行不同的功能(这意味着用于显示3D模型的算法序列)。然而,对于机器人视觉模拟,你不需要了解所有这些。

对于机器人视觉来说,有两种着色器非常重要:

  • 顶点着色器,这将在RoboDK中的3D模型中的每个顶点(即3D点)上执行。它首先执行,并负责相机的视角。
  • 片段着色器-这将在输出图像的每个像素上执行。它是最后执行的,是实现更真实的照明的关键。

RoboDK的新功能允许你加载这些着色器中的一个。您可以用GLSL编程语言编写着色器,并使用RoboDK中的Python脚本加载它们。

您将能够通过使用相机窗口看到着色器的效果,该窗口显示模拟相机看到的图片。RoboDK的主窗口不会显示照明效果,这意味着计算不会干扰模拟。

如何开始使用RoboDK的可定制着色器

这个新功能可以通过Python API中的“Cam2D_Add”函数访问。它有两个你可以传递的新参数:

  • 顶点着色器-这是一个链接到GLSL顶点着色器文件。
  • 片段着色器——这是一个链接到GLSL片段着色器文件。

了解这项新功能的最佳方法是尝试RoboDK最新版本中包含的演示。

您可以通过以下步骤访问它:

  1. 2022世界杯国家队名单下载并安装最新版本的RoboDK如果还没有(4.0或更高版本)
  2. 打开示例项目10。一个名为“的例子- 10. -材质-定制-光。从安装RoboDK的Library目录。
  3. 运行名为“相机的设置打开两个设置了着色器的相机窗口。
  4. 运行“Weld3”程序来查看运行中的模拟。
  5. 你可以通过打开shader_fragment文件来编辑着色器代码。glsl”和“shader_vertex。在库/宏/相机-着色器目录中。

如果你需要OpenGL着色器编程的入门知识,我推荐这个教程。如果你被卡住了,你可以在上面提问RoboDK论坛

在RoboDK中使用更逼真的模拟摄像机可以实现什么?请在下面的评论中告诉我们,或者加入我们的讨论LinkedIn推特Facebook,Instagram或在RoboDK论坛

关于亚历克斯Owen-Hill

亚历克斯·欧文-希尔是一名自由撰稿人和公共演说家,他的博客涉及广泛的话题,包括科学、CreateClarifyArticulate.com的演讲技巧、讲故事,当然还有机器人。他在马德里理工大学(university versidad Politecnica de Madrid)完成了远程机器人学博士学位,这是与CERN合作的PURESAFE项目的一部分。作为一名正在恢复的学者,他通过撰写关于工业机器人的博客,在机器人世界站稳了脚跟。世界杯2022美洲预选赛直播

查看Alex Owen-Hill的所有帖子

关于“如何让RoboDK模拟摄像机更真实?”

留下一个回复

您的电邮地址将不会公布。