机器人运动指令数据类型 更多...
#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 | 写入数据内容 |