Vous êtes sur la page 1sur 28

A P I - APPLICATION PROGRAM INTERFACE

API - 9
Application Program Interface

The Application Program Interface (API) provides the user the


ability to develop own functions written in C programming
language for user defined

• inverse kinematics (API-INV)


• motion planning (API-IPO)
• and dynamics (API-DYN)

The below text will give a basic overview about the topics

• Kinematics
• Forward Kinematics
• Inverse Kinematics
• Trajectory Generation

Kinematics is the science of motion, which treats motion


without regard to the forces, which cause it. Within the science
of kinematics one studies the position, velocity, acceleration,
and all higher order derivatives of the position variables. Hence,
the study of the kinematics of robots refers to all geometrical
and time-based properties of the motion.

A very basic problem to be solved is:

How to relate the robot’s configuration or pose to the position


and orientation of its end effector. A configuration of an n-
degree of freedom robot is an n-vector (q1 , q 2 ,..., q n ) , where
each qi is either a rotational joint angle or a prismatic joint
translation.
This is known as the forward kinematics of the robot. This is
the static geometrical problem of computing the position and
orientation of the end-effector of the robot. Specifically, given a

IX-1
9 A P I - APPLICATION PROGRAM INTERFACE

set of joint angles, the forward kinematic problem is to compute


the position and orientation of the TCP relative to the base
frame. Sometimes we think of this as changing the
representation of robot position from joint space description into
a Cartesian space description.

The following problem is considered the inverse kinematics:


Given the position and orientation of the end-effector of the
robot, calculate all possible sets of joint angles which could be
used to attain the this given position and orientation. The
inverse kinematics is not as simple as the forward kinematics.
Because the kinematic equations are nonlinear, their solution is
not always easy or even possible in a closed form. The
existence of a kinematic solution defines the workspace of a
given robot. The lack of a solution means that the robot cannot
attain the desired position and orientation because it lies
outside the robot’s workspace.

In addition to dealing with static positioning problems, we may


wish to analyse robots in motion. Often in performing velocity
analysis of a mechanism it is convenient to define a matrix
quantity called the jacobian of the robot. The jacobian specifies
a mapping from velocities in joint space to velocities in
cartesian space. The nature of these mapping changes as the
configuration of the robot varies. At certain points, called
singularities, this mapping is not invertible. An understanding of
this phenomenon is important to designers and users of robots.

A common way of causing a robot to move from A to B in a


smooth, controlled fashion is to cause each joint to move as
specified by a smooth function of time. Commonly, each joint
starts and ends its motion at the same time, so that the robot
motion appears coordinated. Exactly how to compute these
motion functions is the problem of trajectory generation.

IX-2
A P I - APPLICATION PROGRAM INTERFACE

API-INV - Inverse Kinematics

The API for inverse kinematics is used when a robot kinematics


is created based on universal coordinates or Denavit
Hartenberg (DH) parameter and the inverse kinematics problem
has to be solved. Many exported functions from the EASY-
ROB™ data base give full access to all needed robot data, i.e.
kinematic robots lengths, software travel ranges, joint
directions, tool frame, TCP location, etc. Mathematical routines
to handle homogeneous transformation matrices are available
as well as trigonometrical functions for angle, triangle and
trapezoid calculations.

Prototypes: er_dvlp.h c-header file


Library: easyrobw.lib

Cartesian Folder: .\easy_rob\er_dvlp\ Joint solution


location VC++ project er_kin.dsw vector
Robot C file: inv_user.cpp float
Basis to Tip Functions: inv_kin_user_1(frame *T)- *inq_q_solut()
*inq_T() inv_kin_user_12(frame *T) Dimension = DOF
Variable Input: Cartesian location, Robot Base to Tip int inq_num_dofs()
frame *inq_T()
Variable Output: Set of joints/axis values
float *inq_q(int soln)
int soln = inq_config()
EASY-ROB is the current robot configuration
Data Base Warning vector int *inq_warnings()
[WARN_OK, -SINGULAR, -UNREACH,
Library: -CNFG, -NO_INVKIN, -SWE_EXCEED]
easyrobw.lib Example Standard Robot RRR:RRR type, modelled
in universal coordinates with
Kinematic 6 DOF and 8 configurations
lengths & int inv_kin_user_2(frame *bTt)
attributes Result Dynamic Link Library Dll er_kin.dll
in folder .\easy_rob\

Result: er_kin.dll

Figure API -01: Interfaces for inverse kinematics

The inverse kinematics routine is called during TCP jogging


using the mouse and during program execution in CP mode
after every interpolation step *inq_ipo_data_dt_ipo().

IX-3
9 A P I - APPLICATION PROGRAM INTERFACE

Using the function call

• rob_kin_inv(frame *base_to_tip)

forces the calculation for the inverse kinematics solution. This


function can be called from everywhere within the API.

Kinematic
Robot Chain
Output:
Robot Joints
*inq_q_solut()

TOOL: Tip to TCP


*inq_tTw()
Input: = tTw
TCP
Robot Base to Tip Tip
*inq_T() = bTt
*inq_bTt()
Robot Base to TCP
Robot Base to first Joint *inq_bTw()
*inq_bT0() = bTt * tTw

World Word to Robot Base


Origin *inq_iTb()

Figure API-02: Transformation Chain

Figure API-02: Transformation Chain

IX-4
A P I - APPLICATION PROGRAM INTERFACE

API-IPO - Motion Planner

In a similar way as for the inverse kinematics solution, an


Application Program Interface (API) for the motion planning
respectively the interpolator exist. The build-in motion planning
routines inside the EASY-ROB BASIC module implemented for
the point to point (PTP) and continuous path (CP) motion type.
The continuous path motion type covers linear (LIN) and
circular (CIRC) motion. The API for the motion planning allows it
to develop user defined functions written in C for the motion
types PTP, LIN and CIRC.

Before the robot starts to move to its new target location, the
preparation routine, which returns the required motion time for
that move, is called. Afterwards, supposed the preparation was
successful, the execution routine is called in every interpolation
step to calculate intermediate locations for the robots TCP.
Many exported functions give full access to the current motion
planning values such as programmed speeds and
accelerations.

IX-5
9 A P I - APPLICATION PROGRAM INTERFACE

Prototypes: er_dvlp.h c-header file


Library: easyrobw.lib

Joint & Folder: .\easy_rob\er_dvlp\


cartesian VC++ project er_ipo.dsw
target C file: ipo_user.cpp Joint &
locations Functions: Preparation: cartesian
int ipo_jnt_prep_user_1..12 intermediate
int ipo_lin_prep_user_1..12 locations
int ipo_circ_prep_user_1..12
(void **ipo_usr_ptr)
Execution:
ipo_jnt_exec_user_1..12
EASY-ROB ipo_lin_exec_user_1..12
Data Base ipo_circ_exec_user_1..12
(float ctime, void **ipo_usr_ptr)
Library: Variable Input: Preparation:
easyrobw.lib Pointer for user defined data structure,
Start and Target locations
Interpolation Variable Output: Return values
control data IPO_OK: Preparation successful
IPO_IN_POSITION: Target already reached
IPO_ERROR: Preparation fails, no execution
user defined data structure **ipo_usr_ptr
required time for this move
float *inq_ipo_prep_t_bahn()
Variable Input: Execution:
current time ctime
user defined data structure **ipo_usr_ptr
Variable Output: Intermediate locations and speeds
Return values:
1: execution is called until return valus is 0
0: execution is called until
ctime <= ..t_end
Example see ipo_user.cpp
Result Dynamic Link Library Dll er_ipo.dll
in folder .\easy_rob\

Result: er_ipo.dll

Figure API-03: Interfaces for motion planner

IX-6
A P I - APPLICATION PROGRAM INTERFACE

API-DYN - Dynamics

