Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
C
cobot1_TRON_testing
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Christoph Schröter
cobot1_TRON_testing
Commits
e4d184c0
Commit
e4d184c0
authored
3 years ago
by
Christoph Schröter
Browse files
Options
Downloads
Patches
Plain Diff
No commit message
No commit message
parent
cb6f4fe6
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
cobot1.xml
+290
-250
290 additions, 250 deletions
cobot1.xml
launch/cobot1_mock_test.launch
+2
-0
2 additions, 0 deletions
launch/cobot1_mock_test.launch
scripts/gazebo_real_time.sh
+5
-0
5 additions, 0 deletions
scripts/gazebo_real_time.sh
src/tron_adapter.cpp
+36
-2
36 additions, 2 deletions
src/tron_adapter.cpp
with
333 additions
and
252 deletions
cobot1.xml
+
290
−
250
View file @
e4d184c0
...
...
@@ -10,7 +10,7 @@ chan pressed;
chan pickup_fail, pickup_success;
chan place_fail, place_success;
chan move_fail, move_success;
chan
move_
goal;
chan goal;
chan position_update;
int bottle_in_start_pos = 1;
int glass_in_start_pos = 1;
...
...
@@ -23,122 +23,122 @@ int glass_in_target_pos = 0;</declaration>
<transition>
<source
ref=
"id0"
/>
<target
ref=
"id0"
/>
<label
kind=
"synchronisation"
x=
"-
76
"
y=
"1
10
"
>
place_success!
</label>
<nail
x=
"-
86
"
y=
"1
02
"
/>
<nail
x=
"
118
"
y=
"1
19
"
/>
<label
kind=
"synchronisation"
x=
"-
42
"
y=
"
5
1"
>
place_success!
</label>
<nail
x=
"-
34
"
y=
"
5
1"
/>
<nail
x=
"
34
"
y=
"
5
1"
/>
</transition>
<transition>
<source
ref=
"id0"
/>
<target
ref=
"id0"
/>
<label
kind=
"synchronisation"
x=
"-
67
"
y=
"-
72
"
>
place_fail!
</label>
<nail
x=
"-
85
"
y=
"-1
10
"
/>
<nail
x=
"
170
"
y=
"-
68
"
/>
<label
kind=
"synchronisation"
x=
"-
42
"
y=
"-
68
"
>
place_fail!
</label>
<nail
x=
"-
34
"
y=
"-
5
1"
/>
<nail
x=
"
34
"
y=
"-
51
"
/>
</transition>
</template>
<template>
<name>
model_positions
</name>
<location
id=
"id1"
x=
"-1547"
y=
"-4
50
"
>
<name
x=
"-1598"
y=
"-4
79
"
>
start_pos
</name>
<location
id=
"id1"
x=
"-1547"
y=
"-4
16
"
>
<name
x=
"-1598"
y=
"-4
45
"
>
start_pos
</name>
</location>
<location
id=
"id2"
x=
"-1
096
"
y=
"-
285
"
>
<name
x=
"-1
130
"
y=
"-
331
"
>
bottle_moving
</name>
<location
id=
"id2"
x=
"-1
343
"
y=
"-
416
"
>
<name
x=
"-1
326
"
y=
"-
425
"
>
bottle_moving
</name>
</location>
<location
id=
"id3"
x=
"-1
504
"
y=
"-2
42
"
>
<name
x=
"-1
572
"
y=
"-
280
"
>
bottle_end_pos
</name>
<location
id=
"id3"
x=
"-1
343
"
y=
"-2
97
"
>
<name
x=
"-1
326
"
y=
"-
323
"
>
bottle_end_pos
</name>
</location>
<location
id=
"id4"
x=
"-1
538
"
y=
"-
85
"
>
<name
x=
"-1
649
"
y=
"-
76
"
>
glass_moving
</name>
<location
id=
"id4"
x=
"-1
343
"
y=
"-
187
"
>
<name
x=
"-1
454
"
y=
"-
178
"
>
glass_moving
</name>
</location>
<location
id=
"id5"
x=
"-
994
"
y=
"-
221
"
>
<name
x=
"-1
045
"
y=
"-
246
"
>
bottle_and_glass_end_pos
</name>
<location
id=
"id5"
x=
"-
1079
"
y=
"-
187
"
>
<name
x=
"-1
173
"
y=
"-
170
"
>
bottle_and_glass_end_pos
</name>
</location>
<location
id=
"id6"
x=
"-
748
"
y=
"
51
"
>
<location
id=
"id6"
x=
"-
986
"
y=
"
8
"
>
</location>
<location
id=
"id7"
x=
"-
697
"
y=
"-
127
"
>
<name
x=
"-
680
"
y=
"-
144
"
>
glass_back_to_start
</name>
<location
id=
"id7"
x=
"-
986
"
y=
"-
323
"
>
<name
x=
"-
969
"
y=
"-
340
"
>
glass_back_to_start
</name>
</location>
<init
ref=
"id1"
/>
<transition>
<source
ref=
"id4"
/>
<target
ref=
"id6"
/>
<label
kind=
"synchronisation"
x=
"-1011"
y=
"-76"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1037"
y=
"-59"
>
glass_in_start_pos = 1
</label>
<nail
x=
"-1020"
y=
"-68"
/>
<label
kind=
"synchronisation"
x=
"-1283"
y=
"-85"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1283"
y=
"-68"
>
glass_in_start_pos = 1
</label>
</transition>
<transition>
<source
ref=
"id5"
/>
<target
ref=
"id7"
/>
<label
kind=
"synchronisation"
x=
"-
858
"
y=
"-
195
"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-
892
"
y=
"-
178
"
>
glass_in_target_pos = 0
</label>
<label
kind=
"synchronisation"
x=
"-
1147
"
y=
"-
289
"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-
1198
"
y=
"-
272
"
>
glass_in_target_pos = 0
</label>
</transition>
<transition>
<source
ref=
"id3"
/>
<target
ref=
"id2"
/>
<label
kind=
"synchronisation"
x=
"-1
487
"
y=
"-3
40
"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1
479
"
y=
"-3
23
"
>
bottle_in_start_pos = 0
</label>
<nail
x=
"-1
386
"
y=
"-3
30
"
/>
<label
kind=
"synchronisation"
x=
"-1
572
"
y=
"-3
65
"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1
572
"
y=
"-3
48
"
>
bottle_in_start_pos = 0
</label>
<nail
x=
"-1
411
"
y=
"-3
48
"
/>
</transition>
<transition>
<source
ref=
"id6"
/>
<target
ref=
"id4"
/>
<label
kind=
"synchronisation"
x=
"-1147"
y=
"34"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1164"
y=
"51"
>
glass_in_start_pos = 0
</label>
<label
kind=
"synchronisation"
x=
"-1470"
y=
"-51"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1504"
y=
"-34"
>
glass_in_start_pos = 0
</label>
<nail
x=
"-1343"
y=
"8"
/>
</transition>
<transition>
<source
ref=
"id7"
/>
<target
ref=
"id6"
/>
<label
kind=
"synchronisation"
x=
"-
6
97"
y=
"-
4
2"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-
705
"
y=
"-25"
>
glass_in_start_pos = 1
</label>
<label
kind=
"synchronisation"
x=
"-9
7
7"
y=
"-
27
2"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-
977
"
y=
"-25
5
"
>
glass_in_start_pos = 1
</label>
</transition>
<transition>
<source
ref=
"id4"
/>
<target
ref=
"id5"
/>
<label
kind=
"synchronisation"
x=
"-1
241
"
y=
"-
16
1"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1
266
"
y=
"-
14
4"
>
glass_in_target_pos = 1
</label>
<label
kind=
"synchronisation"
x=
"-1
309
"
y=
"-
22
1"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1
309
"
y=
"-
20
4"
>
glass_in_target_pos = 1
</label>
</transition>
<transition>
<source
ref=
"id3"
/>
<target
ref=
"id4"
/>
<label
kind=
"synchronisation"
x=
"-1
67
4"
y=
"-
195
"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1
700
"
y=
"-
170
"
>
glass_in_start_pos = 0
</label>
<label
kind=
"synchronisation"
x=
"-1
50
4"
y=
"-
263
"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1
504
"
y=
"-
246
"
>
glass_in_start_pos = 0
</label>
</transition>
<transition>
<source
ref=
"id2"
/>
<target
ref=
"id3"
/>
<label
kind=
"synchronisation"
x=
"-1
249
"
y=
"-
272
"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1
292
"
y=
"-
255
"
>
bottle_in_start_pos = 1
</label>
<label
kind=
"synchronisation"
x=
"-1
334
"
y=
"-
391
"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1
334
"
y=
"-
374
"
>
bottle_in_start_pos = 1
</label>
</transition>
<transition>
<source
ref=
"id1"
/>
<target
ref=
"id2"
/>
<label
kind=
"synchronisation"
x=
"-147
0
"
y=
"-49
3
"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1
487
"
y=
"-4
67
"
>
bottle_in_start_pos = 0
</label>
<label
kind=
"synchronisation"
x=
"-147
9
"
y=
"-4
5
9"
>
position_update?
</label>
<label
kind=
"assignment"
x=
"-1
513
"
y=
"-4
42
"
>
bottle_in_start_pos = 0
</label>
</transition>
</template>
<template>
<name>
move
goal
</name>
<name>
goal
_
</name>
<location
id=
"id8"
x=
"0"
y=
"0"
>
</location>
<init
ref=
"id8"
/>
<transition>
<source
ref=
"id8"
/>
<target
ref=
"id8"
/>
<label
kind=
"synchronisation"
x=
"-
136
"
y=
"-
102"
>
move_
goal!
</label>
<nail
x=
"-
178
"
y=
"-
187
"
/>
<nail
x=
"
178
"
y=
"-
136
"
/>
<label
kind=
"synchronisation"
x=
"-
42
"
y=
"-
51"
>
goal!
</label>
<nail
x=
"-
25
"
y=
"-
34
"
/>
<nail
x=
"
25
"
y=
"-
34
"
/>
</transition>
</template>
<template>
<name>
press
</name>
<location
id=
"id9"
x=
"-3153"
y=
"-3026"
>
</location>
<location
id=
"id10"
x=
"-30
17
"
y=
"-
2983
"
>
<location
id=
"id10"
x=
"-30
26
"
y=
"-
3026
"
>
</location>
<init
ref=
"id9"
/>
<transition>
<source
ref=
"id9"
/>
<target
ref=
"id10"
/>
<label
kind=
"synchronisation"
x=
"-3119"
y=
"-30
3
4"
>
pressed!
</label>
<label
kind=
"synchronisation"
x=
"-3119"
y=
"-304
3
"
>
pressed!
</label>
</transition>
</template>
<template>
...
...
@@ -149,16 +149,16 @@ int glass_in_target_pos = 0;</declaration>
<transition>
<source
ref=
"id11"
/>
<target
ref=
"id11"
/>
<label
kind=
"synchronisation"
x=
"-646"
y=
"5
1
"
>
move_fail!
</label>
<nail
x=
"-6
63
"
y=
"4
2
"
/>
<nail
x=
"-5
3
5"
y=
"
59
"
/>
<label
kind=
"synchronisation"
x=
"-646"
y=
"
-2
5"
>
move_fail!
</label>
<nail
x=
"-6
29
"
y=
"
-3
4"
/>
<nail
x=
"-5
9
5"
y=
"
-34
"
/>
</transition>
<transition>
<source
ref=
"id11"
/>
<target
ref=
"id11"
/>
<label
kind=
"synchronisation"
x=
"-6
5
3"
y=
"-
237
"
>
move_success!
</label>
<nail
x=
"-6
71
"
y=
"-
229
"
/>
<nail
x=
"-5
01
"
y=
"-
2
12"
/>
<label
kind=
"synchronisation"
x=
"-6
6
3"
y=
"-
119
"
>
move_success!
</label>
<nail
x=
"-6
29
"
y=
"-
102
"
/>
<nail
x=
"-5
95
"
y=
"-1
0
2"
/>
</transition>
</template>
<template>
...
...
@@ -169,414 +169,454 @@ int glass_in_target_pos = 0;</declaration>
<transition>
<source
ref=
"id12"
/>
<target
ref=
"id12"
/>
<label
kind=
"synchronisation"
x=
"-34"
y=
"
102
"
>
pickup_fail!
</label>
<nail
x=
"-7
6
"
y=
"
9
3"
/>
<nail
x=
"1
10
"
y=
"
76
"
/>
<label
kind=
"synchronisation"
x=
"-34"
y=
"
34
"
>
pickup_fail!
</label>
<nail
x=
"-
1
7"
y=
"3
4
"
/>
<nail
x=
"1
7
"
y=
"
34
"
/>
</transition>
<transition>
<source
ref=
"id12"
/>
<target
ref=
"id12"
/>
<label
kind=
"synchronisation"
x=
"-
109
"
y=
"-
93
"
>
pickup_success!
</label>
<nail
x=
"-1
2
7"
y=
"-
15
3"
/>
<nail
x=
"1
36
"
y=
"-
102
"
/>
<label
kind=
"synchronisation"
x=
"-
42
"
y=
"-
51
"
>
pickup_success!
</label>
<nail
x=
"-17"
y=
"-3
4
"
/>
<nail
x=
"1
7
"
y=
"-
34
"
/>
</transition>
</template>
<template>
<name
x=
"5"
y=
"5"
>
Cobot
</name>
<declaration>
// Place local declarations here.
</declaration>
<location
id=
"id13"
x=
"-102"
y=
"42"
>
<name
x=
"-112"
y=
"8"
>
waiting
</name>
<location
id=
"id13"
x=
"-221"
y=
"-119"
>
</location>
<location
id=
"id14"
x=
"204"
y=
"68"
>
<name
x=
"221"
y=
"68"
>
pick_bottle
</name>
<label
kind=
"invariant"
x=
"127"
y=
"85"
>
orient_constraint_set == false
</label>
<location
id=
"id14"
x=
"127"
y=
"-119"
>
<name
x=
"34"
y=
"-153"
>
pick_bottle
</name>
</location>
<location
id=
"id15"
x=
"5
95
"
y=
"
42
"
>
<name
x=
"5
78
"
y=
"
25
"
>
move_to_glass
</name>
<label
kind=
"invariant"
x=
"
501
"
y=
"
59
"
>
bottle_in_start_pos == false
</label>
<location
id=
"id15"
x=
"5
78
"
y=
"
-119
"
>
<name
x=
"5
35
"
y=
"
-110
"
>
move_to_glass
</name>
<label
kind=
"invariant"
x=
"
467
"
y=
"
-93
"
>
bottle_in_start_pos == false
</label>
</location>
<location
id=
"id16"
x=
"
1020
"
y=
"
59
"
>
<name
x=
"
926
"
y=
"
68
"
>
start_pour
</name>
<location
id=
"id16"
x=
"
773
"
y=
"
-8
"
>
<name
x=
"
679
"
y=
"
1
"
>
start_pour
</name>
</location>
<location
id=
"id17"
x=
"
442
"
y=
"-
119
"
>
<name
x=
"
399
"
y=
"-
153
"
>
shut_down
</name>
<location
id=
"id17"
x=
"
1003
"
y=
"-
263
"
>
<name
x=
"
960
"
y=
"-
297
"
>
shut_down
</name>
</location>
<location
id=
"id18"
x=
"
918
"
y=
"
289
"
>
<name
x=
"
867
"
y=
"
314
"
>
stop_pour
</name>
<location
id=
"id18"
x=
"
773
"
y=
"
110
"
>
<name
x=
"
688
"
y=
"
102
"
>
stop_pour
</name>
</location>
<location
id=
"id19"
x=
"
442
"
y=
"
289
"
>
<name
x=
"
348
"
y=
"
263
"
>
place_bottle
</name>
<location
id=
"id19"
x=
"
357
"
y=
"
76
"
>
<name
x=
"
255
"
y=
"
51
"
>
place_bottle
</name>
</location>
<location
id=
"id20"
x=
"-
102
"
y=
"
399
"
>
<name
x=
"-
102
"
y=
"4
07
"
>
pick_glass
</name>
<label
kind=
"invariant"
x=
"-
11
9"
y=
"
382
"
>
bottle_in_start_pos == true
</label>
<location
id=
"id20"
x=
"-
246
"
y=
"
76
"
>
<name
x=
"-
365
"
y=
"
3
4"
>
pick_glass
</name>
<label
kind=
"invariant"
x=
"-
45
9"
y=
"
51
"
>
bottle_in_start_pos == true
</label>
</location>
<location
id=
"id21"
x=
"
833
"
y=
"
493
"
>
<name
x=
"
790
"
y=
"
501
"
>
place_glass_target
</name>
<location
id=
"id21"
x=
"
314
"
y=
"
365
"
>
<name
x=
"
271
"
y=
"
373
"
>
place_glass_target
</name>
</location>
<location
id=
"id22"
x=
"
850
"
y=
"6
37
"
>
<name
x=
"
799
"
y=
"
654
"
>
place_glass_orig
</name>
<location
id=
"id22"
x=
"
-246
"
y=
"6
12
"
>
<name
x=
"
-238
"
y=
"
570
"
>
place_glass_orig
</name>
</location>
<location
id=
"id23"
x=
"
1343
"
y=
"5
9
5"
>
<name
x=
"
1343
"
y=
"
612
"
>
goto_last_state
</name>
<location
id=
"id23"
x=
"
314
"
y=
"55
2
"
>
<name
x=
"
314
"
y=
"
569
"
>
goto_last_state
</name>
</location>
<location
id=
"id24"
x=
"
66
3"
y=
"
586
"
>
<name
x=
"
501
"
y=
"
569
"
>
goto_last_state_orig
</name>
<location
id=
"id24"
x=
"
111
3"
y=
"
612
"
>
<name
x=
"
952
"
y=
"
620
"
>
goto_last_state_orig
</name>
</location>
<location
id=
"id25"
x=
"
1275
"
y=
"
459
"
>
<name
x=
"1
25
8"
y=
"
476
"
>
move_to_start_pos
</name>
<location
id=
"id25"
x=
"
977
"
y=
"
365
"
>
<name
x=
"
9
18"
y=
"
331
"
>
move_to_start_pos
</name>
</location>
<location
id=
"id26"
x=
"
1428
"
y=
"
348
"
>
<name
x=
"
1418
"
y=
"
314
"
>
finished_success
</name>
<location
id=
"id26"
x=
"
977
"
y=
"
501
"
>
<name
x=
"
833
"
y=
"
493
"
>
finished_success
</name>
</location>
<location
id=
"id27"
x=
"3
40
"
y=
"
8
"
>
<location
id=
"id27"
x=
"3
65
"
y=
"
-119
"
>
</location>
<location
id=
"id28"
x=
"
858
"
y=
"
42
"
>
<location
id=
"id28"
x=
"
773
"
y=
"
-119
"
>
</location>
<location
id=
"id29"
x=
"
391
"
y=
"
5
35"
>
<location
id=
"id29"
x=
"
-59
"
y=
"3
6
5"
>
</location>
<location
id=
"id30"
x=
"
1224
"
y=
"35
7
"
>
<label
kind=
"invariant"
x=
"
1173
"
y=
"3
4
8"
>
glass_in_target_pos ==
1
</label>
<location
id=
"id30"
x=
"
671
"
y=
"3
6
5"
>
<label
kind=
"invariant"
x=
"
595
"
y=
"38
2
"
>
glass_in_target_pos ==
true
</label>
</location>
<location
id=
"id31"
x=
"
102
"
y=
"
612
"
>
<location
id=
"id31"
x=
"
-246
"
y=
"
408
"
>
</location>
<location
id=
"id32"
x=
"1
22
4"
y=
"
544
"
>
<name
x=
"
1156
"
y=
"
544
"
>
stepping_back
</name>
<location
id=
"id32"
x=
"
3
14"
y=
"
467
"
>
<name
x=
"
340
"
y=
"
459
"
>
stepping_back
</name>
</location>
<init
ref=
"id13"
/>
<location
id=
"id33"
x=
"-374"
y=
"-119"
>
</location>
<location
id=
"id34"
x=
"-25"
y=
"-119"
>
<committed/>
</location>
<location
id=
"id35"
x=
"-127"
y=
"-221"
>
</location>
<location
id=
"id36"
x=
"535"
y=
"76"
>
</location>
<location
id=
"id37"
x=
"-25"
y=
"76"
>
</location>
<init
ref=
"id33"
/>
<transition>
<source
ref=
"id37"
/>
<target
ref=
"id20"
/>
<label
kind=
"synchronisation"
x=
"-153"
y=
"34"
>
goal?
</label>
<label
kind=
"assignment"
x=
"-221"
y=
"51"
>
orient_constraint_set = false
</label>
</transition>
<transition>
<source
ref=
"id36"
/>
<target
ref=
"id19"
/>
<label
kind=
"synchronisation"
x=
"416"
y=
"34"
>
goal?
</label>
<label
kind=
"assignment"
x=
"382"
y=
"51"
>
orient_constraint_set = true
</label>
</transition>
<transition>
<source
ref=
"id34"
/>
<target
ref=
"id14"
/>
</transition>
<transition>
<source
ref=
"id35"
/>
<target
ref=
"id34"
/>
<label
kind=
"synchronisation"
x=
"-136"
y=
"-195"
>
move_success?
</label>
<nail
x=
"-25"
y=
"-221"
/>
</transition>
<transition>
<source
ref=
"id18"
/>
<target
ref=
"id18"
/>
<label
kind=
"synchronisation"
x=
"867"
y=
"102"
>
move_fail?
</label>
<nail
x=
"858"
y=
"84"
/>
<nail
x=
"858"
y=
"144"
/>
</transition>
<transition>
<source
ref=
"id33"
/>
<target
ref=
"id35"
/>
<label
kind=
"select"
x=
"-357"
y=
"-280"
>
i : int[1,15]
</label>
<label
kind=
"synchronisation"
x=
"-357"
y=
"-263"
>
pressed?
</label>
<label
kind=
"assignment"
x=
"-459"
y=
"-246"
>
init_retry_count = i, retry_count = init_retry_count
</label>
<nail
x=
"-374"
y=
"-221"
/>
</transition>
<transition>
<source
ref=
"id33"
/>
<target
ref=
"id13"
/>
<label
kind=
"synchronisation"
x=
"-348"
y=
"-110"
>
move_success?
</label>
</transition>
<transition>
<source
ref=
"id32"
/>
<target
ref=
"id23"
/>
<label
kind=
"synchronisation"
x=
"
1249
"
y=
"5
6
1"
>
move_success?
</label>
<label
kind=
"synchronisation"
x=
"
323
"
y=
"5
0
1"
>
move_success?
</label>
</transition>
<transition>
<source
ref=
"id31"
/>
<target
ref=
"id20"
/>
<label
kind=
"synchronisation"
x=
"-
1
7"
y=
"
51
8"
>
move_
goal?
</label>
<label
kind=
"assignment"
x=
"-
17
"
y=
"
5
35"
>
orient_constraint_set = false
</label>
<label
kind=
"synchronisation"
x=
"-
35
7"
y=
"
29
8"
>
goal?
</label>
<label
kind=
"assignment"
x=
"-
450
"
y=
"3
1
5"
>
orient_constraint_set = false
</label>
</transition>
<transition>
<source
ref=
"id30"
/>
<target
ref=
"id25"
/>
<label
kind=
"synchronisation"
x=
"
1224
"
y=
"3
99"
>
move_
goal?
</label>
<label
kind=
"assignment"
x=
"
1198
"
y=
"
416
"
>
orient_constraint_set = false
</label>
<label
kind=
"synchronisation"
x=
"
782
"
y=
"3
31"
>
goal?
</label>
<label
kind=
"assignment"
x=
"
722
"
y=
"
348
"
>
orient_constraint_set = false
</label>
</transition>
<transition>
<source
ref=
"id29"
/>
<target
ref=
"id21"
/>
<label
kind=
"synchronisation"
x=
"
493
"
y=
"
493"
>
move_
goal?
</label>
<label
kind=
"assignment"
x=
"
425
"
y=
"
510
"
>
orient_constraint_set = true
</label>
<label
kind=
"synchronisation"
x=
"
-17
"
y=
"
348"
>
goal?
</label>
<label
kind=
"assignment"
x=
"
-34
"
y=
"
365
"
>
orient_constraint_set = true
</label>
</transition>
<transition>
<source
ref=
"id28"
/>
<target
ref=
"id16"
/>
<label
kind=
"synchronisation"
x=
"
875
"
y=
"
25"
>
move_
goal?
</label>
<label
kind=
"assignment"
x=
"
867
"
y=
"
42
"
>
orient_constraint_set = false
</label>
<label
kind=
"synchronisation"
x=
"
773
"
y=
"
-93"
>
goal?
</label>
<label
kind=
"assignment"
x=
"
773
"
y=
"
-76
"
>
orient_constraint_set = false
</label>
</transition>
<transition>
<source
ref=
"id27"
/>
<target
ref=
"id15"
/>
<label
kind=
"synchronisation"
x=
"4
42
"
y=
"0"
>
move_
goal?
</label>
<label
kind=
"assignment"
x=
"3
82
"
y=
"
17
"
>
orient_constraint_set = true
</label>
<label
kind=
"synchronisation"
x=
"4
08
"
y=
"
-17
0"
>
goal?
</label>
<label
kind=
"assignment"
x=
"3
65
"
y=
"
-153
"
>
orient_constraint_set = true
</label>
</transition>
<transition>
<source
ref=
"id25"
/>
<target
ref=
"id26"
/>
<label
kind=
"synchronisation"
x=
"
1334
"
y=
"
382
"
>
move_success?
</label>
<label
kind=
"synchronisation"
x=
"
858
"
y=
"
450
"
>
move_success?
</label>
</transition>
<transition>
<source
ref=
"id21"
/>
<target
ref=
"id30"
/>
<label
kind=
"synchronisation"
x=
"
1054
"
y=
"3
99
"
>
place_success?
</label>
<label
kind=
"synchronisation"
x=
"
459
"
y=
"3
65
"
>
place_success?
</label>
</transition>
<transition>
<source
ref=
"id24"
/>
<target
ref=
"id17"
/>
<nail
x=
"714"
y=
"-93"
/>
<label
kind=
"synchronisation"
x=
"1003"
y=
"561"
>
move_success?
</label>
<nail
x=
"1113"
y=
"-297"
/>
</transition>
<transition>
<source
ref=
"id22"
/>
<target
ref=
"id24"
/>
<label
kind=
"guard"
x=
"6
71
"
y=
"578"
>
retry_count == 1
</label>
<label
kind=
"synchronisation"
x=
"69
7
"
y=
"595"
>
place_fail?
</label>
<label
kind=
"guard"
x=
"6
29
"
y=
"578"
>
retry_count == 1
</label>
<label
kind=
"synchronisation"
x=
"6
2
9"
y=
"595"
>
place_fail?
</label>
</transition>
<transition>
<source
ref=
"id20"
/>
<target
ref=
"id17"
/>
<label
kind=
"guard"
x=
"459"
y=
"416"
>
place_glass_retry == 0
</label>
<label
kind=
"synchronisation"
x=
"467"
y=
"433"
>
pickup_success?
</label>
<nail
x=
"603"
y=
"467"
/>
<nail
x=
"663"
y=
"-59"
/>
<label
kind=
"guard"
x=
"578"
y=
"170"
>
place_glass_retry == 0
</label>
<label
kind=
"synchronisation"
x=
"578"
y=
"187"
>
pickup_success?
</label>
<nail
x=
"178"
y=
"204"
/>
<nail
x=
"1079"
y=
"212"
/>
<nail
x=
"1079"
y=
"-272"
/>
</transition>
<transition>
<source
ref=
"id22"
/>
<target
ref=
"id31"
/>
<label
kind=
"synchronisation"
x=
"
25
5"
y=
"
629
"
>
place_success?
</label>
<label
kind=
"assignment"
x=
"
255
"
y=
"
646
"
>
place_glass_retry--
</label>
<label
kind=
"synchronisation"
x=
"
-36
5"
y=
"
493
"
>
place_success?
</label>
<label
kind=
"assignment"
x=
"
-382
"
y=
"
510
"
>
place_glass_retry--
</label>
</transition>
<transition>
<source
ref=
"id22"
/>
<target
ref=
"id22"
/>
<label
kind=
"guard"
x=
"
808
"
y=
"5
5
6"
>
retry_count
>
1
</label>
<label
kind=
"synchronisation"
x=
"
808
"
y=
"57
3
"
>
place_fail?
</label>
<label
kind=
"assignment"
x=
"
808
"
y=
"59
0
"
>
retry_count--
</label>
<nail
x=
"
790
"
y=
"
595
"
/>
<nail
x=
"
867
"
y=
"58
6
"
/>
<label
kind=
"guard"
x=
"
-441
"
y=
"56
1
"
>
retry_count
>
1
</label>
<label
kind=
"synchronisation"
x=
"
-441
"
y=
"57
8
"
>
place_fail?
</label>
<label
kind=
"assignment"
x=
"
-450
"
y=
"59
5
"
>
retry_count--
</label>
<nail
x=
"
-348
"
y=
"
638
"
/>
<nail
x=
"
-348
"
y=
"58
7
"
/>
</transition>
<transition>
<source
ref=
"id23"
/>
<target
ref=
"id22"
/>
<label
kind=
"synchronisation"
x=
"
1122
"
y=
"
61
2"
>
move_success?
</label>
<label
kind=
"assignment"
x=
"
1096
"
y=
"
629
"
>
retry_count = init_retry_count
</label>
<label
kind=
"synchronisation"
x=
"
76
"
y=
"
55
2"
>
move_success?
</label>
<label
kind=
"assignment"
x=
"
42
"
y=
"
586
"
>
retry_count = init_retry_count
</label>
</transition>
<transition>
<source
ref=
"id22"
/>
<target
ref=
"id22"
/>
<label
kind=
"synchronisation"
x=
"
979
"
y=
"6
33
"
>
move_fail?
</label>
<nail
x=
"
1071
"
y=
"6
29
"
/>
<nail
x=
"
1080
"
y=
"663"
/>
<label
kind=
"synchronisation"
x=
"
-204
"
y=
"6
55
"
>
move_fail?
</label>
<nail
x=
"
-195
"
y=
"6
38
"
/>
<nail
x=
"
-221
"
y=
"663"
/>
</transition>
<transition>
<source
ref=
"id22"
/>
<target
ref=
"id22"
/>
<label
kind=
"synchronisation"
x=
"
909
"
y=
"6
80
"
>
move_success?
</label>
<nail
x=
"
9
26"
y=
"67
1
"
/>
<nail
x=
"
901
"
y=
"6
97
"
/>
<label
kind=
"synchronisation"
x=
"
-400
"
y=
"6
64
"
>
move_success?
</label>
<nail
x=
"
-
26
4
"
y=
"67
2
"
/>
<nail
x=
"
-297
"
y=
"6
55
"
/>
</transition>
<transition>
<source
ref=
"id21"
/>
<target
ref=
"id32"
/>
<label
kind=
"guard"
x=
"
960
"
y=
"
518
"
>
retry_count == 1
</label>
<label
kind=
"synchronisation"
x=
"
969
"
y=
"
535
"
>
place_fail?
</label>
<label
kind=
"guard"
x=
"
178
"
y=
"
416
"
>
retry_count == 1
</label>
<label
kind=
"synchronisation"
x=
"
187
"
y=
"
433
"
>
place_fail?
</label>
</transition>
<transition>
<source
ref=
"id21"
/>
<target
ref=
"id21"
/>
<label
kind=
"guard"
x=
"9
0
9"
y=
"
433
"
>
retry_count
>
1
</label>
<label
kind=
"synchronisation"
x=
"
926
"
y=
"
450
"
>
place_fail?
</label>
<label
kind=
"assignment"
x=
"
935
"
y=
"
467
"
>
retry_count--
</label>
<nail
x=
"
994
"
y=
"
450
"
/>
<nail
x=
"99
4
"
y=
"
510
"
/>
<label
kind=
"guard"
x=
"
3
99"
y=
"
297
"
>
retry_count
>
1
</label>
<label
kind=
"synchronisation"
x=
"
399
"
y=
"
314
"
>
place_fail?
</label>
<label
kind=
"assignment"
x=
"
399
"
y=
"
331
"
>
retry_count--
</label>
<nail
x=
"
391
"
y=
"
323
"
/>
<nail
x=
"
3
99"
y=
"
348
"
/>
</transition>
<transition>
<source
ref=
"id21"
/>
<target
ref=
"id21"
/>
<label
kind=
"synchronisation"
x=
"8
5
0"
y=
"
408
"
>
move_fail?
</label>
<nail
x=
"
833
"
y=
"
416
"
/>
<nail
x=
"
892
"
y=
"
4
33"
/>
<label
kind=
"synchronisation"
x=
"
2
80"
y=
"
297
"
>
move_fail?
</label>
<nail
x=
"
280
"
y=
"
323
"
/>
<nail
x=
"
340
"
y=
"3
2
3"
/>
</transition>
<transition>
<source
ref=
"id21"
/>
<target
ref=
"id21"
/>
<label
kind=
"synchronisation"
x=
"
723
"
y=
"
442
"
>
move_success?
</label>
<nail
x=
"
705
"
y=
"
425
"
/>
<nail
x=
"
799
"
y=
"
425
"
/>
<label
kind=
"synchronisation"
x=
"
102
"
y=
"
314
"
>
move_success?
</label>
<nail
x=
"
204
"
y=
"
348
"
/>
<nail
x=
"
220
"
y=
"
314
"
/>
</transition>
<transition>
<source
ref=
"id20"
/>
<target
ref=
"id29"
/>
<label
kind=
"guard"
x=
"
212
"
y=
"
476
"
>
place_glass_retry
>
0
</label>
<label
kind=
"synchronisation"
x=
"
212
"
y=
"
459
"
>
pickup_success?
</label>
<label
kind=
"assignment"
x=
"
195
"
y=
"
493
"
>
retry_count = init_retry_count
</label>
<label
kind=
"guard"
x=
"
-178
"
y=
"
221
"
>
place_glass_retry
>
0
</label>
<label
kind=
"synchronisation"
x=
"
-170
"
y=
"
238
"
>
pickup_success?
</label>
<label
kind=
"assignment"
x=
"
-161
"
y=
"
255
"
>
retry_count = init_retry_count
</label>
</transition>
<transition>
<source
ref=
"id20"
/>
<target
ref=
"id17"
/>
<label
kind=
"guard"
x=
"204"
y=
"221"
>
retry_count == 1
</label>
<label
kind=
"synchronisation"
x=
"221"
y=
"238"
>
pickup_fail?
</label>
<nail
x=
"348"
y=
"221"
/>
<label
kind=
"guard"
x=
"221"
y=
"212"
>
retry_count == 1
</label>
<label
kind=
"synchronisation"
x=
"221"
y=
"229"
>
pickup_fail?
</label>
<nail
x=
"178"
y=
"246"
/>
<nail
x=
"1096"
y=
"255"
/>
<nail
x=
"1096"
y=
"-280"
/>
</transition>
<transition>
<source
ref=
"id20"
/>
<target
ref=
"id20"
/>
<label
kind=
"guard"
x=
"-
204
"
y=
"
475
"
>
retry_count
>
1
</label>
<label
kind=
"synchronisation"
x=
"-
204
"
y=
"
492
"
>
pickup_fail?
</label>
<label
kind=
"assignment"
x=
"-
204
"
y=
"
509
"
>
retry_count--
</label>
<nail
x=
"-
222
"
y=
"
560
"
/>
<nail
x=
"-
12
9"
y=
"
585
"
/>
<label
kind=
"guard"
x=
"-
476
"
y=
"
119
"
>
retry_count
>
1
</label>
<label
kind=
"synchronisation"
x=
"-
476
"
y=
"
136
"
>
pickup_fail?
</label>
<label
kind=
"assignment"
x=
"-
476
"
y=
"
153
"
>
retry_count--
</label>
<nail
x=
"-
373
"
y=
"
144
"
/>
<nail
x=
"-
33
9"
y=
"
169
"
/>
</transition>
<transition>
<source
ref=
"id20"
/>
<target
ref=
"id20"
/>
<label
kind=
"synchronisation"
x=
"-
221
"
y=
"
382
"
>
move_fail?
</label>
<nail
x=
"-
187
"
y=
"
382
"
/>
<nail
x=
"-
195
"
y=
"
39
9"
/>
<label
kind=
"synchronisation"
x=
"-
399
"
y=
"
76
"
>
move_fail?
</label>
<nail
x=
"-
323
"
y=
"
68
"
/>
<nail
x=
"-
323
"
y=
"9
3
"
/>
</transition>
<transition>
<source
ref=
"id20"
/>
<target
ref=
"id20"
/>
<label
kind=
"synchronisation"
x=
"-
118
"
y=
"
335
"
>
move_success?
</label>
<nail
x=
"-
68
"
y=
"3
48
"
/>
<nail
x=
"-
136
"
y=
"3
56
"
/>
<label
kind=
"synchronisation"
x=
"-
289
"
y=
"
17
"
>
move_success?
</label>
<nail
x=
"-
212
"
y=
"3
3
"
/>
<nail
x=
"-
280
"
y=
"3
3
"
/>
</transition>
<transition>
<source
ref=
"id19"
/>
<target
ref=
"id
20
"
/>
<label
kind=
"synchronisation"
x=
"
25
5"
y=
"
29
7"
>
place_success?
</label>
<label
kind=
"assignment"
x=
"
119
"
y=
"
32
3"
>
retry_count = init_retry_count, place_glass_retry = init_retry_count
</label>
<target
ref=
"id
37
"
/>
<label
kind=
"synchronisation"
x=
"
8
5"
y=
"7
6
"
>
place_success?
</label>
<label
kind=
"assignment"
x=
"
-102
"
y=
"
9
3"
>
retry_count = init_retry_count, place_glass_retry = init_retry_count
</label>
</transition>
<transition>
<source
ref=
"id19"
/>
<target
ref=
"id17"
/>
<label
kind=
"guard"
x=
"374"
y=
"110"
>
retry_count == 1
</label>
<label
kind=
"synchronisation"
x=
"391"
y=
"93"
>
place_fail?
</label>
<nail
x=
"382"
y=
"161"
/>
<label
kind=
"guard"
x=
"935"
y=
"144"
>
retry_count == 1
</label>
<label
kind=
"synchronisation"
x=
"960"
y=
"161"
>
place_fail?
</label>
<nail
x=
"1062"
y=
"195"
/>
<nail
x=
"1062"
y=
"-263"
/>
</transition>
<transition>
<source
ref=
"id19"
/>
<target
ref=
"id19"
/>
<label
kind=
"guard"
x=
"
450
"
y=
"
161
"
>
retry_count
>
1
</label>
<label
kind=
"synchronisation"
x=
"
434
"
y=
"
182
"
>
place_fail?
</label>
<label
kind=
"assignment"
x=
"
434
"
y=
"
199
"
>
retry_count--
</label>
<nail
x=
"
416
"
y=
"1
95
"
/>
<nail
x=
"
552
"
y=
"
204
"
/>
<label
kind=
"guard"
x=
"
255
"
y=
"
-34
"
>
retry_count
>
1
</label>
<label
kind=
"synchronisation"
x=
"
255
"
y=
"
-17
"
>
place_fail?
</label>
<label
kind=
"assignment"
x=
"
255
"
y=
"
0
"
>
retry_count--
</label>
<nail
x=
"
315
"
y=
"1
7
"
/>
<nail
x=
"
408
"
y=
"
17
"
/>
</transition>
<transition>
<source
ref=
"id19"
/>
<target
ref=
"id19"
/>
<label
kind=
"synchronisation"
x=
"
476
"
y=
"
348
"
>
move_success?
</label>
<nail
x=
"
459
"
y=
"
374
"
/>
<nail
x=
"
510
"
y=
"
357
"
/>
<label
kind=
"synchronisation"
x=
"
374
"
y=
"
136
"
>
move_success?
</label>
<nail
x=
"
383
"
y=
"
136
"
/>
<nail
x=
"
434
"
y=
"
110
"
/>
</transition>
<transition>
<source
ref=
"id19"
/>
<target
ref=
"id19"
/>
<label
kind=
"synchronisation"
x=
"374"
y=
"382"
>
move_fail?
</label>
<nail
x=
"365"
y=
"399"
/>
<nail
x=
"433"
y=
"408"
/>
<nail
x=
"442"
y=
"306"
/>
<label
kind=
"synchronisation"
x=
"264"
y=
"119"
>
move_fail?
</label>
<nail
x=
"298"
y=
"110"
/>
<nail
x=
"349"
y=
"136"
/>
</transition>
<transition>
<source
ref=
"id14"
/>
<target
ref=
"id14"
/>
<label
kind=
"synchronisation"
x=
"
272
"
y=
"
136
"
>
move_fail?
</label>
<nail
x=
"
229
"
y=
"
153
"
/>
<nail
x=
"
280
"
y=
"
161
"
/>
<label
kind=
"synchronisation"
x=
"
144
"
y=
"
-8
"
>
move_fail?
</label>
<nail
x=
"
127
"
y=
"
-8
"
/>
<nail
x=
"
178
"
y=
"
-8
"
/>
</transition>
<transition>
<source
ref=
"id14"
/>
<target
ref=
"id14"
/>
<label
kind=
"synchronisation"
x=
"51"
y=
"102"
>
move_success?
</label>
<nail
x=
"119"
y=
"119"
/>
<nail
x=
"178"
y=
"127"
/>
</transition>
<transition>
<source
ref=
"id18"
/>
<target
ref=
"id19"
/>
<label
kind=
"synchronisation"
x=
"595"
y=
"263"
>
move_success?
</label>
<label
kind=
"assignment"
x=
"603"
y=
"289"
>
retry_count = init_retry_count
</label>
</transition>
<transition>
<source
ref=
"id18"
/>
<target
ref=
"id17"
/>
<label
kind=
"guard"
x=
"1181"
y=
"0"
>
retry_count == 1
</label>
<label
kind=
"synchronisation"
x=
"1232"
y=
"-25"
>
pickup_fail?
</label>
<nail
x=
"1436"
y=
"-93"
/>
<label
kind=
"synchronisation"
x=
"-8"
y=
"-8"
>
move_success?
</label>
<nail
x=
"59"
y=
"-8"
/>
<nail
x=
"110"
y=
"-8"
/>
</transition>
<transition>
<source
ref=
"id18"
/>
<target
ref=
"id18"
/>
<label
kind=
"guard"
x=
"1071"
y=
"323"
>
retry_count
>
1
</label>
<label
kind=
"synchronisation"
x=
"1079"
y=
"306"
>
move_fail?
</label>
<label
kind=
"assignment"
x=
"1062"
y=
"340"
>
retry_count--
</label>
<nail
x=
"1096"
y=
"246"
/>
<nail
x=
"1037"
y=
"382"
/>
<target
ref=
"id36"
/>
<label
kind=
"synchronisation"
x=
"595"
y=
"42"
>
move_success?
</label>
<label
kind=
"assignment"
x=
"544"
y=
"59"
>
retry_count = init_retry_count
</label>
<nail
x=
"722"
y=
"76"
/>
</transition>
<transition>
<source
ref=
"id16"
/>
<target
ref=
"id18"
/>
<label
kind=
"synchronisation"
x=
"884"
y=
"102"
>
move_success?
</label>
<label
kind=
"assignment"
x=
"765"
y=
"119"
>
retry_count = init_retry_count
</label>
<label
kind=
"synchronisation"
x=
"782"
y=
"42"
>
move_success?
</label>
</transition>
<transition>
<source
ref=
"id16"
/>
<target
ref=
"id16"
/>
<label
kind=
"synchronisation"
x=
"
969
"
y=
"-
42
"
>
move_fail?
</label>
<nail
x=
"
918
"
y=
"-2
5
"
/>
<nail
x=
"
1139
"
y=
"
-25
"
/>
<label
kind=
"synchronisation"
x=
"
875
"
y=
"-
17
"
>
move_fail?
</label>
<nail
x=
"
867
"
y=
"-
4
2"
/>
<nail
x=
"
867
"
y=
"
26
"
/>
</transition>
<transition>
<source
ref=
"id15"
/>
<target
ref=
"id28"
/>
<label
kind=
"synchronisation"
x=
"6
97
"
y=
"
25
"
>
move_success?
</label>
<label
kind=
"synchronisation"
x=
"6
20
"
y=
"
-136
"
>
move_success?
</label>
</transition>
<transition>
<source
ref=
"id15"
/>
<target
ref=
"id15"
/>
<label
kind=
"synchronisation"
x=
"
544
"
y=
"-
42
"
>
move_fail?
</label>
<nail
x=
"
518
"
y=
"-
8
"
/>
<nail
x=
"637"
y=
"-
25
"
/>
<label
kind=
"synchronisation"
x=
"
629
"
y=
"-
187
"
>
move_fail?
</label>
<nail
x=
"
603
"
y=
"-
170
"
/>
<nail
x=
"637"
y=
"-
144
"
/>
</transition>
<transition>
<source
ref=
"id14"
/>
<target
ref=
"id17"
/>
<label
kind=
"guard"
x=
"280"
y=
"-102"
>
retry_count == 1
</label>
<label
kind=
"synchronisation"
x=
"306"
y=
"-119"
>
pickup_fail?
</label>
<label
kind=
"guard"
x=
"416"
y=
"-255"
>
retry_count == 1
</label>
<label
kind=
"synchronisation"
x=
"433"
y=
"-238"
>
pickup_fail?
</label>
<nail
x=
"425"
y=
"-263"
/>
</transition>
<transition>
<source
ref=
"id14"
/>
<target
ref=
"id27"
/>
<label
kind=
"synchronisation"
x=
"2
46
"
y=
"
34
"
>
pickup_success?
</label>
<label
kind=
"synchronisation"
x=
"2
21
"
y=
"
-136
"
>
pickup_success?
</label>
</transition>
<transition>
<source
ref=
"id14"
/>
<target
ref=
"id14"
/>
<label
kind=
"guard"
x=
"
110
"
y=
"-
102
"
>
retry_count
>
1
</label>
<label
kind=
"synchronisation"
x=
"
110
"
y=
"-
85
"
>
pickup_fail?
</label>
<label
kind=
"assignment"
x=
"
110
"
y=
"-
68
"
>
retry_count--
</label>
<nail
x=
"
127
"
y=
"-2
5
"
/>
<nail
x=
"
289
"
y=
"-
4
2"
/>
<label
kind=
"guard"
x=
"
93
"
y=
"-
263
"
>
retry_count
>
1
</label>
<label
kind=
"synchronisation"
x=
"
93
"
y=
"-
246
"
>
pickup_fail?
</label>
<label
kind=
"assignment"
x=
"
93
"
y=
"-
229
"
>
retry_count--
</label>
<nail
x=
"
93
"
y=
"-2
12
"
/>
<nail
x=
"
170
"
y=
"-
21
2"
/>
</transition>
<transition>
<source
ref=
"id13"
/>
<target
ref=
"id
1
4"
/>
<label
kind=
"select"
x=
"-
272
"
y=
"
34
"
>
i : int[1,5]
</label>
<label
kind=
"synchronisation"
x=
"-
272
"
y=
"
51
"
>
pressed?
</label>
<label
kind=
"assignment"
x=
"-2
72
"
y=
"
68
"
>
init_retry_count = i, retry_count = init_retry_count
</label>
<target
ref=
"id
3
4"
/>
<label
kind=
"select"
x=
"-
170
"
y=
"
-119
"
>
i : int[1,
1
5]
</label>
<label
kind=
"synchronisation"
x=
"-
170
"
y=
"
-102
"
>
pressed?
</label>
<label
kind=
"assignment"
x=
"-2
80
"
y=
"
-85
"
>
init_retry_count = i, retry_count = init_retry_count
</label>
</transition>
</template>
<template>
<name>
positionupdatecatcher
</name>
<location
id=
"id3
3
"
x=
"-5
86
"
y=
"-
170
"
>
<location
id=
"id3
8
"
x=
"-5
44
"
y=
"-
331
"
>
</location>
<init
ref=
"id3
3
"
/>
<init
ref=
"id3
8
"
/>
<transition>
<source
ref=
"id3
3
"
/>
<target
ref=
"id3
3
"
/>
<label
kind=
"synchronisation"
x=
"-
314
"
y=
"-
195
"
>
position_update?
</label>
<nail
x=
"-
416
"
y=
"-
272
"
/>
<nail
x=
"-
39
1"
y=
"-
127
"
/>
<source
ref=
"id3
8
"
/>
<target
ref=
"id3
8
"
/>
<label
kind=
"synchronisation"
x=
"-
493
"
y=
"-
340
"
>
position_update?
</label>
<nail
x=
"-
501
"
y=
"-
357
"
/>
<nail
x=
"-
50
1"
y=
"-
306
"
/>
</transition>
</template>
<template>
<name>
positionupdate
</name>
<location
id=
"id3
4
"
x=
"0"
y=
"0"
>
<location
id=
"id3
9
"
x=
"0"
y=
"0"
>
</location>
<init
ref=
"id3
4
"
/>
<init
ref=
"id3
9
"
/>
<transition>
<source
ref=
"id3
4
"
/>
<target
ref=
"id3
4
"
/>
<label
kind=
"synchronisation"
x=
"
34
"
y=
"-
76
"
>
position_update!
</label>
<nail
x=
"
-2
5"
y=
"-1
19
"
/>
<nail
x=
"1
78
"
y=
"
-
17"
/>
<source
ref=
"id3
9
"
/>
<target
ref=
"id3
9
"
/>
<label
kind=
"synchronisation"
x=
"
59
"
y=
"-
8
"
>
position_update!
</label>
<nail
x=
"5
1
"
y=
"-1
7
"
/>
<nail
x=
"
5
1"
y=
"17"
/>
</transition>
</template>
<template>
<name>
move
goalcatcher
</name>
<location
id=
"id
35
"
x=
"-
603
"
y=
"-2
29
"
>
<name>
goalcatcher
</name>
<location
id=
"id
40
"
x=
"-
578
"
y=
"-2
63
"
>
</location>
<init
ref=
"id
35
"
/>
<init
ref=
"id
40
"
/>
<transition>
<source
ref=
"id
35
"
/>
<target
ref=
"id
35
"
/>
<label
kind=
"synchronisation"
x=
"-
450
"
y=
"-2
38"
>
move_
goal?
</label>
<nail
x=
"-
442
"
y=
"-
323
"
/>
<nail
x=
"-
450
"
y=
"-
119
"
/>
<source
ref=
"id
40
"
/>
<target
ref=
"id
40
"
/>
<label
kind=
"synchronisation"
x=
"-
535
"
y=
"-2
72"
>
goal?
</label>
<nail
x=
"-
535
"
y=
"-
280
"
/>
<nail
x=
"-
535
"
y=
"-
246
"
/>
</transition>
</template>
<system>
// Place template instantiations here.
// List one or more processes to be composed into a system.
system Cobot, press, move, pickup, place,
move
goal,
move
goalcatcher, positionupdate, positionupdatecatcher, model_positions;
system Cobot, press, move, pickup, place, goal
_
, goalcatcher, positionupdate, positionupdatecatcher, model_positions;
</system>
<queries>
<query>
...
...
This diff is collapsed.
Click to expand it.
launch/cobot1_mock_test.launch
+
2
−
0
View file @
e4d184c0
...
...
@@ -20,4 +20,6 @@
<!-- The execution_duration_monitoring sometimes aborts a valid trajectory execution -->
<param name="move_group/trajectory_execution/execution_duration_monitoring" value="false" />
<node pkg="cobot_1" type="gazebo_real_time.sh" name="gazebo_real_time" output="screen"/>
</launch>
This diff is collapsed.
Click to expand it.
scripts/gazebo_real_time.sh
0 → 100755
+
5
−
0
View file @
e4d184c0
#!/bin/bash
sleep
5
# make sure gazebo running already
# running it faster than default apparently breakes it
# gz physics --update-rate=700 --step-size=0.002
This diff is collapsed.
Click to expand it.
src/tron_adapter.cpp
+
36
−
2
View file @
e4d184c0
...
...
@@ -16,6 +16,7 @@
#include
<geometry_msgs/Pose.h>
#include
<tf2/LinearMath/Quaternion.h>
#include
<tf2/LinearMath/Vector3.h>
#include
<algorithm>
// for std::find
const
std
::
string
IP
=
"127.0.0.1"
;
const
uint16_t
PORT
=
8080
;
...
...
@@ -266,6 +267,13 @@ void get_error_msg(int32_t errorcode) {
}
void
add_var_to_channel
(
Channel
&
chan
,
bool
is_input
,
std
::
string
var
)
{
bool
var_already_declared
=
false
;
for
(
Mapping
&
map
:
mappings
)
if
(
std
::
find
(
map
.
channel
.
vars
.
begin
(),
map
.
channel
.
vars
.
end
(),
var
)
!=
map
.
channel
.
vars
.
end
())
var_already_declared
=
true
;
if
(
var_already_declared
)
{
ROS_INFO
(
"variable %s was already declared to channel %s"
,
var
.
c_str
(),
chan
.
name
.
c_str
());
return
;
}
byte
msg
[
6
+
var
.
length
()];
msg
[
0
]
=
is_input
?
ADD_VAR_TO_INPUT
:
ADD_VAR_TO_OUTPUT
;
add_int32_in_network_order
(
chan
.
identifier
,
msg
,
1
);
...
...
@@ -428,7 +436,23 @@ void on_move_goal(const moveit_msgs::MoveGroupActionGoal::ConstPtr &msg){
if
(
msg
->
goal
.
request
.
path_constraints
.
orientation_constraints
.
empty
())
is_orientation_constraint_set
=
0
;
else
is_orientation_constraint_set
=
1
;
report_now
(
"move_goal"
,
1
,
&
is_orientation_constraint_set
);
report_now
(
"goal"
,
1
,
&
is_orientation_constraint_set
);
}
void
on_pickup_goal
(
const
moveit_msgs
::
PickupActionGoal
::
ConstPtr
&
msg
){
int32_t
is_orientation_constraint_set
;
if
(
msg
->
goal
.
path_constraints
.
orientation_constraints
.
empty
())
is_orientation_constraint_set
=
0
;
else
is_orientation_constraint_set
=
1
;
report_now
(
"goal"
,
1
,
&
is_orientation_constraint_set
);
}
void
on_place_goal
(
const
moveit_msgs
::
PlaceActionGoal
::
ConstPtr
&
msg
)
{
int32_t
is_orientation_constraint_set
;
if
(
msg
->
goal
.
path_constraints
.
orientation_constraints
.
empty
())
is_orientation_constraint_set
=
0
;
else
is_orientation_constraint_set
=
1
;
report_now
(
"goal"
,
1
,
&
is_orientation_constraint_set
);
}
bool
compare_poses
(
geometry_msgs
::
Pose
p1
,
geometry_msgs
::
Pose
p2
,
double
pos_tolerance
=
0.01
,
double
angle_tol
=
0.1
){
...
...
@@ -531,11 +555,21 @@ void configuration_phase(ros::NodeHandle& nh){
mappings
.
push_back
(
map
);
output_subscribers
.
push_back
(
nh
.
subscribe
(
"/position_joint_trajectory_controller/follow_joint_trajectory/result"
,
10
,
on_move_result
));
map
=
Mapping
(
"/move_group/goal"
,
"
move_
goal"
,
false
);
map
=
Mapping
(
"/move_group/goal"
,
"goal"
,
false
);
map
.
add_var_to_mapping
(
"orient_constraint_set"
);
mappings
.
push_back
(
map
);
output_subscribers
.
push_back
(
nh
.
subscribe
(
"/move_group/goal"
,
10
,
on_move_goal
));
map
=
Mapping
(
"/place/goal"
,
"goal"
,
false
);
map
.
add_var_to_mapping
(
"orient_constraint_set"
);
mappings
.
push_back
(
map
);
output_subscribers
.
push_back
(
nh
.
subscribe
(
"/place/goal"
,
10
,
on_place_goal
));
map
=
Mapping
(
"/pickup/goal"
,
"goal"
,
false
);
map
.
add_var_to_mapping
(
"orient_constraint_set"
);
mappings
.
push_back
(
map
);
output_subscribers
.
push_back
(
nh
.
subscribe
(
"/pickup/goal"
,
10
,
on_pickup_goal
));
map
=
Mapping
(
"/gazebo/link_states"
,
"position_update"
,
false
);
map
.
add_var_to_mapping
(
"bottle_in_start_pos"
);
map
.
add_var_to_mapping
(
"glass_in_start_pos"
);
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment