For information on the latest version, please have a look at 1.33.5.
movesj_g (Auto Mode)
This function performs joint-space spline motion through multiple waypoints, executing smooth and continuous trajectories using spline interpolation. Each waypoint is automatically blended with the next for seamless movement.
This API operates only in Auto (Run) mode. It is not available in Manual (Teach) mode.
Definition
DRFLEx.h within class CDRFLEx, public section
bool movesj_g(float fTargetPos[MAX_SPLINE_POINT][NUM_JOINT],
unsigned char nPosCount,
float fTargetVel,
float fTargetAcc,
float fTargetTime = 0.f,
MOVE_MODE eMoveMode = MOVE_MODE_ABSOLUTE)
{
return _movesj_g(_rbtCtrl, fTargetPos, nPosCount, fTargetVel, fTargetAcc, fTargetTime, eMoveMode);
}
Parameter
Parameter Name |
Data Type |
Default Value |
Description |
|---|---|---|---|
fTargetPos |
float[MAX_SPLINE_POINT][6] |
List of waypoint poses in the BASE coordinate system [X, Y, Z in mm; Rx, Ry, Rz as fixed X-Y-Z angles in deg]. The function computes the joint position of each waypoint with inverse kinematics and writes it back into the array. |
|
nPosCount |
unsigned char |
Number of valid waypoints (max = MAX_SPLINE_POINT). |
|
fTargetVel |
float |
Target velocity for spline motion. |
|
fTargetAcc |
float |
Target acceleration for spline motion. |
|
fTargetTime |
float |
0.0f |
Motion duration [sec]. |
eMoveMode |
|
Defines whether movement is absolute or relative. |
Caution
The function overwrites all six elements of each of the first nPosCount waypoints in fTargetPos with the joint position [deg] from inverse kinematics. Pass a fresh copy of the waypoints on every call; reusing the same array sends the joint values as poses on the next call.
Each joint position is the inverse-kinematics solution in solution space 2 (Lefty, Above, No Flip; see movejx) for the waypoint in the BASE coordinate system. For each waypoint, the call waits for this result from the controller and stores it in the data that the CDRFLEx object shares with get_current_posx, get_desired_posx, fkin, ikin, ikin_norm, trans, coord_transform, calc_coord, get_user_home, get_user_cart_coord and flange_serial_read, so a pointer returned earlier by one of them refers to overwritten data after movesj_g returns; copy the structure first. Do not call movesj_g inside a callback; see Rules for callback functions.
Return
Value |
Description |
|---|---|
0 |
Failed |
1 |
Success |
Example
// Waypoint poses in BASE [X, Y, Z in mm; Rx, Ry, Rz in deg]
const float waypoints[3][6] = {
{400.f, 200.f, 300.f, 180.f, 0.f, 180.f},
{450.f, 150.f, 300.f, 180.f, 0.f, 180.f},
{500.f, 100.f, 300.f, 180.f, 0.f, 180.f}
};
// movesj_g overwrites its first argument, so pass a fresh copy on every call
float path[3][6];
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 6; ++j)
path[i][j] = waypoints[i][j];
drfl.movesj_g(path, 3, 50.f, 100.f, 2.0f);
Note
movesj_gprovides smooth, multi-point joint interpolation using spline blending.Automatically adjusts blending based on velocity and acceleration limits.
Ideal for path teaching, motion streaming, or multi-point sequence execution.
Not linked with
force/stiffness controlorchange_operation_speed().Ensure
nPosCount≤ MAX_SPLINE_POINT to avoid overflow.