线程评级:
  • 0票(s) - 0平均
  • 1
  • 2
  • 3.
  • 4
  • 5
在保持刀具方向的同时旋转刀具轨迹
# 1
你好,

我试图重用我的一些python代码,并有麻烦这样做。图片上的深灰色区域显示了我想要遵循的工具路径的一部分。我的意图是对四组中的一组进行编程,将我的参照系在中心旋转90°并做相同的动作。不幸的是,在这种情况下,工具的方向也发生了变化。是否有一种方法可以重用移动模式,同时保持工具方向相同?

谢谢你的帮助!

我的尝试:
机器人.setPoseFrame (MiddleOfSubstrate
机器人.MoveL (StartDeposition
机器人.MoveL (StartDepositiontransl0100年0))

机器人.setPoseFrame (MiddleOfSubstrate.Pose () *rotz90π/180))
机器人.MoveL (StartDeposition
机器人.MoveL (StartDepositiontransl0100年0))



附加文件 缩略图(s)

# 2
嗨Marwin,

也许有更干净的方法,但这是有效的:

代码:
机器人= RDK。(“YourRobot”,robolink.ITEM_TYPE_ROBOT)项
target_1 = RDK。(“目标”,robolink.ITEM_TYPE_TARGET)项
机器人移动(目标)#移动到目标

Rz = robomath.rotz(robomath.pi/2) #绕z轴旋转矩阵,90度。
target_2 = RDK.AddTarget('YourTarget_2') #添加新目标
#设置target_2的姿态,使其位置等于target_1旋转Rz的位置
# W.R.T.它的参考系原点,同时保持target_1的相同方向:
target_2。setPose (robomath。transl((Rz*target_1.Pose()).Pos() ) * target_1.Pose().rotationPose() )
#移动到target_2。
你可以将它扩展到多个目标和多个旋转。

最好的问候,

Maarten
# 3
是这样的:

代码:
# robodk API
从robodk导入机器人工具箱

RDK = robolink.Robolink()

机器人= RDK。Item('R1', robolink.ITEM_TYPE_ROBOT) #获取机器人
T1 = rdk。Item('T1', robolink.ITEM_TYPE_TARGET) #获取目标
T2 = rdk。Item('T2', robolink.ITEM_TYPE_TARGET) #获取目标
T3 = rdk。Item('T3', robolink.ITEM_TYPE_TARGET) #获取目标
T4 = rdk。Item('T4', robolink.ITEM_TYPE_TARGET) #获取目标
T5 = rdk。Item('T5', robolink.ITEM_TYPE_TARGET) #获取目标

Path1 = [T1.Pose(),T2.Pose(),T3.Pose(),T4.Pose(), T4.Pose()] #形成路径的原始姿势序列


def myMoveLPath(Path): #沿着路径中的姿态线性移动机器人;
对于Path中的每个Pose:
robot.MoveL(Pose) #线性移动到Pose

defmyrotsameorient (PoseIn,R): #旋转pose 'PoseIn',旋转矩阵'R',同时保持其方向:
PoseOut = robomath.transl(R*PoseIn.Pos()) * PoseIn.rotationPose())
返回PoseOut


Rz = robomath.rotz(robomath.pi/2) #绕z轴旋转矩阵,90度。

Path2 =[] #新路径
对于Path1中的每个姿态:
添加一个旋转但方向相同的姿态

Path3 =[] #新路径
对于Path2中的每个姿态:
添加一个旋转但方向相同的姿态

Path4 =[] #新路径
对于Path3中的每个姿态:
Path4.append(myRotSameOrient(Pose,Rz)) #添加一个旋转但方向相同的姿态


robot.MoveJ(Path1[0]) #关节移动到第一条路径的起点
myMoveLPath(Path1) #沿着路径线性移动
robot.MoveJ(Path2[0]) #关节移动到下一条路径的起点
myMoveLPath(Path2) #沿着路径线性移动
robot.MoveJ(Path3[0]) #关节移动到下一条路径的起点
myMoveLPath(Path3) #沿着路径线性移动
robot.MoveJ(Path4[0]) #关节移动到下一条路径的起点
myMoveLPath(Path4) #沿着路径线性移动
robot.MoveJ(Path1[0]) #关节移动回第一条路径的起点

Maarten
# 4
太好了,非常感谢!:-)




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