controller
robotStruct.h 文件参考

机器人运动指令数据类型 更多...

#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()创建批数据区 更多...
 

详细描述

机器人运动指令数据类型

作者
hanbing
版本
1.0
日期
2020-04-08

宏定义说明

◆ MAX_BSPLINE_NUM

#define MAX_BSPLINE_NUM   200

◆ MAX_CHAR_NUM

#define MAX_CHAR_NUM   300

◆ ROBOT_DATA_NAME_LEN_MAX

#define ROBOT_DATA_NAME_LEN_MAX   10

◆ ROBOT_MAX_DOF

#define ROBOT_MAX_DOF   10

◆ ROBOT_MAX_NUM

#define ROBOT_MAX_NUM   10

类型定义说明

◆ byte

typedef unsigned char byte

◆ PayLoad

typedef struct PayLoad PayLoad

负载数据

描述负载动力学

◆ robdatatype

typedef enum robdatatype robdatatype

运动指令输入数据类型

描述输入数据的类型

◆ robjoint

typedef struct robjoint robjoint

运动指令输入,关节数据

存储机器人关节数据

◆ robpose

typedef struct robpose robpose

运动指令输入,笛卡尔位置及姿态数据

存储机器人位姿数据

◆ speed

typedef struct speed speed

运动指令输入,速度数据

存储机器人关节速度和笛卡尔速度数据

◆ tool

typedef struct tool tool

运动指令输入,工具数据

描述机器人所使用的工具

◆ wobj

typedef struct wobj wobj

运动指令输入,工件标系数据

描述机器人加工工件的坐标系,与工具配对使用

◆ zone

typedef struct zone zone

运动指令输入,转弯区数据

应用机器人连续两条指令之间的过度曲线,存储机器人转弯区数据

枚举类型说明

◆ controller_mode

控制器机器人类型

选择所要控制的机器人,默认为_other,从配置文件读取机器人类型

枚举值
_other 

从配置文件获取机器人类型

_ethercat 

EtherCAT直接驱动驱动器的控制方式

_ur 

通过ur机器人控制器驱动ur机器人

_aubo 

通过aubo机器人控制器驱动aubo机器人

_custom 

自定义协议驱动的控制方式

◆ robdatatype

运动指令输入数据类型

描述输入数据的类型

枚举值
_robjoint 

关节数据

_robpose 

笛卡尔数据

_speed 

速度数据

_zone 

转弯区数据

_tool 

工具数据

_wobj 

工件数据

函数说明

◆ CreatDataBatch()

int CreatDataBatch ( robdatatype  rdt,
int  RW_flag 
)

创建批数据区,操作完成必须使用FreeDataDatch()释放批数据

参数
rdt数据类型_robjoint, _robpose, _speed, _zone, _tool, _wobj
RW_flag转弯区数据,0:读;1:写
返回
int 正确返回已有数据数目,错误返回其他

◆ FreeDataDatch()

int FreeDataDatch ( )

释放批数据区

返回
int 正确返回0,错误返回其他

◆ getDataName()

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 正确返回0,错误返回其他

◆ getDataNum()

int getDataNum ( robdatatype  rdt)

从系统获取数据文件内数据的数目

参数
rdt数据文件类型, _robjoint, _robpose, _speed, _zone, _tool, _wobj
返回
int 正确返回0,错误返回其他

◆ getrobjoint()

int getrobjoint ( const char *  J,
robjoint rjoint 
)

从系统获取关节位置

参数
J数据名字
rjoint返回关节位置 单位:rad
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ getrobjoint_batch()

int getrobjoint_batch ( char *  J,
robjoint rjoint,
int  index 
)

获取指定索引的关节数据,必须使用CreatDataBatch()创建批数据区

参数
J返回数据名字
rjoint返回数据
index获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值.
返回
int 正确返回0,错误返回其他

◆ getrobpose()

int getrobpose ( const char *  P,
robpose rpose 
)

从系统获取位姿

参数
P数据名字
rpose返回关节位姿(mm, rad),姿态为固定角描述
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ getrobpose_batch()

int getrobpose_batch ( char *  P,
robpose rpose,
int  index 
)

