RoboDK论坛
输出程序中的可变参考系和目标-打印版本

+- RoboDK论坛(//www.w5838.com/forum
+——论坛:RoboDK (EN) (//www.w5838.com/forum/Forum-RoboDK-EN
+——论坛:关于RoboDK的一般性问题(//www.w5838.com/forum/Forum-General-questions-about-RoboDK
+——线程:输出程序中的变量参考框架和目标(/ Thread-Variable-reference-frames-and-targets-in-output-programs



输出程序中的可变参考系和目标-Maarten-11-10-2021

嗨,这是我之前两个问题的后续(在这里而且在这里),但如果我不能解决这个问题,它将阻碍RoboDK在我们的情况下的使用。我认为在RoboDK中构建和模拟机器人程序的可视化方式非常适合它,不要误解我的意思。

我有一个主程序,它调用相同的子程序(联合移动Meca500机器人TCP以达到笛卡尔目标)两次,在两次调用之间,机器人基座相对于目标移动。在RoboDK的模拟中,关节角度根据移动自动更新,TCP每次调用都到达目标。然而,当我将主程序导出到.py文件时(使用Mecademic Python后处理器),子程序就变成了带有移动命令的子函数,指向固定的机器人姿态目标。它没有考虑机器人底座与目标的相对运动,因此只有在输出时刻实际参考系与参考系恰好重合时,机器人才会到达目标。

一个可行的解决方案是提供当前参考系作为导出子程序的输入参数吗?我认为这就是RoboDK在运行模拟时在幕后有效地做的事情。在生成导出机器人程序时如何实现这一点(除了费力的手动后期编辑)?


亲切的问候,

Maarten


RE:输出程序中的变量参考系和目标-杰里米-11-11-2021

嗨Maarteen,

很抱歉回复晚了,我这周有段时间不在办公室,你的问题需要的不仅仅是快速回复,我需要测试一些东西。
如果你能提供你的设置/问题的简化版本,我会坐下来考虑一个潜在的解决方案。几乎总有一种方法可以用RDK实现它,但有时我们需要有点创造性。

杰里米


RE:输出程序中的变量参考系和目标-Maarten-11-14-2021

你好,杰里米,我附上了一个简化的模型来说明这个问题。Meca500在x级台上。主程序调用移动X-stage和机器人的子程序。机器人对同一个目标进行两次联合移动,但由于它的基座在两者之间移动,所以它对同一个目标有不同的姿势。模拟是预期的。

现在,当我使用Mecademic Python后处理器导出主程序(也附在后面)时,将机器人移动到目标的子函数变成了一个子函数(def Meca_Tar01),它首先定义了一个世界参考框架和TCP,然后是一个移动到姿势命令。它不“知道”它的基座在x阶段移动过;世界引用和姿态目标在子函数中定义一次,当执行时,机器人将始终移动到一个相同的姿态。因此,调用这个Python子函数与调用RoboDK中的子程序所做的事情不同。

那么,我如何提取正确的命令,使现实世界中的机器人移动与模拟相同呢?

亲切的问候,

Maarten


RE:输出程序中的变量参考系和目标-杰里米-11-16-2021

嗨的时候,

所以这不是RoboDK的限制,更多的是Meca的限制。
为了直接工作,Meca需要支持外部轴,这就是我们所说的“外部轴同步”(文件://www.w5838.com/doc/en/General.html#SyncAxes
对于支持这些功能的机器人品牌,您可以提供A1到A6 + E1或笛卡尔+ E1。

对于不支持这些功能的品牌来说,这有点棘手,但并非不可能。
我刚刚完成了一个欧姆龙- tm合作机器人的项目,这个合作机器人在一个垂直的轨道上进行码垛项目。本品牌不支持外轴。

所以我所做的就是创建一个python宏,它采用主程序并一步一步地运行它,并将每个目标重新创建为“Robot base”目标。
它基本上把轨道带到它应该在的地方,在模拟中移动机器人,在那里创建一个相对于底座的目标,等等。
为此,它将为遇到的每个轨道位置创建一个“Meca_Tar01”程序的新副本。

这看起来有点傻,但它工作得很好,完全消除了机器人的外轴限制。
我创建的python宏是非常具体的项目,所以我不能只是发送给你,但如果这个解决方案对你有意义,我们可以一起工作。

杰里米


RE:输出程序中的变量参考系和目标-Maarten-11-17-2021

你好Jeremy,没错,《Mecademic》并不支持外部轴。这是可以的,目前还不需要机器人和外轴的运动同步。将有两个机器人和许多外部轴,它们可以跟随自己的目标同时移动。但是,一个机器人和/或轴的运动确实会影响另一个机器人在某一时刻达到目标所需的姿态,应该予以考虑。

我认为你在Python脚本中为给定的机器人基础位置添加目标的副本到机器人基础参考系的方法可能有效。对于一个由两个机器人、许多外部轴和几层深的程序组成的机器,以及子程序中的子程序中的子程序,每个子程序可能包含多个针对多个机器人或轴的移动命令,这仍然可行吗?在不影响RoboDK的特性和灵活性的情况下为机器设计程序?

缩小来看,要获得不同机器人和轴的后续命令列表似乎有风险,而且是一个非常复杂的迂回过程。这是因为模拟已经执行了正确的动作;所以信息就在那里,只是不是我可以导出并提供给单独的机器人和轴的格式。没有更简单的方法了吗?

你能给我一个你做的Python脚本的精简版本吗?这样我就可以尝试在这个基础上进行构建。另外,你能把未编译的Mecademic后期处理器发给我吗?这样我可以在需要时进行调整。

谢谢你的帮助,

Maarten


RE:输出程序中的变量参考系和目标-杰里米-11-17-2021

嗨的时候,
如果您拥有RoboDK的专业执照,您可以通过“帮助”->“请求支持”与我们联系,并询问Mecademic Post。确保指定你想要的是Mecademic Python。
你可以要求在cc中添加“Jeremy”,我会为你提供python脚本,因为我现在更喜欢保持它相对私密。

我将在明天早上的技术会议上讨论这个问题,看看是否有一个更简单的解决方案,但我对此表示怀疑,因为在外轴移动后,帖子需要知道机器人的当前位置……事实并非如此。

如果您想知道后处理程序接收到什么,生成一个程序,然后到达临时文件。你会发现一个“PostPROGRAMNAME.py”。

杰里米


RE:输出程序中的变量参考系和目标-Maarten-11-18-2021

谢谢,杰里米,我刚刚通过这个路径发送了一个请求。

你写道:“post需要知道外轴移动后机器人的当前位置……事实并非如此”。我认为RoboDK中的模型需要知道机器人的基本位置,正如仿真所示,它确实知道。然后,专用后处理器应该能够考虑到这一点,并将对应的机器人目标和外部轴目标的命令导出到一个文件中。机器人可以独立于外轴执行指令。外轴独立于机器人执行自己的命令。但由于它们的目标来自RoboDK模型,该模型考虑了它们的依赖关系,因此它们在一起的表现与在模拟中相同。

我很想知道你是否找到了实现这一点的方法。

亲切的问候,

Maarten