The dynamics option allows to consider the dynamic model of


the robot and the position controller during simulation. The
build-in dynamics routine for the dynamic robot model uses a
simple uncoupled 1st order model in the discrete z-space
defined by the inertia, the viscous friction and the gear ratio for
each joint. Based on the system step, the discrete model is
calculated. The build-in position controller is represented by the
well known PPI Cascade Controller with pseudo analog PI
velocity controller. During the robots motion a green trace
shows the desired TCP location (generated by the motion
planner) and a red trace the actual location of the robots TCP.
An output window shows the errors in joint and cartesian space
at any time. The Application Program Interface (API) for
Dynamics allows to develop user defined functions written in C
for the dynamic robot model and the position controller. Herein
it will be possible to consider the real non linear coupled model
of the robot and use an integration algorithm such as Runge
Kutta to solve the inverse dynamic modell. Furthermore, a
special position controller such as an adaptive or a robot modell
based controller can be implemented.

user defined data structure user defined data structure


**dyn_cntrl_usr_ptr() **dyn_model_usr_ptr()

desired joint values PPI - Position Controller Robot Model


q = joint error dq = *inq_dq() Control Signal
v_dyn
*inq_q_solut() dq = q - q_dyn uc =
v = kpp * dq *inq_uc()
dv = v - v_dyn uc
+ aux1 * v_solut v_dyn = f(uc,data)
dt = inq_dt_cntrl() dt_sys = inq_dt_sys()
actual joint values Integration value q_dyn += v_dyn * dt_sys
q_dyn = uc_kiv += kpv * kiv
*inq_q_dyn() *dv * dt Output:
Output: Control signal, q_dyn: actual joint
uc = kpv * dv + uc_kiv v_dyn: actual speed
actual joint speed
v_dyn =
*inq_v_dyn()

Figure API-04: Interfaces for dynamics, position controller and


dynamic robot model

IX-7
9 A P I - APPLICATION PROGRAM INTERFACE

The above general structure shows the main important data


flow between position controller and the dynamic robot model.
The algorithm for position controller and robot model could be
very complex, depending on the users requirements.

The position controller with following I/O data.

Prototypes: er_dvlp.h c-header file


Library: easyrobw.lib

Folder: .\easy_rob\er_dvlp\
Desired VC++ project er_dyn.dsw
and actual C file: dyn_user.cpp
locations Functions: int dyn_cntrl_user_1..12 Control signals for
and speeds (void **dyn_cntrl_usr_ptr) each joint:
Input: Pointer for user defined data structure, float *inq_uc()
Current desired and actual locations,
Control parameter:
Example: PPI-Cascade
*inq_cntrl_kpp(): superimposed PosCntrl
EASY-ROB *inq_cntrl_kpv(): P - underlying VelCntrl
Data Base *inq_cntrl_kiv(): I - underlying VelCntrl
*inq_cntrl_aux1..3(): auxiliary values
Library: gear ratio, robot attributes, etc.
easyrobw.lib Variable Output: Error, actual joint error,
control signal float *inq_uc()
Control Example see file dyn_user.cpp
parameter, dyn_cntrl_user_1(void **usrptr)
sample time Result Dynamic Link Library Dll er_dyn.dll
in folder .\easy_rob\

Result: er_dyn.dll

Figure API-05: Interfaces for dynamics, position controller

The user defined structure allows the user to store all needed
data for this specific controller (adaptive-, state variable
feedback-, force controller, etc.), such as parameter or status
data, which are needed for the next sampling step. When the
routine dyn_cntrl_user_x() is called for the first time, this user
pointer is NULL and allows the user to allocate memory and to
defined all initial data settings. In the next step, EASY-ROB™
will return this pointer, thus all data are available for further
calculations.

IX-8
A P I - APPLICATION PROGRAM INTERFACE

Structure of the dynamic robot model

Prototypes: er_dvlp.h c-header file


Library: easyrobw.lib

Folder: .\easy_rob\er_dvlp\
Control VC++ project er_dyn.dsw
signals for C file: dyn_user.cpp Actual joint position
each joint Functions: int dyn_model_user_1..12
*inq_uc() *inq_q_dyn()
(void **dyn_model_usr_ptr) actual joint speed
Input: Pointer for user defined data structure, *inq_v_dyn()
Control signal from position controller
Model parameter:
gear ratio, robot attributes, etc.
Variable Output: Error, actual joint values:
EASY-ROB float *inq_q_dyn()
Data Base float *inq_v_dyn()
Example see file dyn_user.cpp
Library: dyn_model_user_1(void **usrptr)
easyrobw.lib Result Dynamic Link Library Dll er_dyn.dll
in folder .\easy_rob\
Robot model
parameter,
model
sample time

Result: er_dyn.dll

Figure API-06: Interfaces for dynamics, robot dynamic model

The user defined structure allows the user to store all needed
data for this specific dynamic robot model. This pointer works in
the same manner as for the position controller. Inside the API
for the robot model, it is possible to integrate high sophisticated
calculations to solve the inverse dynamic robot model with
consideration of nonlinearities for frictions, coriolis and gravity
forces, inertias and maybe elasticities in the gear boxes. The
solution for the complete model can be solved using Runge
Kutta for example.

IX-9
9 A P I - APPLICATION PROGRAM INTERFACE

Example for API-INV

Load the robot, "univ_inv.rob" from the .\proj folder.

This robot with 6


rotational joints is
modeled in universal
coordinates. The yellow
colored coorsys show the
active joints. The robot
base position is in the
world origin (green color).
The TCP coorsys is
visualized in blue color.
Figure API-07: univ-inv.rob The Tip coorsys is in
white color.
Menu: Robotics
-> Robot Motion +
Kinematics

Figure API-08: Selection Dialog


-> Kinematic Data
will open this Selection
Dialog box. The user is
prompted to make a
choice.

The transformation from


the robot base to the first
st
(1 ) joint of this robot is
translated by 0.5m in Y -
Direction.
Procedure:
frame T=*inq_bT0(void)
returns the pointer, to
read or modify the
Figure API-09: Input Dialog:
values.

IX-10
A P I - APPLICATION PROGRAM INTERFACE

A selection of
"4 - Inverse Kinematic
No"
in the Dialog in Figure
API-08
allows the user to choose
the function for the
inverse kinematics
Figure API-10: Selection Dialog for inverse solution defined in
kinematics er_kin.dll.
"3 - DLL inv. kin
#2"
will select function
"inv_kin_user_2(frame *)"

Example for API-IPO

Menu: Robotics
-> Robot Motion Planner
-> Ipo Data
will open the Input Dialog
to set the control data for
the motion planner, such
as ipo step size, vq =
joint speed,
vx = cartesian speed,
Figure API-11: Input Dialog for Motion
Planner ipo data joint acceleration, ov =
override, etc.
Inside the API, you can
read and write all ipo
data, using the functions:
vq = *inq_ipo_path_vq()
vx = *inq_ipo_path_vx()
ov =
*inq_ipo_path_ov_pro()

IX-11
9 A P I - APPLICATION PROGRAM INTERFACE

Menu: Robotics
-> Robot Motion Planner
-> Ipo Joint Code
will open the Selection
Dialog to prompt the user
to choose the function for
the user defined motion
planner for the "Joint"
Figure API-12: Selection Dialog for joint motion type.
motion planner code This selection will enable
the 2 functions,
ipo_jnt_prep_user_1()
and
ipo_jnt_exec_user_1().

IX-12
A P I - APPLICATION PROGRAM INTERFACE

C- Program Examples

Inverse Kinematics

The below C Code Example code solve the inverse kinematic


solution for a RRR:RRR robot type with 6 revolute joints. The
robot is modeled in universal coordinates. Load the robot,
"univ_inv.rob" from the .\proj folder.

