-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathrcrs-agent-rules.html
1400 lines (1400 loc) · 87.5 KB
/
rcrs-agent-rules.html
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
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.23">
<meta name="author" content="RoboCup Rescue Simulation Organizers">
<title>Agent Simulation Competition Rules: RoboCup 2025</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment the following line when using as a custom stylesheet */
/* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
html{font-family:sans-serif;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
b,strong{font-weight:bold}
abbr{font-size:.9em}
abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
dfn{font-style:italic}
hr{height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type=checkbox],input[type=radio]{padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,::before,::after{box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ul.square{list-style-type:square}
ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre).nobreak{word-wrap:normal}
:not(pre).nowrap{white-space:nowrap}
:not(pre).pre-wrap{white-space:pre-wrap}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child{border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details{margin-left:1.25rem}
details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
details>summary::-webkit-details-marker{display:none}
details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
pre.pygments span.linenos{display:inline-block;margin-right:.75em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>*>tr>*{border-width:1px}
table.grid-cols>*>tr>*{border-width:0 1px}
table.grid-rows>*>tr>*{border-width:1px 0}
table.frame-all{border-width:1px}
table.frame-ends{border-width:1px 0}
table.frame-sides{border-width:0 1px}
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
li>p:empty:only-child::before{content:"";display:inline-block}
ul.checklist>li>p:first-child{margin-left:-1em}
ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
td.hdlist2{word-wrap:anywhere}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active,#footnotes .footnote a:first-of-type:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]{border-bottom:1px dotted}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#header,#content,#footnotes,#footer{max-width:none}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
</head>
<body class="article toc2 toc-left">
<div id="header">
<h1>Agent Simulation Competition Rules: RoboCup 2025</h1>
<div class="details">
<span id="author" class="author">RoboCup Rescue Simulation Organizers</span><br>
<span id="revnumber">version 2.1,</span>
<span id="revdate">February 07, 2023</span>
</div>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#sec:purpose">1. Purpose</a></li>
<li><a href="#sec:major_changes">2. Major Changes</a></li>
<li><a href="#sec:agent_simulation">3. Agent Simulation Competition</a>
<ul class="sectlevel2">
<li><a href="#sec:agent_rules">3.1. Rules</a></li>
<li><a href="#sec:agent_presentation">3.2. Presentation</a></li>
<li><a href="#sec:agent_ranking">3.3. Ranking</a></li>
</ul>
</li>
<li><a href="#">Appendix A: Parameters</a></li>
</ul>
</div>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div style="page-break-after: always;"></div>
</div>
</div>
<div class="sect1">
<h2 id="sec:purpose">1. Purpose</h2>
<div class="sectionbody">
<div class="paragraph">
<p>This document describes the rules of the RoboCup Rescue Agent Simulation competition for the RoboCup 2025.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="sec:major_changes">2. Major Changes</h2>
<div class="sectionbody">
<div class="paragraph">
<p>There is not any major changes to the RCRS Simulator since RoboCup 2022. However, we encourage teams to develop their code using the new <a href="https://github.com/roborescue/rcrs-core-python">RCRS Core Python</a> in order to take advantage of state-of-the-art Machine Learning algorithms, such as SciKit, TensorFlow, PyTorch, among others.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="sec:agent_simulation">3. Agent Simulation Competition</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The RoboCup Rescue Agent Simulation Competition evaluates the performance of teams of agents in regards to their distributed coordination and planning algorithms for rescuing civilians in a city after an earthquake.</p>
</div>
<div class="paragraph">
<p>The competition is divided in three rounds (i.e., preliminary, semifinal, and final rounds), see <a href="#sec:agent_rules">Section 3.1</a>. At each round, the participating teams provide their agent team’s code that will be executed on a set of different disaster scenarios and a score calculated to each scenario. At the end of the preliminary and semifinal rounds, the set of agent teams with the highest sum of scores are selected to move to the next round of the competition. At the end of the final round, the participant team whose agent team accumulates the highest sum of scores is proclaimed the winner.</p>
</div>
<div class="sect2">
<h3 id="sec:agent_rules">3.1. Rules</h3>
<div class="olist arabic">
<ol class="arabic">
<li>
<p><a id="item:agents"></a><strong>Agents</strong> Teams shall implement all types of agents using the <a href="https://github.com/roborescue/adf-core-java">RCRS ADF Framework</a> (a sample implementation is available at <a href="https://github.com/roborescue/adf-sample-agent-java">RCRS ADF Sample</a>) or the <a href="https://github.com/roborescue/rcrs-sample-agent-python">RCRS Core Python</a> (a sample implementation is available at <a href="https://github.com/roborescue/rcrs-sample-agent-python">RCRS Python Sample</a>) that will be executed on the <a href="https://github.com/roborescue/rcrs-server">RoboCup Rescue Agent Simulator</a>.</p>
<div class="paragraph">
<p>Teams using the <a href="https://github.com/roborescue/rcrs-core-python">RCRS Core Python</a> have no constraints in implementing their agents. However, teams using the <a href="https://github.com/roborescue/adf-core-java">RCRS ADF Framework</a> can only implement their own code to replace or extend the following RCRS ADF classes:</p>
</div>
<div class="openblock">
<div class="content">
<div class="listingblock">
<div class="content">
<pre> adf.core.component.centralized.CommandExecutor
adf.core.component.centralized.CommandPicker
adf.core.component.communication.ChannelSubscriber
adf.core.component.communication.MessageCoordinator
adf.core.component.extaction.ExtAction
adf.core.component.module.algorithm.Clustering
adf.core.component.module.algorithm.PathPlanning
adf.core.component.module.complex.TargetAllocator
adf.core.component.module.complex.TargetDetector</pre>
</div>
</div>
<div class="paragraph">
<p>Participating teams are not allowed to change any other RCRS ADF classes, especially the <code>Tactic</code> classes. Participating teams should report any bug in the RCRS ADF classes prior to the competition (see <a href="#item:bug_exploitation">Bug Exploitation</a>). It is the responsibility of the participating teams to ensure that their code connects the correct number of agents to the server.</p>
</div>
<div class="paragraph">
<p>Participating teams must implement their code in a package named after their team’s name (<code>TEAM</code>) and competition year (<code>YEAR</code>).</p>
</div>
<div class="listingblock">
<div class="content">
<pre> TEAM_YEAR.centralized.CommandExecutor
TEAM_YEAR.centralized.CommandPicker
TEAM_YEAR.communication.ChannelSubscriber
TEAM_YEAR.communication.MessageCoordinator
TEAM_YEAR.extaction.ExtAction
TEAM_YEAR.algorithm.Clustering
TEAM_YEAR.algorithm.PathPlanning
TEAM_YEAR.complex.TargetAllocator
TEAM_YEAR.complex.TargetDetector</pre>
</div>
</div>
<div class="paragraph">
<p>For instance, if the short name of the participating team is TEST and the competition year is 2025, the participating team shall provide a package containing the methods:</p>
</div>
<div class="listingblock">
<div class="content">
<pre> TEST_2025.centralized.CommandExecutor
TEST_2025.centralized.CommandPicker
TEST_2025.communication.ChannelSubscriber
TEST_2025.communication.MessageCoordinator
TEST_2025.extaction.ExtAction
TEST_2025.algorithm.Clustering
TEST_2025.algorithm.PathPlanning
TEST_2025.complex.TargetAllocator
TEST_2025.complex.TargetDetector</pre>
</div>
</div>
<div class="paragraph">
<p>Participating teams must provide a configuration file containing information of the classes they have changed from the original RCRS ADF and a mapping between classes, package path, and file in their code.</p>
</div>
</div>
</div>
</li>
<li>
<p><a id="item:modularity"></a><strong>Modularity</strong> Participant teams are forbidden to cast or make internal dependency between the classes listed in <a href="#item:agents">Agents</a>. It is mandatory that these classes are usable independent of each other.</p>
</li>
<li>
<p><a id="item:code_reuse"></a><strong>Code Reuse</strong> The reuse of code from agent teams of previous years is encouraged. But the following restriction applies:</p>
<div class="openblock">
<div class="content">
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Teams are not allowed to have more than 50% of other agent team’s code or logic in the classes</p>
<div class="listingblock">
<div class="content">
<pre> adf.core.component.module.complex.TargetDetector
adf.core.component.module.complex.TargetAllocator</pre>
</div>
</div>
</li>
<li>
<p>Teams are allowed to reuse without any change the classes</p>
<div class="listingblock">
<div class="content">
<pre> adf.core.component.centralized.CommandPicker
adf.core.component.centralized.CommandExecutor
adf.core.component.communication.ChannelSubscriber
adf.core.component.communication.MessageCoordinator
adf.core.component.extaction.ExtAction
adf.core.component.module.algorithm.Clustering
adf.core.component.module.algorithm.PathPlanning</pre>
</div>
</div>
</li>
<li>
<p>The reuse of any code or module from another agent team must be explicitly reported in the <code>README</code> document and released in the source-code and shared with the Organizing and Technical Committee members before the first day of competition. In the <code>README</code> document, the team must inform what motivated the reuse of the code or module and, if they made any changes (small or large) to the code or module, these changes must be described in detail.</p>
</li>
<li>
<p>If the agent team uses a class or module from another agent team without any change, the package name must not be changed.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>The Organizing or Technical Committee members will check the agent teams' implementation with agent teams' code from previous years to determine if the participating team complies with the <a href="#item:code_reuse">Code Reuse</a> rule. If the participating team does not comply with the rule, the agent team will be disqualified from the competition.</p>
</div>
</div>
</div>
</li>
<li>
<p><a id="item:external_libraries"></a><strong>External Libraries</strong> It is allowed to use external libraries, but these libraries must be open source and the libraries must not violate the competition rules. If any library is not open source and the participating team wants to use it in the competition, the participating team must submit a request for approval at least 1 (one) month before the beginning of the competition. The request must be submitted to the Technical and Organizing Committees.</p>
</li>
<li>
<p><a id="item:shared_memory"></a><strong>Shared Memory</strong> Agents cannot use any form of shared memory, including static memory accessible to all agents, direct function calls between agents, or writing files for use by other agents during the scenario simulation in the <code>Simulation phase</code>. The exception is the <code>Pre-Computation phase</code> when agents are allowed to write files (see <a href="#item:phases">Phases</a> for details). The Organizing or Technical Committee may execute each agent of the agent team in a different virtual/physical machine if the agent team is suspected of violating this rule.</p>
</li>
<li>
<p><a id="item:rounds"></a><strong>Rounds</strong> The competition is structured into three rounds: one preliminary round, one semifinal round, and one final round. The preliminary round will be executed in two consecutive days (first and second days of the competition), while the semifinal and final rounds are executed in one day each (third and fourth days of competition respectively).</p>
</li>
<li>
<p><a id="item:sessions"></a><strong>Sessions</strong> Each round consists of several sessions. A session is comprised of a set of simulations in different scenarios. A member of the Organizing or Technical Committee will chair each session. The session chair is responsible for executing the simulations, collecting scores and logs, and handling any issues that arise during the session.</p>
</li>
<li>
<p><a id="item:code_submission"></a><strong>Code Submission</strong> All teams must submit the agent team' source-code (binary code will not be accepted) and the compilation scripts before the start of each round. The number and time of submissions as well as specific requirements will be explained during the competition setup time to the team leaders. The Organizing or Technical Committee has the authority to change the time of submissions and to audit every submitted source-code.</p>
</li>
<li>
<p><a id="item:scenarios"></a><strong>Scenarios</strong> The scenarios will be provided by the Organizing or Technical Committee. Participating teams shall NOT know the disaster scenarios (i.e., map, random seeds, simulator configuration, parameter values, and phases of execution) before the start of the simulation. All conditions for a particular disaster scenario will be identical for all agent teams. A scenario is composed of a map, a set of rescue agents and civilians, and a set of configuration options for each of the simulator components.</p>
</li>
<li>
<p><a id="item:maps"></a><strong>Maps</strong> Each map is constrained to a maximum of <strong>10,000 roads</strong> and <strong>10,000 buildings</strong>. The building and road entrances are supposed to be fully connected. A validation tool will be used to check the full connectivity of roads and building entrances in each map. Participating teams do not have the right to complain in case roads or building entrances are not fully connected if evidenced that this was not detected by the validation tool.</p>
</li>
<li>
<p><a id="item:phases"></a><strong>Phases</strong> The scenario simulation may be performed in two phases of execution of the agent team’s code: the <code>Pre-Computation phase</code> (<a href="#item:precompphase">Pre-Computation Phase</a>) and the <code>Simulation phase</code> (<a href="#item:simphase">Simulation Phase</a>). The <code>Pre-Computation phase</code> is not mandatory for all scenarios and is assumed a configuration parameter of the scenario. Thus, the execution of the <code>Pre-Computation phase</code> will be defined as a configuration parameter of the scenario (see <a href="#item:scenarios">Scenarios</a>).</p>
</li>
<li>
<p><a id="item:precompphase"></a><strong>Pre-Computation Phase</strong> The <code>Pre-Computation phase</code> allows an agent of each type to pre-process map- and scenario-specific data and store it into a file to use during the <code>Simulation phase</code>. Only one agent of each type can connect to the server and execute the pre-computation algorithm. This phase is limited to <strong>2 minutes</strong> and after the time is elapsed the server will be terminated. Pre-computation is allowed under the conditions:</p>
<div class="openblock">
<div class="content">
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>The data must be generated by a computer program with no human interaction or intervention.</p>
</li>
<li>
<p>Data for all maps must be generated by a single computer program.</p>
</li>
<li>
<p>The computer program should work for any new map.</p>
</li>
<li>
<p>Agent must choose the file to store the pre-computing data.</p>
</li>
<li>
<p>Agents must be able to work if no pre-computation data is present for
the map.</p>
</li>
<li>
<p>The source-code of the pre-computation program must be released after the competition.</p>
</li>
</ol>
</div>
</div>
</div>
</li>
<li>
<p><a id="item:simphase"></a><strong>Simulation Phase</strong> The <code>Simulation phase</code> corresponds to the agent team' simulation in the competition scenario. All agents have up to <strong>3 minutes</strong> to connect into the simulator kernel. The simulation of the scenario begins no later than <strong>3 minutes</strong> after the first agent begins its handshake with the simulator kernel. All file permissions, except read permission for previously written files, will be removed.</p>
</li>
<li>
<p><a id="item:valid_map"></a><strong>Valid Map</strong> The Organizing or Technical Committee members are entitled to define whether a map result is valid or invalid in a session. The decision is based on the results of the map, for example, it may be decided that a map is invalid when all the teams scores very close in that map.</p>
</li>
<li>
<p><a id="item:valid_game"></a><strong>Valid Game</strong> Participant teams will NOT be entitled to request the rerun of their agent team in most circumstances. In extreme circumstances participating teams may have the right to request a single rerun. Circumstances that may result in a rerun are:</p>
<div class="openblock">
<div class="content">
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Power failure.</p>
</li>
<li>
<p>Accidental or deliberate termination of a kernel, simulator, or agent process.</p>
</li>
<li>
<p>Java Virtual Machine crash.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>In the case of rerun, the last score is used as the official score of the agent team on that scenario. Examples of events that will NOT result in a rerun are:</p>
</div>
<div class="olist loweralpha">
<ol class="loweralpha" type="a">
<li>
<p>Simulator crash.</p>
</li>
<li>
<p>Agents failing to fully connect before the simulation starts.</p>
</li>
<li>
<p>Agents crashing or failing to act during the run.</p>
</li>
<li>
<p>Apparently incorrect behavior by a simulator or the viewer.</p>
</li>
<li>
<p>Simulator or ADF bug.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Teams that wish to request a rerun must do so in writing. The request must include the participating team’s name, the scenario’s name, the description of the problem, and the reasons why the team feels a rerun is appropriate. The request must also state whether the request is for a rerun of the team or a full session rerun. Only one Java Virtual Machine crash rerun request is accepted for each session.</p>
</div>
</div>
</div>
</li>
<li>
<p><a id="item:bug"></a><strong>Bugs</strong> It is the responsibility of the participating teams to ensure that their code works correctly with the simulator. Although the Organizing and Technical Committee make every effort to provide a reliable simulation environment, they have no responsibility for any kind of software failure at during the competition. RCRS and RCRS ADF bugs are not sufficient grounds to request a rerun.</p>
</li>
<li>
<p><a id="item:bug_exploitation"></a><strong>Bugs Exploitation</strong> Teams that exploit known RCRS or RCRS ADF bugs to gain advantage will be disqualified from the competition. Disqualification will be made only after consultation with the RoboCup Trustees.</p>
</li>
<li>
<p><a id="item:team_meeting"></a><strong>Team Leaders' Meetings</strong> Every day of the competition, there will be a team leaders' meeting before the beginning and after the end of the competition day to discuss issues or provide information about the competition. All team leaders of the participating teams in that day shall participate in these meetings, if the team leader fails to participate the team’s issues and opinion will be disregarded.</p>
</li>
<li>
<p><a id="item:complains"></a><strong>Complains/Comments/Suggestions</strong> <strong>Only the team leader</strong> of the participating teams can complain, comment, or make suggestions in writing to the Organizing or Technical Committee about the competition. Comments and suggestions of other team members will be disregarded. If these complains, comments, or suggestions are deemed derogatory or abusive then the matter will be referred to the RoboCup Trustees and may result in penalties for the team concerned. Penalties may include points reduction or, in the worst case, disqualification.</p>
</li>
<li>
<p><a id="item:problem_resolution"></a><strong>Problem Resolution</strong> If a problem arises during a session, <strong>team leaders</strong> can make a request in writing for the session chair to resolve the problem. The session chair can take the decision on the spot or can refer it to the committee. Chair decisions are final, but if a team strongly disagrees, the team can submit a written appeal to the committee. In order to allow the competition to continue, appeals will not be received during a round, but will be discussed by the committee at the end of each competition day. The Organizing or Technical Committee make final decisions at any condition.</p>
</li>
<li>
<p><a id="item:rule_dispute"></a><strong>Rule Dispute Resolution</strong> If there is an ambiguity in the rule or any unexpected situation happens, a temporary committee composed of the Technical, Organizing, and Executive Committee members and the local chair have the power to take a decision regarding the issue. The temporary committee decision has the same effect as a rule.</p>
</li>
<li>
<p><a id="item:open_source_policy"></a><strong>Open Source Policy</strong> Source code files must be released open source immediately after the end of the competition to guarantee fair play and to encourage community activity after competition. Log files and related parameter files will be open access.</p>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="sec:agent_presentation">3.2. Presentation</h3>
<div class="paragraph">
<p>The presentation aims to share the knowledge of the participating teams and improve the academic research aspects of the league. Each participating team will have <strong>20 minutes to present</strong> their implementation and another <strong>10 minutes for questions and answers</strong>. A presentation template is available at <a href="https://github.com/roborescue/rcrs-templates/blob/master/presentation/presentation_template.pptx" class="bare">https://github.com/roborescue/rcrs-templates/blob/master/presentation/presentation_template.pptx</a>.</p>
</div>
<div class="paragraph">
<p>The presentation will be evaluated by a panel of experts and the leader of the other teams. The final evaluation of the presentation will be incorporated into the score of the preliminary, semifinal and final rounds. The presentations will be evaluated according to a set of criteria:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p><strong>Relevance</strong> [5 points] Evaluates how relevant is the participating team’s approach to the goals of the RoboCup Rescue. 0 means it is not relevant and 5 means it is very relevant.</p>
</li>
<li>
<p><strong>Originality</strong> [5 points] Evaluates how original is the proposed participating team’s approach to RoboCup Rescue. 0 means it is not original and 5 means it is very original.</p>
</li>
<li>
<p><strong>Significance</strong> [5 points) Evaluates how significant to the league is the proposed participating team’s approach. 0 means it is not significant and 5 means it is very significant.</p>
</li>
<li>
<p><strong>Slide Content</strong> [5 points] Evaluates the quality and completeness of the presentation material with respect to the participating team' strategy and the readability. 0 means that the presentation slides are of poor quality with respect to the content and 5 means that it is very informative and complete.</p>
</li>
<li>
<p><strong>Slide Structure</strong> [5 points] Evaluates the structure of the presentation material. 0 means that the presentation slides are poorly structured and 5 means that it is very well structured.</p>
</li>
<li>
<p><strong>Talk</strong> [5 points] Evaluates how clear and easy to follow was the presentation and explanation, and whether the presenter had a positive attitude or not with respect to the presentation and the raised questions. 0 means the presentation is not clear or the presenter had a bad attitude and 5 means the presentation is clear and the presenter had good attitude.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>Each team’s presentation score will be calculated taking into account the sum of points given by the other teams excluding the X best and the X worst scores, where X is defined based on the number of competing teams during the first team leaders' meeting, plus the points given by the 2 Committee members who are not member of any participating team on the competition.</p>
</div>
<div class="paragraph">
<p>The score of each participating team will then be included in the ranking calculation in <a href="#sec:agent_ranking">Ranking</a> as a scenario in all rounds that the participating team participates.</p>
</div>
<div class="paragraph">
<p>All participating teams will have the same number of evaluations and the same evaluators. In case some evaluator is not able to participate in the evaluation of all participating teams' presentation, his/her evaluation will be disregarded.</p>
</div>
<div class="paragraph">
<p>Team leaders or a representative assigned by the team leader must be present at all other participating teams presentation. The presentation session chair will check if the representative of each team is present at the beginning of each presentation, if there is no representative present the missing participating team’s presentation score will be set to 0 (zero) and all the scores assigned by that participating team will be disregarded.</p>
</div>
</div>
<div class="sect2">
<h3 id="sec:agent_ranking">3.3. Ranking</h3>
<div class="paragraph">
<p>Each round is composed of several sessions (\(S\)), and at each session the participating teams receive an identification ranging from \(t_{1}\) to \(t_{n}\), where \(n\) represents the number of participating teams in that session.</p>
</div>
<div class="paragraph">
<p>Each session is comprised of a set of scenarios (\(M\)), and each scenario also receives an identification ranging from \(m_{1}\) to \(m_{p}\), where \(p\) represents the number of scenarios in that session.</p>
</div>
<div class="paragraph">
<p>A score \(SC_{ji}^{k}\) is assigned to each team \(i \in T\) (\(T = \left(t_{1},\dots,t_{n}\right)\)) at each session \(k \in S\) (\(S = \left(s_{1},\dots,s_{n}\right)\)) for each scenario \(j \in M\) (\(M = \left(m_{1},\dots,m_{p}\right)\)).</p>
</div>
<div class="paragraph">
<p>For each session \(k\) and scenario \(j\), the Selective Minimum (\(SM_{j}^{k}\)) is calculated as</p>
</div>
<div class="paragraph">
<p>\(SM_{j}^{k} = max \left(SC_{ji}^{k}\right) - \left(\left( max \left( SC_{ji}^{k} \right) - mean \left( SC_{ji}^{k} \right)\right) \times 2 \right)\),</p>
</div>
<div class="paragraph">
<p>and the Maximum Score (\(MS_{j}^{k}\)) is calculated as</p>
</div>
<div class="paragraph">
<p>\(MS_{j}^{k} = n \times SDC\),</p>
</div>
<div class="paragraph">
<p>where \(n\) is the number of participating teams on session \(k\), and \(SDC\) is the coefficient indicating the step between points among teams (we will use \(SDC = 2\) in RoboCup Rescue 2025 competition). The maximum value of each step is calculated as</p>
</div>
<div class="paragraph">
<p>\(MSS_{j/step \in \left(1,\dots,MS_{j}^{k}\right)}^{k} = \frac{\left( \left( max \left( SC_{j}^{k} \right) - SM_{j}^{k} \right) \right)}{\left( MS_{j}^{k} \times \left( MS_{j}^{k} - step \right) \right)}\)</p>
</div>
<div class="paragraph">
<p>To each participating team is assigned the step value, whose \(MSS_{j/step}^{k}\) value is lower than the participating team' score, but the \(MSS_{j/step+1}^{k}\) value is greater than the participating team' score.</p>
</div>
<div class="paragraph">
<p>\(TP_{ji}^{k} = step \therefore MSS_{j/step}^{k} < SC_{ji}^{k} < MSS_{j/step+1}^{k}\)</p>
</div>
<div class="paragraph">
<p>The final team score for each scenario and participating team is calculated as</p>
</div>
<div class="paragraph">
<p>\(FTS_{i}^{k} = \sum_{j=m_{1}}^{m_{p}}{TP_{ji}^{k}}\)</p>
</div>
<div class="paragraph">
<p>The final team score is then used to generate a ranking of all the participating teams for that session. The participating team with the highest final team score is ranked as first, the second highest as second, and so on.</p>
</div>
<div style="page-break-after: always;"></div>
</div>
</div>
</div>
<div class="sect1">
<h2>Appendix A: Parameters</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following tables show the simulator and scenario parameters and their accepted ranges for the competition. Note that agents are not able to access the values of all these parameters.</p>
</div>
<table id="table:entities" class="tableblock frame-ends grid-rows stripes-none stretch">
<caption class="title">Table 1. Number of agents and refuge information.</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Entity</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Min</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Max</strong></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Fire Brigade</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">100</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Police Force</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">100</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ambulance Teams</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">100</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Fire Station</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Police Office</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ambulance Centre</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Civilians</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1000</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Refuges</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Unlimited</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Refuge Capacity</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Unlimited</p></td>
</tr>
</tbody>
</table>
<table id="table:general" class="tableblock frame-ends grid-rows stripes-none stretch">
<caption class="title">Table 2. Ranges for simulation parameters common to all components.</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Parameter</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Range</strong></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">random.seed</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Seed for random number generator</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Any range</p></td>
</tr>
</tbody>
</table>
<table id="table:kernel" class="tableblock frame-ends grid-rows stripes-none stretch">
<caption class="title">Table 3. Ranges for kernel parameters.</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Parameter</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Range</strong></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">kernel.timesteps</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Number of simulation timesteps</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">100 - 1,000</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">kernel.agents.think-time</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Number of milliseconds each agent has to send commands</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">500 - 3000</p></td>
</tr>
</tbody>
</table>
<table id="table:general_comm" class="tableblock frame-ends grid-rows stripes-none stretch">
<caption class="title">Table 4. Ranges for general communication channels configuration parameters.</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Parameter comms.channels.* </strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Range</strong></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">count</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Number of communication channels</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 - 20</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">max.platoon</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Number of channels a platoon agent can subscribe to</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0 - 10</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">max.centre</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Number of channels a centre agent can subscribe to</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0 - 20</p></td>
</tr>
</tbody>
</table>
<table id="table:voice_channel" class="tableblock frame-ends grid-rows stripes-none stretch">
<caption class="title">Table 5. Ranges for voice channel parameters.</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Parameter comms.channels.<x>.*, where <x> is channel number</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Description</strong></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><strong>Range</strong></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">type</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Type of the channel</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">voice</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">range</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Maximum range of a message in mm</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0 - 300,000</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">message.size</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Maximum size of a voice message in bytes</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">64 - 2,048</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">message.max</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of a voice message an agent can send per timestep</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 - 100</p></td>
</tr>
</tbody>
</table>
<table id="table:radio_channel" class="tableblock frame-ends grid-rows stripes-none stretch">