Sie sind auf Seite 1von 31

EASY-ROB™ Februar 2011

Version: V1.3

API-Dokumentation

Standarddialoge

• int dialog_save_file (char *name,char *txt)


Zeigt einen Dialog an der es dem Anwender ermöglicht einen Dateinamen anzugeben. Die Eingabe
des Anwenders wird in name abgelegt.
In name kann ein Dateiname vorgegeben werden, mit txt wird der Text im Titelbalken des Dialogs
angegeben.
Rückgabewert: 0 ⇒ Anwender hat "Ok" gewählt
1 ⇒ Anwender hat "Abbrechen" gewählt

• int dialog_get_file (char *fln, char *txt)


Rückgabewert: 1 ⇒ Anwender hat "Ok" gewählt
-1 ⇒ Anwender hat "Abbrechen" gewählt

• int dialog_edit_file (char *fln)


Die über den Parameter fln angegebene Datei wird im eingestellten Standardeditor geöffnet der in
der Datei config.dat eingestellt ist.
Rückgabewert: 1 ⇒ Anwender hat "Ok" gewählt
-1 ⇒ Anwender hat "Abbrechen" gewählt

• int dialog_select (char *title,int n,int n_strt,char **w)


Zeigt einen Auswahldialog an. In title wird der Fenstertitel angegeben, n gibt die Anzahl der
Einträge an, n_strt gibt das ausgewählte Startelement an und w zeigt auf ein char-Array welches
die Texte für die einzelnen Einträge enthält.
Rückgabewert: 0 bis n ⇒ Vom Anwender ausgewählter Eintrag (wenn mit ok bestätigt)
-1 ⇒ Anwender hat "Abbrechen" gewählt

• int dialog_values (char *title,int n,char **ww,float *v,float *vmin,float *vmax)


Zeigt einen Dialog zur Eingabe mehrerer benannter Zahlenwerten an.
Im Parameter title wird der Fenstertitel angegeben, mit n wird die Anzahl der Einträge (Anzahl
einzugebender Zahlenwerte) festgelegt, ww zeigt auf ein Array von chars welches die
Beschriftungstexte für die einzugebenden Werte enthält.
v, vmin und vmax zeigen jeweils auf ein Float-Array welches für jeden der n anzugebenden
Zahlenwerte den Vorgabewert (v), den Minimalwert (vmin) und den Maximalwert (vmax) enthält.
Die vom Anwender gemachten Einträge werden direkt in das Array v geschrieben.
Rückgabewert: 1 ⇒ Anwender hat "Ok" gewählt
-1 ⇒ Anwender hat "Abbrechen" gewählt

• int dialog_string (char *title,int n,char **ww,char **v,int len)


Zeigt einen Dialog zur Eingabe mehrerer benannter Zeichenfolgen an.
Im Parameter title wird der Fenstertitel angegeben, mit n wird die Anzahl der Einträge (Anzahl
einzugebender Zeichenfolgen) festgelegt, ww zeigt auf ein Array von chars welches die
Beschriftungstexte für die einzugebenden Werte enthält.
v zeigt auf ein Array von chars welches Vorgabewerte für die Eingabe enthält, bzw. nach
Bestätigung durch den Anwender mit ok dessen Eingaben enthält. len gibt die maximale Länge des
Strings an.
Rückgabewert: 1 ⇒ Anwender hat "Ok" gewählt
Technische Änderungen und Verbesserungen sind vorbehalten

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
-1 ⇒ Anwender hat "Abbrechen" gewählt

• int dialog_frame (char *title,frame *T)


Zeigt einen Dialog in dem der Anwender die Daten des angegebenen Frames eingeben bzw.
editieren kann.
Im Parameter title wird der Fenstertitel angegeben.
Rückgabewert: 1 ⇒ Anwender hat "Ok" gewählt
-1 ⇒ Anwender hat "Abbrechen" gewählt

• int dialog_frame_ex (char *title,frame *T,int grfupdate,void (*callback_fct) (void *vptr)


,void *vptr)
Erweiterung der Funktion dialog_frame
grfupdate: 1 ⇒ Im FrameDialog ist die Schaltfläche GrfUpdate verfügbar
0 ⇒ Im FrameDialog ist die Schaltfläche GrfUpdate nicht verfügbar
callback_fct: ⇒ Zeiger auf eine benutzerdefinierte Funktion, die beim GrfUpdate
aufgerufen wird.
vptr: ⇒ Zeiger auf Datenstruktur, der der Callbackfunktion übergeben wird.
Rückgabewert: 1 ⇒ Anwender hat "Ok" gewählt
-1 ⇒ Anwender hat "Abbrechen" gewählt

• int dialog_yes_no (char *title)


Zeigt einen "Ja / Nein" Dialog mit dem angegebenen Titel an.
Rückgabewert: 0 ⇒ Nein gewählt
1 ⇒ Ja gewählt

• int *inq_modified_cell (void)


Gibt an ob die aktuell geladene Zelle bearbeitet wurde.
Rückgabewert: 0 ⇒ Nein, die Zelle befindet sich im Originalzustand
1 ⇒ Ja, die Zelle wurde verändert

• int chk_limits (int idx)


Prüft den durch idx angegebenen Wert auf Wertebereichsüberschreitung.
Werte für idx: AUX_UPDATE_IDX_SWE_EXCEEDED
AUX_UPDATE_IDX_SPEED_EXCEEDED
AUX_UPDATE_IDX_ACCEL_EXCEEDED
AUX_UPDATE_IDX_COLLISION
Rückgabewert: 0 ⇒ keine Wertebereichsüberschreitung
1 ⇒ Wertebereichsüberschreitung

• int get_warning_msg (int aux_update_idx,char *msg)


tbd

• int er_vad_data_commandline (char *cmdline)


tbd

• char *er_vad_data_get_commandline (void)


Gibt im angegebenen Char die Aufrufparameter zurück mit denen EASY-ROB™ gestartet wurde.

• int er_vad_CloseApplication (int confirm=0)


Beendet die EASY-ROB™ Anwendung.
Wenn für confirm 0 angegeben wurde, wird die Anwendung sofort und ohne Rückfragen
geschlossen. Wird 1 angegeben, wird der Anwender aufgefordert das Beenden der Anwendung zu
bestätigen.

Technische Änderungen und Verbesserungen sind vorbehalten 2/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• int er_vad_ChkAnimExec (int confirm=0)
Prüft ob gegenwärtig ein Programm, ERPL oder ERCL Befehl ausgeführt wird.
confirm 1 ⇒ Der Anwender muss die Meldung “Abort current Animation first“ bestätigen
Rückgabewert: 0 ⇒ gegenwärtig keine Programmausführung
1 ⇒ es wird gegenwärtig ein Programm ausgeführt

• int er_vad_MenuRunProgram (char *prgline=NULL)


Startet die Ausführung des gegenwärtig aktiven Programms, wenn prgline = NULL ist. Alternativ
kann prgline einen ERPL oder ERCL Befehl enthalten, der dann im Einzelschritt ausgeführt wird.
Rückgabewert: 0 ⇒ Programm oder Einzelsatzbefehl erfolgreich gestartet
1 ⇒ Programm oder Einzelsatzbefehl konnte nicht gestartet werden.

