ikin_norm
This function performs inverse kinematics with normalization applied to the resulting joint angles. It calculates the joint position corresponding to the given TCP pose (fSourcePos) and adjusts the output to remain within normalized joint limits, ensuring consistent solutions across different configurations.
Definition
DRFLEx.h within class CDRFLEx, public section (line 669)
LPINVERSE_KINEMATIC_RESPONSE ikin_norm(
float fSourcePos[NUM_TASK],
unsigned char iSolutionSpace,
COORDINATE_SYSTEM eTargetRef,
unsigned char iRefPosOpt
) {
return _ikin_norm(_rbtCtrl, fSourcePos, iSolutionSpace, eTargetRef, iRefPosOpt);
};
Parameter
Parameter Name |
Data Type |
Default Value |
Description |
|---|---|---|---|
fSourcePos |
float[6] |
Target TCP position in task space (x, y, z, Rx, Ry, Rz). |
|
iSolutionSpace |
unsigned char |
Solution space index (0–7) selecting one of eight valid IK configurations. |
|
eTargetRef |
COORDINATE_SYSTEM_BASE |
Reference coordinate system for the TCP. |
|
iRefPosOpt |
unsigned char |
Reference pose option used by the normalized IK solver (e.g., |
Return
Value |
Description |
|---|---|
LPINVERSE_KINEMATIC_RESPONSE |
Normalized inverse-kinematics response structure containing |
Example
float tcp_pose[6] = { 500.0f, 400.0f, 300.0f, 180.0f, 0.0f, 90.0f };
LPINVERSE_KINEMATIC_RESPONSE res = drfl.ikin_norm(tcp_pose, 1, COORDINATE_SYSTEM_BASE, 0);
float q_normalized[6] = {0};
for (int i = 0; i < 6; ++i)
q_normalized[i] = res->_fJoint[i]; // normalized joint angles
drfl.movej(q_normalized, 50, 20);
In this example, the target TCP pose tcp_pose is solved for solution space 1 in the BASE frame. The resulting joint angles are normalized (e.g., within ±π range) to prevent discontinuities. This is useful when performing continuous path motions or calibration that require consistent joint states.