Skip to content

数据结构

定义常量

#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;