• int er_vad_MenuStopContRunProgram (void)


Entspricht der Funktion des Pause-Buttons.
Wenn gerade ein Programm oder Einzelsatzbefehl ausgeführt wird, führt dieser Funktionsaufruf zu
einer Ausführungspause. Ein erneuter Aufruf der Funktion setzt die Ausführung des Programms
wieder fort.
Rückgabewert: 0 ⇒ Ok

• int er_vad_MenuAbortRunProgram (void)


Stoppt die laufende Ausführung des aktuellen Programms oder des Einzelsatzbefehls.
Rückgabewert: 0 ⇒ Ok

• int er_vad_DataLoadCell (void)


Öffnet einen Dialog zum Laden einer Arbeitszellen-Datei.
Rückgabewert: 0 ⇒ Ok
1 ⇒ Error

• int er_vad_DataLoadRobot (void)


Öffnet einen Dialog zum Laden einer Roboter-Datei.
Rückgabewert: 0 ⇒ Ok
1 ⇒ Error

• int er_vad_DataLoadTool (void)


Öffnet einen Dialog zum Laden einer Werkzeug-Datei.
Rückgabewert: 0 ⇒ Ok
1 ⇒ Error

• int er_vad_DataLoadProgram (void)


Öffnet einen Dialog zum Laden einer Programm-Datei.
Rückgabewert: 0 ⇒ Ok
1 ⇒ Error

• int er_vad_DataLoadMimic (void)


Öffnet einen Dialog zum Laden einer Mimic-Datei.
Rückgabewert: 0 ⇒ Ok
1 ⇒ Error

• int er_vad_DataLoadCamera (void)


Öffnet einen Dialog zum Laden einer Kamera-Datei.
Rückgabewert: 0 ⇒ Ok

Technische Änderungen und Verbesserungen sind vorbehalten 3/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
1 ⇒ Error

• int er_vad_DataLoadAuto (char *fln)


Lädt die im Parameter angegebene Datei entsprechend des durch die Dateiendung spezifizierten
Typs.
Rückgabewert: 0 ⇒ Laden der Datei war erfolgreich
1 ⇒ Error

• int er_vad_DataSaveCell (void)


Öffnet einen Dialog zum Speichern der aktuellen Arbeitszellen-Datei.

• int er_vad_DataSaveRobot (void)


Öffnet einen Dialog zum Speichern der aktuellen Roboter-Datei.

• int er_vad_DataSaveTool (void)


Öffnet einen Dialog zum Speichern der aktuellen Werkzeug-Datei.

• int er_vad_ChkRobotCellLoaded (int confirm=0)


Prüft ob aktuell eine Roboter- oder Arbeitszellen-Datei geladen ist.
Rückgabewert: 0 ⇒ Es ist eine Roboter- bzw. Arbeitszellen-Datei geladen
1 ⇒ Es ist keine solche Datei geladen

• int er_vad_ChkBodysCellLoaded (int confirm=0)


Prüft ob aktuell eine Bodys- oder Arbeitszellen-Datei geladen ist.
Rückgabewert: 0 ⇒ Es ist eine Bodys- bzw. Arbeitszellen-Datei geladen
1 ⇒ Es ist keine solche Datei geladen

• int er_vad_ChkToolRobotLoaded (int confirm=0)


Prüft ob aktuell eine Roboter- oder Arbeitszellen-Datei geladen ist.
Rückgabewert: 0 ⇒ Es ist eine Roboter- bzw. Arbeitszellen-Datei geladen
1 ⇒ Es ist keine solche Datei geladen

• int er_vad_ChkTagsLoaded (int confirm=0)


Prüft ob aktuell eine Tag-Datei geladen ist.
Rückgabewert: 0 ⇒ Es ist eine Tag-Datei geladen
1 ⇒ Es ist keine solche Datei geladen

• int er_vad_ChkPrgLoaded (int confirm=0)


Prüft ob aktuell eine Programm-Datei geladen ist.
Rückgabewert: 0 ⇒ Es ist eine Tag-Datei geladen
1 ⇒ Es ist keine solche Datei geladen

• int er_vad_ChkPrgMimicLoaded (int confirm=0)


Prüft ob aktuell eine Programm- oder Mimic-Datei geladen ist.
Rückgabewert: 0 ⇒ Es ist eine Programm- bzw Mimic-Datei geladen
1 ⇒ Es ist keine solche Datei geladen

• int er_vad_ChkPrgRunning (int confirm=0)


Prüft ob gegenwärtig ein Programm oder Einzelsatzbefehl ausgeführt wird.
Rückgabewert: 0 ⇒ gegenwärtig keine Programmausführung
1 ⇒ es wird gegenwärtig ein Programm ausgeführt

• int er_vad_GetPrgId (void)

Technische Änderungen und Verbesserungen sind vorbehalten 4/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
Rückgabewert: ID des Programm-Interpreters
0 ⇒ ERPL, ERCL
1 ⇒ b+m T1
2 ⇒ KOBELCO
3 ⇒ TRICEPT-NC
4 ⇒ NC-Simulation
5 ⇒ NC-Immersive

• int er_vad_SetPrgId (int PrgId)


Setzt die ID des Programm-Interpreters, siehe Funktion er_vad_GetPrgId()

• char *er_vad_GetPrgfile (void)


Gibt den vollständigen Pfad und Dateinamen der aktuell geladenen Programm-Datei zurück.

• char *er_vad_GetPrgMimicfile (void)


Gibt den vollständigen Pfad und Dateinamen der aktuell geladenen Mimic-Datei zurück.

• char *er_vad_GetCellfile (void)


Gibt den vollständigen Pfad und Dateinamen der aktuell geladenen Arbeitszellen-Datei zurück.

• int er_vad_ChkErcCmd (char *cmd)


Prüft ob es sich bei dem Befehl „cmd“ um ein ERCL Sprachbefehl handelt

Technische Änderungen und Verbesserungen sind vorbehalten 5/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
Kamera Funktionen

• int inq_camera_enable (void)


Prüft ob die Kamera eingeschaltet ist.
Rückgabewert: 0 ⇒ Kamera ausgeschaltet
1 ⇒ Kamera eingeschaltet

• int camera_enable (int enable)


Aktiviert bzw. deaktiviert die Kamera.
enable: 0 ⇒ Kamera wird deaktiviert
1 ⇒ Kamera wird aktiviert

• char *inq_camera_name (void)


Gibt den Namen der Kamera zurück.

• int camera_name (char *name)


Setzt den Namen der Kamera

• float inq_camera_focus (void)


Gibt den Focuswert der Kamera zurück.

• int camera_focus (float focus)


Setzt den Focuswert der Kamera auf den übergebenen Wert.

• float inq_camera_z_offset (void)


Gibt den Z-offset-Wert der Kamera zurück.

• int camera_z_offset (float z_offset)