You will find the source code in file inv_user.cpp in


directory .\er_dvlp\.
Please open the VC++ 6.0 Project file er_kin.dsw.

The RED colored Text is comment for explaination.

/*
EASY-ROB Development V3.0

12 user defined inverse kinamatic routines are suported.


int inv_kin_user_1..12 (FRAME *)

12 user defined functions for mathematical joint dependencies are


supported.
float md_f1..12 (void)

The EASY-ROB base program "easyrobw.exe" provides more than


100 functions, see header file "..\er_dvlp\er_dvlp.h"

Stefan Anton

Copyright (c) 1996,1997,1998,1999,2000,2001

modul: inv_user.cpp

To build a new er_kin.dll, please start the project file "er_kin.dsw"


with the Microsoft Visual C++ Compiler.
*/

#include <stdio.h>
#include <string.h>
#include <math.h>
#include "..\er_dvlp\er_dvlp.h"
#define NUM_DOFS_2 6
#define NUM_CONFIGS_2 8

IX-13
9 A P I - APPLICATION PROGRAM INTERFACE

EXPORT_C int inv_kin_user_2(frame *bTt)


// frame *bTt points to the transformation from the robot base to the tip of the
// robot. The transformation from the tip to the tcp is substracted before.
{
double *achs_length,*achs_offsets1,*achs_offsets2,
*sing_tol,*joint_offset;
float *q;

int *warnings,*verpolt;
int num_dofs,num_configs;
frame *T,b0Tt;

int i,ii, jj, kk, soln, warning;


double nx,ny,nz,ox,oy,oz,ax, ay, az,px, py, pz;
float l1x, l1y, l1z, l2x, l2y, l2z, l2, l3x, l3y, l3z, l3, l6,
ly, rx, rxy, rxm, rr;
double c1, s1, c2, c3, c23, s23,s6,c6,s4,c4, cabs;
double theta[KIN_DOFS];
double delta_theta1, delta_theta2, delta_theta3;
float sig1, sig2, sig3, sing_tolx, sing_tol_q5;

num_dofs = inq_num_dofs();// number DOF, should be 6


num_configs = inq_num_configs(); // number of configurations, should be 8

// Check if the loaded robot fits to this solution


if (num_dofs!=NUM_DOFS_2 || num_configs!=NUM_CONFIGS_2) {
char b[80];
rob_kin_user_msg("ERROR inv_kin_user_2()");
sprintf(b,"dofs %2d != %2d",num_dofs,NUM_DOFS_2);
rob_kin_user_msg(b);
sprintf(b,"configs %2d != %2d",num_configs,NUM_CONFIGS_2);
rob_kin_user_msg(b);
}

// Set the pointer to the axis_length of this robot


achs_length = inq_achs_length(); // length in z - direction
achs_offsets1 = inq_achs_offsets1();// length in x - direction
achs_offsets2 = inq_achs_offsets2();// length in y - direction
joint_offset = inq_joint_offset();
sing_tol = inq_sing_tol();
warnings = inq_warnings();
verpolt = inq_verpolt(); // sign of the robot joint [-1 or +1]

// lenghts l1z = 0.5 l2z = 0.6 l3z = 0.4 l4z = 0 l5z = 0 l6 = 0.15
l1z = achs_length[0]; // see also length "lz,lx,ly" in ’univ_inv.rob’ file
l1x = achs_offsets1[0];
l1y = achs_offsets2[0];

l2z = achs_length[1];
l2x = achs_offsets1[1];
l2y = achs_offsets2[1];

IX-14
A P I - APPLICATION PROGRAM INTERFACE

delta_theta2 = atan(l2x/l2z);
l2 = sqrt( l2x*l2x + l2z*l2z );

l3z = achs_length[2];
l3x = achs_offsets1[2];
l3y = achs_offsets2[2];

delta_theta3 = atan(l3x/l3z);
l3 = sqrt( l3x*l3x + l3z*l3z );

ly = l1y + l2y + l3y;

l6 = achs_length[5];

sing_tolx = sing_tol[0]; /* [mm] */


sing_tol_q5 = (float)sin(sing_tol[4]); /* [rad] */

T = &b0Tt;
// substract the transformation from the robot base to the first joint ’bT0()’,
// see also Figure API-02 Transformation Chain
// see also in ’univ_inv.rob’ file: => ! base to Joint 1 "bT0"
mul_invT_T(T,inq_bT0(),bTt);

px = T->p[0]-T->a[0]*l6;
py = T->p[1]-T->a[1]*l6;
pz = T->p[2]-T->a[2]*l6-l1z;

rxy = sqrt(px*px+py*py);

if( rxy < ly ) {


rob_kin_set_warnings(WARN_UNREACH);
return( WARN_UNREACH ); // TCP pose is not reachable
} else if( rxy < sing_tolx ) {
rob_kin_set_warnings(WARN_SINGULAR); // singular pose
}

if (fabs(ly)>0.0) {
rx = rxy*rxy - ly*ly;
if (rx<0.0) rx=0.0;
else rx = sqrt( rx );
delta_theta1 = rob_kin_atan2(ly,rx);
} else {
rx = rxy;
delta_theta1 = 0.0;
}

sig1 = -1.0;
sig2 = -1.0;
soln = 0; // soln counts the nunmber of solutions

IX-15
9 A P I - APPLICATION PROGRAM INTERFACE

for( kk = 0; kk < 2; kk++ ) // kk - loop for sig1


{
warning=WARN_OK;
sig1 *= -1.0;
rxm = rx - sig1*l1x;
rr = sqrt( rxm*rxm + pz*pz );

if (rr<KIN_EPSI) {
rob_kin_set_warnings(WARN_UNREACH);
return( WARN_UNREACH );
}

c2 = (rr*rr + l2*l2 - l3*l3) / (2.0*l2*rr);

if( (cabs=fabs(c2)) > 1.0 ) {


if (cabs >1.0+KIN_EPSI) {
warning = WARN_UNREACH;
}
if (c2>1.0) c2 = 1.0;
else c2 = -1.0;
}

c3 = (l3*l3 + l2*l2 - rr*rr) / (2.0*l2*l3);

if( (cabs=fabs(c3)) > 1.0 ) {


if (cabs >1.0+KIN_EPSI) {
warning = WARN_UNREACH;
}
if (c3>1.0) c3 = 1.0;
else c3 = -1.0;
}

if (warning==WARN_OK) {
theta[0] = -sig1*delta_theta1 + rob_kin_atan2(sig1*py,sig1*px);
}
else {
for (i=kk*4;i<(kk+1)*4;i++) warnings[i] = WARN_UNREACH;
soln = (kk+1)*4;
}

IX-16
A P I - APPLICATION PROGRAM INTERFACE

for( jj = 0; jj < 2 && warning==WARN_OK; jj++ ) { // jj - loop for sig2

sig2 *= -1.0;
theta[1] = sig1*(PI/2.0-rob_kin_atan2(pz,rxm)-sig2*acos(c2))
- delta_theta2;

if (theta[1] < -PI) theta[1] += 2*PI;


else if (theta[1] > PI) theta[1] -= 2*PI;

theta[2] = -sig1*sig2*acos( c3 ) - delta_theta3 + delta_theta2;

if( theta[2] < 0.0 ) theta[2] += PI;


else theta[2] -= PI;

c1 = cos( theta[0] );
s1 = sin( theta[0] );

c23 = cos( theta[2] + theta[1] );


s23 = sin( theta[2] + theta[1] );

nx = (T->n[0]*c1+T->n[1]*s1)*c23-T->n[2]*s23;
ny = -T->n[0]*s1+T->n[1]*c1;
nz = (T->n[0]*c1+T->n[1]*s1)*s23+T->n[2]*c23;

ox = (T->o[0]*c1+T->o[1]*s1)*c23-T->o[2]*s23;
oy = -T->o[0]*s1+T->o[1]*c1;
oz = (T->o[0]*c1+T->o[1]*s1)*s23+T->o[2]*c23;

ax = (T->a[0]*c1+T->a[1]*s1)*c23-T->a[2]*s23;
ay = -T->a[0]*s1+T->a[1]*c1;
az = (T->a[0]*c1+T->a[1]*s1)*s23+T->a[2]*c23;

sig3 = -1.0;

for( ii = 0; ii < 2 ; ii++ ) { // ii - loop for sig3


sig3 *= -1.0;

theta[5] = rob_kin_atan2( sig3*oz,-sig3*nz);


c6 = cos(theta[5]); s6 = sin(theta[5]);
theta[3] = rob_kin_atan2(-ox*c6-nx*s6,oy*c6+ny*s6);
c4 = cos(theta[3]); s4 = sin(theta[3]);
theta[4] = rob_kin_atan2(ax*c4+ay*s4,az);

if( fabs( sin(theta[4]) ) < sing_tol_q5 )


{
rob_kin_user_msg("inv_kin_user_2 WARN_SINGULAR");
warnings[soln] = WARN_SINGULAR;
}
else warnings[soln] = WARN_OK;

IX-17
9 A P I - APPLICATION PROGRAM INTERFACE

for( i = 0; i < NUM_DOFS_2; i++ ) {


q = inq_q(soln); // q is solution vector
// consider joint sign and joint offsets
q[i] = verpolt[i]*(theta[i] + joint_offset[i]);
if (q[i] < -PI) q[i] += 2*PI; // solution within +/- PI
else if (q[i] > PI) q[i] -= 2*PI;
}
soln++; // increase the solution number
} /* for ii */
} /* for jj */
} /* for kk */
return(WARN_OK);
} /* End of inv_kin_user_2*/

