线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
Python API -外部轴
# 1
大家好!
我想知道什么是正确的方式移动外部轴(机构- 3线性轴(只使用2),没有任何机器人同步)。我把这个机构看作另一个机器人。它只在X轴和Y轴上运动。

现在我在确定目标时遇到了麻烦(这说明目标是不可到达的,即使当我手动移动机器人并告知当前位置),当我尝试使用移动命令[x,y,0,0,0,0]时,它实际上移动的是机构的参考系,而不是机构本身。

我希望你能理解我说的话,谢谢!
也许不相关,但RoboDK似乎需要一些时间来更新位置。我们有一个线性轨道(1轴),更新轨道的姿势需要一些时间,所以我添加了一个延迟:

代码:
姿势= robodk。UR_2_Pose([x, 0,0,0,0])
self.rail.setPose(构成)

# HACK:如果我们不这样做,RoboDK说我们将无法接触到。
time . sleep (0.25)

#在这里插入你的机器人动作
# 3
大卫,
您提到的延迟会触发渲染(默认情况下,任何超过0.1秒的延迟)。相反,您可以用更新渲染调用。在这种情况下,Update是最有效的调用,它只会在内部更新位置,以便您可以验证可访问性或移动机器人。Render命令将触发更新并显示屏幕。

氮氧化合物,
如果希望指定外部轴的位置,则需要创建一个目标。下面这个用Python写的例子会给你一个概念:

代码:
从robolink导入# RoboDK API
从robodk导入* #机器人工具箱
Robolink()

#检索机器人,参考框架并创建一个程序
机器人= RDK。项目(ITEM_TYPE_ROBOT”)
reference = robot.Parent()

#创建一个新程序
程序= RDK.AddProgram('Test')

#定义参考姿势
Pos = transl(100,200,300)*rotx(pi)

#关闭自动渲染(更快)
RDK.Render(假)

#不显示指令(更快)
program.ShowInstructions(假)

#指定你想要使用的参考框架
program.setPoseFrame(参考)

对于I在(100)范围内:
targetname='目标%i' %i
目标= RDK.AddTarget (targetname,参考,机器人)
目标。setPose(transl(i* 1,0,0) * pos)

#设置外部轴
坐标轴= [20,i*100]

#对于笛卡儿坐标目标,RoboDK将忽略机器人关节,但不会忽略外部轴
All_axes = [0]*6 + axes
#创建数组的快速方法:
# [0,0,0,0,0, ext_axis_1, ext_axis_2]

#设置目标并创建移动指令
target.setJoints (all_axes)
target.setAsCartesianTarget ()
program.MoveL(目标)

#如果你正在创建一个长程序,这有助于保持树小(更快)
如果我% 20 == 0:
program.ShowTargets(假);

program.ShowTargets(假)

#在结尾显示程序指令
program.ShowInstructions(真正的)




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