Setzt den Z-offset-Wert der Kamera auf den übergebenen Wert.

• frame *inq_camera_position (void)


Gibt die Kameraposition und Orientierung als Frame zurück.

• int camera_position (float *pos=NULL)


Setzt die Kameraposition und Orientierung entsprechend dem übergebenen Frame.

Technische Änderungen und Verbesserungen sind vorbehalten 6/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
ERC ON/OFF Befehle

• int er_vad_erc_onoff (int idx,int enable)


Aktiviert oder deaktiviert die gewählte Funktion.
enable: 0 ⇒ OFF
1 ⇒ ON

Werte für idx siehe untenstehende Liste.

ERC_TRACK
ERC_DYNAMICS
ERC_STOP_SWE
ERC_STOP_SPEED
ERC_STOP_ACCEL
ERC_COLLISION
ERC_STOP_COLLISION
ERC_STOP_UNREACH
ERC_FLOOR
ERC_FLOOR_RENDER
ERC_RENDER_BBOX
ERC_ORTHOGRAFIC
ERC_DISPLAY_ROBOT
ERC_DISPLAY_ROBOT_COORSYS
ERC_DISPLAY_TOOL
ERC_DISPLAY_BODYS
ERC_DISPLAY_TAGS
ERC_TCP_COORSYS
ERC_IPO_COORSYS
ERC_BASE_COORSYS
ERC_ROBOT_BASE_COORSYS
ERC_EXT_TCP
ERC_RESET_ALL_POSITIONS_JOINTS
ERC_NO_DECEL
ERC_GRAFIC_UPDATE
ERC_CREATE_TARGET_TAGS
ERC_STATUS_OUTPUT
ERC_INTERPOLATION
ERC_LEADING_POSITION
ERC_REALTIME_SIM
ERC_BACKFACES
ERC_CAMERA
ERC_USE_TAG_ATTRIBUTES
ERC_IPO_STEP_LOOP
ERC_TAG_TEXT
ERC_TAG_LINE_CONNECT
ERC_DISPLAY_BODYS_COORSYS
ERC_DISPLAY_ALL_COORSYS

Rückgabewert: 0 ⇒ Vorgang erfolgreich


1 ⇒ Fehler aufgetreten

Technische Änderungen und Verbesserungen sind vorbehalten 7/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
Nützliche Funktionen

• void extract_fln_with_ext (char *fln,char *fln_with_ext)


Extrahiert aus einem vollständigen Dateinamen mit Pfad fln, den Dateinamen mit seiner
Dateierweiterung fln_with_ext

• char *inq_config_workdir (void)


Gibt das aktuelle Arbeitsverzeichnis zurück.

• void prg_data_single_cmd_reset (void)

• frame *inq_single_cmd_base (void)


Gibt bei Einzelsatzausführung das BASE Frame zurück

• frame *inq_single_cmd_base_prg (void)


Gibt bei Einzelsatzausführung das BASE_PRG Frame zurück

• frame *inq_single_cmd_via_T (void)


Gibt bei Einzelsatzausführung das Via-Punkt Frame für die CIRC Bewegung zurück

• int *inq_single_cmd_via_point_idx (void)


Gibt bei Einzelsatzausführung zurück, ob ein Via-Punkt Frame für die CIRC Bewegung gesetzt ist.

• int *inq_single_cmd_interpolation (void)


Gibt bei Einzelsatzausführung zurück, ob Interpolation aktiviert ist, oder der jump ot target modus

• float *inq_single_cmd_unit_scal_trans (void)


Gibt bei Einzelsatzausführung die Einheit für translatorische Bewegung zurück

• float *inq_single_cmd_unit_scal_rot (void)


Gibt bei Einzelsatzausführung die Einheit für rotatorische Bewegung zurück

• int color_idx2rgb_vad (int idx,float *rgba)


Konvertiert die Farbe mit Index idx in rgba-Werte (a ist der Alpha Wert).

• int color_rgb2idx_vad (float *rgba)


Gibt den Index der mit rgba -Wert übergebenen Farbe zurück.

• float *sys_m_to_unit ()

• float *sys_unit_to_m ()

• char *sys_user_unit ()
// unit string defined in the easy-rob.env, i.e. [mm]

Technische Änderungen und Verbesserungen sind vorbehalten 8/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
EASY-ROB™ Datentypen

• frame T;
Der Datentyp frame enthält die rotatorischen und translatorischen Anteile einer homogenen
Transformationsmatrix, wobei die letzte Zeile [ 0 0 0 1 ] unverändert und deshalb nicht enthalten
ist.
Die Vektoren n-normal, o-orientation und a-approach enthalten die rotatorischen, der Vektor p-
position die translatorischen Parameter.

typedef struct tframe {


float n[3], o[3], a[3];
float p[3];
}
FRAME, frame;

• ROB_DH D;
Denavit Hartenberg Parameter.
theta, d, a, alfa

typedef struct {
float theta, d, a, alfa;
}
ROB_DH;

Technische Änderungen und Verbesserungen sind vorbehalten 9/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
Berechnungen und Kinematik

• float *inq_rob_kin_v_usr0 (void)

• float *inq_rob_kin_v_usr1 (void)

• void vec_to_frame (float *q,frame *T)

• void frame_to_vec (float *q,frame *T)

• int vec_to_frame_idx (float *v,frame *T,int rot_idx)

• int frame_to_vec_idx (float *v,frame *T,int rot_idx)

• void T_mal_T (FRAME *To, FRAME *Ti1, FRAME *Ti2 )


Multipliziert die Matrix T1 von links an die Matrix T2 und schreibt das Ergebnis in To.

• void R_mal_R (FRAME *To, FRAME *Ti1, FRAME *Ti2 )


Multipliziert den rotatorischen Anteil der Matrix T1 von links an den der Matrix T2 und schreibt das
Ergebnis in To.
Der translatorische Anteil in To bleibt unverändert.

• void inv_T (FRAME *To, FRAME *Ti)


Invertiert die Matrix Ti und schreibt das Ergebnis in To.

• void mul_invT_T (FRAME *To, FRAME *Ti1, FRAME *Ti2)


Multipliziert das Inverse der Matrix T1 von links an die Matrix T2 und schreibt das Ergebnis in To.

• void mul_T_invT (FRAME *To, FRAME *Ti1, FRAME *Ti2)


Multipliziert das Inverse der Matrix T2 von rechts an die Matrix T1 und schreibt das Ergebnis in To.

• void incr_T (FRAME *Tio, FRAME *Ti, int)

• void incr_R (FRAME *Rio, FRAME *Ri, int)

• void cpy_R (FRAME *Ro, FRAME *Ri)


Kopiert den rotatorischen Anteil der Matrix Ri in die Matrix Ro.

• void mul_T_pos (float *po,FRAME *Ti,float *pi)

• float *delta_T (float *dx,frame *Ts,frame *Ti)


// dx[0..2] = Ts.p-Ti.p dx[3..5]= inv (Ri)*Rs

• void rob_kin_T_mal_T ( frame *Tin1,frame *Tin2)


