线程评级:
  • 0 (s) - 0平均投票
  • 1
  • 2
  • 3
  • 4
  • 5
在c#转换对库卡欧拉坐标
# 1
你好,

我们目前正在使用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轴上。我也包括最后的姿势的截图,我很期待。


附加文件 缩略图(s)

# 2
var newPose = Mat.MultiplyMatSimple (_robot.Pose (), -Mat.roty (Math.PI / 4));




用户浏览这个线程:
1客人(年代)

Baidu
map