Motion Planning

To be defined,

see example file Ipo_user.cpp

Dynamics

To be defined,

see example file Dyn_user.cpp

IX-18
A P I - APPLICATION PROGRAM INTERFACE

API - Tables of Contents


The tables bellow show the all-available API functions and short
descriptions.

Table 1. User Vector for Testing

Nr. Name
       
of

the
 

Function
        Description
                  
            
            
               
            
      



          

 

    

Table 2. Kinematics

Nr. Name of the Function Description


1 ! " # $ % & ' ! & ( ) * + $ , ( -! * ' . / 0 ( ) * + $ . 1 2 3 $ % '! ) '! 4 )* + $ 0
% * -% 5 - * ' $ 6 * 7 # " $ + 8 6 " ! 8 * -
3 $ % ' ! ) , 9 0: 0; 0< 0 = 0 > 2 ' ! *
@4 ) ) * " $ + 8 $ ' * ? ' " ! 8 A < 0 = 0 > " 6 B ! ' , 9 0 < 2 .
B ! ',: 0= 2. B ! ',; 0> 2
2 ! " # ( ) * + $ & ' ! & $ % , ( -! * ' . / 0 ( ) * + $ . 1 2 4 )* + $ '! 3 $ % '! )
% * -% 5 - * ' $ 6 * ( ) * + $ " 8 ' ! * 7
# " + $ 8 6 "! 8 * - 3 $ % ' ! )
, 9 0: 0; 0< 0 = 0 > 2
3 " 8 ' $ % & ' ! & ( ) * + $ & " # 9 , ( -! * ' . 0 ( ) * + $ . 1 0 " 8 ' ) ! ' & " # 9 2 3 $ % ' ! ) ' ! ( ) * + $ "8 # $ 9
% * -% 5 - * ' $ 6 * 7 # " $ + 8 6 " ! 8 * -
3 $ % ' ! ) , 9 0: 0; 0C ) ! ' & "# 9 C 2 ' ! *
4 )* + $ ?
1 D $ ! ) "$ 8 ' * ' "! 8 # $ E $ 8 # 6 ! 8
) ! @' & " # 9 A
B 1 & F G H I J B ! ' F . B !@ ' G . B ! ' H
< K G IB =
B @ 1 & H G FI L B M ! L ' H . B ! ' G . B ! ' F
L < 0 B $ "6 0
@B 1 & G F H I B ! ! N ' $ G - %. !B ! ' H . B ! ' H
=@K>O
B @ 1 & H G H I B ! 'H . B ! 'G . B ! 'H
K ' * $ 5 N -"
B @@ 1 & F G FI ' N #
B 1 & B P GI B ! - - P " ' % D G * Q 0
B ! 'F . B ! 'G . B ! 'H 0
@B 1 & R M < 1 8 !I ' R ) 5$ * - * ' '$ " ) 8 $ " ! 8

IX-19
9 A P I - APPLICATION PROGRAM INTERFACE