Technische Änderungen und Verbesserungen sind vorbehalten 10/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• void rob_kin_R_mal_R ( frame *Tin1,frame *Tin2)

• void rob_kin_frame_ident (frame *T)


Schreibt die Werte der Einheitsmatrix in den übergebenen Frame.

• void rob_kin_rot (int rot_idx,double q, frame *T)


Erzeugt eine Rotationsmatrix für eine Rotation um den Winkel q um die über den Parameter rot_idx
angegebene Achse und schreibt die Ergebnisse in T.
Werte für rot_idx: 1 ⇒ X-Achse
2 ⇒ Y-Achse
3 ⇒ Z-Achse

• void rob_kin_trans (frame *T,double x, double y, double z)


Erzeugt eine Translationsmatrix mit den angegebenen Werten für x, y und z und schreibt die
Ergebnisse in T.

• void dh_to_frame (ROB_DH *rdh,frame *T)


Erzeugt die zu denin rdh übergebenen Denavit-Hartenbert Werten gehörende homogene Matrix
und schreibt die Ergebnisse in T.

• int rob_kin_joint_trans (int joint_dof)


Über diese Funktion läßt sich herausfinden ob der Joint mit Index joint_dof translatorisch oder
rotatorisch ist.
Rückgabewert: 1 ⇒ Der Joint ist translatorisch
0 ⇒ Der Joint ist rotatorisch

• int rob_kin_joint_rot (int joint_dof)


Über diese Funktion läßt sich herausfinden ob der Joint mit Index joint_dof rotatorisch oder
translatorisch ist.
Rückgabewert: 1 ⇒ Der Joint ist rotatorisch
0 ⇒ Der Joint ist translatorisch

• float rob_kin_to_DEG (int joint_dof)

• float rob_kin_to_RAD (int joint_dof)

• float sass (float s1,float beta, float s2)


Gibt die Länge der Seite s3 eines Dreiecks mit gegebener Seitenlänge s1 und s2 sowie dem von s1
und s2 eingeschlossenen Winkel beta zurück.

• float sasa (float s1,float beta, float s2)


Gibt bei gegebenen Seitenlängen s1 und s2 sowie dem von diesen beiden Seiten
eingeschlossenen Winkel beta den an s2 liegenden Winkel zurück.
Technische Änderungen und Verbesserungen sind vorbehalten 11/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• float asss (float beta, float s1,float s2)
Gibt bei gegebenem Winkel beta sowie der anliegenden Seite s1 und der dem Winkel
gegenüberliegenden Seite s2 die Länge der dritten Seite zurück.

• float assa (float beta, float s1,float s2)


Gibt bei gegebenem Winkel beta sowie der anliegenden Seite s1 und der dem Winkel
gegenüberliegenden Seite s2 den Winkel zwischen s1 und s2 zurück.

• float assa2 (float beta, float s1,float s2)


Gibt bei gegebenem Winkel beta sowie der anliegenden Seite s1 und der dem Winkel
gegenüberliegenden Seite s2 den Winkel zwischen s1 und der fehlenden Seite zurück.

• float sssa (float s1,float s2,float s3)


Gibt bei gegebenen Seiten s1, s2 und s3 den Winkel zwischen s1 und s2 zurück.

• float sasssa (float s1,float beta,float s2,float s3,float s4)

• int inq_errorflg (void)

• double parser_calc (char *str,int *error)

Technische Änderungen und Verbesserungen sind vorbehalten 12/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• frame *inq_T (void)
Gibt einen Pointer auf die Matrix für die Transformation von der Roboterbasis zum Roboterflansch
„Tip“ zurück.

• frame *inq_bTt (void)


Entspricht inq_T.

• frame *inq_bT0 (void)


Gibt einen Pointer auf die Matrix für die Transformation von der Roboterbasis bis zur ersten Achse
der Kinematik zurück.

• frame *inq_tTw (void)


Gibt einen Pointer auf die Matrix für die Transformation vom Roboterflansch zum TCP „w-wrist“
zurück.

• frame *inq_tTw_no (int ctool_no)


Gibt einen Pointer auf die Matrix für die Transformation vom Roboterflansch zu dem TCP mit Index
ctool_no zurück.

• int *inq_num_tool (void)


Gibt einen Pointer auf die Anzahl Tools für den aktuellen Roboter zurück.

• int *inq_ctool_no (void)


Gibt einen Pointer auf die Nummer des gegenwärtig aktiven Werkzeugs zurück.

• char *inq_tool_name (void)


Gibt einen Pointer auf den Namen des gegenwärtig aktiven Werkzeugs zurück.

• char *inq_tool_name_no (int ctool_no)


Gibt einen Pointer auf den Namen des Werkzeugs mit Index ctool_no zurück.

• float *inq_q_solut (void)


Gibt einen Pointer auf das Float-Array der Roboterachsstellung zurück.
Die Achsanzahl gibt Funktion inq_num_dofs() zurück.

• float *inq_v_solut (void)


Gibt einen Pointer auf das Float-Array mit den Roboter-Achsgeschwindigkeiten zurück.

• float *inq_a_solut (void)


Gibt einen Pointer auf das Float-Array mit den Roboter-Achsbeschleunigungen zurück.

• frame *inq_bTw (void)


Gibt einen Pointer auf die Matrix für die Transformation von der Roboterbasis zum TCP zurück.

• frame *inq_iTb (void)


Gibt einen Pointer auf die Matrix für die Transformation vom Weltkoordinatensystem zur
Roboterbasis zurück.

• frame *inq_iTb_strt (void)


Beim Programmstart “RUN“ wird inq_iTb() durch inq_iTb_strt() ersetzt.

• int *inq_move_base (void)


Rückgabewert: 1 ⇒ bewegliche Roboterbasis
0 ⇒ Roboterbasis ist fest
Technische Änderungen und Verbesserungen sind vorbehalten 13/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• int *inq_move_base_jnt (void)
Gibt die Achse des Roboters an, der die bewegliche Basis bildet

• char *inq_move_base_name (void)

• frame *inq_pjntTmb (void)

• frame **inq_pjntTmb_ref (void)

• frame *inq_bTmb (void)

• frame **inq_bTpjnt_ref (void) // robot base to pjnt coorsys aus 'B' und ax_idx ermittelt

• frame *inq_mbTt (void) // move base to Tip

• frame *inq_mbTw (void) // move base to TCP

• frame *inq_mbTt_dyn (void) // Ist move base to Tip

• frame *inq_mbTw_dyn (void) // Ist move base to TCP

• double rob_kin_atan2 (double,double)

• void rob_kin_set_warnings (int)

• void rob_kin_user_msg (char *s)

• int rob_kin_vortrans (frame *bTt)


Diese Funktion führt die Vorwärtstransformation in Abhängigkeit der Gelenkstellung des Roboters
„inq_q_solut()“ entlang der kinematischen Kette durch. Das Ergebnis bTt beschreibt die
Transformation von der Roboterbasis zum Roboterflansch.

• int rob_kin_vortrans_q (float *qn,frame *bTt,frame *mbTt,int n_dofs)


