线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
通过python API为不同的机器人程序更改后处理器
# 1
嗨,RoboDK团队,

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

例如,机器人运动的特定块应该通过KR C4输出,而机器人运动的其他块应该输出到库卡。数控程序。


解释:

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

RDK.setRunMode (3)
post_processor = "KUKA_KRC4"

机器人。post_processor setParam(“后处理程序”)
RDK。程序启动('Prog1',路径,post_processor,机器人)



// 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程序


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

你有什么问题吗?
# 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程序main中定义一个输出路径

最好的
普拉尼尔·S·坎布尔


附加文件
.rdk Example.rdk(大小:1.18 MB /下载:12022世界杯国家队名单43)
# 6
你可以通过以下修改来修复脚本中的问题:

  1. 你应该给RDK打电话。RDK后连接。完成(解决方案,由于某种原因,API不能自动恢复/重新连接)
  2. 程序开始的posts文件夹的路径应该是一个有效的路径,所以你不会看到一个弹出保存程序。
  3. 后处理程序的名称应与Posts文件夹中的后处理程序文件完全匹配,它是区分大小写的。
我附上了修改我做你的脚本,使其工作。

代码:
#使用库卡数控立柱
post_processor = "KUKA_CNC"
机器人。post_processor setParam(“后处理程序”)
RDK.setRunMode (RUNMODE_MAKE_ROBOTPROG)
RDK。ProgramStart('Hex', r"C:/Users/UserName/2022世界杯国家队名单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]
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,…
Posei = poseref*rotz(ang)*transl(100,0,0)*rotz(-ang)
robot.MoveL (posei)

robot.MoveJ (base_target)


#结束库卡数控程序
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/2022世界杯国家队名单Downloads/", post_processor, robot)

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

RDK.Finish ()
# 7
谢谢艾伯特和杰里米!
这个问题现在解决了。




浏览此主题的用户:
1客人(年代)