<==
4 " 8 ' ( ) * + $ & ' ! & $ % & " # 9 , ( -! * ' . 0 ( ) * + $ . 1 0 " 8 ' ) ! ' & " # 9 2 4 ) * + $ ' ! $ % ' ! ) "8 # $ 9 0
% * -% 5 - * ' $ 6 * ( ) * + $ " 8 ' ! * 7
# " + $ 8 6 "! 8 * - 3 $ % ' ! )
, 9 0: 0; 0C ) ! ' & "# 9 C 2
6 $ $ $ % & ' ! & ( ) * + $ & "# 9 , 2
5 ! "# 1 & + * -& 1 , 4 B < J . 1 ! 0 4 B < J . 1 "  0 4 B < J . 1 " 2 4 ) * + $ 5 -' " E - " % * ' " ! 8
1 !  1 @"  . 1 " 
6 ! "# B & + * -& B , 4 B < J . 1 ! 0 4 B < J . 1 "  0 4 B < J . 1 " 2 4 ) * + $ ) " $ 8 ' * ' " ! 8 5 -' " E - " % * ' " ! 8
1 !  1 "  . 1 "
7 ! "# "8 & 1 , 4 B < J . 1 ! 0 4 B < J . 1 "2 8 $ ) 6 $ + * ' ) "9
1 !  "8 , 1 "2
8 ! "# + 5 -& " 8 1 & 1 , 4 B < J . 1 ! 0 4 B < J . 1 "  0 4 B < J . 1 " 2 4 ) * + $ 5 -' " E - " % * ' " ! 8
1 !  "8 , 1 "  2 . 1 "
9 ! "# + 5 -& 1 & " 8 1 , 4 B < J . 1 ! 0 4 B < J . 1 "  0 4 B < J . 1 " 2 4 ) * + $ 5 -' " E - " % * ' " ! 8
1 !  1 "  . "8 , 1 " 2
10 ! "# "8 % ) & 1 , 4 B < J . 1 "!  0 4 B < J . 1 "!  0 "8 ' "# 9 2 8 % ) $ + $ 8 ' 1 ) * 8 6 + * ' ) "9
"# 9   A 1 "!   1 "!  . 1 "! 
"# 9   A 1 "!   1 "!  . 1 "! 
11 ! "# "8 % ) & B , 4 B < J B "!  0 4 B < J . B "!  0 "8 ' "# 9 2 8 % ) $ + $ 8 ' B ! ' + * ' ) "9
"# 9   A B "!   B "!  . B "! 
"# 9   A B "!   B "!  . B "! 
12 ! "# % E : & B , 4 B < J . B ! 0 4 B < JJ . B "2 > ! E : "8  * ' ) "9 B !  B "
13 ! "# + 5 -& 1 & E ! 6 , ( - ! * ' . E ! 0 4 B < . 1 0 ( -! * ' . E " 2 1 )* 8 6 (! )+ $ 6 * $ % '! )
E!  1 . E"
14 ! "# ) ! N &  " 8 & 1 & + * -& 1 , ( ) * + $ . 1 " 8  0 ( ) * + $ . 1 " 8  2 4 ) * + $ 5 -' " E - " % * ' " ! 8
1 "8   1@ "8  . 1 "8 
15 ! "# ) ! N &  " 8 & B & + * -& B , ( ) * + $ . 1 " 8  0 ( ) * + $ . 1 " 8  2 4 ) * + $ ) " $ 8 ' * ' " ! 8 5 -' " E - " % * ' " ! 8
1 "8   1 "8  . 1 "8 
16 ! "# ) ! N &  "8 & ( ) * + $ & "# $ 8 ' , ( ) * + $ . 1 2 K $ ' 6 4 ) * + $ 1  # $ 8 ' + * ' ) "9
17 ! "# ) ! N &  " 8 & ) ! ' , " 8 ' ) ! ' & " # 9 0 # ! 5 N -$ / 0 ( ) * + $ . 1 2 > * -% 5 - * ' $ 6 4 ) * + $ 1
/ I * 8  -$ " 8  ) * # 
) ! @' & " # 9 " 6 @
B 1&F 0B 1&G !)B @ 1&H
18 ! " # ) ! N &  " 8 & ' ) * 8 6 , ( ) * + $ . 1 0 # ! 5 N -$ 9 0 # ! 5 N - $ : 0 # ! 5 N -$ ; 2 > * -% 5 - * ' $ 6 4 ) * + $ 1
1  , "# $ 8 ' 9 0: 0 ; 2
19 ! "# # D & ' ! & ( ) * + $ , B @ = &
O . ) # D 0 ( ) * + $ . 1 2 > * -% 5 - * ' $ 6 4 ) * + $ 1 ( ) ! +
O
E * )* + $ '$ )0 6 $ $ > D * E '$ )
20 "8 ' ) ! N &  "8 & ! "8 ' & ' ) * 8 6 , "8 ' ! "8 ' & # ! ( 2 > D $ %  6 Q $ ' D $ ) ' D $ ! "8 ' "6
) ! ' * ' "! 8 * - ! ) ' ) * 8 6 -* ' "! 8 * -?
! "8 ' & # ! ( "6 8 5 + N $ ) ! ( ! "8 '
B $ ' 5 ) 8  " ( ! " 8 ' " 6 ' ) * 8 6 -* ' " ! 8 * -
21 "8 ' ) ! N &  "8 & ! "8 ' & ) ! ' , "8 ' ! "8 ' & # ! ( 2 > D $ %  6 Q $ ' D $ ) ' D $ ! "8 ' "6
) ! ' * ' "! 8 * - ! ) ' ) * 8 6 -* ' "! 8 * -?
! "8 ' & # ! ( "6 8 5 + N $ ) ! ( ! "8 '
B $ ' 5 ) 8  "( ! "8 ' "6 ) ! ' * ' "! 8 * -
22 ( -! * ' ) ! N &  " 8 & ' ! &
J  , " 8 ' ! " 8 ' & # ! ( 2 B $ ' 5 ) 8 6    P     ?  "( ! "8 ' "6
) ! ' * ' " ! 8 * - 0 $ -6 $ 
23 ( -! * ' ) ! N &  " 8 & ' ! & B <
, " 8 ' ! " 8 ' & # ! ( 2 B $ ' 5 ) 8 6 P      ?     "( ! "8 '
" 6 ) ! ' * ' " ! 8 * - 0 $ -6 $ 

IX-20
A P I - APPLICATION PROGRAM INTERFACE

