1

在 5 轴机床中,我使用正向运动学从 C 轴和 A 轴的位置了解刀具的方向:

5倍头

正向运动在 Qt 中很容易:

QVector3D forward_kinematic(double C,double A){
  QQuaternion aRotation=QQuaternion::fromAxisAndAngle(-1.0f, 0.0f, 0.0f, A);
  QQuaternion cRotation=QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, C );
  QQuaternion totalRotation = cRotation*aRotation   ;
  QVector3D  rotated_tool_axis = totalRotation.rotatedVector(QVector3D(0,0,1)); 
  return rotated_tool_axis;
}

此轴配置非常简单,但可以有所不同,例如

aRotation=QQuaternion::fromAxisAndAngle(1.0f, 0.0f, 1.0f, A);;
cRotation=QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, C );;

我的问题是:我怎样才能做逆运动学?

从刀具方向矢量到 C 和 A 轴位置

例如,对于与 XYZ 平行的轴,我可以使用 auto vect =quaternion.toEulerAngles(); 然后,欧拉角等于轴位置。

例如,对于 (1,0,0) 和 (0,-1,0) 轴我使用

inline QVector2D forward_kinematic( QVector3D orientation){
 auto quaternion=QQuaternion::rotationTo(QVector3D(0,0,1),orientation);
 auto vect =quaternion.toEulerAngles();
 return  QVector2D(-vect.y(),vect.x());
}

但我不知道如何使用其他轴配置

4

0 回答 0