你好,
我们目前正在使用c#接口与SW RoboDK Api。在使用库卡基米-雷克南250 R2700-2 RoboDk我们。
我们有一些问题在执行的绝对旋转机器人的终端执行器,我们认为这个问题是欧拉坐标,我们获得的Api。
我们收集的体式使用(),我们创建一个旋转矩阵,变换坐标系的旋转矩阵在0.0.0机器人的坐标系,然后乘以机器人位姿。然后我们发送这个姿势使用MoveJ robodk。
只要坐标系统类似于系统的终端执行器,它能够正常工作。如果他们不同(特别是在z轴)运动不是我们期望的。
我认为这是因为我们获得的姿势Mecademic坐标构成(),而使用库卡机器人坐标。
有没有办法在c#中获取和发送robodk坐标正确吗?
下面我们所做的一个例子。我们还如何使用RPM代替Rxyz但它仍然不工作
垫robot_pose = _robot.Pose ();
var move_xyzrxryrz = new双[6];
move_xyzrxryrz [0] = 0;
move_xyzrxryrz [1] = 0;
move_xyzrxryrz [2] = 0;
move_xyzrxryrz [3] = 0;
move_xyzrxryrz [4] = -45;
move_xyzrxryrz [5] = 0;
var movementPoseRxyz = Mat.FromTxyzRxyz (move_xyzrxryrz);
var transformationAxes = new垫(robot_pose);
transformationAxes。setPos (0, 0, 0);
var movementPoseAlignedRxyz = transformationAxes.inv () * movementPoseRxyz * transformationAxes;
垫MovRxyz = robot_pose * movementPoseAlignedRxyz;
_robot。MoveJ (MovRxyz MoveBlocking);
编辑-
我更新了例子,我添加了一些截图澄清的行为。请参见坐标之前和之后试图执行一个-45°旋转在Y轴上。我也包括最后的姿势的截图,我很期待。
我们目前正在使用c#接口与SW RoboDK Api。在使用库卡基米-雷克南250 R2700-2 RoboDk我们。
我们有一些问题在执行的绝对旋转机器人的终端执行器,我们认为这个问题是欧拉坐标,我们获得的Api。
我们收集的体式使用(),我们创建一个旋转矩阵,变换坐标系的旋转矩阵在0.0.0机器人的坐标系,然后乘以机器人位姿。然后我们发送这个姿势使用MoveJ robodk。
只要坐标系统类似于系统的终端执行器,它能够正常工作。如果他们不同(特别是在z轴)运动不是我们期望的。
我认为这是因为我们获得的姿势Mecademic坐标构成(),而使用库卡机器人坐标。
有没有办法在c#中获取和发送robodk坐标正确吗?
下面我们所做的一个例子。我们还如何使用RPM代替Rxyz但它仍然不工作
垫robot_pose = _robot.Pose ();
var move_xyzrxryrz = new双[6];
move_xyzrxryrz [0] = 0;
move_xyzrxryrz [1] = 0;
move_xyzrxryrz [2] = 0;
move_xyzrxryrz [3] = 0;
move_xyzrxryrz [4] = -45;
move_xyzrxryrz [5] = 0;
var movementPoseRxyz = Mat.FromTxyzRxyz (move_xyzrxryrz);
var transformationAxes = new垫(robot_pose);
transformationAxes。setPos (0, 0, 0);
var movementPoseAlignedRxyz = transformationAxes.inv () * movementPoseRxyz * transformationAxes;
垫MovRxyz = robot_pose * movementPoseAlignedRxyz;
_robot。MoveJ (MovRxyz MoveBlocking);
编辑-
我更新了例子,我添加了一些截图澄清的行为。请参见坐标之前和之后试图执行一个-45°旋转在Y轴上。我也包括最后的姿势的截图,我很期待。