线程评级:
在c#中转换姿势到库卡欧拉坐标
# 1
你好,

我们目前正在使用c# Api将RoboDK与我们的SW连接起来。在RoboDk中,我们使用KUKA KR 250 R2700-2。

我们在执行机器人末端执行器的绝对旋转时遇到了一些问题,我们认为问题是我们在Api中获得的欧拉坐标。

我们使用pose()收集姿态,我们创建一个旋转矩阵,我们将旋转矩阵从0.0.0中的参考系转换到机器人的坐标系,然后乘以机器人姿态。然后我们使用MoveJ将这个姿势发送给robodk。

只要坐标系与末端执行器的系统相似,它就能正常工作。如果相反,它们不同(特别是在z轴上),那么运动就不是我们所期望的。

我认为这是因为我们用Pose()获得的Pose是Mecademic坐标,而机器人使用的是KUKA坐标。

在c#中是否有一种方法可以正确地获取和发送坐标到robodk?

下面是我们正在做的一个例子。我们还尝试使用RPM代替Rxyz,但它仍然不能工作

Mat robot_pose = _robot.Pose();
Var move_xyzrxryrz = new double[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 Mat(robot_pose);
transformationAxes。setPos(0,0,0);
var movementPoseAlignedRxyz = transformationAxes.inv() * movementPoseRxyz * transformationAxes;
Mat MovRxyz = robot_pose * movementPoseAlignedRxyz;
_robot。MoveJ (MovRxyz MoveBlocking);

编辑-
我更新了示例,并添加了一些截图来阐明行为。请查看尝试在Y轴上执行-45°旋转之前和之后的坐标。我还附上了我所期待的最后一个姿势的截图。


附加文件 缩略图(s)

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




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

Baidu
map