数据类型和变量(以C++为例)#
枚举变量的含义:
机器人状态信息:
enum StateRobot {
SR_Start = 0, // 机器人启动
SR_Initialize = 1, // 机器人初始化
SR_Logout = 2, // 机器人登出, 暂未使用
SR_Login = 3, // 机器人登陆, 暂未使用
SR_PowerOff = 4, // 机器人下电
SR_Disable = 5, // 机器人下使能
SR_Enable = 6, // 机器人上使能
SR_Update=7 // 机器人更新
};
程序状态信息:
enum StateProgram {
SP_Stopped = 0, // 程序停止
SP_Stopping = 1, // 程序正在停止中
SP_Running = 2, // 程序正在运行
SP_Paused = 3, // 程序已经暂停
SP_Pausing = 4, // 程序暂停中
SP_TaskRuning = 5 // 手动示教任务执行中
};
机器人操作模式信息:
enum OperationMode {
kManual = 0, // 手动模式
kAuto = 1, // 自动模式
kRemote = 2 // 远程模式
};
任务状态信息:
enum TaskState {
ST_Idle = 0, // 任务未执行
ST_Running = 1, // 任务正在执行
ST_Paused = 2, // 任务已经暂停
ST_Stopped = 3, // 任务已经停止
ST_Finished = 4, // 任务已经正常执行完成, 唯一表示任务正常完成(任务已经结束)
ST_Interrupt = 5, // 任务被中断(任务已经结束)
ST_Error = 6, // 任务出错(任务已经结束)
ST_Illegal = 7, // 任务非法, 当前状态下任务不能执行(任务已经结束)
ST_ParameterMismatch = 8 // 任务参数错误(任务已经结束)
};
安全控制器状态信息:
enum SafetyState {
SS_INIT = 0, // 初始化
SS_WAIT = 2, // 等待
SS_CONFIG = 3, // 配置模式
SS_POWER_OFF = 4, // 下电状态
SS_RUN = 5, // 正常运行状态
SS_RECOVERY = 6, // 恢复模式
SS_STOP2 = 7, // Stop2
SS_STOP1 = 8, // Stop1
SS_STOP0 = 9, // Stop0
SS_MODEL = 10, // 模型配置状态
SS_REDUCE = 12, // 缩减模式状态
SS_BOOT = 13, // 引导
SS_FAIL = 14, // 致命错误状态
SS_UPDATE = 99 // 更新状态
};
结构体变量含义:
机器人相关信息:
struct RobotStatusList{
std::vector<double> jointExpectPosition; // 目标关节位置
std::vector<double> jointExpectVelocity; // 目标角速度
std::vector<double> jointExpectAccelera; // 目标角加速度
std::vector<double> jointActualPosition; // 实际关节位置
std::vector<double> jointActualVelocity; // 实际角速度
std::vector<double> jointActualAccelera; // 实际角加速度
std::vector<double> jointActualCurrent; // 实际关节电流
std::vector<double> jointTemperature; // 时间关节温度
std::vector<double> driverTemperature; // 未使用
std::vector<double> cartExpectPosition; // 目标末端位姿
std::vector<double> cartExpectVelocity; // 目标末端速度
std::vector<double> cartExpectAccelera; // 目标末端加速度
std::vector<double> cartActualPosition; // 实际末端位姿
std::vector<double> cartActualVelocity; // 实际末端速度
std::vector<double> cartActualAccelera; // 实际末端加速度
std::vector<bool> slaveReady; // 从站状态
bool collision; // 是否发生碰撞
int8_t collisionAxis; // 发生碰撞的关节
bool emcStopSignal; // 未使用
int8_t robotState; // 机器人状态
int32_t robotError; // 机器人错误码
};
IO和寄存器相关信息:
struct IOStatusList{
std::vector<double> analogCurrentOutputs; // 模拟电流输出
std::vector<double> analogVoltageOutputs; // 模拟电压输出
std::vector<double> analogCurrentInputs; // 模拟电流输入
std::vector<double> analogVoltageInputs; // 模拟电压输入
std::vector<bool> digitalInputs; // 通用数字输入
std::vector<bool> digitalOutputs; // 通用数字输出
std::vector<bool> toolIOIn; // 工具数字输入
std::vector<bool> toolIOOut; // 工具数字输出
std::vector<bool> toolButton; // 工具末端按键
std::vector<bool> funRegisterInputs; // 功能寄存器输入
std::vector<bool> funRegisterOutputs; // 功能寄存器输出
std::vector<bool> boolRegisterInputs; // bool寄存器输入
std::vector<bool> boolRegisterOutputs; // bool寄存器输出
std::vector<int16_t> wordRegisterInputs; // word寄存器输入
std::vector<int16_t> wordRegisterOutputs; // word寄存器输出
std::vector<double> floatRegisterInputs; // float寄存器输入
std::vector<double> floatRegisterOutputs; // float寄存器输出
};
机器人点动相关信息:
struct MoveJogTaskParams{
int32_t jog_direction; // 运动方向, -1:负方向, 1:正方向
int32_t jog_type; // 1: 空间点动, 2: 关节点动
int32_t axis_num; // 关节索引号
double vel; // 速度百分比
int32_t jog_coordinate; // 参考坐标系, 0: 世界, 1: 基座, 2: 工具, 3: 工件
bool use_step; // 是否步进模式
double step_jointValue; // 关节步进距离, 单位:m、rad
double step_cartvalue; // 末端步进距离, 单位:m、rad
};
可达性检测相关信息:
struct ReachabilityParams{
bool result; // 可达性确认结果
std::vector<std::vector<double> > joints_pos; // 可达性检测成功时所对应的所有关节位置
};
外部轴反馈信息:
struct EAxisInfo{
std::string scheme_name; // 外部轴方案名称
int32_t status; // 激活状态
double pos; // 当前位置
};
实时数据:
struct RealTimeData{
std::vector<double> joint_pos_cmd; // 关节位置实时指令, 仅在实时控制模式为关节位置时生效
std::vector<double> joint_vel_cmd; // 关节速度实时指令, 仅在实时控制模式为关节速度时生效
std::vector<double> joint_torq_cmd; // 关节力矩控制指令, 预留
std::vector<double> cart_pos_tool_wobj_cmd; // 笛卡尔位置实时指令, 对应当前机器人工具坐标系在工件坐标系下的位置, 仅在实时控制模式未笛卡尔位置时生效
std::vector<double> cart_vel_tool_wobj_cmd; // 笛卡尔速度实时指令, 对应当前机器人工具坐标系在工件坐标系下的速度, 仅在实时控制模式未笛卡尔速度时生效
std::vector<double> cart_ft_cmd; // 笛卡尔力和力矩控制指令, 预留
bool status; // 控制指令刷新状态, 更新机器人控制指令时给true
};
路径点和OP操作:
struct PointOP{
std::vector<double> pos; // 笛卡尔位置
OP op; // 该位置对应的OP操作
};
为了方便使用, 上述的枚举类型在实际使用时为int类型, 上述枚举类型仅提供使用时int值对应的状态信息。
c++函数中vector<double>类型对应python类型list。