机器人运动指令数据类型 更多...
#include <stdio.h>#include <stdlib.h>#include <string.h>| 结构体 | |
| struct | command_arg | 
| 命令行数据结构  更多... | |
| struct | PayLoad | 
| 负载数据  更多... | |
| struct | robjoint | 
| 运动指令输入,关节数据  更多... | |
| struct | robpose | 
| 运动指令输入,笛卡尔位置及姿态数据  更多... | |
| struct | speed | 
| 运动指令输入,速度数据  更多... | |
| struct | zone | 
| 运动指令输入,转弯区数据  更多... | |
| struct | tool | 
| 运动指令输入,工具数据  更多... | |
| struct | wobj | 
| 运动指令输入,工件标系数据  更多... | |
| struct | ROBJOINT | 
| 运动指令输入,关节数据(私有数据)  更多... | |
| struct | ROBPOSE | 
| 运动指令输入,笛卡尔位置及姿态数据(私有数据)  更多... | |
| struct | SPEED | 
| 运动指令输入,速度数据(私有数据)  更多... | |
| struct | ZONE | 
| 运动指令输入,转弯区数据(私有数据)  更多... | |
| struct | TOOL | 
| 运动指令输入,工具数据(私有数据)  更多... | |
| struct | WOBJ | 
| 运动指令输入,工件标系数据(私有数据)  更多... | |
| 宏定义 | |
| #define | ROBOT_MAX_NUM 10 | 
| #define | ROBOT_MAX_DOF 10 | 
| #define | MAX_CHAR_NUM 300 | 
| #define | MAX_BSPLINE_NUM 200 | 
| #define | ROBOT_DATA_NAME_LEN_MAX 10 | 
| 类型定义 | |
| typedef unsigned char | byte | 
| typedef struct PayLoad | PayLoad | 
| 负载数据  更多... | |
| typedef struct robjoint | robjoint | 
| 运动指令输入,关节数据  更多... | |
| typedef struct robpose | robpose | 
| 运动指令输入,笛卡尔位置及姿态数据  更多... | |
| typedef struct speed | speed | 
| 运动指令输入,速度数据  更多... | |
| typedef struct zone | zone | 
| 运动指令输入,转弯区数据  更多... | |
| typedef struct tool | tool | 
| 运动指令输入,工具数据  更多... | |
| typedef struct wobj | wobj | 
| 运动指令输入,工件标系数据  更多... | |
| typedef enum robdatatype | robdatatype | 
| 运动指令输入数据类型  更多... | |
| 枚举 | |
| enum | controller_mode { _other =0, _ethercat, _ur, _aubo, _custom } | 
| 控制器机器人类型  更多... | |
| enum | robdatatype { _robjoint, _robpose, _speed, _zone, _tool, _wobj } | 
| 运动指令输入数据类型  更多... | |
| 函数 | |
| int | getDataNum (robdatatype rdt) | 
| 从系统获取数据文件内数据的数目  更多... | |
| int | getDataName (robdatatype rdt, int n, char *dataname) | 
| 从系统获取数据文件内索引为的数据名字  更多... | |
| int | getrobjoint (const char *J, robjoint *rjoint) | 
| 从系统获取关节位置  更多... | |
| int | getrobpose (const char *P, robpose *rpose) | 
| 从系统获取位姿  更多... | |
| int | getspeed (const char *S, speed *sp) | 
| 从系统获取运动速度  更多... | |
| int | getzone (const char *Z, zone *zo) | 
| 从系统获取转弯区大小  更多... | |
| int | gettool (const char *T, tool *to) | 
| 从系统获取末端工具  更多... | |
| int | getwobj (const char *W, wobj *wo) | 
| 从系统获取工件坐标系  更多... | |
| int | writerobjoint (const char *J, robjoint *rjoint) | 
| 写关节位置至系统  更多... | |
| int | writerobpose (const char *P, robpose *rpose) | 
| 写位姿至系统  更多... | |
| int | writespeed (const char *S, speed *sp) | 
| 写运动速度至系统  更多... | |
| int | writezone (const char *Z, zone *zo) | 
| 写转弯区数据至系统  更多... | |
| int | writetool (const char *T, tool *to) | 
| 写工件坐标系数据至系统  更多... | |
| int | writewobj (const char *W, wobj *wo) | 
| 写工件坐标系数据至系统  更多... | |
| void | init_robjoint (robjoint *rjoint, double *data, int dof) | 
| 初始化关节目标  更多... | |
| void | init_robpose (robpose *rpose, double *xyz, double *rpy) | 
| 初始化笛卡尔位姿目标  更多... | |
| void | init_speed_joint (speed *sp, double *data, int dof, int flag) | 
| 初始化关节速度  更多... | |
| void | init_speed_cartesian (speed *sp, double tcp, double orl, int flag) | 
| 初始化笛卡尔速度  更多... | |
| void | init_speed (speed *sp, double *data, int dof, int per_flag, double tcp, double orl, int tcp_flag) | 
| 初始速度  更多... | |
| void | init_zone (zone *ze, double size, int flag) | 
| 初始化机器人转弯区  更多... | |
| void | init_tool (tool *tl, double *frame, int robhold, PayLoad *payload) | 
| 初始化机器人工具  更多... | |
| void | init_wobj (wobj *wj, double *userframe, double *workframe, int robhold, int ufprog, int ufmec) | 
| 初始化机器人工件  更多... | |
| void | init_PayLoad (PayLoad *pl, double m, double *cm, double(*I)[3]) | 
| 初始化机器人负载  更多... | |
| void | parse_robjoint (robjoint *rjoint, double *data, int *dof) | 
| 解析关节目标  更多... | |
| void | parse_robpose (robpose *rpose, double *xyz, double *rpy) | 
| 解析笛卡尔位姿目标  更多... | |
| void | parse_speed_joint (speed *sp, double *data, int *dof, int *flag) | 
| 解析化关节速度  更多... | |
| void | parse_speed_cartesian (speed *sp, double *tcp, double *orl, int *flag) | 
| 解析笛卡尔速度  更多... | |
| void | parse_speed (speed *sp, double *data, int *dof, int *per_flag, double *tcp, double *orl, int *tcp_flag) | 
| 解析速度  更多... | |
| void | parse_zone (zone *ze, double *size, int *flag) | 
| 解析机器人转弯区  更多... | |
| void | parse_tool (tool *tl, double *frame, int *robhold, PayLoad *payload) | 
| 解析机器人工具  更多... | |
| void | parse_wobj (wobj *wj, double *userframe, double *workframe, int *robhold, int *ufprog, int *ufmec) | 
| 解析机器人工件  更多... | |
| void | parse_PayLoad (PayLoad *pl, double *m, double *cm, double(*I)[3]) | 
| 解析机器人负载数据  更多... | |
| int | CreatDataBatch (robdatatype rdt, int RW_flag) | 
| 创建批数据区,操作完成必须使用FreeDataDatch()释放批数据  更多... | |
| int | FreeDataDatch () | 
| 释放批数据区  更多... | |
| int | getrobjoint_batch (char *J, robjoint *rjoint, int index) | 
| 获取指定索引的关节数据,必须使用CreatDataBatch()创建批数据区  更多... | |
| int | getrobpose_batch (char *P, robpose *rpose, int index) | 
| 获取指定索引的位姿数据,必须使用CreatDataBatch()创建批数据区  更多... | |
| int | getspeed_batch (char *S, speed *sp, int index) | 
| 获取指定索引的速度数据,必须使用CreatDataBatch()创建批数据区  更多... | |
| int | getzone_batch (char *Z, zone *zo, int index) | 
| 获取指定索引的转弯区数据,必须使用CreatDataBatch()创建批数据区  更多... | |
| int | gettool_batch (char *T, tool *to, int index) | 
| 获取指定索引的工具数据,必须使用CreatDataBatch()创建批数据区  更多... | |
| int | getwobj_batch (char *W, wobj *wo, int index) | 
| 获取指定索引的工件数据,必须使用CreatDataBatch()创建批数据区  更多... | |
| int | writerobjoint_batch (const char *J, robjoint *rjoint) | 
| 写入关节数据,必须使用CreatDataBatch()创建批数据区  更多... | |
| int | writerobpose_batch (const char *P, robpose *rpose) | 
| 写入位姿数据,必须使用CreatDataBatch()创建批数据区  更多... | |
| int | writespeed_batch (const char *S, speed *sp) | 
| 写入速度数据,必须使用CreatDataBatch()创建批数据区  更多... | |
| int | writezone_batch (const char *Z, zone *zo) | 
| 写入转弯区数据,必须使用CreatDataBatch()创建批数据区  更多... | |
| int | writetool_batch (const char *T, tool *to) | 
| 写入工具数据,必须使用CreatDataBatch()创建批数据区  更多... | |
| int | writewobj_batch (const char *W, wobj *wo) | 
| 写入工件数据,必须使用CreatDataBatch()创建批数据区  更多... | |
机器人运动指令数据类型
| #define MAX_BSPLINE_NUM 200 | 
| #define MAX_CHAR_NUM 300 | 
| #define ROBOT_DATA_NAME_LEN_MAX 10 | 
| #define ROBOT_MAX_DOF 10 | 
| #define ROBOT_MAX_NUM 10 | 
| typedef unsigned char byte | 
| typedef enum robdatatype robdatatype | 
运动指令输入数据类型
描述输入数据的类型
| enum controller_mode | 
| enum robdatatype | 
| int CreatDataBatch | ( | robdatatype | rdt, | 
| int | RW_flag | ||
| ) | 
创建批数据区,操作完成必须使用FreeDataDatch()释放批数据
| rdt | 数据类型_robjoint, _robpose, _speed, _zone, _tool, _wobj | 
| RW_flag | 转弯区数据,0:读;1:写 | 
| int FreeDataDatch | ( | ) | 
释放批数据区
| int getDataName | ( | robdatatype | rdt, | 
| int | n, | ||
| char * | dataname | ||
| ) | 
从系统获取数据文件内索引为的数据名字
| rdt | 数据文件类型, _robjoint, _robpose, _speed, _zone, _tool, _wobj | 
| n | 数据索引,0,1,2,... | 
| dataname | 返回数据名字,需要分配内存,为保证可靠的数据大小区,建议大于等于ROBOT_DATA_NAME_LEN_MAX | 
| int getDataNum | ( | robdatatype | rdt | ) | 
从系统获取数据文件内数据的数目
| rdt | 数据文件类型, _robjoint, _robpose, _speed, _zone, _tool, _wobj | 
| int getrobjoint | ( | const char * | J, | 
| robjoint * | rjoint | ||
| ) | 
从系统获取关节位置
| J | 数据名字 | 
| rjoint | 返回关节位置 单位:rad | 
| int getrobjoint_batch | ( | char * | J, | 
| robjoint * | rjoint, | ||
| int | index | ||
| ) | 
获取指定索引的关节数据,必须使用CreatDataBatch()创建批数据区
| J | 返回数据名字 | 
| rjoint | 返回数据 | 
| index | 获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值. | 
| int getrobpose | ( | const char * | P, | 
| robpose * | rpose | ||
| ) | 
从系统获取位姿
| P | 数据名字 | 
| rpose | 返回关节位姿(mm, rad),姿态为固定角描述 | 
| int getrobpose_batch | ( | char * | P, | 
| robpose * | rpose, | ||
| int | index | ||
| ) | 
获取指定索引的位姿数据,必须使用CreatDataBatch()创建批数据区
| P | 返回数据名字 | 
| rpose | 返回数据 | 
| index | 获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值. | 
| int getspeed | ( | const char * | S, | 
| speed * | sp | ||
| ) | 
从系统获取运动速度
| S | 数据名字 | 
| sp | 返回运动速度 | 
| int getspeed_batch | ( | char * | S, | 
| speed * | sp, | ||
| int | index | ||
| ) | 
获取指定索引的速度数据,必须使用CreatDataBatch()创建批数据区
| S | 返回数据名字 | 
| sp | 返回数据 | 
| index | 获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值. | 
| int gettool | ( | const char * | T, | 
| tool * | to | ||
| ) | 
从系统获取末端工具
| T | 数据名字 | 
| to | 返回末端工具数据 | 
| int gettool_batch | ( | char * | T, | 
| tool * | to, | ||
| int | index | ||
| ) | 
获取指定索引的工具数据,必须使用CreatDataBatch()创建批数据区
| T | 返回数据名字 | 
| to | 返回数据 | 
| index | 获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值. | 
| int getwobj | ( | const char * | W, | 
| wobj * | wo | ||
| ) | 
从系统获取工件坐标系
| W | 数据名字 | 
| wo | 坐标系数据 | 
| int getwobj_batch | ( | char * | W, | 
| wobj * | wo, | ||
| int | index | ||
| ) | 
获取指定索引的工件数据,必须使用CreatDataBatch()创建批数据区
| W | 返回数据名字 | 
| wo | 返回数据 | 
| index | 获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值. | 
| int getzone | ( | const char * | Z, | 
| zone * | zo | ||
| ) | 
从系统获取转弯区大小
| Z | 数据名字 | 
| zo | 返回转弯区数据 | 
| int getzone_batch | ( | char * | Z, | 
| zone * | zo, | ||
| int | index | ||
| ) | 
获取指定索引的转弯区数据,必须使用CreatDataBatch()创建批数据区
| Z | 返回数据名字 | 
| zo | 返回数据 | 
| index | 获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值. | 
| void init_PayLoad | ( | PayLoad * | pl, | 
| double | m, | ||
| double * | cm, | ||
| double(*) | I[3] | ||
| ) | 
初始化机器人负载
| pl | 返回负载数据 | 
| m | 连杆质量(t=1000kg) | 
| cm | 相对末端连杆坐标系的质心(mm) | 
| I | 相对质心坐标系的惯性张量(t*mm^2=0.001kg*m^2) | 
| void init_robjoint | ( | robjoint * | rjoint, | 
| double * | data, | ||
| int | dof | ||
| ) | 
初始化关节目标
| rjoint | 返回关节位姿数据 | 
| data | 机器人关节目标数据,单位: rad | 
| dof | 数据维度,即机器人自由度 | 
| void init_robpose | ( | robpose * | rpose, | 
| double * | xyz, | ||
| double * | rpy | ||
| ) | 
初始化笛卡尔位姿目标
| rpose | 返回笛卡尔位姿数据 | 
| xyz | 机器人位置目标数据,单位: mm | 
| rpy | 机器人姿态目标数据(xyz固定角),单位: rad | 
| void init_speed | ( | speed * | sp, | 
| double * | data, | ||
| int | dof, | ||
| int | per_flag, | ||
| double | tcp, | ||
| double | orl, | ||
| int | tcp_flag | ||
| ) | 
初始速度
| sp | 返回速度数据 | 
| data | 机器人关节速度数据,含义由per_flag决定 | 
| dof | 数据维度,即机器人自由度 | 
| per_flag | 关节速度含义0:百分比(0~1);1:速度(mm/s or rad/s);2:时间(s) | 
| tcp | 平动速度,含义由tcp_flag决定 | 
| orl | 转动速度,含义由tcp_flag决定 | 
| tcp_flag | 笛卡尔速度含义 0:百分比(0~1);1:速度(mm/s or rad/s);2:时间(s) | 
| void init_speed_cartesian | ( | speed * | sp, | 
| double | tcp, | ||
| double | orl, | ||
| int | flag | ||
| ) | 
初始化笛卡尔速度
| sp | 返回笛卡尔速度数据 | 
| tcp | 平动速度,含义由flag决定 | 
| orl | 转动速度,含义由flag决定 | 
| flag | 0:百分比(0~1);1:速度(mm/s or rad/s);2:时间(s) | 
| void init_speed_joint | ( | speed * | sp, | 
| double * | data, | ||
| int | dof, | ||
| int | flag | ||
| ) | 
初始化关节速度
| sp | 返回关节速度数据 | 
| data | 机器人关节速度数据,含义由flag决定 | 
| dof | 数据维度,即机器人自由度 | 
| flag | 0:百分比(0~1);1:速度(mm/s or rad/s);2:时间(s) | 
初始化机器人工具
| tl | 返回工具数据 | 
| frame | 工具坐标系(mm, rad) | 
| robhold | 1:安装在机器人上,0:未安装在机器人上 | 
| void init_wobj | ( | wobj * | wj, | 
| double * | userframe, | ||
| double * | workframe, | ||
| int | robhold, | ||
| int | ufprog, | ||
| int | ufmec | ||
| ) | 
初始化机器人工件
| wj | 返回工件数据 | 
| workframe | 工件坐标系(mm, rad) | 
| userframe | 工件坐标系(mm, rad) | 
| robhold | 1:安装在机器人上,0:未安装在机器人上 | 
| ufprog | 预留,未使用 | 
| ufmec | 预留,未使用 | 
| void init_zone | ( | zone * | ze, | 
| double | size, | ||
| int | flag | ||
| ) | 
初始化机器人转弯区
| ze | 返回转弯区数据 | 
| size | 转弯区大小,含义由flag决定 | 
| flag | 0:不采用转弯区平滑过度,1:百分比(0~1),2:距离(mm)或圆周角(rad) | 
| void parse_PayLoad | ( | PayLoad * | pl, | 
| double * | m, | ||
| double * | cm, | ||
| double(*) | I[3] | ||
| ) | 
解析机器人负载数据
| pl | 负载数据 | 
| m | 返回连杆质量(t=1000kg) | 
| cm | 返回相对末端连杆坐标系的质心(mm) | 
| I | 返回相对质心坐标系的惯性张量(t*mm^2=0.001kg*m^2) | 
| void parse_robjoint | ( | robjoint * | rjoint, | 
| double * | data, | ||
| int * | dof | ||
| ) | 
解析关节目标
| rjoint | 关节位姿数据 | 
| data | 返回机器人关节目标数据,单位: rad | 
| dof | 返回数据维度,即机器人自由度 | 
| void parse_robpose | ( | robpose * | rpose, | 
| double * | xyz, | ||
| double * | rpy | ||
| ) | 
解析笛卡尔位姿目标
| rpose | 笛卡尔位姿数据 | 
| xyz | 返回机器人位置目标数据,单位: mm | 
| rpy | 返回机器人姿态目标数据(xyz固定角),单位: rad | 
| void parse_speed | ( | speed * | sp, | 
| double * | data, | ||
| int * | dof, | ||
| int * | per_flag, | ||
| double * | tcp, | ||
| double * | orl, | ||
| int * | tcp_flag | ||
| ) | 
解析速度
| sp | 速度数据 | 
| data | 返回机器人关节速度数据,含义由per_flag决定 | 
| dof | 返回数据维度,即机器人自由度 | 
| per_flag | 返回关节数据含义per_flag 0:百分比(0~1);1:速度(mm/s or rad/s);2:时间(s) | 
| tcp | 返回平动速度,含义由tcp_flag决定 | 
| orl | 返回转动速度,含义由tcp_flag决定 | 
| tcp_flag | 返回笛卡尔速度含义0:百分比(0~1);1:速度(mm/s or rad/s);2:时间(s) | 
| void parse_speed_cartesian | ( | speed * | sp, | 
| double * | tcp, | ||
| double * | orl, | ||
| int * | flag | ||
| ) | 
解析笛卡尔速度
| sp | 笛卡尔速度数据 | 
| tcp | 返回平动速度,含义由flag决定 | 
| orl | 返回转动速度,含义由flag决定 | 
| flag | 返回数据含义0:百分比(0~1);1:速度(mm/s or rad/s);2:时间(s) | 
| void parse_speed_joint | ( | speed * | sp, | 
| double * | data, | ||
| int * | dof, | ||
| int * | flag | ||
| ) | 
解析化关节速度
| sp | 关节速度数据 | 
| data | 返回 机器人关节速度数据,含义由flag决定 | 
| dof | 返回数据维度,即机器人自由度 | 
| flag | 返回数据含义0:百分比(0~1);1:速度(mm/s or rad/s);2:时间(s) | 
解析机器人工具
| tl | 工具数据 | 
| frame | 返回工具坐标系(mm, rad) | 
| robhold | 返回1:安装在机器人上,0:未安装在机器人上 | 
| void parse_wobj | ( | wobj * | wj, | 
| double * | userframe, | ||
| double * | workframe, | ||
| int * | robhold, | ||
| int * | ufprog, | ||
| int * | ufmec | ||
| ) | 
解析机器人工件
| wj | 工件数据 | 
| workframe | 返回工件坐标系(mm, rad) | 
| userframe | 返回工件坐标系(mm, rad) | 
| robhold | 返回 1:安装在机器人上,0:未安装在机器人上 | 
| ufprog | 返回预留,未使用 | 
| ufmec | 返回预留,未使用 | 
| void parse_zone | ( | zone * | ze, | 
| double * | size, | ||
| int * | flag | ||
| ) | 
解析机器人转弯区
| ze | 转弯区数据 | 
| size | 返回转弯区大小,含义由flag决定 | 
| flag | 返回0:不采用转弯区平滑过度,1:百分比(0~1),2:距离(mm)或圆周角(rad) | 
| int writerobjoint | ( | const char * | J, | 
| robjoint * | rjoint | ||
| ) | 
写关节位置至系统
| J | 数据名字 | 
| rjoint | 关节位置 单位:rad | 
| int writerobjoint_batch | ( | const char * | J, | 
| robjoint * | rjoint | ||
| ) | 
写入关节数据,必须使用CreatDataBatch()创建批数据区
| J | 写入数据名字 | 
| rjoint | 写入数据内容 | 
| int writerobpose | ( | const char * | P, | 
| robpose * | rpose | ||
| ) | 
写位姿至系统
| P | 数据名字 | 
| rpose | 关节位姿(mm, rad),姿态为固定角描述 | 
| int writerobpose_batch | ( | const char * | P, | 
| robpose * | rpose | ||
| ) | 
写入位姿数据,必须使用CreatDataBatch()创建批数据区
| P | 写入数据名字 | 
| rpose | 写入数据内容 | 
| int writespeed | ( | const char * | S, | 
| speed * | sp | ||
| ) | 
写运动速度至系统
| S | 数据名字 | 
| sp | 运动速度 | 
| int writespeed_batch | ( | const char * | S, | 
| speed * | sp | ||
| ) | 
写入速度数据,必须使用CreatDataBatch()创建批数据区
| S | 写入数据名字 | 
| sp | 写入数据内容 | 
| int writetool | ( | const char * | T, | 
| tool * | to | ||
| ) | 
写工件坐标系数据至系统
| T | 数据名字 | 
| to | 末端工具数据 | 
| int writetool_batch | ( | const char * | T, | 
| tool * | to | ||
| ) | 
写入工具数据,必须使用CreatDataBatch()创建批数据区
| T | 写入数据名字 | 
| to | 写入数据内容 | 
| int writewobj | ( | const char * | W, | 
| wobj * | wo | ||
| ) | 
写工件坐标系数据至系统
| W | 数据名字 | 
| wo | 坐标系数据 | 
| int writewobj_batch | ( | const char * | W, | 
| wobj * | wo | ||
| ) | 
写入工件数据,必须使用CreatDataBatch()创建批数据区
| W | 写入数据名字 | 
| wo | 写入数据内容 | 
| int writezone | ( | const char * | Z, | 
| zone * | zo | ||
| ) | 
写转弯区数据至系统
| Z | 数据名字 | 
| zo | 转弯区数据 | 
| int writezone_batch | ( | const char * | Z, | 
| zone * | zo | ||
| ) | 
写入转弯区数据,必须使用CreatDataBatch()创建批数据区
| Z | 写入数据名字 | 
| zo | 写入数据内容 |