Diese Funktion führt die Vorwärtstransformation in Abhängigkeit der Gelenkstellung qn des
Roboters entlang der kinematischen Kette durch. Das Ergebnis bTt beschreibt die Transformation
von der Roboterbasis zum Roboterflansch. Das Ergebnis mbTt beschreibt die Transformation von
der beweglichen Roboterbasis zum Roboterflansch. n_dofs gibt die Anzahl der Achsen an, die zur
Berechnung relevant sind. So kann n_dofs durchaus kleiner als die Anzahl aller Achsen des
Roboters sein.

Technische Änderungen und Verbesserungen sind vorbehalten 14/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• int *inq_fwd_kin_reason (void)

• int rob_kin_q_in_travel_range (float *q)


// Transform revolute joint into valid travel range

• int rob_kin_chk_travel_range (float *q)


// 0-OK 1-SWE_EXCEEDED

• int *inq_invkin (void)


Kinematische ID des Roboters für die inverse Berechnung

• int *inq_invkin_sub (void)


Kinematische Sub-ID des Roboters für die inverse Berechnung

• int rob_kin_inv (frame *bTt)


Berechnet die inverse kinematische Lösung aus der Transformation Roboterbasis nach
Roboterflansch. Das Ergebnis steht in float *inq_q_solut().

• char *inq_kin_user_data_file (void)


/*Kinematic data file for user kinematic*/

• double *inq_achs_length (void)


Gibt einen Pointer auf das double-Array mit den Z-Positionen aller Joints zurück.

• double *inq_achs_offsets1 (void)


Gibt einen Pointer auf das double-Array mit den X-Positionen aller Joints zurück.

• double *inq_achs_offsets2 (void)


Gibt einen Pointer auf das double-Array mit den Y-Positionen aller Joints zurück.

• double *inq_achs_rotx (void)


Gibt einen Pointer auf das double-Array mit den X-Anteilen der Lage aller Joints zurück.

• double *inq_achs_roty (void)


Gibt einen Pointer auf das double-Array mit den Y-Anteilen der Lage aller Joints zurück.

• double *inq_achs_rotz (void)


Gibt einen Pointer auf das double-Array mit den Z-Anteilen der Lage aller Joints zurück.

• frame *inq_achs_T (void)


// = vec_to_frame (inq_achs_... (),T)

• frame *inq_kin_T_active (int active_jnt_no)


Gibt einen Pointer auf die zum angegebenen Joint gehörende Matrix entsprechend der aktuellen
Achsstellung zurück.

• int *inq_num_kin_user_data (void)


// Number of Sets of Kin User Data

• char **inq_kin_user_data_name (int idx=0)


Gibt einen Pointer auf die eingetragenen Bezeichnungen der Kinematik Userdata-Felder in einem
Array zurück.

Technische Änderungen und Verbesserungen sind vorbehalten 15/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• float *inq_kin_user_data (int idx=0)
Gibt einen Pointer auf das Array mit den aktuellen Werten der Kinematik Userdata-Felder zurück.

• double *inq_sing_tol (void)

• double *inq_joint_offset (void)

• float *inq_q (int soln)

• int *inq_warnings (void)

• int *inq_verpolt (void)

• int inq_num_dofs (void)


Gibt die Anzahl der Freiheitsgrade, also die Anzahl der aktiven Joints des Roboters zurück.

• int inq_num_passiv_jnts (void)


Gibt die Anzahl der passiven Joints des Roboters zurück. Dies sind Achsen deren Werte nicht aktiv
verändert werden können, sondern die sich mitbewegen wenn die aktiven Joints bewegt werden. So
zum Beispiel bei einem Backlink.

• int inq_num_configs (void)


Gibt die Anzahl verschiedener Konfigurationen zurück.

• int inq_config (void)


Gibt die Nummer der gerade aktiven Konfiguration zurück.

• ROB_DH *inq_rob_dh_activ (void)

• ROB_DH *inq_rob_dh0_passiv (void)

• ROB_DH *inq_rob_dh_passiv (void)

• int *inq_num_home (void)

• int *inq_chome_no (void)

• float *inq_homepos (void)


Gibt den Pointer auf das float-Array mit der Home-Position des Roboters zurück.

• float *inq_homepos_no (int chome_no)

• char *inq_homepos_name (void)


Technische Änderungen und Verbesserungen sind vorbehalten 16/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
Gibt den Pointer auf die die Bezeichnung der Home-Position zurück.

• char *inq_homepos_name_no (int chome_no)


Gibt den Pointer auf die Bezeichnung der über chome_no angegebenen Home-Position zurück.

• float *inq_swe_max (void)


Gibt den Pointer auf das Float-Array mit den Maximalwerten für die Achsstellungen zurück.

• float *inq_swe_min (void)


Gibt den Pointer auf das Float-Array mit den Minimalwerten für die Achsstellungen zurück.

• float *inq_v_max (void)


Gibt den Pointer auf das Float-Array mit den Maximalwerten für die Achsgeschwindigkeit zurück.

• float *inq_a_max (void)


Gibt den Pointer auf das Float-Array mit den Maximalwerten für die Achsbeschleunigung zurück.

• float *inq_t_max (void)


Gibt den Pointer auf das Float-Array mit den Maximalwerten für das Drehmoment zurück.

• char *inq_robotname (void)


Gibt den char-Pointer auf den Namen des Roboters zurück.

• char *inq_kin_direction_activ (void)

• char *inq_kin_type_activ (void)

• int *inq_kin_id (void)


Rückgabewert: kinematische ID des Roboters
1 ⇒ RRRRRR 6 achsiger Knickarmroboter
2 ⇒ TTTRRR Portalroboter mit Zentralhand
3 ⇒ RRRRRR_BL 6 achsiger Knickarmroboter mit Backlink
10 ⇒ UNIV_ROB Roboter nach universellen Koordinaten modelliert
11 ⇒ DH Roboter nach DH-Konvention modelliert

• float *inq_bdxw (void)

• float *inq_dq (void)

• char *inq_kin_direction_passiv (void)

• char *inq_kin_type_passiv (void)

• char *inq_kin_chain_type (void)

• char *inq_kin_calc (int passiv_jnt_no)


Technische Änderungen und Verbesserungen sind vorbehalten 17/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• int *inq_kin_attach_dof (void)

• frame *inq_kin_achs_T0_passiv (int passiv_jnt_no)


// length passive joint #i from last

• frame *inq_kin_achs_T_passiv (int passiv_jnt_no)


// length passive joint #i to next

• frame *inq_kin_T_passiv (int passiv_jnt_no)


// Base to passive joint #i

• int moni_msg ( char *fmt, ... )

• void moni_T (char *s,frame *T)


Ausgabe des Frame T in die Monitoringdatei „moni_msg.txt“

• void moni_v (char *s,float *v,int n,float scal)


Ausgabe eines float Vectors v in die Monitoringdatei „moni_msg.txt“

• void moni_lv (char *s,double *v,int n,float scal)


