xCore-SDK  0.5.0
xCore SDK C# API
data_types_cli.hpp
浏览该文件的文档.
1
8#pragma once
9#ifndef XCORESDK_SRC_CLI_DATA_TYPES_CLI_HPP_
10#define XCORESDK_SRC_CLI_DATA_TYPES_CLI_HPP_
11
12#include <unordered_map>
13#include <any>
14
15using namespace System;
16using namespace System::Collections::Generic;
17
18namespace rokae::clr {
19
23 public ref class ErrorCode {
24 private:
25 int value_;
26 String^ message_;
27 public:
28
29 ErrorCode(int v, String^ m) : value_(v), message_(m) {};
33 property String^ message {
34 String^ get() {
35 return message_;
36 }
37 }
41 property int value {
42 int get() {
43 return value_;
44 }
45 }
46 };
47
51 public enum class PowerState {
53 on = 0,
55 off = 1,
57 estop = 2,
59 gstop = 3,
61 unknown = -1
62 };
63
67 public enum class OperateMode {
69 manual = 0,
71 automatic = 1,
73 unknown = -1
74 };
75
79 public enum class OperationState {
81 idle = 0,
83 jog = 1,
85 rtControlling = 2,
87 drag = 3,
89 rlProgram = 4,
91 demo = 5,
97 loadIdentify = 8,
99 moving = 9,
101 jogging = 10,
103 unknown = -1
104 };
105
109 public enum class CoordinateType {
113 endInRef,
116 };
117
121 public enum class StopLevel {
123 stop0,
125 stop1,
127 stop2,
130 };
131
135 public enum class MotionControlMode {
137 Idle,
141 NrtRLTask,
143 RtCommand,
144 };
145
149 public enum class JogSpace {
151 world = 0,
153 flange,
155 baseFrame,
157 toolFrame,
159 wobjFrame,
166 };
167
171 public enum class FrameType {
173 world = 0,
175 baseFrame = 1,
177 flange = 2,
179 tool = 3,
181 wobj = 4,
183 path = 5,
185 rail = 6
186 };
187
191 public value struct DragOpt {
192 public:
193 enum class Space {
195 jointSpace = 0,
197 cartesianSpace = 1
198 };
199 enum class Type {
201 translationOnly = 0,
203 rotationOnly = 1,
205 freely = 2
206 };
207 };
208
212 public value struct xPanelOpt {
216 enum class Vout {
218 off,
220 reserve,
222 supply12v,
224 supply24v
225 };
226 };
227
231 public enum class AvoidSingularityMethod {
233 lockAxis4,
235 wrist,
237 jointWay,
241 none
242 };
243
244 typedef System::Collections::Generic::Dictionary<String^, System::Object^>^ EventInfo;
245 public delegate void EventCallbackDelegate(EventInfo);
246 public delegate void EventCallbackNativeDelegate(const std::unordered_map<std::string, std::any>&);
247 typedef void(__stdcall * EventCallbackPtr)(const std::unordered_map<std::string, std::any> &);
248
249 public delegate void ConnectionHandlerDelegate(bool);
250 typedef void(__stdcall* ConnectionHandlerPtr)(bool);
251
255 public enum class Event {
259 safety,
274 };
275
279 public value struct Info {
281 String^ id;
283 String^ mac;
285 String^ version;
287 String^ type;
290 };
291
295 public ref class Frame {
296 public:
302 Frame(array<double> ^ _trans, array<double> ^ _rpy) : trans(_trans), rpy(_rpy), quat(gcnew array<double>(4)) {}
303
308 Frame(array<double>^ _frame) : trans(gcnew array<double>(3)), rpy(gcnew array<double>(3)),
309 quat(gcnew array<double>(4)){
310 if (_frame->Length < 6) {
311 throw gcnew System::IndexOutOfRangeException();
312 }
313 trans[0] = _frame[0];
314 trans[1] = _frame[1];
315 trans[2] = _frame[2];
316 rpy[0] = _frame[3];
317 rpy[1] = _frame[4];
318 rpy[2] = _frame[5];
319 }
320
324 Frame() : trans(gcnew array<double>(3)), rpy(gcnew array<double>(3)), quat(gcnew array<double>(4)) {}
326 array<double>^ trans;
328 array<double>^ rpy;
332 array<double> ^ quat;
333 };
334
338 public ref class CartesianPosition : public Frame {
339 public:
343 ref class Offset {
344 public:
346 enum class Type {
348 none,
350 offs,
352 relTool
353 };
354 Offset(): type(Type::none), frame(gcnew Frame()) {};
357 };
358 CartesianPosition(): Frame(), elbow(0), confData(gcnew List<int>), external(gcnew List<double>) {};
359
364 CartesianPosition(array<double>^ _frame):Frame(_frame), elbow(0), confData(gcnew List<int>), external(gcnew List<double>) {};
365
367 double elbow;
369 List<int>^ confData;
371 List<double>^ external;
372 };
373
377 public ref class JointPosition {
378 public:
379 JointPosition() : joints(gcnew List<double>()), external(gcnew List<double>()) {};
381 List<double>^ joints;
383 List<double>^ external;
384 };
385
389 public ref class MoveCommand {
390 public:
394 enum class Type {
396 MoveL,
398 MoveJ,
400 MoveAbsJ,
402 MoveC,
404 MoveCF,
406 MoveSP,
408 MoveWait
409
410 };
411
423 int speed;
430 double rotSpeed;
432 int zone;
434 String^ customInfo;
435
446 List<double>^ args;
447 bool iscondition;
448 String^ io_name;
449
451 jointTarget(gcnew JointPosition()),
453 cartTargetOffset(gcnew CartesianPosition::Offset()),
454 auxPointOffset(gcnew CartesianPosition::Offset()),
455 speed(-1), jointSpeed(-1), rotSpeed(-1), zone(-1), customInfo(gcnew String("")), args(gcnew List<double>()),
456 iscondition(false), io_name(gcnew String("")) {};
457 };
458
462 public ref class PulseLCommand {
463 public:
464
470 int speed;
473 double rotSpeed;
475 int zone;
477 String^ customInfo;
478
482 String^ signalName;
483
488
492 double pulseTime;
493
494
496 cartTargetOffset(gcnew CartesianPosition::Offset()),
497 speed(-1), rotSpeed(-1), zone(-1), customInfo(gcnew String("")), signalName(""), periodWidth(0), pulseTime(0) {
498 };
499 };
500
504 public ref class Load {
505 public:
506 Load(): mass(0.0), cog(gcnew array<double>(3)), inertia(gcnew array<double>(3)){}
507 Load(double m, array<double>^ c, array<double>^ i): mass(m), cog(c), inertia(i) {}
509 double mass;
511 array<double>^ cog;
513 array<double>^ inertia;
514 };
515
520 public ref class Toolset {
521 public:
522 Toolset() : load(gcnew Load()), end(gcnew Frame()), reference(gcnew Frame()) {}
530 String ^endName;
533 };
534
538 public ref class FrameCalibrationResult {
539 public:
540 FrameCalibrationResult() : frame(gcnew Frame()), errors(gcnew array<double>(3)) {}
541 FrameCalibrationResult(Frame^ f, array<double>^ e): frame(f), errors(e){}
545 array<double>^ errors{};
546 };
547
551 public ref class LogInfo {
552 public:
554 enum class Level {
556 info,
558 warning,
560 error
561 };
562 LogInfo(int _id, String^ ts, String^ ct, String^ r): id(_id),
563 timestamp(ts), content(ct), repair(r) {}
565 const int id;
567 String^ timestamp;
569 String^ content;
571 String^ repair;
572 };
573
577 public ref class RLProjectInfo {
578 public:
579 RLProjectInfo(String^ n): name(n), taskList(gcnew List<String^>()){}
581 String^ name;
583 List<String^>^ taskList;
584 };
585
589 public ref class WorkToolInfo {
590 public:
591 WorkToolInfo(): name(gcnew String("")), alias(gcnew String("")),
592 robotHeld(false), pos(gcnew Frame()), load(gcnew Load()) {}
593 WorkToolInfo(String^ n, String^ a, bool isHeld, Frame^ p, Load^ l):
594 name(n), alias(a), robotHeld(isHeld), pos(p), load(l) {}
595
597 String^ name;
599 String^ alias;
606 };
607
611 public value struct SignalBinding {
613 String ^ type;
615 String ^ name;
616 };
617
621 public ref class SchedEntry {
622 public:
623 SchedEntry() : id(0), enable(false), name(gcnew String("")), count(1) {
624 register_binding.type = gcnew String("DI");
625 register_binding.name = gcnew String("");
626 register_cancel.type = gcnew String("DI");
627 register_cancel.name = gcnew String("");
628 register_status.type = gcnew String("DO");
629 register_status.name = gcnew String("");
630 }
631 SchedEntry(int id,
632 bool enable,
633 String ^ name,
634 int count,
638 this->register_binding.type = register_binding.type;
639 this->register_binding.name = register_binding.name;
640 this->register_cancel.type = register_cancel.type;
641 this->register_cancel.name = register_cancel.name;
642 this->register_status.type = register_status.type;
643 this->register_status.name = register_status.name;
644 }
646 int id;
648 bool enable;
650 String ^ name;
652 int count;
659 };
660
664 public ref class SchedSetting {
665 public:
666 SchedSetting(){
667 schedEntrys = gcnew array<SchedEntry^>(8);
668 for (int i = 0; i < 8; ++i) {
669 schedEntrys[i] = gcnew SchedEntry();
670 schedEntrys[i]->id = i+1;
671 }
672 }
675 SchedEntry^ get(int id){
676 if (id < 1) return schedEntrys[0];
677 else if (id > 8) return schedEntrys[7];
678 return schedEntrys[id - 1];
679 }
681 array<SchedEntry^>^ schedEntrys;
682 };
683
687 public value struct SchedStatus {
689 int id;
691 String^ state;
693 int rank;
695 int count;
696 };
697}
698#endif // XCORESDK_SRC_CLI_DATA_TYPES_CLI_HPP_
Frame frame
相对于指定工具/工件坐标系的偏移
List< double > external
外部关节数值,单位:弧度|米。导轨单位米
CartesianPosition(array< double >^ _frame)
Constructor
double elbow
臂角, 适用于7轴机器人, 单位:弧度
List< int > confData
轴配置数据,[cf1, cf2, cf3, cf4, cf5, cf6, cf7, cfx]
xCoreSDK错误码
array< double > errors
样本点与TCP标定值的偏差, 依次为最小值,平均值,最大值, 单位m
Frame frame
标定结果坐标系
array< double > rpy
欧拉角 [Rx, Ry, Rz], 单位:弧度
Frame(array< double > ^ _trans, array< double > ^ _rpy)
Constructor
Frame()
Constructor.
array< double > quat
四元数 [x, y, z, w], 只读
array< double > trans
平移量 [X, Y, Z], 单位:米
Frame(array< double >^ _frame)
Constructor
List< double > joints
关节角度值, 单位:弧度
List< double > external
外部关节数值, 单位:弧度|米。导轨单位米
double mass
负载质量, 单位:千克
array< double > inertia
惯量 [ix, iy, iz], 单位:千克·平方米
array< double > cog
质心 [x, y, z], 单位:米
控制器日志信息
String timestamp
日期及时间
String repair
修复办法
String content
日志内容
const int id
日志ID号
非实时运动指令
String customInfo
自定义信息,可在运动信息反馈中返回出来
CartesianPosition::Offset cartTargetOffset
笛卡尔目标点偏移选项
double rotSpeed
空间旋转速度,用于末端类型指令,单位rad/s。 大于等于0时生效;小于0时旋转速度默认为200°/s
int speed
机器人末端最大线速度, 单位mm/s。见setDefaultSpeed
double jointSpeed
关节速度百分比,用于关节类型指令,范围[0, 1]。 大于等于0时生效;小于0时仍使用speed计算出的关节速度
List< double > args
运动指令其它参数 Type::MoveCF接受长度为2参数,依次为: 全圆执行角度[弧度]; 旋转姿态类型, 0不变姿态|1动轴旋转|2定轴旋转 Type::MoveSP接受长度为4参数,依次为:初始半...
CartesianPosition::Offset auxPointOffset
辅助点偏移选项
CartesianPosition cartTarget
目标笛卡尔点位
int zone
转弯区半径大小,单位mm。见setDefaultZone
JointPosition jointTarget
目标关节点位
CartesianPosition auxPoint
辅助点
int zone
转弯区半径大小,单位mm。见setDefaultZone
CartesianPosition cartTarget
目标笛卡尔点位
double periodWidth
周期宽度, 相邻两次DO信号置高的路径长度,单位毫米, 范围 [0.01, 10000], 同时要求不小于末端线速度[mm/s] * 0.004s
CartesianPosition::Offset cartTargetOffset
笛卡尔目标点偏移选项
String signalName
信号名称, 比如 "DO0_0"
double pulseTime
脉冲时长, DO信号置高后维持的时长, 单位秒, 范围 [0.002, 10]
int speed
机器人末端最大线速度, 单位mm/s。见setDefaultSpeed
double rotSpeed
空间旋转速度,用于末端类型指令,单位rad/s。 大于等于0时生效;小于0时旋转速度默认为200°/s
String customInfo
自定义信息,可在运动信息反馈中返回出来
List< String^> taskList
任务名称列表
工位预约设置项
bool enable
是否启用
SignalBinding register_binding
预约绑定信号
SignalBinding register_cancel
取消预约绑定信号
SignalBinding register_status
预约状态绑定输出信号
预约设置, 支持8个预约设置项
SchedEntry get(int id)
获取预约设置项
array< SchedEntry^> schedEntrys
预约设置项
工具工件组信息, 根据一对工具工件的坐标、负载、机器人手持设置计算得出
Frame end
机器人末端坐标系相对法兰坐标系转换
Load load
机器人末端手持负载
String referenceName
外部参考工件名称,只读
Frame reference
机器人参考坐标系相对世界坐标系转换
String endName
末端工具名称,只读
工具/工件信息。工件的坐标系已相对其用户坐标系变换
String alias
别名, 暂未使用
bool robotHeld
是否机器人手持
OperationState
机器人工作状态
@ frictionIdentify
摩擦力辨识中
@ rtControlling
实时模式控制中
@ moving
机器人运动中
@ dynamicIdentify
动力学辨识中
@ rlProgram
RL工程运行中
@ jog
jog状态(未运动)
@ loadIdentify
负载辨识中
FrameType
笛卡尔空间坐标系类型
@ wobj
工件坐标系
@ tool
工具坐标系
@ rail
导轨基坐标系
@ path
路径坐标系
StopLevel
机器人停止运动等级
@ stop0
快速停止机器人运动后断电
@ suppleStop
柔顺停止,仅适用于协作机型
@ stop1
规划停止机器人运动后断电, 停在原始路径上
@ stop2
规划停止机器人运动后不断电, 停在原始路径上
CoordinateType
位姿坐标系类型
@ flangeInBase
法兰相对于基坐标系
@ endInWorld
末端相对于世界坐标系
@ endInRef
末端相对于外部坐标系
JogSpace
Jog选项: 坐标系
@ singularityAvoidMode
奇异规避模式,适用于工业六轴, xMateCR和xMateSR机型,规避方法是锁定4轴
@ baseParallelMode
平行基座模式,仅适用于xMateCR和xMateSR机型
@ world
世界坐标系
@ baseFrame
基坐标系
@ wobjFrame
工件坐标系
@ flange
法兰坐标系
@ toolFrame
工具坐标系
MotionControlMode
SDK运动控制模式
@ RtCommand
实时模式控制
@ NrtRLTask
非实时模式运行RL工程
@ NrtCommand
非实时模式执行运动指令
AvoidSingularityMethod
奇异规避方式
@ jointWay
轴空间短轨迹插补
PowerState
机器人上下电及急停状态
@ gstop
安全门打开
@ unknown
未知(发生异常)
@ estop
急停被按下
OperateMode
机器人操作模式
Event
事件类型
@ disconnectionBehaviour
断连行为状态
@ safety
安全 (是否碰撞)
@ schedState
工位预约状态
@ anticollisionState
防碰撞状态
@ arcWeldState
弧焊状态
@ lasertrackState
激光跟踪器状态
@ rlExecution
RL执行信息
@ logReporter
控制器日志上报
@ moveExecution
非实时运动指令执行信息
机器人拖动模式参数, 包括拖动类型和空间
机器人基本信息,在与建立机器人连接后加载
String version
控制器版本
Int32 joint_num
轴数
String id
机器人uid, 可用于区分连接的机器人
String type
机器人机型名称
String mac
Mac地址
String state
预约状态。"running","unregister","register","pause"
int count
当前循环次数
工位预约信号绑定
String type
信号类型,"DI","DO","REG"
Vout
xPanel对外供电模式