获取指定索引的位姿数据,必须使用CreatDataBatch()创建批数据区

参数
P返回数据名字
rpose返回数据
index获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值.
返回
int 正确返回0,错误返回其他

◆ getspeed()

int getspeed ( const char *  S,
speed sp 
)

从系统获取运动速度

参数
S数据名字
sp返回运动速度
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ getspeed_batch()

int getspeed_batch ( char *  S,
speed sp,
int  index 
)

获取指定索引的速度数据,必须使用CreatDataBatch()创建批数据区

参数
S返回数据名字
sp返回数据
index获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值.
返回
int 正确返回0,错误返回其他

◆ gettool()

int gettool ( const char *  T,
tool to 
)

从系统获取末端工具

参数
T数据名字
to返回末端工具数据
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ gettool_batch()

int gettool_batch ( char *  T,
tool to,
int  index 
)

获取指定索引的工具数据,必须使用CreatDataBatch()创建批数据区

参数
T返回数据名字
to返回数据
index获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值.
返回
int 正确返回0,错误返回其他

◆ getwobj()

int getwobj ( const char *  W,
wobj wo 
)

从系统获取工件坐标系

参数
W数据名字
wo坐标系数据
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ getwobj_batch()

int getwobj_batch ( char *  W,
wobj wo,
int  index 
)

获取指定索引的工件数据,必须使用CreatDataBatch()创建批数据区

参数
W返回数据名字
wo返回数据
index获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值.
返回
int 正确返回0,错误返回其他

◆ getzone()

int getzone ( const char *  Z,
zone zo 
)

从系统获取转弯区大小

参数
Z数据名字
zo返回转弯区数据
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ getzone_batch()

int getzone_batch ( char *  Z,
zone zo,
int  index 
)

获取指定索引的转弯区数据,必须使用CreatDataBatch()创建批数据区

参数
Z返回数据名字
zo返回数据
index获取数据的索引,(0,1,2,...),最大值小于CreatDataBatch()的返回值.
返回
int 正确返回0,错误返回其他

◆ init_PayLoad()

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)

◆ init_robjoint()

void init_robjoint ( robjoint rjoint,
double *  data,
int  dof 
)

初始化关节目标

参数
rjoint返回关节位姿数据
data机器人关节目标数据,单位: rad
dof数据维度,即机器人自由度

◆ init_robpose()

void init_robpose ( robpose rpose,
double *  xyz,
double *  rpy 
)

初始化笛卡尔位姿目标

参数
rpose返回笛卡尔位姿数据
xyz机器人位置目标数据,单位: mm
rpy机器人姿态目标数据(xyz固定角),单位: rad

◆ init_speed()

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)

◆ init_speed_cartesian()

void init_speed_cartesian ( speed sp,
double  tcp,
double  orl,
int  flag 
)

初始化笛卡尔速度

参数
sp返回笛卡尔速度数据
tcp平动速度,含义由flag决定
orl转动速度,含义由flag决定
flag0:百分比(0~1);1:速度(mm/s or rad/s);2:时间(s)

◆ init_speed_joint()

void init_speed_joint ( speed sp,
double *  data,
int  dof,
int  flag 
)

初始化关节速度

参数
sp返回关节速度数据
data机器人关节速度数据,含义由flag决定
dof数据维度,即机器人自由度
flag0:百分比(0~1);1:速度(mm/s or rad/s);2:时间(s)

◆ init_tool()

void init_tool ( tool tl,
double *  frame,
int  robhold,
PayLoad payload 
)

初始化机器人工具

参数
tl返回工具数据
frame工具坐标系(mm, rad)
robhold1:安装在机器人上,0:未安装在机器人上

◆ init_wobj()

void init_wobj ( wobj wj,
double *  userframe,
double *  workframe,
int  robhold,
int  ufprog,
int  ufmec 
)

初始化机器人工件

参数
wj返回工件数据
workframe工件坐标系(mm, rad)
userframe工件坐标系(mm, rad)
robhold1:安装在机器人上,0:未安装在机器人上
ufprog预留,未使用
ufmec预留,未使用

◆ init_zone()

void init_zone ( zone ze,
double  size,
int  flag 
)

初始化机器人转弯区