Ausgabe eines double Vectors v in die Monitoringdatei „moni_msg.txt“

• void moni_i (char *s,int *v,int n)


Ausgabe eines integer Vectors v in die Monitoringdatei „moni_msg.txt“

• void moni_s (char *s,short *v,int n)


Ausgabe eines short Vectors v in die Monitoringdatei „moni_msg.txt“

• void ErrorExitBox (char *s)


Diese Funktion bringt eine Fehlernachricht-Box mit einem Ok-Button mit folgendem Text zur
Anzeige:
ErrorBox
Fatal Error:
in s übergebener Text
Exit!

• void MsgBox (char *s)


Diese Funktion bringt eineMessage-Box mit einem Ok-Button mit folgendem Text zur Anzeige:
MsgBox
in s übergebener Text

• void _info_line (int color,char *s)


Der mit s angegebene Text wird im Message-Window (Menu View -> Message Window oder
Ctrl+M) ausgegeben.

• int _info_line_msg (int moni, char *fmt, ... )


Diese Funktion erzeugt eine Ausgabe im Message-Window wobei fmt dieselbe Formatierung hat
wie der C-Befehl "printf". Auf fmt folgen als weitere Parameter die Variablen welche der
angegebenen Formatierung entsprechen ausgegeben werden sollen.
Wird moni = 1 gesetzt, wird die Ausgabe zusätzlich in die Monitoringdatei „moni_msg.txt“

Technische Änderungen und Verbesserungen sind vorbehalten 18/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
gespeichert.

• int _info_line_msg_v (int moni, char *s, float *v,int n,float scal)
Diese Funktion gibt den übergebenen Vektor v mit der Anzahl n Elemente in das Message-Window
aus. Die Elemente des Vektors werden mit dem übergebenen Skalar scal multipliziert.
Wird moni = 1 gesetzt, wird die Ausgabe zusätzlich in die Monitoringdatei „moni_msg.txt“
gespeichert.

• int _info_line_msg_T (int moni, char *s, frame *T)


Diese Funktion gibt die Daten des angegebenen Frames in das Message-Window aus. Die Inhalte
der Spalten n,o,a und p werden in dieser Reihenfolge in jeweils einer Zeile ausgegeben, wobei der
mit s referenzierte Text vor den Daten der Spalte n in dieselbe Zeile ausgegeben wird.
Wird moni = 1 gesetzt, wird die Ausgabe zusätzlich in die Monitoringdatei „moni_msg.txt“
gespeichert.

• double *inq_univ_trans_tol_rad (void)


Toleranzwert in Radiant für inverse numerische Lösung.

• double *inq_univ_trans_tol_m (void)


Toleranzwert in Meter für inverse numerische Lösung.

• int *inq_univ_trans_ilimit (void)


Iterationsanzahl für inverse numerische Lösung.

• double *inq_univ_trans_mask (void)


Kartesichen Maskierungs-Array [0 oder 1] für inverse numerische Lösung.

• double *inq_univ_trans_weight (void)


Achsgewichtung für inverse numerische Lösung.

• frame **inq_univ_trans_T (void)

Technische Änderungen und Verbesserungen sind vorbehalten 19/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
Dynamik

• float inq_dt_sim (void)


Simulations Step Size in Sekunden

• float *inq_sim_step (void)


Pointer auf Simulations Step Size in Sekunden

• float inq_dt_cntrl (void)


Taktrate der Positionsregelung in Sekunden

• float inq_dt_sys (void)


Taktrate des dynamischen Robotermodells in Sekunden

• float *inq_cntrl_kpp (void)


P-Verstäkung der P-PI Kaskadenregelung

• float *inq_cntrl_kpv (void)


V-Verstäkung des unterlagerten Geschwindigkeitsreglers der P-PI Kaskadenregelung

• float *inq_cntrl_kiv (void)


I-Verstäkung des unterlagerten Geschwindigkeitsreglers der P-PI Kaskadenregelung

• float *inq_cntrl_uc_kiv1 (void)


Stellgröße, als Ergebnis des Reglers

• float *inq_cntrl_aux1 (void)


Freie Reglerverstärkung

• float *inq_cntrl_aux2 (void)


Freie Reglerverstärkung

• float *inq_cntrl_aux3 (void)


Freie Reglerverstärkung

• float *inq_cntrl_e1 (void)


achsspezifischer Positionsfehler

• float *inq_cntrl_e2 (void)


achsspezifischer Geschwindigkeitsfehler

• float *inq_model_N (void)


Getriebeübersetzung

• float *inq_model_T_base (void)

• float *inq_model_theta_base (void)

• float *inq_model_d_base (void)

Technische Änderungen und Verbesserungen sind vorbehalten 20/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• float *inq_model_vz1_v (void)

• float *inq_model_vz1_a (void)

• float *inq_model_z1 (void)

• float *inq_model_z2 (void)

• float *inq_uc (void)

• float *inq_uc1 (void)

• float *inq_q_dyn (void)


Gegenwärtige Werte für die Achsstellungen.

• float *inq_v_dyn (void)


Gegenwärtige Werte für die Achsgeschwindigkeiten.

• float *inq_a_dyn (void)


Gegenwärtige Werte für die Achsbeschleunigungen.

• frame *inq_bTw_dyn (void)

• int *inq_status_output_type (void)


// is [SIM_STEP, TARGET_POSE, IPO_STEP]

• int *inq_status_output_tag_idx (void)


// TagIdx: >1 move to a Tag, 0- no Tag

Technische Änderungen und Verbesserungen sind vorbehalten 21/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
Bewegungsplanung und Interpolation

• float *inq_ipo_exec_qs (void)


// desired joint data [rad] or [m]

• float *inq_ipo_exec_vs (void)


// desired joint speed [rad/s] or [m/s]

• float *inq_ipo_exec_as (void)


// desired joint acceleration [rad/s^2] or [m/s^2]

• frame *inq_ipo_exec_Ts (void)


// desired cart. location frame [m]

• float *inq_ipo_path_vq (void)


// programmed Joint speed in [deg/s]

• float *inq_ipo_path_vqs (void)


// Joint start speed in [deg/s]

• float *inq_ipo_path_vqe (void)


// programmed Joint end speed in [deg/s]

• float *inq_ipo_path_aq (void)


// programmed Joint acceleration in [deg/s^2]

• float *inq_ipo_path_aqe (void)


// programmed Joint end acceleration in [deg/s^2]

• float *inq_ipo_path_vx (void)


// programmed cart. speed in [m/s]

• float *inq_ipo_path_vxs (void)


// cart. start speed in [m/s]

• float *inq_ipo_path_vxe (void)


// cart. end speed in [m/s]

• float *inq_ipo_path_ax (void)


// programmed cart acceleration in [m/s^2]

• float *inq_ipo_path_axe (void)


// programmed cart end acceleration in [m/s^2]

• float *inq_ipo_path_vx_ori (void)


// programmed orientation speed in [deg/s]

• float *inq_ipo_path_vxs_ori (void)


// orientation start speed in [deg/s]

• float *inq_ipo_path_vxe_ori (void)