24 ( -! * ' * 6 6 6 , ( -! * ' N $ ' * 0 ( - ! * ' 6  0 ( -! * ' 6  2 1 ) " * 8  -$ > * -% 5 - * ' " ! 8 A


8 A N $ ' * 0 < 0 =
alfa
B $ '5 )8 A >

B C

gamma beta
A
25 ( -! * ' * 6 6 * , ( -! * ' N $ ' * 0 ( -! * ' 6  0 ( - ! * ' 6  2 1 ) " * 8  -$ > * -% 5 - * ' " ! 8 A
8 A N $ ' * 0 < 0 =
B $ '5 )8 A  * + + *
26 ( -! * ' * 6 6 *  , ( - ! * ' N $ ' * 0 ( -! * ' 6  0 ( -! * ' 6  2 1 ) " * 8  -$ > * -% 5 - * ' " ! 8 A
8 A N $ ' * 0 < 0 =
B $ ' 5 ) 8 A * -( *
27 ( -! * ' 6 6 6 * , ( -! * ' 6  0 ( - ! * ' 6  0 ( -! * ' 6  2 1 ) " * 8  -$ > * -% 5 - * ' " ! 8 A
8 A < 0 = 0 >
B $ ' 5 ) 8 A * -( *
28 ( -! * ' 6 * 6 6 6 * , ( -! * ' 6  0 ( -! * ' # $ -' * 0 ( -! * ' 6  0 ( -! * ' 6  0 ( -! * ' 6 2 1 ) " * 8  -$ > * -% 5 - * ' " ! 8 A
 8 A < 0 # $ -' * 0 = 0 > 0

B $ ' 5 ) 8 A * -( * 0 ! E E ! 6 " ' $ * 8  - $


C
beta alfa ()! + <
J 9 * + E -$ A
<   0 # $ -' *   0 =   0 >   0
D B

  ?
 

* -( * 
6 * 6 6 6 * , < 0 # $ -' * . B <
0 = 0 > 0
2 
gamma delta
   ?7  . B <


A
29 ( ) * + $ ." 8 / & 1 , ! " # 2 B ! N ! ' = * 6 $ ' ! 1 "E
30 ( ) * + $ ." 8 / & N 1 ' , ! " # 2 K * + $ * 6 . "8 / & 1 , 2
31 ( ) * + $ ." 8 / & N 1  , ! " # 2 B ? = * 6 $ ' !  8 ' ! (  "8 ? % D * "8
( ) * + $ ." 8 / & ' 1 Q , ! " # 2 1 ! ! - ( ) * + $ A B ! N ! ' 1 "E ' ! 1 > P
 

32
, Q "6 Q ) "6 ' 2
( - ! * ' ." 8 / & / & 6 ! - 5 ' , ! " # 2
$ 6 ") $ # 8 ' * 9 "6 * -5 $ 6
 

33
34 ( - ! * ' ." 8 / & & 6 ! - 5 ' , ! " # 2
$ 6 " ) $ # ! " 8 ' 6 E $ $ # * -5 $ 6
35 ( - ! * ' ." 8 / & * & 6 ! - 5 ' , ! " # 2
$ 6 ") $ # ! "8 ' * % % $ - * -5 $ 6
36 ( ) * + $ ." 8 / & N 1 Q , ! " # 2 B ! N ! ' = * 6 $ '! 1 > P
37 ( ) * + $ ." 8 / & " 1 N , ! " # 2 ! ) -# ' ! ) ! N ! ' N * 6 $
( ) * + $ ." 8 / & " 1 N & 6 ' ) ' , ! " # 2 K ' * ) ' ( ) * + $ A Q ! ) -# ' ! ) ! N ! ' N * 6 $


38 

! ' $ A D $ 8 B 5 8 * 6 " + 5 -* ' "! 8 0


' D $ ) ! N ! ' Q " -- 5 + E ' ! "6 ' 6 ' * ) '
  

-! % * ' " ! 8 0 6 5 % D * 6 ' D $


' ) * 8 6 ( ! ) + ' * ' "! 8 . "8 / & "1 N , 2
39 # ! 5 N -$ ) ! N &  " 8 & * ' * 8  , # ! 5 N - $ 0 # ! 5 N -$ 2 * ' D ( 5 8 % ' "! 8 * ' * 8 
40 ! "# ) ! N &  "8 & 6 $ ' & Q * ) 8 "8  6 , "8 ' Q * ) 8 & "# 9 2 K $ ' * ) 8 "8  ( ! ) * -- ) ! N ! '
% ! 8 ( " 5 ) * ' "! 8 6


Q * ) 8 & "# 9@ A L
<B & M


<B &K < B




  

IX-21
9 A P I - APPLICATION PROGRAM INTERFACE

 

< B & M B J < > O


<B &>@4 L


 

< B & & J  J3  J J




   

<B &K & F>

! "# ) ! N &  "8 & 5 6 $ ) & + 6  , % D * ) . 6 2 K * $ 6 * + $ 6 6 *  $ "8 ' D $


 

41
+ ! 8 " ' ! ) " 8  ( " -$
moni_msg.dat
42 "8 ' ) ! N &  "8 & ! ) ' ) * 8 6 , ( ) * + $ . 1 2 > * -% 5 - * ' $ ( ! ) Q * ) #  " 8 $ + * ' " %
1 "6 ) ! N ! ' N * 6 $ ' ! 1 "E ?
, ) ! N ! ' N * 6 $ ' ! 1 > P " 6 * -6 !
% * -% 5 - * ' $ # 0 . " 8 / & N 1 Q , 2 2
43 " 8 ' ) ! N &  " 8 & / & " 8 & ' ) * $ - & ) * 8  $ , ( -! * ' . / 2 ( ' D $ ) ! N ! ' ! "8 ' "6 ) ! ' * ' "! 8 * -0
' D "6 ) ! 5 ' "8 $ + *  $ 6 6 5 ) $ ' D * ' . /
* ) $ Q "' D "8  I P  0 P 
44 "8 ' ) ! N &  "8 & "8 , ( ) * + $ . N 1 ' 2 > * -% 5 - * ' $ 6 ' D $ " 8 $ ) 6 $
 "8 $ + * ' "% 6 ! -5 ' "! 8 ( ! ) % 5 ) ) $ 8 '
-! * # $ # ) ! N ! ' ?
N 1 ' A ) ! N ! ' N * 6 $ ' ! 1 "E
B $ 6 5 -' A . " 8 / & / & 6 ! - 5 ' , 2


! '$ A
1 D $ 5 6 $ ) # $ ( "8 $ # "8 $ ) 6 $
 "8 $ + * ' "% 6 ! -5 ' "! 8 , < P I  3 2 "6 

%M * - -$ # " 6 6 E $ % " ( " $ # ?


45 # ! 5 N - $ ." 8 / & * % D 6 & - $ 8  ' D , ! " # 2 8 " $ ) 6 * - > ! ! ) # "8 * ' $ 6 A


$ 8  ' D "8 H I # ") $ % ' "! 8


6 $ $ $ 9 * + E - $ ( " -$
inv_user.cpp
"M 8 ' " 8 &  " 8 & 5 6 $ ) &  , ( ) * + $ . N 1 ' 2
46 # ! 5 N - $ ." 8 / & * % D 6 & ! ( ( 6 $ ' 6  , ! " # 2 @ 8( ( " 6 $ $ ' ) 6  * 0 - - $ > 8 !  ! ' )D # " " 8 8 * F ' $ I # 6 " A ) $ % ' " ! 8
# ! 5 N - $ ." 8 / & * % D 6 & ! ( ( 6 $ ' 6  , ! " # 2 M 8 " $ ) 6 * - > ! ! ) # "8 * ' $ 6 A
47 @ ( ( 6 $ '  0 -$ 8  ' D " 8 G I # " ) $ % ' " ! 8
48 # ! 5 N - $ ." 8 / & * % D 6 & ) ! ' 9 , ! " # 2 M 8 " $ ) 6 * - > ! ! ) # "8 * ' $ 6 A
BM ! ' * ' " ! 8 * N ! 5 ' F* 9 " 6
49 # ! 5 N - $ ." 8 / & * % D 6 & ) ! ' : , ! " # 2 8 " $ ) 6 * - > ! ! ) # "8 * ' $ 6 A
50 # ! 5 N - $ ." 8 / & * % D 6 & ) ! ' ; , ! " # 2 MB !8 '" * $ ' " )! 6 8 * *- >N !! 5! ' ) # G" 8 * * 9 ' $ " 6 6 A
51 ( ) * + $ ." 8 / & * % D 6 & 1 , ! " # 2 MB !8 '" * $ ' " )! 6 8 * *- >N !! !5 ' ) # H " 8 * * 9 ' $" 6 6 * 8 #
O A
1 ) * 8 6 ( ! ) + * ' "! 8 ( ) ! + ! "8 ' 8 ' !
J! " 8 ' 8  A
9 * + E -$ A
( ) * + $ . 1   "8 / & * % D 6 & 1 , 2   

"6 ' ) * 8 6 ( ! ) + * ' "! 8 ( ) ! + ! "8 '  ' !


! "8 ' 7
52 # ! 5 N - $ ." 8 / & 6 " 8  & ' ! - , ! " # 2 K "8  5 -* ) "' : ' ! ! -
53 # ! 5 N - $ ." 8 / & ! " 8 ' & ! ( ( 6 $ ' , ! " # 2 ! "8 ' ! ( ( 6 $ '
( - ! * ' ." 8 / & / , " 8 ' 6 ! - 8 2 P ! "8 ' $ ) ' ! ! 8 $ 6 $ ' ! ( 6 ! -5 ' "! 8


54
* 8  - $ 6 % * -% 5 - * ' $ 6 N : ' D $
"8 $ ) 6 $  "8 $ + * ' "% 6
6J ! - 8 A % ! 8 ( "  5 ) * ' " ! 8 8 5 + N $ )
9 * + E -$ A
( -! * ' . /  " 8 / & / ,  2
6 ! -5 ' " ! 8 * - 5 $ 6 ( ! ) ' D $ ! " 8 ' 
% ! 8 ( " 5 ) * ' "! 8
 

55 " 8 ' ." 8 / & Q * ) 8 " 8  6 , ! " # 2 * ) 8 "8 


"8 ' . Q * ) 8 "8  6  "8 / & Q * ) 8 "8  6 , 2


6 $ $ ! "# ) ! N &  "8 & 6 $ ' & Q * ) 8 "8  6

IX-22
A P I - APPLICATION PROGRAM INTERFACE

56 " 8 ' ." 8 / & $ ) E ! - ' , ! " # 2 ! "8 ' 6 " 8


" 8 ' . 6 "  8  " 8 / @ & $ ) E ! -' , 2


57 "8 ' "8 / & 8 5 + & # ! ( 6 , ! "# 2 

5+ N$)!(
4
58 "8 ' "8 / & 8 5 + & E * 6 6 " & 8 ' 6 , ! "# 2 

5 + N $ ) ! ( E * 6 6 " $ 8 '?
"8 ' "8 / & 8 5 + & % ! 8 ( " 6 , ! "# 2 5 + N $ ) ! ( % ! 8 ( " 5 ) * ' "! 8


59
60 "8 ' "8 / & % ! 8 ( " , ! "# 2 > 5 ) ) $ 8 ' B ! N ! ' > ! 8 ( " 5 ) * ' "! 8


5+ N$)


! '$ A
 % ! 8 ( " 5 ) * ' "! 8 ) $ ' 5 ) 8 
B @ = &
O ." 8 / & ) ! N & # D & * % ' " , ! " # 2
@O L " 8 $ + * ' " % 6
 

61
B =&
O
.J # D  " 8 / & ) ! N & # D & * % ' " , 2
9 * + E -$ A
< % % $ 6 6 '!
O E * )* + $ '$ ) ! ( 'D $
( ") 6 ' ' * % ' " $ ! "8 ' A

D   ?' D $ ' * 0
D   ?#

D    ? * 0
D    ? * -( *
62 B @ = &
O ." 8 / & ) ! N & # D  & E * 6 6 " , ! " # 2
O L "8 $ + * ' "% 6
* % % $ 6 6 '! 'D $
O E * )* + $ '$ )
( ) ! + ' D $ E * 6 6 " $ ! "8 ' ?
1 ) * 8 6 ( ! ) + * ' "! 8 ( ) ! + ' D $
! @" 8 ' ' D $ ?
   

B = &
O .)# D  
       
  

, "8 / & ) ! N & # D  & E * 6 6 " , 2 E * 6 6 "


$J & ! " 8 ' & 8 !  2
9 * + E -$ A
)# D  I 'D $ '* 0 )# D  I #
) # D  L I * 0 ) # D  I * -( *

B @ = &
O ." 8 / & ) ! N & # D & E * 6 6 " , ! " # 2
O "8 $ + * ' "% 6

63
* % % $ 6 6 '! 'D $
O E * )* + $ '$ )
( ) ! + ' D $ E * 6 6 " $ ! "8 ' ?
1 ) * 8 6 ( ! ) + * ' "! 8 ( ) ! + ' D $
'D $ ! "8 ' ?
B @ = &
O .)# D 
     
     

, "8 / & ) ! N & # D & E * 6 6 " , 2 E * 6 6 " $


&J ! " 8 ' & 8 !  2
9 * + E -$ A
)# D I 'D $ '* 0 )# D I #
) # D I * 0 ) # D I * -( *