参数
ze返回转弯区数据
size转弯区大小,含义由flag决定
flag0:不采用转弯区平滑过度,1:百分比(0~1),2:距离(mm)或圆周角(rad)

◆ parse_PayLoad()

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)

◆ parse_robjoint()

void parse_robjoint ( robjoint rjoint,
double *  data,
int *  dof 
)

解析关节目标

参数
rjoint关节位姿数据
data返回机器人关节目标数据,单位: rad
dof返回数据维度,即机器人自由度

◆ parse_robpose()

void parse_robpose ( robpose rpose,
double *  xyz,
double *  rpy 
)

解析笛卡尔位姿目标

参数
rpose笛卡尔位姿数据
xyz返回机器人位置目标数据,单位: mm
rpy返回机器人姿态目标数据(xyz固定角),单位: rad

◆ parse_speed()

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)

◆ parse_speed_cartesian()

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)

◆ parse_speed_joint()

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)

◆ parse_tool()

void parse_tool ( tool tl,
double *  frame,
int *  robhold,
PayLoad payload 
)

解析机器人工具

参数
tl工具数据
frame返回工具坐标系(mm, rad)
robhold返回1:安装在机器人上,0:未安装在机器人上

◆ parse_wobj()

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返回预留,未使用

◆ parse_zone()

void parse_zone ( zone ze,
double *  size,
int *  flag 
)

解析机器人转弯区

参数
ze转弯区数据
size返回转弯区大小,含义由flag决定
flag返回0:不采用转弯区平滑过度,1:百分比(0~1),2:距离(mm)或圆周角(rad)

◆ writerobjoint()

int writerobjoint ( const char *  J,
robjoint rjoint 
)

写关节位置至系统

参数
J数据名字
rjoint关节位置 单位:rad
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ writerobjoint_batch()

int writerobjoint_batch ( const char *  J,
robjoint rjoint 
)

写入关节数据,必须使用CreatDataBatch()创建批数据区

参数
J写入数据名字
rjoint写入数据内容
返回
int 正确返回0,错误返回其他

◆ writerobpose()

int writerobpose ( const char *  P,
robpose rpose 
)

写位姿至系统

参数
P数据名字
rpose关节位姿(mm, rad),姿态为固定角描述
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ writerobpose_batch()

int writerobpose_batch ( const char *  P,
robpose rpose 
)

写入位姿数据,必须使用CreatDataBatch()创建批数据区

参数
P写入数据名字
rpose写入数据内容
返回
int 正确返回0,错误返回其他

◆ writespeed()

int writespeed ( const char *  S,
speed sp 
)

写运动速度至系统

参数
S数据名字
sp运动速度
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ writespeed_batch()

int writespeed_batch ( const char *  S,
speed sp 
)

写入速度数据,必须使用CreatDataBatch()创建批数据区

参数
S写入数据名字
sp写入数据内容
返回
int 正确返回0,错误返回其他

◆ writetool()

int writetool ( const char *  T,
tool to 
)

写工件坐标系数据至系统

参数
T数据名字
to末端工具数据
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ writetool_batch()

int writetool_batch ( const char *  T,
tool to 
)

写入工具数据,必须使用CreatDataBatch()创建批数据区

参数
T写入数据名字
to写入数据内容
返回
int 正确返回0,错误返回其他

◆ writewobj()

int writewobj ( const char *  W,
wobj wo 
)

写工件坐标系数据至系统

参数
W数据名字
wo坐标系数据
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ writewobj_batch()

int writewobj_batch ( const char *  W,
wobj wo 
)

写入工件数据,必须使用CreatDataBatch()创建批数据区

参数
W写入数据名字
wo写入数据内容
返回
int 正确返回0,错误返回其他

◆ writezone()

int writezone ( const char *  Z,
zone zo 
)

写转弯区数据至系统

参数
Z数据名字
zo转弯区数据
返回
int 正确返回0,错误返回其他(-1:指定名字无效)

◆ writezone_batch()

int writezone_batch ( const char *  Z,
zone zo 
)

写入转弯区数据,必须使用CreatDataBatch()创建批数据区

参数
Z写入数据名字
zo写入数据内容
返回
int 正确返回0,错误返回其他