ur-sock 0.3 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dashboard.rb +229 -49
- data/lib/rtde.rb +16 -0
- data/ur-sock.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 654a9a6aef57b1b53b75cf076630ea770602f910357d04661a1c7bda1b3b490a
|
4
|
+
data.tar.gz: c9e672d97e673384666494d7c36d8530221cb59b82567c10fe4ae52a13d3cab7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35d82cb42d031589aab28671706f3319e6f1b066f235cd1d0d29e81f24937bbbf78221d24c72b92c7f140230758fea5623a527782f368dc471d0137a82c7ba69
|
7
|
+
data.tar.gz: c2ddba9d0d5ec37d5734614ab342543d2535707c647dba906cfb973b9ce7ee7a064bff463e27453e86d18bca420f8cad2481536bb7cd9f907d73c191120f9947
|
data/lib/dashboard.rb
CHANGED
@@ -7,22 +7,40 @@ module UR
|
|
7
7
|
|
8
8
|
class Dash
|
9
9
|
module ConnectionState
|
10
|
-
DISCONNECTED =
|
11
|
-
CONNECTED =
|
12
|
-
STARTED =
|
13
|
-
PAUSED =
|
10
|
+
DISCONNECTED = 'DISCONNECTED'
|
11
|
+
CONNECTED = 'CONNECTED'
|
12
|
+
STARTED = 'STARTED'
|
13
|
+
PAUSED = 'PAUSED'
|
14
14
|
end
|
15
15
|
|
16
16
|
module ProgramState
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
17
|
+
STOPPED = 'STOPPED'
|
18
|
+
PLAYING ='PLAYING'
|
19
|
+
PAUSED = 'PAUSED'
|
20
|
+
end
|
21
|
+
|
22
|
+
module SafetyMode
|
23
|
+
NORMAL = "NORMAL"
|
24
|
+
REDUCED = "REDUCED"
|
25
|
+
PROTECTIVE_STOP = "PROTECTIVE_STOP"
|
26
|
+
RECOVERY = "RECOVERY"
|
27
|
+
SAFEGUARD_STOP = "SAFEGUARD_STOP"
|
28
|
+
SYSTEM_EMERGENCY_STOP = "SYSTEM_EMERGENCY_STOP"
|
29
|
+
ROBOT_EMERGENCY_STOP = "ROBOT_EMERGENCY_STOP"
|
30
|
+
VIOLATION = "VIOLATION"
|
31
|
+
FAULT = "FAULT"
|
32
|
+
end
|
33
|
+
|
34
|
+
module ProgramState
|
35
|
+
NO_CONTROLLER = 'NO_CONTROLLER'
|
36
|
+
DISCONNECTED = 'DISCONNECTED'
|
37
|
+
CONFIRM_SAFETY = 'CONFIRM_SAFETY'
|
38
|
+
BOOTING = 'BOOTING'
|
39
|
+
POWER_OFF = 'POWER_OFF'
|
40
|
+
POWER_ON = 'POWER_ON'
|
41
|
+
IDLE = 'IDLE'
|
42
|
+
BACKDRIVE = 'BACKDRIVE'
|
43
|
+
RUNNING = 'RUNNING'
|
26
44
|
end
|
27
45
|
|
28
46
|
def initialize(host, logger=Logger.new(STDOUT,level: :INFO))
|
@@ -58,84 +76,246 @@ module UR
|
|
58
76
|
end
|
59
77
|
end
|
60
78
|
|
79
|
+
def load_program (programname)
|
80
|
+
@logger.info "loadprogram"
|
81
|
+
send = "load " + programname + ".urp\n"
|
82
|
+
puts send
|
83
|
+
@sock.write (send)
|
84
|
+
line = @sock.gets.strip
|
85
|
+
if line.match(/^./) == 'L'
|
86
|
+
@logger.info line
|
87
|
+
true
|
88
|
+
else
|
89
|
+
@logger.error line
|
90
|
+
nil
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
61
94
|
def start_program
|
62
95
|
@sock.write("play\n")
|
63
96
|
line = @sock.gets.strip
|
64
97
|
if line == "Starting program"
|
65
98
|
@logger.info line
|
99
|
+
true
|
66
100
|
else
|
67
101
|
@logger.error line
|
102
|
+
nil
|
68
103
|
end
|
69
104
|
end
|
70
105
|
|
71
|
-
def
|
72
|
-
@sock.write("
|
73
|
-
|
106
|
+
def stop_program
|
107
|
+
@sock.write("stop\n")
|
108
|
+
line = @sock.gets.strip
|
109
|
+
if line == "Stopped"
|
110
|
+
@logger.info line
|
111
|
+
true
|
112
|
+
else
|
113
|
+
@logger.error line
|
114
|
+
nil
|
115
|
+
end
|
74
116
|
end
|
75
117
|
|
76
|
-
def
|
77
|
-
@sock.write("
|
78
|
-
|
118
|
+
def pause_program
|
119
|
+
@sock.write("pause\n")
|
120
|
+
if line == "Pausing program"
|
121
|
+
@logger.info line
|
122
|
+
true
|
123
|
+
else
|
124
|
+
@logger.error line
|
125
|
+
nil
|
126
|
+
end
|
79
127
|
end
|
80
128
|
|
81
|
-
def
|
82
|
-
@sock.write("
|
83
|
-
|
129
|
+
def shutdown
|
130
|
+
@sock.write("shutdown\n")
|
131
|
+
if line == "Shutting down"
|
132
|
+
@logger.info line
|
133
|
+
true
|
134
|
+
else
|
135
|
+
@logger.error line
|
136
|
+
nil
|
137
|
+
end
|
84
138
|
end
|
85
139
|
|
86
|
-
def
|
87
|
-
@sock.write("
|
88
|
-
|
140
|
+
def running?
|
141
|
+
@sock.write("running\n")
|
142
|
+
if line == "Program running: True"
|
143
|
+
@logger.info line
|
144
|
+
true
|
145
|
+
else
|
146
|
+
@logger.error line
|
147
|
+
nil
|
148
|
+
end
|
89
149
|
end
|
90
150
|
|
91
|
-
def
|
151
|
+
def get_robotmode
|
152
|
+
@sock.write("robotmode\n")
|
153
|
+
line = @sock.gets.strip
|
154
|
+
@logger.info line
|
155
|
+
result = $1.strip if line.match(/^Robotmode:\s(.+)/)
|
156
|
+
end
|
92
157
|
|
93
|
-
|
94
|
-
@
|
158
|
+
def get_loaded_program
|
159
|
+
@sock.write ("get loaded program\n")
|
160
|
+
line = @sock.gets.strip
|
161
|
+
if line.match(/^Loaded program:\s(.+)/)
|
162
|
+
@logger.info line
|
163
|
+
path = $1.strip
|
164
|
+
else
|
165
|
+
@logger.error line
|
166
|
+
nil
|
167
|
+
end
|
95
168
|
end
|
96
169
|
|
97
|
-
def
|
170
|
+
def open_popupmessage(message)
|
98
171
|
@sock.write ("popup " + message.to_s + "\n")
|
99
172
|
@logger.info @sock.gets.strip
|
100
173
|
end
|
101
|
-
|
102
|
-
|
103
|
-
@
|
174
|
+
|
175
|
+
def close_popupmessage
|
176
|
+
@sock.write ("close popup\n")
|
104
177
|
@logger.info @sock.gets.strip
|
105
178
|
end
|
106
179
|
|
107
|
-
def
|
108
|
-
@sock.write("
|
109
|
-
@
|
110
|
-
|
180
|
+
def add_to_log(message)
|
181
|
+
@sock.write ("addToLog " + message.to_s + "\n")
|
182
|
+
line = @sock.gets.strip
|
183
|
+
if line.match(/^Added log message/)
|
184
|
+
@logger.info line
|
185
|
+
else
|
186
|
+
@logger.error line
|
187
|
+
end
|
111
188
|
end
|
112
189
|
|
113
|
-
def
|
114
|
-
@sock.write("
|
190
|
+
def is_program_saved?
|
191
|
+
@sock.write("isProgramSaved\n")
|
192
|
+
if line == "True"
|
193
|
+
@logger.info line
|
194
|
+
true
|
195
|
+
else
|
196
|
+
@logger.error line
|
197
|
+
nil
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
def get_program_state
|
202
|
+
@sock.write("programState\n")
|
115
203
|
line = @sock.gets.strip
|
116
204
|
@logger.info line
|
117
|
-
|
205
|
+
line
|
118
206
|
end
|
119
207
|
|
120
|
-
def
|
121
|
-
@sock.write
|
208
|
+
def get_polyscope_version
|
209
|
+
@sock.write("PolyscopeVersion\n")
|
122
210
|
line = @sock.gets.strip
|
123
211
|
@logger.info line
|
124
|
-
|
212
|
+
line
|
125
213
|
end
|
126
214
|
|
127
|
-
def
|
128
|
-
@
|
129
|
-
|
130
|
-
|
131
|
-
|
215
|
+
def set_operation_mode_auto
|
216
|
+
@sock.write("set operational mode automatic\n")
|
217
|
+
line = @sock.gets.strip
|
218
|
+
if line.match(/^S/)
|
219
|
+
@logger.info line
|
220
|
+
else
|
221
|
+
@logger.error line
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
def clear_operation_mode
|
226
|
+
@sock.write("clear operational mode\n")
|
227
|
+
line = @sock.gets.strip
|
228
|
+
if line.match(/^operational/)
|
229
|
+
@logger.info line
|
230
|
+
true
|
231
|
+
else
|
232
|
+
@logger.error line
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
def power_on
|
237
|
+
@sock.write("power on\n")
|
238
|
+
if line.match(/^Powering/)
|
239
|
+
@logger.info line
|
240
|
+
true
|
241
|
+
else
|
242
|
+
@logger.error line
|
243
|
+
nil
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
def power_off
|
248
|
+
@sock.write("power off\n")
|
249
|
+
if line.match(/^Powering/)
|
250
|
+
@logger.info line
|
251
|
+
true
|
252
|
+
else
|
253
|
+
@logger.error line
|
254
|
+
nil
|
255
|
+
end
|
256
|
+
end
|
257
|
+
|
258
|
+
def break_release
|
259
|
+
@sock.write("brake release\n")
|
260
|
+
if line.match(/^Brake/)
|
261
|
+
@logger.info line
|
262
|
+
true
|
263
|
+
else
|
264
|
+
@logger.error line
|
265
|
+
nil
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
def get_safety_mode
|
270
|
+
@sock.write("safetymode\n")
|
132
271
|
line = @sock.gets.strip
|
133
272
|
@logger.info line
|
273
|
+
result = $1.strip if line.match(/^Safetymode:\s(.+)/)
|
134
274
|
end
|
135
275
|
|
136
|
-
def
|
276
|
+
def unlock_protective_stop
|
277
|
+
@sock.write("unlock protective stop\n")
|
278
|
+
if line.match(/^Protective/)
|
279
|
+
@logger.info line
|
280
|
+
true
|
281
|
+
else
|
282
|
+
@logger.error line
|
283
|
+
nil
|
284
|
+
end
|
285
|
+
end
|
137
286
|
|
287
|
+
def close_safety_popup
|
288
|
+
@sock.write("close safety popup\n")
|
289
|
+
if line.match(/^closing/)
|
290
|
+
@logger.info line
|
291
|
+
true
|
292
|
+
else
|
293
|
+
@logger.error line
|
294
|
+
nil
|
295
|
+
end
|
138
296
|
end
|
139
|
-
end
|
140
297
|
|
298
|
+
def load_installation
|
299
|
+
@sock.write("load installation\n")
|
300
|
+
if line.match(/^Loading/)
|
301
|
+
@logger.info line
|
302
|
+
true
|
303
|
+
else
|
304
|
+
@logger.error line
|
305
|
+
nil
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
def restart_safety
|
310
|
+
@sock.write("restart safety\n")
|
311
|
+
if line.match(/^Brake/)
|
312
|
+
@logger.info line
|
313
|
+
true
|
314
|
+
else
|
315
|
+
@logger.error line
|
316
|
+
nil
|
317
|
+
end
|
318
|
+
end
|
319
|
+
|
320
|
+
end
|
141
321
|
end
|
data/lib/rtde.rb
CHANGED
@@ -7,6 +7,17 @@ module UR
|
|
7
7
|
|
8
8
|
class Rtde
|
9
9
|
PROTOCOL_VERSION = 2
|
10
|
+
@@robotmode = {-1 => 'No Controller',
|
11
|
+
0 => 'Disconnected',
|
12
|
+
1 => 'Confirm Safety',
|
13
|
+
2 => 'Booting',
|
14
|
+
3 => 'Power Off',
|
15
|
+
4 => 'Power On',
|
16
|
+
5 => 'Idle',
|
17
|
+
6 => 'Backdrive',
|
18
|
+
7 => 'Running',
|
19
|
+
8 => 'Updating Firmware'
|
20
|
+
}
|
10
21
|
|
11
22
|
module Command #{{{
|
12
23
|
RTDE_REQUEST_PROTOCOL_VERSION = 86 # ASCII V
|
@@ -18,6 +29,7 @@ module UR
|
|
18
29
|
RTDE_CONTROL_PACKAGE_START = 83 # ASCII S
|
19
30
|
RTDE_CONTROL_PACKAGE_PAUSE = 80 # ascii p
|
20
31
|
end #}}}
|
32
|
+
|
21
33
|
module ConnectionState #{{{
|
22
34
|
DISCONNECTED = 0
|
23
35
|
CONNECTED = 1
|
@@ -25,6 +37,10 @@ module UR
|
|
25
37
|
PAUSED = 3
|
26
38
|
end #}}}
|
27
39
|
|
40
|
+
def get_robotmode
|
41
|
+
@@robotmode
|
42
|
+
end
|
43
|
+
|
28
44
|
def initialize(host, logger=Logger.new(STDOUT,level: :INFO)) #{{{
|
29
45
|
host = '//' + host if host !~ /\/\//
|
30
46
|
uri = URI::parse(host)
|
data/ur-sock.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ur-sock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Pauker
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-05-
|
12
|
+
date: 2019-05-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: xml-smart
|