( - ! * ' ." 8 / & D ! + $ E ! 6 , ! " # 2 B ! N ! ' < ' ' ) "N 5 ' $ 6 A

64
O ! + $ E ! 6 "' "! 8
65 ( - ! * ' ." 8 / & 6 Q $ & + * 9 , ! " # 2 B ! N ! ' < ' ' ) " N 5 ' $J 6 A
* 9 ! "8 ' K
K ! ( ' Q * ) $ J 8 # 6 Q "' % D
 

66 ( -! * ' . " 8 / & 6 Q $ & + " 8 , ! " # 2 B ! N ! ' < ' ' ) " N 5 'J $ 6 A
"8 ! "8 ' K
K ! ( ' Q * ) $ J 8 # 6 Q "' % D
 

67 ( -! * ' . " 8 / & & + * 9 , ! " # 2 B ! N ! ' < ' ' ) "N 5 ' $ 6 A
* 9 ! " 8 ' 3 $ -! % " ' :
( -! * ' . " 8 / & * & + * 9 , ! " # 2 B ! N ! ' < ' ' ) "N 5 ' $ 6 A


68
* 9 ! " 8 ' < % % $ -$ ) * ' " ! 8
( -! * ' . " 8 / & ' & + * 9 , ! " # 2 B ! N ! ' < ' ' ) "N 5 ' $ 6 A


69
* 9 ! "8 ' 1 ! ) / 5 $ 6
% D * ) ." 8 / & ) ! N ! ' 8 * + $ , ! " # 2 B ! N ! ' < ' ' ) "N 5 ' $ 6 A


70
B!N!'8*+ $
71 % D * ) ." 8 / &  " 8 & # " ) $ % ' " ! 8 & * % ' " , ! " # 2
J " ) $ % ' " ! 8 ! ( * % ' " $ 8 ' ?
9 * + E -$ A H H H H F
B ! N ! ' D * 6  ! "8 ' 0 ! "8 '  I "8 H I
 

IX-23
9 A P I - APPLICATION PROGRAM INTERFACE

# ") $ % ' "! 8 0 ! "8 '  "6 "8 F I # ") $ % ' "! 8
6L $ $ " 8 / &  " 8 & ' : E $ & * % ' " , ! " # 2
72 % D * ) ." 8 / &  " 8 & ' : E $ & * % ' " , ! " # 2 J 9" 8 * $ + + E * - $' " % A 6 1 ' : 1 E 1 $ B ! B ( * % ' " $ 8 ' ?
B ! N ! ' D * 6  ! "8 ' 0 ! "8 '  I  * ) $
 

1 ) * 8 6 -* ' "! 8 * -0 ! "8 ' * 8 #  * ) $


B ! ' * ' "! 8 * -
6$$ A
"L 8 / &  " 8 & # " ) $ % ' " ! 8 & * % ' " , ! " # 2
73 "8 ' . "8 / &  "8 & "# , ! "# 2 "8 $ + * ' "% 6 "# $ 8 ' "( "% * ' "! 8 ?
74 ( - ! * ' ." 8 / & N # 9 Q , ! " # 2 > * ) ' $ 6 "* 8 E ! 6 "' "! 8 $ ) ) ! ) 0 1 > P
Q ?) ?' ? ) ! N ! ' N * 6 $
75 ( - ! * ' ." 8 / & # / , ! " # 2 ! "8 ' E ! 6 "' "! 8 $ ) ) ! )
76 % D * ) ." 8 / &  " 8 & # " ) $ % ' " ! 8 & E * 6 6 " , ! " # 2
") $ % ' "! 8 ! ( P * 6 6 " $ ! "8 '
6*+ $ *6
"8 / &  "8 & # ") $ % ' "! 8 & * % ' " , ! "# 2 0
N 5 ' ( ! ) E * 6 6 " $ ! "8 ' 6
77 % D * ) ." 8 / &  " 8 & ' : E $ & E * 6 6 " , ! " # 2 6*+ $ *6
"8 / &  "8 & ' : E $ & * % ' " , ! "# 2 0 N 5 ' ( ! )
EL * 6 6 " $ ! " 8 ' 6
78 % D * ) ." 8 / &  " 8 & % D * " 8 & ' : E $ , ! " # 2 J 9" 8 * $ + + E * - $' " % A 6 > > & DI * " 8 1 : E $
B ! N ! ' D * 6  E * 6 6 " $ ! "8 ' 6
 

 8 ' ? "6 "8 ' D $  "8 $ + * ' "% % D * "8


 8 ' ? "6 @ 1 "8 ' D $  "8 ? % @D * "8
  

 8 ' ? "6 6 $ E * ) * ' $ # * 8 # 1 "8




 

' D $  "8 ? % D * "8




79 % D * ) ." 8 / &  " 8 & % * - % , " 8 ' E * 6 6 " & 8 ' & 8 ! 2 K ' ) "8  ( ! ) + * ' D ?
$ E $ 8 # $ 8 % :
( 5 8 % ' "! 8
80 " 8 ' ." 8 / &  " 8 & * ' ' * % D & # ! ( , ! " # 2 < ''* % D + $ 8 ' 8 5 + N $ ) (! ) E * 6 6 " $
! "8 ' ?
"8 ' .  "8 & * ' ' & # ! ( 
"8 / &  "8 & * ' ' * % D & # ! ( , 2
 "8 & * ' ' & # ! (   "6 ' D $ * ' ' * % D + $ 8 '
8M 5 + N $ ) ! ( ' D $ ( " ) 6 ' E * 6 6 " $ ! " 8 '
81 ( ) * + $ ." 8 / &  " 8 & * % D 6 & 1  & E * 6 6 " , " 8 ' E * 6 6 " & 8 ' & 8 ! 2 8 " $ ) 6 * - > ! ! ) # "8 * ' $ 6
* % % $ 6 6 ' ! ' D $ 1 ) * 8 6 ( ! ) + * ' "! 8
( ) ! + ' D $ ! "8 ' ' D $
?
     

KM $ $ " 8 / & ) ! N & # D  & E * 6 6 " , 2


     
  

82 ( ) * + $ ." 8 / &  " 8 & * % D 6 & 1 & E * 6 6 " , " 8 ' E * 6 6 " & 8 ' & 8 ! 2 8 " $ ) 6 * - > ! ! ) # "8 * ' $ 6
* % % $ 6 6 ' ! ' D $ 1 ) * 8 6 ( ! ) + * ' "! 8
()! + 'D $ 'D $
! "8 ' ?
     
    

