线程评级:
MoveJ到笛卡尔目标导出为MoveJ来提出目标?
# 1
我在笛卡尔空间中定义了一个目标,还有一个程序,它可以让一个Mecademic 500机器人通过“MoveJ”关节移动到达那里。生成的机器人程序包含以下相关命令:

机器人。运行(“SetWRF”,[0.000,280.000,0.000,0.000,90.000,-90.000))
机器人。运行(' move关节',[37.303900,4.182890,-0.568555,85.270100,-37.453300,-84.049700])

其中move关节设置六个关节角度存储在目标属性下的“机器人关节”。运行时,机器人按预期移动到笛卡尔目标。

现在我移动机器人的底座,重新运行程序。RoboDK中的模拟更新了关节角度(由于底座移动,关节角度现在有不同的值),机器人再次达到笛卡尔目标。

当我再次生成一个机器人程序时,SetWRF命令的值如预期的那样改变了,因为机器人的基本位置已经改变了。然而,movejoint命令的值与“Robot关节”下目标属性中存储的值保持一致。它们与RoboDK模拟中更新的关节角度不匹配。由于movejoint是一个独立于SetWRF的机器人姿态命令,机器人不会到达目标,不像模拟。

因此,RoboDK对笛卡尔目标的“MoveJ”命令似乎被导出为“movejoint”到一个姿态目标。存储在“机器人关节”下的目标属性中的关节角度被保留,尽管机器人应该采取不同的姿势来考虑其基座的移动。我错过了什么?

亲切的问候,

Maarten
嗨的时候,

这是一个非常好的问题。
我想你已经很了解情况了。
当你移动坐标系时,所有目标的笛卡尔坐标位置都会被重新计算,但并不是所有关节的值都是这样。
我认为这是我们在某些时候做的性能选择因为我们必须一次重新计算潜在的大量目标的逆运动学。

您可以使用两种不同的方法更新机器人关节。
1 -右键单击程序->重新计算目标
这将重新计算程序中所有目标的联合值。

2 -在树中选择目标(这将把机器人带到目标,确保正确的工具和正确的框架被激活)->右键单击目标->教当前位置。

杰里米
有关RoboDK及其功能的有用信息,请访问我们的爱游戏ayx高尔夫球在线文档通过观看我们的教程Youtube频道


# 3
嗨,Jeremy,我尝试了这两种方法,对应于目标的联合值确实更新正确,包括输出.py文件中的movejoint命令的值。

剩下的问题是,当我有一个程序调用相同的子程序(移动到目标)两次,在两次调用之间,帧被移动。子程序只定义了一次,而对于两次调用,它应该有不同的值。在RoboDk的模拟中,每次调用值都会自动更新,但在输出程序中,这些信息会丢失。

会不会是关节移动到笛卡尔目标和关节移动到机器人姿势搞混了?我认为联合移动到笛卡尔目标应该后处理为“MovePose(x,y,z,alpha,beta,gamma)”命令,其中考虑了SetWRF命令的值。一个关节移动到一个姿态目标应该是一个“movejoint (a1,a2,a3,a4,a5,a6)”命令(就像现在一样)。

但即使这样,在输出文件中的子程序中定义的SetWRF命令仍然会被固定的值卡住,不像模拟那样根据移动的帧更新它们。




浏览此线程的用户:
1客人(年代)