如何使Robodk模拟相机更现实?

机器人视觉可能很难模拟。虚拟环境通常对视觉不够现实……但是Robodk的现实主义却得到了增强!

不久前,一个机器人用户问了一个问题……

“可以一次看到多个相机视图吗?”

一个简单的问题,您可能会想。答案也很简单:是的!您已经可以在Robodk中拥有多台摄像头。

但是,我们对用户有一个重要的问题:“你想实现什么?”

借助任何新的机器人编程项目,我们在开始之前定义要实现的目标始终很重要。尽管我们的客户想要更多的相机视图,但是当我们进一步深入研究时,事实证明他确实想要一些更广泛的功能……

此功能是许多机器人程序员也感兴趣的东西 - 使模拟摄像机更现实的能力。

正如我们的客户解释“我对相机上的光的控制特别感兴趣。如果我能够在多个摄像机之间拥有一个共同的光源,那对我来说非常有用。”

带有OpenGL着色器的现实摄像机仿真

问题:模拟对机器人视觉不够现实

机器人模拟可能非常强大。它允许您在在现实世界中尝试之前从机器人程序中淘汰纠结,节省您的时间并改善整个编程过程

但是,机器人愿景有时可能是一个挑战。如果要正确测试计算机视觉算法,则需要视觉上逼真的模拟。

在此之前,Robodk仅为其相机模拟提供了一种非常简单的照明形式。这对于对您的视觉算法进行了粗略测试非常好,但是对于更苛刻的测试来说还不够现实。

有充分的理由。

通常,离线编程不需要高级的表面建模或视觉效果。这样的美学功能实际上可以使OLP软件降低有用,正如我们之前讨论的

对于大多数机器人应用,精美的视觉效果只是对仿真功能的不必要的注意力。

…在机器人视觉方面期望。

解决方案:可自定义的着色器

我们需要找到一个解决方案,该解决方案可以保留Robodk的所有高性能机器人编程,同时只有在需要测试计算机视觉算法时才允许用户提高视觉现实主义的水平。

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

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

中央处理器
中央处理单元(CPU)

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

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

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

新的可自定义着色器在Robodk中如何工作

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

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

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

当然,上面的示例非常基本 - 它只是增加了所有像素的绿色值。着色器的真正力量是当我们开始添加稍微高级算法时(例如用于计算照明的算法)时出现的!

有关着色器照明的工作方式的不错的视频说明,查看此视频

着色器类型

OpenGL中有几种类型的着色器。每个人都在渲染“管道”的图形中执行不同的函数(这是指计算以显示3D模型的算法序列)。但是,您不需要了解所有这些用于机器人视觉模拟。

有两个着色器对于机器人视觉非常重要:

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

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

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

如何开始使用Robodk的可自定义着色器

可以通过Python API中的“ CAM2D_ADD”函数访问此新功能。它有两个新参数,您可以通过:

  • 顶点着色器 - 这是指向GLSL顶点着色器文件的链接。
  • 片段着色器 - 这是指向GLSL片段着色器文件的链接。

在操作中看到这种新功能的最佳方法是尝试最新版本的Robodk中包含的演示。

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

  1. 亚搏手机版官方登录网站下载并安装最新版本的Robodk如果您还没有(版本4.0或更高版本)
  2. 在安装Robodk的任何地方,打开示例项目10.a,称为“示例-10.a-shader-customized-light.rdk”。
  3. 运行名为“相机设置”带有着色器设置的两个相机窗口。
  4. 运行“ WELD3”程序以查看仿真行动。
  5. 您可以通过打开“ Shader_fragment.glsl”和“ Shader_vertex.glsl”的文件来编辑着色器代码。

如果您需要用于编程OpenGL着色器的底漆,我推荐本教程。如果您被卡住了,您可以发布一个问题Robodk论坛

在Robodk中,您可以实现更现实的模拟相机?在下面的评论中告诉我们或加入讨论LinkedIn,,,,推特,,,,Facebook,Instagram或INRobodk论坛

关于亚历克斯·欧文·希尔

亚历克斯·欧文·希尔(Alex Owen-Hill)是一位自由作家和公众演讲者,他在博客上介绍了许多主题,包括科学,createclarifyarticulate.com上的演讲技巧,讲故事,当然还有机器人技术。他与CERN合作,从马德里大学获得了马德里大学的远程幼儿园博士学位。作为恢复学术的学者,他通过博客关于工业机器人技术来保持坚定的脚步。

查看Alex Owen-Hill的所有帖子

一评论对“如何使Robodk模拟相机更现实?”

发表评论

您的电子邮件地址不会被公开。