线程评级:
通过python API更改后处理程序以改变机器人程序
# 1
你好,RoboDK团队,

我想通过python API为单个机器人运动输出多个机器人程序。

例如,一个特定的机器人运动块应该通过KR C4导出,而另一个机器人运动块应该导出到Kuka。数控程序。


解释:

//定义的参数:imports, robot, robot_base, path等

RDK.setRunMode (3)
post_processor = "KUKA_KRC4"

机器人。post_processor setParam(“后处理程序”)
RDK。ProgramStart('Prog1', path, post_processor, robot)


...
// Prog1的移动
...

RDK.Finish() //完成Prog1的动作,导出KR C4程序
RDK.setRunMode (3)
post_processor = "KUKA_CNC"
机器人。post_processor setParam(“后处理程序”)
RDK。ProgramStart('Prog2', path, post_processor, robot)

...
// Prog2的移动
...

RDK.Finish () //完成Prog1的动作,导出一个KUKA_CNC程序

...
//进一步移动
...
这应该是可能的。您共享的示例代码看起来正在朝着正确的方向前进。

你遇到了什么问题?
# 3
嗨,阿尔伯特,

谢谢你的回复。我尝试了类似于示例代码的代码,并意识到,该程序只导出prog1,而忽略了第一个RDK.Finish()命令之后的所有内容。

我的意思是,prog1的运动只导出为.src,我没有得到Kuka_CNC。

我相信它应该工作,如果我创建多个函数,导出特定的机器人程序。Def prog1(movements_for_prog1) Def prog2(movements_for_prog1)。

但我想有一个类似于我上面描述的。
# 4
你可以在这里分享你的脚本和一个演示站,这将有助于我们帮助你。

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


# 5
附件是一个演示示例。

该站有一个在后处理程序之间切换的示例程序(python)。

我添加了一些注释,当RDK.Finish()被调用时,代码抛出一个错误,如果我在代码之间注释RDK.Finish()函数,模拟工作顺利,但预期的输出,即3个独立的机器人程序不产生,而是获得一个机器人程序(KRL)。

请让我知道!

附注:请在python程序主程序中定义输出路径

最好的
普拉尼尔S Kamble


附加文件
.rdk Example.rdk(大小:1.18 MB /下载:1雷电竞app下载安卓00)
# 6
你可以通过以下修改来修复脚本中的问题:

  1. 您应该调用RDK。在RDK之后连接。完成(解决方法,由于某些原因API没有自动恢复/重新连接)
  2. 程序启动的posts文件夹的路径应该是一个有效的路径,这样你就不会看到一个弹出窗口来保存程序。
  3. post处理器的名称应该与Posts文件夹中的post处理器文件完全匹配,区分大小写。
我附加了修改,我所做的你的脚本,使其工作。

代码:
#使用库卡数控柱
post_processor = "KUKA_CNC"
机器人。post_processor setParam(“后处理程序”)
RDK.setRunMode (RUNMODE_MAKE_ROBOTPROG)
RDK。ProgramStart('Hex', r"C:/Users/UserName/雷电竞app下载安卓Downloads/", post_processor, robot)

基地上有新目标
base_target = park = RDK。AddTarget(“Base_target”,基地)
base_target.setAsCartesianTarget ()
base_target.setVisible(假)
Xyzabc = [0, 0, 0, 0.0, 0.0, 0.0]
base_target.setPose (KUKA_2_Pose (xyzabc))
robot.MoveL (base_target)

#在那里做一个六边形
poseref = base_target.Pose()

对于范围(7)中的I:
Ang = i*2*pi/6 #角:0,60,120,…
posi = poseref*rotz(ang)*transl(100,0,0)*rotz(-ang)
robot.MoveL (posei)

robot.MoveJ (base_target)


#结束KUKA CNC程序
RDK.Finish ()


RDK.Connect() #如果你想继续使用API,这很重要


#和KRC 4一起回家
post_processor = "KUKA_KRC4"
机器人。post_processor setParam(“后处理程序”)
RDK.setRunMode (RUNMODE_MAKE_ROBOTPROG)
RDK。ProgramStart('Home', r"C:/Users/UserName/雷电竞app下载安卓Downloads/", post_processor, robot)

robot.MoveJ (robot_base)
robot.MoveL(…)

RDK.Finish ()
# 7
谢谢Albert和Jeremy!
现在问题解决了。




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

Baidu
map