K $ $ "8 / & ) ! N & # D & E * 6 6 " , 2




83 ( ) * + $ ." 8 / &  " 8 & 1 & E * 6 6 " , " 8 ' E * 6 6 " & 8 ' & 8 ! 2 1 $ + E ! )* ): ()* + $ 5 6 $ # '!
% * -% 5 - * ' $ ' D $  " 8 $ + * ' " % % D * " 8
84 "8 ' + ! 8 "& + 6  , % D * ) . ( + ' 0 ? ? ? 2 K * $ 6 * + $ 6 6 *  $ "8 ' ! ' D $
+ ! 8 " ' ! ) " 8  ( " -$
moni_msg.dat
J 9 * + E -$ A
+ ! 8 "& + 6  , C + 6   #  6 C 0  

8 & + 6  0 C % * -- + : ( 5 8 % ' "! 8 C 2


85 ! "# + ! 8 "& 1 , % D * ) . 6 0( ) * + $ . 1 2 K * $ 6 * 4 ) * + $ "8 ' ! ' D $
+ ! 8 " ' ! ) " 8  ( " -$
moni_msg.dat
86 ! " # + ! 8 " & , % D * ) . 6 0 ( - ! * ' . 0 " 8 ' 8 0 ( -! * ' 6 % * - 2 K * $ 6 * ( -! * ' $ % ' ! ) " 8 ' ! ' D $
+ ! 8 " ' ! ) " 8  ( " -$

IX-24
A P I - APPLICATION PROGRAM INTERFACE

J 9 * + E -$
moni_msg.dat

+ ! 8 "& , C ' 9 ' C 0 0 8 0


J  2
87 ! " # + ! 8 " & - , % D * ) . 6 0 # ! 5 N -$ . 0 " 8 ' 8 0 ( -! * ' 6 % * - 2 K * $ 6 * # ! 5 N -$ $ % ' ! ) " 8 ' ! ' D $
+ ! 8 " ' ! ) " 8  ( " -$
J 9 * + E -$
moni_msg.dat

+ ! 8 "& - , C ' 9 ' C 0 0 8 0


J  2
88 ! "# + ! 8 "& " , % D * ) . 6 0 "8 ' . 0 "8 ' 8 2 K * $ 6 * 8 "8 ' $ % ' ! ) "8 ' ! ' D $
+ ! 8 " ' ! ) " 8  ( " -$
J 9 * + E -$
moni_msg.dat

+ ! 8 "& ", C ' 9 ' C 0 " 0 8 2


89 ! "# + ! 8 "& 6 , % D * ) . 6 0 6 D ! ) ' . 0 " 8 ' 8 2 K * $ 6 * 6 D ! ) ' $ % ' ! ) "8 ' ! ' D $
+ ! 8 " ' ! ) " 8  ( " -$
moni_msg.dat
J 9 * + E -$
+ ! 8 "& 6 , C ' 9 J ' C 0 6 0 8 2
90 ! "# J ) ) ! ) J 9 "' = ! 9 , % D * ) . 6 2 $ 6 6 *  $ ) ) ! ) = ! 9 Q " -- % ! + $ 5 E
91 ! "# 6  = ! 9 , % D * ) . 6 2 $ 6 6 *  $ = ! 9 Q "-- % ! + $ 5 E
92 ! " # & " 8 ( ! & - " 8 $ , " 8 ' % ! -! ) 0 % D * ) . 6 2 8 ( ! ) + * ' "! 8 "8 $ 6 $ $ 8 "8 ' D $


+ $ 6 6 *  $ Q "8 # ! Q
93 # ! 5 N -$ . " 8 / & 5 8 " & ' ) * 8 6 & ' ! -& ) * # , ! " # 2 

5 + $ ) " % * - K ! -5 ' " ! 8 A


1 ! -$ ) * 8 % $ ( ! ) B ! ' * ' " ! 8
94 # ! 5 N -$ . " 8 / & 5 8 " & ' ) * 8 6 & ' ! -& + , ! " # 2 

5 + $ ) " % * - K ! -5 ' " ! 8 A


1 ! -$ ) * 8 % $ ( ! ) 1 ) * 8 6 -* ' " ! 8
95 "8 ' . "8 / & 5 8 " & ' ) * 8 6 & " -" + "' , ! "# 2 

5 + $ ) " % * - K ! -5 ' " ! 8 A




5 + N $ ) ! ( ' $ ) * ' "! 8 6


96 # ! 5 N -$ . " 8 / & 5 8 " & ' ) * 8 6 & + * 6  , ! " # 2 

5 + $ ) " % * - K ! -5 ' " ! 8 A


* 6  $ % '! )
97 # ! 5 N -$ . " 8 / & 5 8 " & ' ) * 8 6 & Q $ "  D ' , ! " # 2 

5 + $ ) " % * - K ! -5 ' " ! 8 A


! "8 ' Q $ " D ' $ % ' ! )
( ) * + $ . . "8 / & 5 8 " & ' ) * 8 6 & 1 , ! "# 2 5 + $ ) " % * - K ! -5 ' " ! 8 A


98
1 * )  $ ' -! % * ' " ! 8 0 ) ! N ! ' N * 6 $ ' !
1 "E

Table 3. Dynamics

Nr. Name
      
 of

  the
     Function
 Description
     
 
      
      
   
                       
       
   
                    
       
   
                   
      
   
 
     

      
   
             
      
   
              
       
   
             
       
   
     
      
   
      
       
    
     
      
    

       

IX-25
9 A P I - APPLICATION PROGRAM INTERFACE



     
    
      
 
    
   
       
 
    

       
 
    

     






    
    
    
    
    

 
    

     
 
    
    
 
    
     

      

      
      

       



    
    
    


       


       
 

       

Table 4. Motion Planer

Nr. Name
       
of
 
 the
 
Function
      Description
      
 
  
      
     
 
  
     
      
 
  
      
      
 
  
      
     
 
  
     

     
 
  
      
     
 
  
      
      
 
  
     

          
 
 
 


   
 
  
     
   
 
  
 
      

   
               




 
 
  
  
 
        


  
 
  

 
        
   
 
  

       
     
 
  

      
     
 
  
  
    
          
         

             


     
 
  
  
    
     
 
  
     
      
 
  
  
     
      
 
  
  
     
      
 
  
   
     




        
 
  
    
     
     
 
  
     

  
 
   
 
        
     
 
   
        
      

    
      
 
   
        

     
 
   
 
      
      
 
   
  
              
      
 
   
 
             
    
 
   
 

                  

IX-26
A P I - APPLICATION PROGRAM INTERFACE

 
     
 
   
 
    
     
 
   
 
    



     
 
   
 
     
     
 
   
 
     
    
    
                           
                   
 
             

Table 5. Tag


Nr. Name
     
 of

  the

  Function

  
      Description
          




 
 
 

 
 

  

       
 

  

  
      
 

  
       


  
     
    

  
   
      
       
        
              
        
          

   

  
   
              
    

  
   
   
               
     

  
  
              
      

  
   
                
   

  
   
                


     

  
   
     
      
        
     
                                 

            
         
        



  
   

  
       
     

  
        
    

  
        
 
         
     





    

  
       
    

  
   
         
  


  
     
  


  
  
     
     
       
          
          

IX-27
9 A P I - APPLICATION PROGRAM INTERFACE


Table 6. Collision

Nr. Name
      
 of
  
 the
 
   Function
          Description
        
    
                    
   
   
                    
    
    
                

 
Table 6. Stop On

Nr. Name
     
 of
  
the
    Function
   Description
     
   
   
                      


   
   
                      


IX-28

Vous aimerez peut-être aussi