|
- using System;
- using System.Collections.Generic;
- //using System.Numerics;
- using System.Text;
- using System.Runtime.InteropServices;
-
-
- namespace jkType
- {
-
- public class JKTYPE
- {
- /**
- * @brief 笛卡尔空间位置数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct CartesianTran
- {
-
- public double x; ///< x轴坐标,单位mm
- public double y; ///< y轴坐标,单位mm
- public double z; ///< z轴坐标,单位mm
- };
-
- /**
- * @brief 欧拉角姿态数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct Rpy
- {
- public double rx; ///< 绕固定轴X旋转角度,单位:rad
- public double ry; ///< 绕固定轴Y旋转角度,单位:rad
- public double rz; ///< 绕固定轴Z旋转角度,单位:rad
- };
-
- /**
- * @brief 四元数姿态数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct Quaternion
- {
- public double s;
- public double x;
- public double y;
- public double z;
- };
-
- /**
- *@brief 笛卡尔空间位姿类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct CartesianPose
- {
- public CartesianTran tran; ///< 笛卡尔空间位置
- public Rpy rpy; ///< 笛卡尔空间姿态
- };
-
- /**
- * @brief 旋转矩阵数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct RotMatrix
- {
- public CartesianTran x; ///< x轴列分量
- public CartesianTran y; ///< y轴列分量
- public CartesianTran z; ///< z轴列分量
- };
-
- /**
- * @brief 程序运行状态枚举类型
- */
- public enum ProgramState
- {
- PROGRAM_IDLE, ///< 机器人停止运行
- PROGRAM_RUNNING, ///< 机器人正在运行
- PROGRAM_PAUSED ///< 机器人暂停
- };
-
- /**
- * @brief 坐标系选择枚举类型
- */
- public enum CoordType
- {
- COORD_BASE, ///< 基坐标系
- COORD_JOINT, ///< 关节空间
- COORD_TOOL ///< 工具坐标系
- };
-
- /**
- * @brief jog运动模式枚举
- */
- public enum MoveMode
- {
- ABS = 0, ///< 绝对运动
- INCR ///< 增量运动
- };
-
- /**
- * @brief 系统监测数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct SystemMonitorData
- {
- public int scbMajorVersion; ///<scb主版本号
- public int scbMinorVersion; ///<scb次版本号
- public int cabTemperature; ///<控制柜温度
- public double robotAveragePower; ///<控制柜总线平均功率
- public double robotAverageCurrent; ///<控制柜总线平均电流
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public double[] instCurrent; ///<机器人6个轴的瞬时电流
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public double[] instVoltage; ///<机器人6个轴的瞬时电压
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public double[] instTemperature; ///<机器人6个轴的瞬时温度
- };
-
- /**
- * @brief 负载数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct PayLoad
- {
- public double mass; ///<负载质量,单位:kg
- public CartesianTran centroid; ///<负载质心, 单位:mm
- };
-
- /**
- * @brief 关节位置数据类型
- */
- public struct JointValue
- {
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public double[] jVal ; ///< 6关节位置值,单位:rad
- };
-
- /**
- * @brief IO类型枚举
- */
- public enum IOType
- {
- IO_CABINET, ///< 控制柜面板IO
- IO_TOOL, ///< 工具IO
- IO_EXTEND ///< 扩展IO
- };
-
- /**
- * @brief 机器人状态数据
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct RobotState
- {
- public int estoped; ///< 是否急停
- public int poweredOn; ///< 是否打开电源
- public int servoEnabled; ///< 是否使能
- };
-
- /**
- * @brief 机器人力矩数据
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct TorqueValue
- {
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public double[] jTorque; ///< 是否使能
- }
-
- /**
- * @brief 机器人关节监测数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct JointMonitorData
- {
- double instCurrent; ///< 瞬时电流
- double instVoltage; ///< 瞬时电压
- double instTemperature; ///< 瞬时温度
- }
-
-
- /**
- * @brief 机器人监测数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct RobotMonitorData
- {
- double scbMajorVersion; ///< scb主版本号
- double scbMinorVersion; ///< scb小版本号
- double cabTemperature; ///< 控制器温度
- double robotAveragePower; ///< 机器人平均电压
- double robotAverageCurrent; ///< 机器人平均电流
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public JointMonitorData[] jointMonitorData; ///< 机器人6个关节的监测数据
- }
-
- /**
- * @brief 力矩传感器监测数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct TorqSensorMonitorData
- {
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
- public char[] ip; ///< 力矩传感器ip地址
- int port; ///< 力矩传感器端口号
- PayLoad payLoad; ///< 工具负载
- int status; ///< 力矩传感器状态
- int errcode; ///< 力矩传感器异常错误码
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public double[] actTorque; ///< 力矩传感器实际接触力值
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public double[] torque; ///< 力矩传感器原始读数值
- }
-
- /**
- * @brief 机器人状态监测数据,使用get_robot_status函数更新机器人状态数据
- */
-
- [StructLayout(LayoutKind.Sequential)]
- public struct RobotStatus
- {
- public int errcode; ///< 机器人运行出错时错误编号,0为运行正常,其它为运行异常
- public int inpos; ///< 机器人运动是否到位标志,0为没有到位,1为运动到位
- public int powered_on; ///< 机器人是否上电标志,0为没有上电,1为上电
- public int enabled; ///< 机器人是否使能标志,0为没有使能,1为使能
- public double rapidrate; ///< 机器人运动倍率
- public int protective_stop; ///< 机器人是否检测到碰撞,0为没有检测到碰撞,1为检测到碰撞
- public int emergency_stop; ///< 机器人是否急停,0为没有急停,1为急停
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
- public int []dout; ///< 机器人控制柜数字输出信号,dout[0]为信号的个数
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
- public int []tio_dout; ///< 机器人末端工具数字输出信号,tio_dout[0]为信号的个数
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
- public int []extio; ///< 机器人外部应用数字输出信号,extio[0]为信号的个数
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
- public int []din; ///< 机器人控制柜数字输入信号,din[0]为信号的个数
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
- public int []tio_din; ///< 机器人末端工具数字输入信号,tio_din[0]为信号的个数
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
- public double []ain; ///< 机器人控制柜模拟输入信号,ain[0]为信号的个数
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
- public double []tio_ain; ///< 机器人末端工具模拟输入信号,tio_ain[0]为信号的个数
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
- public double []aout; ///< 机器人控制柜模拟输出信号,aout[0]为信号的个数
- public int current_tool_id; ///< 机器人目前使用的工具坐标系id
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public double []cartesiantran_position; ///< 机器人末端所在的笛卡尔空间位置
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public double []joint_position; ///< 机器人关节空间位置
- public int on_soft_limit; ///< 机器人是否处于限位,0为没有触发限位保护,1为触发限位保护
- public int current_user_id; ///< 机器人目前使用的用户坐标系id
- public int drag_status; ///< 机器人是否处于拖拽状态,0为没有处于拖拽状态,1为处于拖拽状态
- public RobotMonitorData robot_monitor_data; ///< 机器人状态监测数据
- public TorqSensorMonitorData torq_sensor_monitor_data; ///< 机器人力矩传感器状态监测数据
- int is_socket_connect; ///< sdk与控制器连接通道是否正常,0为连接通道异常,1为连接通道正常
- }
-
-
- /**
- * @brief 机器人错误码数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct ErrorCode
- {
- public long code; ///< 错误码编号
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)]
- public char[] message; ///< 错误码对应提示信息
- }
-
- /**
- * @brief 轨迹复现配置参数数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct TrajTrackPara
- {
- public double xyz_interval; ///< 空间位置采集精度
- public double rpy_interval; ///< 姿态采集精度
- public double vel; ///< 执行脚本运行速度
- public double acc; ///< 执行脚本运行加速度
- }
-
- /**
- * @brief 多个字符串存储数据类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct MultStrStorType
- {
- public int len; ///< 字符串个数
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128*128)]
- public char[] message; ///< 错误码对应提示信息
- }
-
- /**
- * @brief 运动参数可选项
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct OptionalCond
- {
- int executingLineId; ///< 控制命令id编号
- }
-
- /**
- * @brief 网络异常机器人运动自动终止类型枚举
- */
- public enum ProcessType
- {
- MOT_KEEP, ///< 网络异常时机器人继续保持原来的运动
- MOT_PAUSE, ///< 网络异常时机器人暂停运动
- MOT_ABORT ///< 网络异常时机器人终止运动
- }
-
- /**
- * @brief 柔顺控制参数类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct AdmitCtrlType
- {
- int opt; ///< 柔顺方向,可选值为 1 2 3 4 5 6分别对应 fx fy fz mx my mz,0代表没有勾选
- double ft_user; ///< 用户用多大的力才能让机器人的沿着某个方向以最大速度进行运动
- double ft_rebound; ///< 回弹力:机器人回到初始状态的能力
- double ft_constant; ///< 恒力
- int ft_normal_track; ///< 法向跟踪是否开启,0为没有开启,1为开启
- }
-
- /**
- * @brief 机器人柔顺控制参数类型
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct RobotAdmitCtrl
- {
- [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
- public AdmitCtrlType[] admit_ctrl;
- }
-
- /**
- * @brief 速度柔顺控制等级和比率等级设置
- * 速度柔顺控制分三个等级,并且 1>rate1>rate2>rate3>rate4>0
- * 等级为1时,只能设置rate1,rate2两个等级。rate3,rate4的值为0
- * 等级为2时,只能设置rate1,rate2,rate3 三个等级。rate4的值为0
- * 等级为3时,能设置 rate1,rate2,rate3,rate4 4个等级
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct VelCom
- {
- int vc_level; //速度柔顺控制等级
- double rate1; //比率1等级
- double rate2; //比率2等级
- double rate3; //比率3等级
- double rate4; //比率4等级
- }
-
- /**
- * @brief 力传感器的受力分量和力矩分量
- */
- [StructLayout(LayoutKind.Sequential)]
- public struct FTxyz
- {
- double fx; // 沿x轴受力分量
- double fy; // 沿y轴受力分量
- double fz; // 沿z轴受力分量
- double tx; // 绕x轴力矩分量
- double ty; // 绕y轴力矩分量
- double tz; // 绕z轴力矩分量
- }
-
- }
- }
|