You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

365 lines
12 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. //using System.Numerics;
  4. using System.Text;
  5. using System.Runtime.InteropServices;
  6. namespace jkType
  7. {
  8. public class JKTYPE
  9. {
  10. /**
  11. * @brief 笛卡尔空间位置数据类型
  12. */
  13. [StructLayout(LayoutKind.Sequential)]
  14. public struct CartesianTran
  15. {
  16. public double x; ///< x轴坐标,单位mm
  17. public double y; ///< y轴坐标,单位mm
  18. public double z; ///< z轴坐标,单位mm
  19. };
  20. /**
  21. * @brief 欧拉角姿态数据类型
  22. */
  23. [StructLayout(LayoutKind.Sequential)]
  24. public struct Rpy
  25. {
  26. public double rx; ///< 绕固定轴X旋转角度,单位:rad
  27. public double ry; ///< 绕固定轴Y旋转角度,单位:rad
  28. public double rz; ///< 绕固定轴Z旋转角度,单位:rad
  29. };
  30. /**
  31. * @brief 四元数姿态数据类型
  32. */
  33. [StructLayout(LayoutKind.Sequential)]
  34. public struct Quaternion
  35. {
  36. public double s;
  37. public double x;
  38. public double y;
  39. public double z;
  40. };
  41. /**
  42. *@brief 笛卡尔空间位姿类型
  43. */
  44. [StructLayout(LayoutKind.Sequential)]
  45. public struct CartesianPose
  46. {
  47. public CartesianTran tran; ///< 笛卡尔空间位置
  48. public Rpy rpy; ///< 笛卡尔空间姿态
  49. };
  50. /**
  51. * @brief 旋转矩阵数据类型
  52. */
  53. [StructLayout(LayoutKind.Sequential)]
  54. public struct RotMatrix
  55. {
  56. public CartesianTran x; ///< x轴列分量
  57. public CartesianTran y; ///< y轴列分量
  58. public CartesianTran z; ///< z轴列分量
  59. };
  60. /**
  61. * @brief 程序运行状态枚举类型
  62. */
  63. public enum ProgramState
  64. {
  65. PROGRAM_IDLE, ///< 机器人停止运行
  66. PROGRAM_RUNNING, ///< 机器人正在运行
  67. PROGRAM_PAUSED ///< 机器人暂停
  68. };
  69. /**
  70. * @brief 坐标系选择枚举类型
  71. */
  72. public enum CoordType
  73. {
  74. COORD_BASE, ///< 基坐标系
  75. COORD_JOINT, ///< 关节空间
  76. COORD_TOOL ///< 工具坐标系
  77. };
  78. /**
  79. * @brief jog运动模式枚举
  80. */
  81. public enum MoveMode
  82. {
  83. ABS = 0, ///< 绝对运动
  84. INCR ///< 增量运动
  85. };
  86. /**
  87. * @brief 系统监测数据类型
  88. */
  89. [StructLayout(LayoutKind.Sequential)]
  90. public struct SystemMonitorData
  91. {
  92. public int scbMajorVersion; ///<scb主版本号
  93. public int scbMinorVersion; ///<scb次版本号
  94. public int cabTemperature; ///<控制柜温度
  95. public double robotAveragePower; ///<控制柜总线平均功率
  96. public double robotAverageCurrent; ///<控制柜总线平均电流
  97. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  98. public double[] instCurrent; ///<机器人6个轴的瞬时电流
  99. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  100. public double[] instVoltage; ///<机器人6个轴的瞬时电压
  101. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  102. public double[] instTemperature; ///<机器人6个轴的瞬时温度
  103. };
  104. /**
  105. * @brief 负载数据类型
  106. */
  107. [StructLayout(LayoutKind.Sequential)]
  108. public struct PayLoad
  109. {
  110. public double mass; ///<负载质量,单位:kg
  111. public CartesianTran centroid; ///<负载质心, 单位:mm
  112. };
  113. /**
  114. * @brief 关节位置数据类型
  115. */
  116. public struct JointValue
  117. {
  118. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  119. public double[] jVal ; ///< 6关节位置值,单位:rad
  120. };
  121. /**
  122. * @brief IO类型枚举
  123. */
  124. public enum IOType
  125. {
  126. IO_CABINET, ///< 控制柜面板IO
  127. IO_TOOL, ///< 工具IO
  128. IO_EXTEND ///< 扩展IO
  129. };
  130. /**
  131. * @brief 机器人状态数据
  132. */
  133. [StructLayout(LayoutKind.Sequential)]
  134. public struct RobotState
  135. {
  136. public int estoped; ///< 是否急停
  137. public int poweredOn; ///< 是否打开电源
  138. public int servoEnabled; ///< 是否使能
  139. };
  140. /**
  141. * @brief 机器人力矩数据
  142. */
  143. [StructLayout(LayoutKind.Sequential)]
  144. public struct TorqueValue
  145. {
  146. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  147. public double[] jTorque; ///< 是否使能
  148. }
  149. /**
  150. * @brief 机器人关节监测数据类型
  151. */
  152. [StructLayout(LayoutKind.Sequential)]
  153. public struct JointMonitorData
  154. {
  155. double instCurrent; ///< 瞬时电流
  156. double instVoltage; ///< 瞬时电压
  157. double instTemperature; ///< 瞬时温度
  158. }
  159. /**
  160. * @brief 机器人监测数据类型
  161. */
  162. [StructLayout(LayoutKind.Sequential)]
  163. public struct RobotMonitorData
  164. {
  165. double scbMajorVersion; ///< scb主版本号
  166. double scbMinorVersion; ///< scb小版本号
  167. double cabTemperature; ///< 控制器温度
  168. double robotAveragePower; ///< 机器人平均电压
  169. double robotAverageCurrent; ///< 机器人平均电流
  170. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  171. public JointMonitorData[] jointMonitorData; ///< 机器人6个关节的监测数据
  172. }
  173. /**
  174. * @brief 力矩传感器监测数据类型
  175. */
  176. [StructLayout(LayoutKind.Sequential)]
  177. public struct TorqSensorMonitorData
  178. {
  179. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)]
  180. public char[] ip; ///< 力矩传感器ip地址
  181. int port; ///< 力矩传感器端口号
  182. PayLoad payLoad; ///< 工具负载
  183. int status; ///< 力矩传感器状态
  184. int errcode; ///< 力矩传感器异常错误码
  185. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  186. public double[] actTorque; ///< 力矩传感器实际接触力值
  187. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  188. public double[] torque; ///< 力矩传感器原始读数值
  189. }
  190. /**
  191. * @brief 机器人状态监测数据,使用get_robot_status函数更新机器人状态数据
  192. */
  193. [StructLayout(LayoutKind.Sequential)]
  194. public struct RobotStatus
  195. {
  196. public int errcode; ///< 机器人运行出错时错误编号,0为运行正常,其它为运行异常
  197. public int inpos; ///< 机器人运动是否到位标志,0为没有到位,1为运动到位
  198. public int powered_on; ///< 机器人是否上电标志,0为没有上电,1为上电
  199. public int enabled; ///< 机器人是否使能标志,0为没有使能,1为使能
  200. public double rapidrate; ///< 机器人运动倍率
  201. public int protective_stop; ///< 机器人是否检测到碰撞,0为没有检测到碰撞,1为检测到碰撞
  202. public int emergency_stop; ///< 机器人是否急停,0为没有急停,1为急停
  203. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
  204. public int []dout; ///< 机器人控制柜数字输出信号,dout[0]为信号的个数
  205. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
  206. public int []tio_dout; ///< 机器人末端工具数字输出信号,tio_dout[0]为信号的个数
  207. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
  208. public int []extio; ///< 机器人外部应用数字输出信号,extio[0]为信号的个数
  209. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
  210. public int []din; ///< 机器人控制柜数字输入信号,din[0]为信号的个数
  211. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
  212. public int []tio_din; ///< 机器人末端工具数字输入信号,tio_din[0]为信号的个数
  213. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
  214. public double []ain; ///< 机器人控制柜模拟输入信号,ain[0]为信号的个数
  215. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)]
  216. public double []tio_ain; ///< 机器人末端工具模拟输入信号,tio_ain[0]为信号的个数
  217. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 65)]
  218. public double []aout; ///< 机器人控制柜模拟输出信号,aout[0]为信号的个数
  219. public int current_tool_id; ///< 机器人目前使用的工具坐标系id
  220. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  221. public double []cartesiantran_position; ///< 机器人末端所在的笛卡尔空间位置
  222. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  223. public double []joint_position; ///< 机器人关节空间位置
  224. public int on_soft_limit; ///< 机器人是否处于限位,0为没有触发限位保护,1为触发限位保护
  225. public int current_user_id; ///< 机器人目前使用的用户坐标系id
  226. public int drag_status; ///< 机器人是否处于拖拽状态,0为没有处于拖拽状态,1为处于拖拽状态
  227. public RobotMonitorData robot_monitor_data; ///< 机器人状态监测数据
  228. public TorqSensorMonitorData torq_sensor_monitor_data; ///< 机器人力矩传感器状态监测数据
  229. int is_socket_connect; ///< sdk与控制器连接通道是否正常,0为连接通道异常,1为连接通道正常
  230. }
  231. /**
  232. * @brief 机器人错误码数据类型
  233. */
  234. [StructLayout(LayoutKind.Sequential)]
  235. public struct ErrorCode
  236. {
  237. public long code; ///< 错误码编号
  238. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 120)]
  239. public char[] message; ///< 错误码对应提示信息
  240. }
  241. /**
  242. * @brief 轨迹复现配置参数数据类型
  243. */
  244. [StructLayout(LayoutKind.Sequential)]
  245. public struct TrajTrackPara
  246. {
  247. public double xyz_interval; ///< 空间位置采集精度
  248. public double rpy_interval; ///< 姿态采集精度
  249. public double vel; ///< 执行脚本运行速度
  250. public double acc; ///< 执行脚本运行加速度
  251. }
  252. /**
  253. * @brief 多个字符串存储数据类型
  254. */
  255. [StructLayout(LayoutKind.Sequential)]
  256. public struct MultStrStorType
  257. {
  258. public int len; ///< 字符串个数
  259. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128*128)]
  260. public char[] message; ///< 错误码对应提示信息
  261. }
  262. /**
  263. * @brief 运动参数可选项
  264. */
  265. [StructLayout(LayoutKind.Sequential)]
  266. public struct OptionalCond
  267. {
  268. int executingLineId; ///< 控制命令id编号
  269. }
  270. /**
  271. * @brief 网络异常机器人运动自动终止类型枚举
  272. */
  273. public enum ProcessType
  274. {
  275. MOT_KEEP, ///< 网络异常时机器人继续保持原来的运动
  276. MOT_PAUSE, ///< 网络异常时机器人暂停运动
  277. MOT_ABORT ///< 网络异常时机器人终止运动
  278. }
  279. /**
  280. * @brief 柔顺控制参数类型
  281. */
  282. [StructLayout(LayoutKind.Sequential)]
  283. public struct AdmitCtrlType
  284. {
  285. int opt; ///< 柔顺方向,可选值为 1 2 3 4 5 6分别对应 fx fy fz mx my mz,0代表没有勾选
  286. double ft_user; ///< 用户用多大的力才能让机器人的沿着某个方向以最大速度进行运动
  287. double ft_rebound; ///< 回弹力:机器人回到初始状态的能力
  288. double ft_constant; ///< 恒力
  289. int ft_normal_track; ///< 法向跟踪是否开启,0为没有开启,1为开启
  290. }
  291. /**
  292. * @brief 机器人柔顺控制参数类型
  293. */
  294. [StructLayout(LayoutKind.Sequential)]
  295. public struct RobotAdmitCtrl
  296. {
  297. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
  298. public AdmitCtrlType[] admit_ctrl;
  299. }
  300. /**
  301. * @brief 速度柔顺控制等级和比率等级设置
  302. * 速度柔顺控制分三个等级,并且 1>rate1>rate2>rate3>rate4>0
  303. * 等级为1时,只能设置rate1,rate2两个等级。rate3,rate4的值为0
  304. * 等级为2时,只能设置rate1,rate2,rate3 三个等级。rate4的值为0
  305. * 等级为3时,能设置 rate1,rate2,rate3,rate4 4个等级
  306. */
  307. [StructLayout(LayoutKind.Sequential)]
  308. public struct VelCom
  309. {
  310. int vc_level; //速度柔顺控制等级
  311. double rate1; //比率1等级
  312. double rate2; //比率2等级
  313. double rate3; //比率3等级
  314. double rate4; //比率4等级
  315. }
  316. /**
  317. * @brief 力传感器的受力分量和力矩分量
  318. */
  319. [StructLayout(LayoutKind.Sequential)]
  320. public struct FTxyz
  321. {
  322. double fx; // 沿x轴受力分量
  323. double fy; // 沿y轴受力分量
  324. double fz; // 沿z轴受力分量
  325. double tx; // 绕x轴力矩分量
  326. double ty; // 绕y轴力矩分量
  327. double tz; // 绕z轴力矩分量
  328. }
  329. }
  330. }