// programmed orientation end speed in [deg/s]

Technische Änderungen und Verbesserungen sind vorbehalten 22/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• float *inq_ipo_path_ax_ori (void)
// programmed orientation acceleration in [deg/s^2]

• float *inq_ipo_path_axe_ori (void)


// programmed orientation end acceleration in [deg/s^2]

• float *inq_ipo_path_ov_pro (void)


// programmed override

• float *inq_ipo_path_zone (void)


// programmed zone value

• int *inq_ipo_path_leading_position (void)


// 1-leading position is enabled, 0-leading orientation is enabled, 2-variable

• CIRC_ORI_MODE *inq_ipo_path_circ_ori_mode (void)


// Current Orientation more for circular interpolation

• LIN_ORI_MODE *inq_ipo_path_lin_ori_mode (void)


// Current Orientation more for linear interpolation

• int *inq_ipo_prep_n_dof (void)


// dof of robot

• float *inq_ipo_prep_t_bahn (void)


// required motion time for current move, calculated in ipo_preparation

• float *inq_ipo_prep_strt_q (void)


// Robot joint data at start location

• float *inq_ipo_prep_end_q (void)


// Robot joint data at target location

• float *inq_ipo_prep_dq (void)


// Robot joint difference array (=strt_q - end_q)

• frame *inq_ipo_prep_strt_T (void)


// Start TCP location

• frame *inq_ipo_prep_end_T (void)


// Target TCP location

• frame *inq_ipo_prep_inter_T (void)


// Intermediate Location (ViaPoint) for circular motion

• frame *inq_ipo_prep_center_T (void)


// Center if circular motion, calculated from start-, via-, end point

• float *inq_ipo_prep_dx (void)


// 6 dim difference Vector (=strt_T-end_T)

• IPO_MODE *inq_ipo_data_ipo_mode (void)


// current interpolation mode

Technische Änderungen und Verbesserungen sind vorbehalten 23/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• float *inq_ipo_data_gtime (void)
// global simulation time [s]

• float *inq_ipo_data_ctime (void)


// current motion time [s]

• float *inq_ipo_data_dt_ipo (void)


// interpolation step size [s]

• float *inq_ipo_data_lead_time (void)


// time before the motion starts [s]

• float *inq_ipo_data_lag_time (void)


// time after the current move [s]

• int *inq_ipo_data_ipo_in_position (void)


// 1-robot is in target location

• float *inq_ipo_data_old_q (void)


// joint data at last step

• float *inq_ipo_data_new_q (void)


// joint data at current step

• frame *inq_ipo_data_old_T (void)


// TCP location at last step

• frame *inq_ipo_data_new_T (void)


// TCP location at current step

• int *inq_ipo_data_ipo_step_loop (void)


// 0-MotionPlanner rate is sim_step, 1-MotionPlanner rate is ipo_step

• int circ_center_point (float *p1,float *p2,float *p3,frame *pTc,float *radius,float *phi)

Technische Änderungen und Verbesserungen sind vorbehalten 24/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
Tag Funktionen

• // ADMIN DATA for rob_path_data


• int *inq_rob_tag_curr_tag_idx (void)

• int *inq_rob_tag_n_tag (void)

• int *inq_rob_tag_n_tag_max (void)

• char *inq_rob_tag_path_name (void)

• char *inq_rob_tag_wobj_name (void)

• FRAME *inq_rob_tag_base (void)

• int chk_rob_tag_idx (int idx)

• char *inq_rob_tag_prefix_idx (int idx)


// tag_attributes

• char *inq_rob_tag_name_idx (int idx)


// tag_attributes

• char *inq_rob_tag_prefix_name_idx (int idx)


// tag_attributes

• int *inq_rob_tag_color_idx (int idx)

• float *inq_rob_tag_length_idx (int idx)

• int *inq_rob_tag_render_idx (int idx)

• frame *inq_rob_tag_frame_idx (int idx)

• int delete_tags (int remote_send)

• int *inq_rob_tag_motype_idx (int idx)


// tag_attributes

• float *inq_rob_tag_speed_ptp_idx (int idx)


// tag_attributes
Technische Änderungen und Verbesserungen sind vorbehalten 25/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• float *inq_rob_tag_speed_cp_idx (int idx)
// tag_attributes

• // tag_copy
• int *inq_rob_tag_color (void)

• float *inq_rob_tag_length (void)

• char *inq_rob_tag_prefix (void)

• char *inq_rob_tag_name (void)

• char *inq_rob_tag_prefix_name (void)

• FRAME *inq_rob_c_tag_T (void)


// c_tag

• FRAME *inq_rob_c_tag_off_T (void)


// c_tag_off

• int swap_TagUp (void)

• int swap_TagDown (void)


// access to pathes

• int inq_Get_n_paths ()
// get number of pathes in loaded workcell

• int inq_Get_n_tags ()
// get number of tags in current path

• int inq_Get_c_path_idx ()
// get current path idx [1..n_paths]

• int inq_Get_c_tag_idx ()
// get current tag idx [1..n_tags] in current path

• int inq_Set_path_idx (int path_idx)


// set current path idx [1..n_paths], Return: 0-OK, 1-Error

• int inq_Set_tag_idx (int tag_idx)


// set current tag idx [1..n_tags] in current path

• char *inq_Get_c_path_name ()
// get current path name

• char *inq_Get_c_wobj_name ()
Technische Änderungen und Verbesserungen sind vorbehalten 26/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
// get current wobj name

• char *inq_Get_c_tag_name ()
// get current tag name

• frame *inq_Get_c_wobj_frame ()
// get current wobj location w.r.t. path reference system

• frame *inq_Get_c_wobj_frame_ref ()
// calculate wobj location w.r.t. to world system

• frame *inq_Get_c_tag_frame ()
// get current tag location w.r.t. wobj frame location

Technische Änderungen und Verbesserungen sind vorbehalten 27/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
Kollisionsfunktionen

• float inq_coll_min_distance (void)

• int *inq_collision (void)

• int *inq_stop_collision (void)

• void chk_collision_export (void)

Sonstige Funktionen

• int *inq_stop_swe (void)


Gibt das “Stop on SoftwareEndschalter” – Flag zurück

• int *inq_stop_speed (void)


Gibt das “Stop on Geschwindigkeitsüberschreitung” – Flag zurück

• int *inq_stop_accel (void)


Gibt das “Stop on Beschleunigungssüberschreitung ” – Flag zurück

• int *inq_stop_unreach (void)


Gibt das “Stop on Position nicht erreichbar” – Flag zurück

Technische Änderungen und Verbesserungen sind vorbehalten 28/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
Funktionen für Zugriff auf die Geometrien

• void *er_vad_inq_body_group_handle (int grp_idx)


Diese Funktion gibt ein Handle auf die mit grp_idx spezifizierte Bodygroup zurück.
Als Werte für grp_idx bieten sich die Konstanten ROBOT_GRP für die Bodies des Roboters,
TOOL_GRP für die Bodies des Werkzeugs und BODY_GRP für die Bodies der Umgebung an.

