数据结构
定义常量
#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
机器人控制类型
说明
选择所要控制的机器人,默认为_other,从配置文件读取机器人类型
定义
typedef enum{
_other=0, ///< 从配置文件获取机器人类型
_ethercat, ///< EtherCAT直接驱动驱动器的控制方式
_ur, ///< 通过ur机器人控制器驱动ur机器人
_aubo,///< 通过aubo机器人控制器驱动aubo机器人
_custom, ///< 自定义协议驱动的控制方式
}controller_mode;
命令行数据结构
说明
保存命令行数据
定义
typedef struct{
char* path; /**< 配置文件所在路径 */
controller_mode mode; /**< 机器人类型 */
int dete_background;/** 是否开启后台关节状态异常检测 */
int EtherCATonly;/** 是否仅启动EtherCAT通信,关闭其他运动控制功能 */
int server_modbus;/** 是否启动modbus服务 */
int port;/** 示教服务端口号 */
int iscopy;/** 运行程序是否为副本 */
}command_arg;
负载数据
说明
描述负载动力学
定义
typedef struct PayLoad{
double m;/**< 连杆质量(t=1000kg)*/
double cm[3];/**< 相对末端连杆坐标系的质心(mm)*/
double I[3][3];/**< 相对质心坐标系的惯性张量(t*mm^2=0.001kg*m^2)*/
double I2[3][3];/**< 相对末端连杆坐标系的惯性张量(t*mm^2=0.001kg*m^2)*/
}PayLoad;
关节数据
说明
存储机器人关节数据
定义
typedef struct robjoint{
double angle[ROBOT_MAX_DOF];/**< 机器人关节角度,单位rad */
int dof;/**< 机器人自由度*/
}robjoint;
笛卡尔位置及姿态数据
定义
存储机器人位姿数据
定义
typedef struct robpose{
double xyz[3];/**< 位置,单位mm*/
double kps[3];/**< 姿态,单位rad*/
}robpose;
速度数据
说明
存储机器人关节速度和笛卡尔速度数据
定义
typedef struct speed{
double per[ROBOT_MAX_DOF];/**< 关节速度,per_flag=0: 最大速度的百分比0~1; per_flag=1: 速度,单位rad/s; per_flag=2: 时间,单位s;*/
int per_flag;/**< per 含义,0:百分比;1:速度;2:时间; -1:不是用*/
double tcp;/**< 笛卡尔移动速度,tcp_flag=0: 最大速度的百分比0~1; tcp_flag=1: 速度,单位mm/s; tcp_flag=2: 时间,单位s;*/
double orl;/**< 笛卡尔转动速度,tcp_flag=0: 最大速度的百分比0~1; tcp_flag=1: 速度,单位rad/s; tcp_flag=2: 时间,单位s;*/
int tcp_flag;/**< tcp 含义,0:百分比;1:速度;2:时间; -1:不是用*/
int dof;/**< 机器人自由度*/
}speed;
转弯区数据
说明
应用机器人连续两条指令之间的过度曲线,存储机器人转弯区数据
定义
typedef struct zone{
int zone_flag;/** 转弯区大小,zone_size=0:不使用转弯区;zone_size=1:运动总长度的百分比0~1;zone_size=2:转弯大小,移动mm,转动rad*/
double zone_size;/** zone_flag含义,0:不使用;1:百分比;2:具体大小*/
}zone;
工具数据
说明
描述机器人所使用的工具
定义
typedef struct tool{
int robhold;/**< 是否手持工具,0:非手持;1:手持*/
robpose tframe;/**< 工具坐标系相对法兰坐标系的位置及姿态描述*/
PayLoad payload;/**< 负载*/
}tool;
工件标系数据
说明
描述机器人加工工件的坐标系,与工具配对使用
定义
typedef struct wobj{
int robhold;///< 工件是否在机器人上,0:不在机器人上;1:在机器人上
int ufprog;///< 预留,未使用
int ufmec;///< 预留,未使用
robpose uframe;///< 用户坐标在基坐标系下的描述
robpose oframe;///< 工件坐标在用户坐标系下的描述
}wobj;
运动指令输入数据类型
说明
描述输入数据的类型
定义
typedef enum robdatatype{
_robjoint,///< 关节数据
_robpose,///< 笛卡尔数据
_speed,///< 速度数据
_zone,///< 转弯区数据
_tool,///< 工具数据
_wobj///< 工件数据
}robdatatype;