-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathegm.proto
199 lines (167 loc) · 5.85 KB
/
egm.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
// Definition of ABB sensor interface V1.1
//
// messages of type EgmRobot are sent out from the robot controller
// messages of type EgmSensor are sent to the robot controller
//
syntax = "proto2";
package abb.egm;
message EgmHeader
{
optional uint32 seqno = 1; // sequence number (to be able to find lost messages)
optional uint32 tm = 2; // controller send time stamp in ms
enum MessageType {
MSGTYPE_UNDEFINED = 0;
MSGTYPE_COMMAND = 1; // for future use
MSGTYPE_DATA = 2; // sent by robot controller
MSGTYPE_CORRECTION = 3; // sent by sensor for position guidance
MSGTYPE_PATH_CORRECTION = 4; // sent by sensor for path correction
}
optional MessageType mtype = 3 [default = MSGTYPE_UNDEFINED];
}
message EgmCartesian // Cartesian position in mm
{
required double x = 1;
required double y = 2;
required double z = 3;
}
// If you have pose input, i.e. not joint input, you can choose to send orientation data as quaternion or as Euler angles.
// If both are sent, Euler angles have higher priority.
message EgmQuaternion // Quaternion orientation
{
required double u0 = 1;
required double u1 = 2;
required double u2 = 3;
required double u3 = 4;
}
message EgmEuler // Euler angle orientation in degrees
{
required double x = 1;
required double y = 2;
required double z = 3;
}
message EgmClock // Time in seconds and microseconds since 1 Jan 1970
{
required uint64 sec = 1;
required uint64 usec = 2;
}
message EgmPose // Pose (i.e. cartesian position and Quaternion orientation) relative to the correction frame defined by EGMActPose
{
optional EgmCartesian pos = 1;
optional EgmQuaternion orient = 2;
optional EgmEuler euler = 3;
}
message EgmCartesianSpeed // Array of 6 speed reference values in mm/s or degrees/s
{
repeated double value = 1;
}
message EgmJoints // Array of 6 joint values for TCP robot in degrees
{
repeated double joints = 1;
}
message EgmExternalJoints // Array of 6 joint values for additional axis, in degrees for rotating axis, in mm for linear axis
{
repeated double joints = 1;
}
message EgmPlanned // Planned position for robot (joints or cartesian) and additional axis (array of 6 values)
{ // Is used for position streaming (source: controller) and position guidance (source: sensor)
optional EgmJoints joints = 1;
optional EgmPose cartesian = 2;
optional EgmJoints externalJoints = 3;
optional EgmClock time = 4;
}
message EgmSpeedRef // Speed reference values for robot (joint or cartesian) and additional axis (array of 6 values)
{
optional EgmJoints joints = 1;
optional EgmCartesianSpeed cartesians = 2;
optional EgmJoints externalJoints = 3;
}
message EgmPathCorr // Cartesian path correction and measurment age
{
required EgmCartesian pos = 1; // Sensor measurement (x, y, z) relative the sensor tool coordinate system
required uint32 age = 2; // Sensor measurement age in ms
}
message EgmFeedBack // Feed back position, i.e. actual measured position for robot (joints or cartesian) and additional axis (array of 6 values)
{
optional EgmJoints joints = 1;
optional EgmPose cartesian = 2;
optional EgmJoints externalJoints = 3;
optional EgmClock time = 4;
}
message EgmMotorState // Motor state
{
enum MotorStateType {
MOTORS_UNDEFINED = 0;
MOTORS_ON = 1;
MOTORS_OFF = 2;
}
required MotorStateType state = 1;
}
message EgmMCIState // EGM state
{
enum MCIStateType {
MCI_UNDEFINED = 0;
MCI_ERROR = 1;
MCI_STOPPED = 2;
MCI_RUNNING = 3;
}
required MCIStateType state = 1 [default = MCI_UNDEFINED];
}
message EgmRapidCtrlExecState // RAPID execution state
{
enum RapidCtrlExecStateType {
RAPID_UNDEFINED = 0;
RAPID_STOPPED = 1;
RAPID_RUNNING = 2;
};
required RapidCtrlExecStateType state = 1 [default = RAPID_UNDEFINED];
}
message EgmTestSignals // Test signals
{
repeated double signals = 1;
}
message EgmMeasuredForce // Array of 6 force values for a robot
{
optional bool fcActive = 1;
repeated double force = 2;
}
message EgmCollisionInfo // Array of collision info values for a robot
{
optional bool collsionTriggered = 1;
repeated double collDetQuota = 2;
}
message EgmRAPIDdata // message format robot controller outbound
{
optional bool digVal = 1;
repeated double dnum = 2;
}
// Robot controller outbound message, sent from the controller to the sensor during position guidance and position streaming
message EgmRobot
{
optional EgmHeader header = 1;
optional EgmFeedBack feedBack = 2;
optional EgmPlanned planned = 3;
optional EgmMotorState motorState = 4;
optional EgmMCIState mciState = 5;
optional bool mciConvergenceMet = 6;
optional EgmTestSignals testSignals = 7;
optional EgmRapidCtrlExecState rapidExecState = 8;
optional EgmMeasuredForce measuredForce = 9;
optional double utilizationRate=10;
optional uint32 moveIndex=11;
optional EgmCollisionInfo CollisionInfo = 12;
optional EgmRAPIDdata RAPIDfromRobot = 13;
}
// Robot controller inbound message, sent from sensor to the controller during position guidance
message EgmSensor
{
optional EgmHeader header = 1;
optional EgmPlanned planned = 2;
optional EgmSpeedRef speedRef = 3;
optional EgmRAPIDdata RAPIDtoRobot = 4;
}
// Robot controller inbound message, sent from sensor during path correction
message EgmSensorPathCorr
{
optional EgmHeader header = 1;
optional EgmPathCorr pathCorr = 2;
}