• void *er_vad_inq_body_handle_byname (void *grp_handle,char *name)


Diese Funktion gibt ein Handle auf einen Body zurück. Das Handle für die Gruppe der dieser Body
angehört sowie der Name des Bodies müssen übergeben werden.

• void *er_vad_inq_body_handle_byidx (void *grp_handle,int b_idx)


Diese Funktion gibt ebenfalls ein Handle auf einen Body zurück. Auch hier muß ein Handle auf die
Gruppe der dieser Body angehört übergeben werden, allerdings wird der Body hier nicht über
seinen Namen identifiziert sondern über seine Nummer. Die Anzahl Bodies in einer Gruppe läßt
sich mittels er_vad_inq_body_number ermitteln und so können in einer Schleife leicht alle Bodies
einer Gruppe bearbeitet werden.
Der Index der Bodies wird ab 0 gezählt.

• int er_vad_inq_body_number (void *grp_handle)


Diese Funktion gibt die Anzahl Bodies in der mit dem Handle grp_handle spezifizierten Gruppe
zurück.

• char *er_vad_inq_body_name (void *body_handle)


Diese Funktion gibt den Namen des mit dem Handle body_handle spezifizierten Bodies zurück.

• frame *er_vad_inq_body_ref_pos (void *body_handle)


Diese Funktion gibt einen Pointer auf den Frame mit der Referenzposition des über das Handle
spezifizierten Bodies zurück.

• frame *er_vad_inq_body_off_pos (void *body_handle)


Diese Funktion gibt einen Pointer auf den Frame mit der Offsetposition des über das Handle
spezifizierten Bodies zurück.

• frame *er_vad_inq_body_ref_off_pos (void *body_handle)


// return frame *sKs_tmp, IN: _BODYS *body_handle

• void er_vad_body_update (void *body_handle)


// Calc. sKs_tmp = ref*sKs IN: _BODYS *body_handle

• frame *er_vad_inq_body_Tref_pos (void *body_handle,int grp_type,frame *Tref)


// return Tref frame *, IN: _BODYS *body_handle

• frame *er_vad_inq_body_world_pos (void *body_handle,int grp_type,frame *Tworld)


Diese Funktion schreibt die Worldposition des mit dem Handle body_handle spezifizierten Bodies
aus der Gruppe mit dem Index grp_type in den mit Tworld übergebenen Frame.

• int er_vad_inq_body_n_obj (void *body_handle)


Diese Funktion gibt die Anzahl Objekte aus denen der per Handle spezifizierte Body besteht zurück.

• int er_vad_inq_body_n_point_total (void *body_handle)


Diese Funktion gibt die Anzahl Punkte des per Handle spezifizierten Bodies zurück.

Technische Änderungen und Verbesserungen sind vorbehalten 29/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
• int er_vad_inq_body_n_line_total (void *body_handle)
Diese Funktion gibt die Anzahl Kanten des per Handle spezifizierten Bodies zurück.

• int er_vad_inq_body_n_poly_total (void *body_handle)


Diese Funktion gibt die Anzahl Polygone des per Handle spezifizierten Bodies zurück.

• int er_vad_inq_body_n_coorsys_total (void *body_handle)


???

• void *er_vad_inq_body_obj_handle (void *body_handle,int i_obj)


Diese Funktion gibt ein Handle auf das per Index i_obj angegebene Objekt des per Handle
spezifizierten Bodies zurück.

• int *er_vad_inq_body_obj_n_point (void *obj_handle)


Diese Funktion gibt die Anzahl Punkte des per Handle spezifizierten Objekts zurück.

• int *er_vad_inq_body_obj_n_line (void *obj_handle)


Diese Funktion gibt die Anzahl Kanten des per Handle spezifizierten Objekts zurück.

• int *er_vad_inq_body_obj_n_poly (void *obj_handle)


Diese Funktion gibt die Anzahl Polygone des per Handle spezifizierten Objekts zurück.

• int *er_vad_inq_body_obj_n_coorsys (void *obj_handle)

• int *er_vad_inq_body_obj_max_point_in_poly (void *obj_handle)


Diese Funktion gibt die Anzahl Punkte des Polygons mit den meisten Punkten des per Handle
spezifizierten Objekts zurück.

• float *er_vad_inq_body_obj_points (void *obj_handle,int idx)


Diese Funktion gibt einen Pointer auf ein Float-Array zurück welches die Koordinaten des Punktes
mit dem Index idx des per Handle spezifizierten Objekts zurück.
Die X,Y,Z-Koordinaten dieses Punktes stehen in den 3 Einträgen des Arrays.

• int *er_vad_inq_body_obj_polys (void *obj_handle,int idx)


Diese Funktion gibt einen Pointer auf ein Int-Array zurück welches die Indizes aller Punkte des
Polygons mit dem Index idx des per Handle spezifizierten Objekts zurück.
Mit der Funktion er_vad_inq_body_obj_points kann dann auf die Koordinaten dieser Punkte
zugegriffen werden in dem der Index aus dem erhaltenen Array an diese Funktion übergeben wird.

• int *er_vad_inq_body_obj_is_collided (void *obj_handle)


Diese Funktion gibt einen Pointer auf eine Integer zurück welche den Kollisionsstatus eines Objekts
enthält. Dieser Status kann auch geschrieben werden.
Im Falle von Kollision wird dieses Objekt dann farblich invertiert dargestellt.
Wert: 0 ⇒ keine Kollision
1 ⇒ Kollision

• float *er_vad_inq_body_obj_color_rgba (void *obj_handle)


Diese gibt einen Pointer auf ein Float-Array zurück welches die RGBA-Werte des per Handle
spezifizierten Objekts in einem Wertebereich von 0 bis 1.0 enthält zurück.

• int *er_vad_inq_body_obj_color_idx (void *obj_handle)


Diese Funktion gibt einen Pointer auf die Integer mit dem Index der Farbe des per Handle
spezifizierten Objekts zurück.
Technische Änderungen und Verbesserungen sind vorbehalten 30/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com
Diese kann hierüber auch gesetzt werden.
Für die Farbe stehen folgende Werte zur Verfügung:
1 Blau
2 Grün
3 Cyan
4 Rot
5 Magenta
6 Braun
7 Hellgrau
8 Dunkelgrau
9 Hellblau
10 Hellgrün
11 Hellcyan
12 Hellrot
13 Hellmagenta
14 Gelb
15 Weiß

• int *er_vad_inq_body_obj_color_den_idx (void *obj_handle)


// return pointer to deneb color idx, IN: VRML_OBJ *obj_handle

• int *er_vad_inq_body_obj_ptrcolor (void *obj_handle)


// return color pointer, IN: VRML_OBJ *obj_handle

Technische Änderungen und Verbesserungen sind vorbehalten 31/31

EASY-ROB™ Stefan Anton Hans-Thoma-Str.26a 60596 Frankfurt/Main Germany Tel. +49 69 677 24-287 Fax. +49 69 677 24-320 info.er@easy-rob.com www.easy-rob.com