线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
Python子程序不会生成
# 1
你好,

我仍然没有找到在RoboDK中编写代码的最佳方法,以避免在创建模拟程序时工作流程中的冗余,同时为真实机器人生成离线程序。

我的最新状态是,我正在用Python脚本在工作站生成程序。这样我就可以调用程序来模拟机器人的行为,也可以为机器人生成离线程序。但这样的话,我的电台很快就会变得一团糟。生成的程序变得庞大而不灵活。

例如:我有一个工件存储库,其中有24个零件,我希望能够抓取。现在我想创建接近和抓住工件的程序,我还需要与工件一起缩回的程序,这样我就可以在RoboDK之外用一些逻辑和错误行为来包裹它们。这意味着单个工件类型将有48个程序。最后将有5种工件类型,因此这意味着仅该工作站就有240个程序。这也意味着在我的机器人模块中生成了240个子程序,其中大部分都是相同的东西。

现在我正在考虑如何避免这种混乱。我的目标是有一个Python脚本“approachto工件(tray_number, workpiece_number)”和一个“retractfrom工件(tray_number, workpiece_number)”。从RoboDK中,我将其称为具有各自工件和托盘编号的子程序,用于模拟目的。这在模拟中工作得很好,但我也希望能够生成一个机器人程序,其中只有这两个程序,而不是为每个部分生成48个程序。
也许有人有一个聪明的想法,如何最好地实现这一点?

不管怎样,现在我想把python脚本程序称为站树中的一个程序,然后用python脚本中的程序作为子程序生成这个程序,但这行不通。生成的程序包括对子程序的调用,但不生成子程序本身。当我从python脚本生成程序时,它会毫无问题地生成。见附图。


附加文件
.rdk python_subprograms_do_not_generate.rdk(大小:4.5 MB /下载:32022世界杯国家队名单9)
# 2
Python程序应该单独生成,因为它们不会包含在主UI程序中。

防止生成过多程序的一种选择是使用一个Python脚本,该脚本相对于机器人的当前位置或基于索引和某些标准进行移动。

例如,如果你想相对移动到当前位置:
代码:
#以当前位置为例:
current_pose = robot.Pose()
#沿着工具Z轴相对移动100mm
New_pose = current_pose * transl(0,0,100)
robot.MoveL (new_pose)
您需要在机器人控制器端创建一个类似的程序,因为生成该程序将无法用于通用程序生成。

另一个可以更好地与泛型程序生成集成的示例是使用基于某些标准的索引。例如,如果您有不同的托盘和不同的零件号,您可以根据相应的索引创建程序号。使用API自动生成所有这些程序是很容易的。但我同意这将是一个混乱的电台,有许多节目。您仍然可以将它们放在文件夹中并隐藏它们,但所有这些程序都应该在控制器中可用。

同样,你可以在同一个主程序中递归地内联子程序,按照以下步骤在RoboDK中:
  1. 选择Tools-Options
  2. 选择程序选项卡
  3. 检查选项内嵌子
# 3
嗨,阿尔伯特,

非常感谢您的回答。
昨天我突然意识到我的思维是多么的局限,而我背后有蟒蛇的全部力量。
所以我开始创建一个基于后置处理器的python模块来生成机器人程序,同时在RoboDK中创建程序。




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