From 272c2df53196e3328e4467b61ae0686450c1c310 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 23 Feb 2025 15:44:12 +0000 Subject: [PATCH 01/23] Fix servo board response to status command --- simulator/modules/sbot_interface/boards/servo_board.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simulator/modules/sbot_interface/boards/servo_board.py b/simulator/modules/sbot_interface/boards/servo_board.py index 536f623..0aa922e 100644 --- a/simulator/modules/sbot_interface/boards/servo_board.py +++ b/simulator/modules/sbot_interface/boards/servo_board.py @@ -44,7 +44,7 @@ def handle_command(self, command: str) -> str: if args[0] == '*IDN?': return f'Student Robotics:SBv4B:{self.asset_tag}:{self.software_version}' elif args[0] == '*STATUS?': - return f"{self.watchdog_fail}:{self.pgood}" + return f"{self.watchdog_fail:d}:{self.pgood:d}" elif args[0] == '*RESET': LOGGER.info(f'Resetting servo board {self.asset_tag}') for servo in self.servos: From f44660e2c610ee454617820cf5f0e259a361dc1a Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 23 Feb 2025 15:46:02 +0000 Subject: [PATCH 02/23] Allow servo firmware to request pulse widths outside the servo's range --- simulator/modules/sbot_interface/devices/servo.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/simulator/modules/sbot_interface/devices/servo.py b/simulator/modules/sbot_interface/devices/servo.py index a25da32..1ecf4b2 100644 --- a/simulator/modules/sbot_interface/devices/servo.py +++ b/simulator/modules/sbot_interface/devices/servo.py @@ -14,8 +14,10 @@ map_to_range, ) -MAX_POSITION = 2000 -MIN_POSITION = 1000 +MAX_POSITION = 4000 +MIN_POSITION = 300 +SERVO_MAX = 1980 +SERVO_MIN = 350 class BaseServo(ABC): @@ -92,13 +94,13 @@ class Servo(BaseServo): """A servo connected to the Servo board.""" def __init__(self, device_name: str) -> None: - self.position = (MAX_POSITION + MIN_POSITION) // 2 # TODO use setAvailableForce to simulate disabled self._enabled = False g = get_globals() self._device = get_robot_device(g.robot, device_name, WebotsDevice.Motor) self._max_position = self._device.getMaxPosition() self._min_position = self._device.getMinPosition() + self.position = (SERVO_MAX + SERVO_MIN) // 2 def disable(self) -> None: """Disable the servo.""" @@ -112,11 +114,11 @@ def set_position(self, value: int) -> None: """ # Apply a small amount of variation to the power setting to simulate # inaccuracies in the servo - value = int(add_jitter(value, (MIN_POSITION, MAX_POSITION))) + value = int(add_jitter(value, (SERVO_MIN, SERVO_MAX))) self._device.setPosition(map_to_range( value, - (MIN_POSITION, MAX_POSITION), + (SERVO_MIN, SERVO_MAX), (self._min_position + 0.001, self._max_position - 0.001), )) self.position = value From 40bb58a4512997d15a2680bfce3a399258965223 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sat, 2 Aug 2025 16:10:41 +0100 Subject: [PATCH 03/23] Update gitignore and requirements --- .gitignore | 3 ++- requirements.txt | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 292ef1f..7954551 100644 --- a/.gitignore +++ b/.gitignore @@ -160,9 +160,10 @@ cython_debug/ #.idea/ # Webots -.arena.wbproj +.*.wbproj .arena.jpg /simulator/controllers/usercode_runner/runtime.ini +/simulator/controllers/competition_supervisor/runtime.ini /zone_* /dist diff --git a/requirements.txt b/requirements.txt index 12a4d12..4f9103a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -sbot==2024.0.1 +sbot==2025.1.0 april_vision==2.2.0 -opencv-python-headless >=4,<5 +opencv-python-headless >=4.8.0.76,<5 From 6cf7aae0bfe7d06901ce28dc66217fbef98408f6 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sat, 2 Aug 2025 16:11:46 +0100 Subject: [PATCH 04/23] Fix logging on crashes --- simulator/controllers/usercode_runner/usercode_runner.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/simulator/controllers/usercode_runner/usercode_runner.py b/simulator/controllers/usercode_runner/usercode_runner.py index 8680c17..535add0 100644 --- a/simulator/controllers/usercode_runner/usercode_runner.py +++ b/simulator/controllers/usercode_runner/usercode_runner.py @@ -167,8 +167,9 @@ def main() -> bool: robot_file = get_robot_file(zone) except FileNotFoundError as e: print(e.args[0]) + robot.step() # Not having a robot file is not an error in dev mode - return game_mode == 'comp' + return game_mode != 'comp' # Setup log file prefix_and_tee_streams( From 63672399ce4829002682500a4c8d4e3fad02eed5 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sat, 2 Aug 2025 19:02:51 +0100 Subject: [PATCH 05/23] Update arena floor --- simulator/worlds/arena_floor.png | Bin 55628 -> 153952 bytes 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 simulator/worlds/arena_floor.png diff --git a/simulator/worlds/arena_floor.png b/simulator/worlds/arena_floor.png old mode 100755 new mode 100644 index 73809dc25b3bdcf1e9cca9e07efca7f24e0b785e..d33cbfbe5aca52269655480912240a65cdf5d9f9 GIT binary patch literal 153952 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 A)c^nh literal 55628 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 From 7ed13ef0b037217db4ab7f6ab605af9be7af0b54 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sat, 2 Aug 2025 19:06:39 +0100 Subject: [PATCH 06/23] Update readmes --- README.md | 53 ------------------------------------------- assets/user_readme.md | 2 +- 2 files changed, 1 insertion(+), 54 deletions(-) diff --git a/README.md b/README.md index 995ab16..dd94980 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,6 @@ A simulator built around Webots to use the sbot library virtually. ![sbot_simulator](assets/arena_overview.jpg) -### This is a work in progress - ## Installation First, you need to install Webots. You can download the latest version from the [Webots website](https://cyberbotics.com/#download). @@ -101,54 +99,3 @@ In order to keep the released simulator tidy and easy to use, the project is spl Alongside these folders that are placed in the releases, the `assets` folder contains images and other resources that are used in the documentation. These are used to render an HTML page user facing readme that is included in the release archive. Of the the folders that are not included in the release, the `tests` folder contains the unit and integration tests for the simulator that don't require running webots and the `test_simulator` folder contains a separate webots world that is used to test the simulator. - -## Project Status - -1. ~~device spinup~~ -2. ~~debug logs~~ -3. ~~test devices~~ -4. ~~webots devices~~ -5. ~~usercode runner~~ -6. ~~vision~~ -7. ~~arena~~ - - ~~box~~ - - ~~deck~~ - - ~~triangle deck~~ - - ~~floor texture~~ - - ~~line~~ - - ~~scoring lines~~ - - ~~starting zones~~ -8. ~~robot~~ -9. ~~device jitter~~ - - ~~in Webots~~ - - ~~Ultrasound noise~~ - - ~~Reflectance sensor noise~~ - - ~~in python~~ - - ~~motor noise~~ - - ~~servo noise~~ -10. sbot updates - 1. ~~simulator discovery~~ - 2. ~~vision~~ - 3. ~~leds~~ - 4. ~~sleep & time~~ - 5. Windows startup performance -11. ~~keyboard robot~~ -12. ~~setup script~~ -13. ~~releases~~ -14. documentation - 1. ~~dev setup~~ - 2. user usage - 3. ~~how it works~~ -15. simulator tests - - vision position - - vision orientation - - distance sensor - - reflectance sensor - - bump sensor - - motor - - servo -16. ~~linting~~ -17. ~~CI~~ -18. report currents -19. supervisor -20. comp match running diff --git a/assets/user_readme.md b/assets/user_readme.md index 25c9153..fc1f294 100644 --- a/assets/user_readme.md +++ b/assets/user_readme.md @@ -139,7 +139,7 @@ The API for the simulator is the same as the API for the physical robot, so you As well as the logs being displayed in the console, they are also saved to a file. -This file is saved in the `zone_0` folder and has a name in the format `log-.log`. +This file is saved in the `zone_0` folder and has a name in the format `log-zone--.log`. The date is when that simulation was run. ### Simulation of Time From b2bcc5a4f66e4a422a94baead04da4e85b373ccd Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sat, 2 Aug 2025 22:41:03 +0100 Subject: [PATCH 07/23] Add first 20 markers For future use --- simulator/worlds/sim_markers/0.png | Bin simulator/worlds/sim_markers/1.png | Bin simulator/worlds/sim_markers/10.png | Bin 0 -> 3267 bytes simulator/worlds/sim_markers/100.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/101.png | Bin 0 -> 3273 bytes simulator/worlds/sim_markers/102.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/103.png | Bin 0 -> 3271 bytes simulator/worlds/sim_markers/104.png | Bin 0 -> 3265 bytes simulator/worlds/sim_markers/105.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/106.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/107.png | Bin 0 -> 3271 bytes simulator/worlds/sim_markers/108.png | Bin 0 -> 3266 bytes simulator/worlds/sim_markers/109.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/11.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/110.png | Bin 0 -> 3270 bytes simulator/worlds/sim_markers/111.png | Bin 0 -> 3263 bytes simulator/worlds/sim_markers/112.png | Bin 0 -> 3271 bytes simulator/worlds/sim_markers/113.png | Bin 0 -> 3270 bytes simulator/worlds/sim_markers/114.png | Bin 0 -> 3258 bytes simulator/worlds/sim_markers/115.png | Bin 0 -> 3271 bytes simulator/worlds/sim_markers/116.png | Bin 0 -> 3263 bytes simulator/worlds/sim_markers/117.png | Bin 0 -> 3265 bytes simulator/worlds/sim_markers/118.png | Bin 0 -> 3260 bytes simulator/worlds/sim_markers/119.png | Bin 0 -> 3266 bytes simulator/worlds/sim_markers/12.png | Bin 0 -> 3267 bytes simulator/worlds/sim_markers/120.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/121.png | Bin 0 -> 3266 bytes simulator/worlds/sim_markers/122.png | Bin 0 -> 3273 bytes simulator/worlds/sim_markers/123.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/124.png | Bin 0 -> 3253 bytes simulator/worlds/sim_markers/125.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/126.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/127.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/128.png | Bin 0 -> 3263 bytes simulator/worlds/sim_markers/129.png | Bin 0 -> 3257 bytes simulator/worlds/sim_markers/13.png | Bin 0 -> 3265 bytes simulator/worlds/sim_markers/130.png | Bin 0 -> 3261 bytes simulator/worlds/sim_markers/131.png | Bin 0 -> 3254 bytes simulator/worlds/sim_markers/132.png | Bin 0 -> 3265 bytes simulator/worlds/sim_markers/133.png | Bin 0 -> 3260 bytes simulator/worlds/sim_markers/134.png | Bin 0 -> 3271 bytes simulator/worlds/sim_markers/135.png | Bin 0 -> 3254 bytes simulator/worlds/sim_markers/136.png | Bin 0 -> 3267 bytes simulator/worlds/sim_markers/137.png | Bin 0 -> 3271 bytes simulator/worlds/sim_markers/138.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/139.png | Bin 0 -> 3275 bytes simulator/worlds/sim_markers/14.png | Bin 0 -> 3266 bytes simulator/worlds/sim_markers/140.png | Bin 0 -> 3257 bytes simulator/worlds/sim_markers/141.png | Bin 0 -> 3258 bytes simulator/worlds/sim_markers/142.png | Bin 0 -> 3275 bytes simulator/worlds/sim_markers/143.png | Bin 0 -> 3263 bytes simulator/worlds/sim_markers/144.png | Bin 0 -> 3261 bytes simulator/worlds/sim_markers/145.png | Bin 0 -> 3268 bytes simulator/worlds/sim_markers/146.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/147.png | Bin 0 -> 3270 bytes simulator/worlds/sim_markers/148.png | Bin 0 -> 3261 bytes simulator/worlds/sim_markers/149.png | Bin 0 -> 3270 bytes simulator/worlds/sim_markers/15.png | Bin 0 -> 3257 bytes simulator/worlds/sim_markers/150.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/151.png | Bin 0 -> 3260 bytes simulator/worlds/sim_markers/152.png | Bin 0 -> 3257 bytes simulator/worlds/sim_markers/153.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/154.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/155.png | Bin 0 -> 3266 bytes simulator/worlds/sim_markers/156.png | Bin 0 -> 3261 bytes simulator/worlds/sim_markers/157.png | Bin 0 -> 3271 bytes simulator/worlds/sim_markers/158.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/159.png | Bin 0 -> 3250 bytes simulator/worlds/sim_markers/16.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/160.png | Bin 0 -> 3263 bytes simulator/worlds/sim_markers/161.png | Bin 0 -> 3252 bytes simulator/worlds/sim_markers/162.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/163.png | Bin 0 -> 3274 bytes simulator/worlds/sim_markers/164.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/165.png | Bin 0 -> 3271 bytes simulator/worlds/sim_markers/166.png | Bin 0 -> 3260 bytes simulator/worlds/sim_markers/167.png | Bin 0 -> 3260 bytes simulator/worlds/sim_markers/168.png | Bin 0 -> 3268 bytes simulator/worlds/sim_markers/169.png | Bin 0 -> 3249 bytes simulator/worlds/sim_markers/17.png | Bin 0 -> 3267 bytes simulator/worlds/sim_markers/170.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/171.png | Bin 0 -> 3276 bytes simulator/worlds/sim_markers/172.png | Bin 0 -> 3253 bytes simulator/worlds/sim_markers/173.png | Bin 0 -> 3254 bytes simulator/worlds/sim_markers/174.png | Bin 0 -> 3253 bytes simulator/worlds/sim_markers/175.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/176.png | Bin 0 -> 3263 bytes simulator/worlds/sim_markers/177.png | Bin 0 -> 3273 bytes simulator/worlds/sim_markers/178.png | Bin 0 -> 3265 bytes simulator/worlds/sim_markers/179.png | Bin 0 -> 3252 bytes simulator/worlds/sim_markers/18.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/180.png | Bin 0 -> 3256 bytes simulator/worlds/sim_markers/181.png | Bin 0 -> 3252 bytes simulator/worlds/sim_markers/182.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/183.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/184.png | Bin 0 -> 3260 bytes simulator/worlds/sim_markers/185.png | Bin 0 -> 3250 bytes simulator/worlds/sim_markers/186.png | Bin 0 -> 3265 bytes simulator/worlds/sim_markers/187.png | Bin 0 -> 3273 bytes simulator/worlds/sim_markers/188.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/189.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/19.png | Bin 0 -> 3265 bytes simulator/worlds/sim_markers/190.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/191.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/192.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/193.png | Bin 0 -> 3265 bytes simulator/worlds/sim_markers/194.png | Bin 0 -> 3279 bytes simulator/worlds/sim_markers/195.png | Bin 0 -> 3270 bytes simulator/worlds/sim_markers/196.png | Bin 0 -> 3255 bytes simulator/worlds/sim_markers/197.png | Bin 0 -> 3263 bytes simulator/worlds/sim_markers/198.png | Bin 0 -> 3277 bytes simulator/worlds/sim_markers/199.png | Bin 0 -> 3263 bytes simulator/worlds/sim_markers/2.png | Bin simulator/worlds/sim_markers/20.png | Bin 0 -> 3258 bytes simulator/worlds/sim_markers/21.png | Bin 0 -> 3266 bytes simulator/worlds/sim_markers/22.png | Bin 0 -> 3274 bytes simulator/worlds/sim_markers/23.png | Bin 0 -> 3268 bytes simulator/worlds/sim_markers/24.png | Bin 0 -> 3253 bytes simulator/worlds/sim_markers/25.png | Bin 0 -> 3272 bytes simulator/worlds/sim_markers/26.png | Bin 0 -> 3253 bytes simulator/worlds/sim_markers/27.png | Bin 0 -> 3267 bytes simulator/worlds/sim_markers/28.png | Bin 0 -> 3271 bytes simulator/worlds/sim_markers/29.png | Bin 0 -> 3261 bytes simulator/worlds/sim_markers/3.png | Bin simulator/worlds/sim_markers/30.png | Bin 0 -> 3268 bytes simulator/worlds/sim_markers/31.png | Bin 0 -> 3275 bytes simulator/worlds/sim_markers/32.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/33.png | Bin 0 -> 3263 bytes simulator/worlds/sim_markers/34.png | Bin 0 -> 3268 bytes simulator/worlds/sim_markers/35.png | Bin 0 -> 3260 bytes simulator/worlds/sim_markers/36.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/37.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/38.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/39.png | Bin 0 -> 3279 bytes simulator/worlds/sim_markers/4.png | Bin simulator/worlds/sim_markers/40.png | Bin 0 -> 3267 bytes simulator/worlds/sim_markers/41.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/42.png | Bin 0 -> 3275 bytes simulator/worlds/sim_markers/43.png | Bin 0 -> 3256 bytes simulator/worlds/sim_markers/44.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/45.png | Bin 0 -> 3271 bytes simulator/worlds/sim_markers/46.png | Bin 0 -> 3266 bytes simulator/worlds/sim_markers/47.png | Bin 0 -> 3266 bytes simulator/worlds/sim_markers/48.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/49.png | Bin 0 -> 3265 bytes simulator/worlds/sim_markers/5.png | Bin simulator/worlds/sim_markers/50.png | Bin 0 -> 3257 bytes simulator/worlds/sim_markers/51.png | Bin 0 -> 3249 bytes simulator/worlds/sim_markers/52.png | Bin 0 -> 3270 bytes simulator/worlds/sim_markers/53.png | Bin 0 -> 3273 bytes simulator/worlds/sim_markers/54.png | Bin 0 -> 3261 bytes simulator/worlds/sim_markers/55.png | Bin 0 -> 3258 bytes simulator/worlds/sim_markers/56.png | Bin 0 -> 3258 bytes simulator/worlds/sim_markers/57.png | Bin 0 -> 3265 bytes simulator/worlds/sim_markers/58.png | Bin 0 -> 3252 bytes simulator/worlds/sim_markers/59.png | Bin 0 -> 3261 bytes simulator/worlds/sim_markers/6.png | Bin simulator/worlds/sim_markers/60.png | Bin 0 -> 3268 bytes simulator/worlds/sim_markers/61.png | Bin 0 -> 3255 bytes simulator/worlds/sim_markers/62.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/63.png | Bin 0 -> 3272 bytes simulator/worlds/sim_markers/64.png | Bin 0 -> 3276 bytes simulator/worlds/sim_markers/65.png | Bin 0 -> 3266 bytes simulator/worlds/sim_markers/66.png | Bin 0 -> 3261 bytes simulator/worlds/sim_markers/67.png | Bin 0 -> 3276 bytes simulator/worlds/sim_markers/68.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/69.png | Bin 0 -> 3268 bytes simulator/worlds/sim_markers/7.png | Bin simulator/worlds/sim_markers/70.png | Bin 0 -> 3267 bytes simulator/worlds/sim_markers/71.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/72.png | Bin 0 -> 3272 bytes simulator/worlds/sim_markers/73.png | Bin 0 -> 3263 bytes simulator/worlds/sim_markers/74.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/75.png | Bin 0 -> 3260 bytes simulator/worlds/sim_markers/76.png | Bin 0 -> 3275 bytes simulator/worlds/sim_markers/77.png | Bin 0 -> 3270 bytes simulator/worlds/sim_markers/78.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/79.png | Bin 0 -> 3274 bytes simulator/worlds/sim_markers/8.png | Bin 0 -> 3259 bytes simulator/worlds/sim_markers/80.png | Bin 0 -> 3268 bytes simulator/worlds/sim_markers/81.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/82.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/83.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/84.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/85.png | Bin 0 -> 3261 bytes simulator/worlds/sim_markers/86.png | Bin 0 -> 3271 bytes simulator/worlds/sim_markers/87.png | Bin 0 -> 3266 bytes simulator/worlds/sim_markers/88.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/89.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/9.png | Bin 0 -> 3262 bytes simulator/worlds/sim_markers/90.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/91.png | Bin 0 -> 3261 bytes simulator/worlds/sim_markers/92.png | Bin 0 -> 3279 bytes simulator/worlds/sim_markers/93.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/94.png | Bin 0 -> 3267 bytes simulator/worlds/sim_markers/95.png | Bin 0 -> 3258 bytes simulator/worlds/sim_markers/96.png | Bin 0 -> 3264 bytes simulator/worlds/sim_markers/97.png | Bin 0 -> 3269 bytes simulator/worlds/sim_markers/98.png | Bin 0 -> 3256 bytes simulator/worlds/sim_markers/99.png | Bin 0 -> 3255 bytes 200 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 simulator/worlds/sim_markers/0.png mode change 100755 => 100644 simulator/worlds/sim_markers/1.png create mode 100644 simulator/worlds/sim_markers/10.png create mode 100644 simulator/worlds/sim_markers/100.png create mode 100644 simulator/worlds/sim_markers/101.png create mode 100644 simulator/worlds/sim_markers/102.png create mode 100644 simulator/worlds/sim_markers/103.png create mode 100644 simulator/worlds/sim_markers/104.png create mode 100644 simulator/worlds/sim_markers/105.png create mode 100644 simulator/worlds/sim_markers/106.png create mode 100644 simulator/worlds/sim_markers/107.png create mode 100644 simulator/worlds/sim_markers/108.png create mode 100644 simulator/worlds/sim_markers/109.png create mode 100644 simulator/worlds/sim_markers/11.png create mode 100644 simulator/worlds/sim_markers/110.png create mode 100644 simulator/worlds/sim_markers/111.png create mode 100644 simulator/worlds/sim_markers/112.png create mode 100644 simulator/worlds/sim_markers/113.png create mode 100644 simulator/worlds/sim_markers/114.png create mode 100644 simulator/worlds/sim_markers/115.png create mode 100644 simulator/worlds/sim_markers/116.png create mode 100644 simulator/worlds/sim_markers/117.png create mode 100644 simulator/worlds/sim_markers/118.png create mode 100644 simulator/worlds/sim_markers/119.png create mode 100644 simulator/worlds/sim_markers/12.png create mode 100644 simulator/worlds/sim_markers/120.png create mode 100644 simulator/worlds/sim_markers/121.png create mode 100644 simulator/worlds/sim_markers/122.png create mode 100644 simulator/worlds/sim_markers/123.png create mode 100644 simulator/worlds/sim_markers/124.png create mode 100644 simulator/worlds/sim_markers/125.png create mode 100644 simulator/worlds/sim_markers/126.png create mode 100644 simulator/worlds/sim_markers/127.png create mode 100644 simulator/worlds/sim_markers/128.png create mode 100644 simulator/worlds/sim_markers/129.png create mode 100644 simulator/worlds/sim_markers/13.png create mode 100644 simulator/worlds/sim_markers/130.png create mode 100644 simulator/worlds/sim_markers/131.png create mode 100644 simulator/worlds/sim_markers/132.png create mode 100644 simulator/worlds/sim_markers/133.png create mode 100644 simulator/worlds/sim_markers/134.png create mode 100644 simulator/worlds/sim_markers/135.png create mode 100644 simulator/worlds/sim_markers/136.png create mode 100644 simulator/worlds/sim_markers/137.png create mode 100644 simulator/worlds/sim_markers/138.png create mode 100644 simulator/worlds/sim_markers/139.png create mode 100644 simulator/worlds/sim_markers/14.png create mode 100644 simulator/worlds/sim_markers/140.png create mode 100644 simulator/worlds/sim_markers/141.png create mode 100644 simulator/worlds/sim_markers/142.png create mode 100644 simulator/worlds/sim_markers/143.png create mode 100644 simulator/worlds/sim_markers/144.png create mode 100644 simulator/worlds/sim_markers/145.png create mode 100644 simulator/worlds/sim_markers/146.png create mode 100644 simulator/worlds/sim_markers/147.png create mode 100644 simulator/worlds/sim_markers/148.png create mode 100644 simulator/worlds/sim_markers/149.png create mode 100644 simulator/worlds/sim_markers/15.png create mode 100644 simulator/worlds/sim_markers/150.png create mode 100644 simulator/worlds/sim_markers/151.png create mode 100644 simulator/worlds/sim_markers/152.png create mode 100644 simulator/worlds/sim_markers/153.png create mode 100644 simulator/worlds/sim_markers/154.png create mode 100644 simulator/worlds/sim_markers/155.png create mode 100644 simulator/worlds/sim_markers/156.png create mode 100644 simulator/worlds/sim_markers/157.png create mode 100644 simulator/worlds/sim_markers/158.png create mode 100644 simulator/worlds/sim_markers/159.png create mode 100644 simulator/worlds/sim_markers/16.png create mode 100644 simulator/worlds/sim_markers/160.png create mode 100644 simulator/worlds/sim_markers/161.png create mode 100644 simulator/worlds/sim_markers/162.png create mode 100644 simulator/worlds/sim_markers/163.png create mode 100644 simulator/worlds/sim_markers/164.png create mode 100644 simulator/worlds/sim_markers/165.png create mode 100644 simulator/worlds/sim_markers/166.png create mode 100644 simulator/worlds/sim_markers/167.png create mode 100644 simulator/worlds/sim_markers/168.png create mode 100644 simulator/worlds/sim_markers/169.png create mode 100644 simulator/worlds/sim_markers/17.png create mode 100644 simulator/worlds/sim_markers/170.png create mode 100644 simulator/worlds/sim_markers/171.png create mode 100644 simulator/worlds/sim_markers/172.png create mode 100644 simulator/worlds/sim_markers/173.png create mode 100644 simulator/worlds/sim_markers/174.png create mode 100644 simulator/worlds/sim_markers/175.png create mode 100644 simulator/worlds/sim_markers/176.png create mode 100644 simulator/worlds/sim_markers/177.png create mode 100644 simulator/worlds/sim_markers/178.png create mode 100644 simulator/worlds/sim_markers/179.png create mode 100644 simulator/worlds/sim_markers/18.png create mode 100644 simulator/worlds/sim_markers/180.png create mode 100644 simulator/worlds/sim_markers/181.png create mode 100644 simulator/worlds/sim_markers/182.png create mode 100644 simulator/worlds/sim_markers/183.png create mode 100644 simulator/worlds/sim_markers/184.png create mode 100644 simulator/worlds/sim_markers/185.png create mode 100644 simulator/worlds/sim_markers/186.png create mode 100644 simulator/worlds/sim_markers/187.png create mode 100644 simulator/worlds/sim_markers/188.png create mode 100644 simulator/worlds/sim_markers/189.png create mode 100644 simulator/worlds/sim_markers/19.png create mode 100644 simulator/worlds/sim_markers/190.png create mode 100644 simulator/worlds/sim_markers/191.png create mode 100644 simulator/worlds/sim_markers/192.png create mode 100644 simulator/worlds/sim_markers/193.png create mode 100644 simulator/worlds/sim_markers/194.png create mode 100644 simulator/worlds/sim_markers/195.png create mode 100644 simulator/worlds/sim_markers/196.png create mode 100644 simulator/worlds/sim_markers/197.png create mode 100644 simulator/worlds/sim_markers/198.png create mode 100644 simulator/worlds/sim_markers/199.png mode change 100755 => 100644 simulator/worlds/sim_markers/2.png create mode 100644 simulator/worlds/sim_markers/20.png create mode 100644 simulator/worlds/sim_markers/21.png create mode 100644 simulator/worlds/sim_markers/22.png create mode 100644 simulator/worlds/sim_markers/23.png create mode 100644 simulator/worlds/sim_markers/24.png create mode 100644 simulator/worlds/sim_markers/25.png create mode 100644 simulator/worlds/sim_markers/26.png create mode 100644 simulator/worlds/sim_markers/27.png create mode 100644 simulator/worlds/sim_markers/28.png create mode 100644 simulator/worlds/sim_markers/29.png mode change 100755 => 100644 simulator/worlds/sim_markers/3.png create mode 100644 simulator/worlds/sim_markers/30.png create mode 100644 simulator/worlds/sim_markers/31.png create mode 100644 simulator/worlds/sim_markers/32.png create mode 100644 simulator/worlds/sim_markers/33.png create mode 100644 simulator/worlds/sim_markers/34.png create mode 100644 simulator/worlds/sim_markers/35.png create mode 100644 simulator/worlds/sim_markers/36.png create mode 100644 simulator/worlds/sim_markers/37.png create mode 100644 simulator/worlds/sim_markers/38.png create mode 100644 simulator/worlds/sim_markers/39.png mode change 100755 => 100644 simulator/worlds/sim_markers/4.png create mode 100644 simulator/worlds/sim_markers/40.png create mode 100644 simulator/worlds/sim_markers/41.png create mode 100644 simulator/worlds/sim_markers/42.png create mode 100644 simulator/worlds/sim_markers/43.png create mode 100644 simulator/worlds/sim_markers/44.png create mode 100644 simulator/worlds/sim_markers/45.png create mode 100644 simulator/worlds/sim_markers/46.png create mode 100644 simulator/worlds/sim_markers/47.png create mode 100644 simulator/worlds/sim_markers/48.png create mode 100644 simulator/worlds/sim_markers/49.png mode change 100755 => 100644 simulator/worlds/sim_markers/5.png create mode 100644 simulator/worlds/sim_markers/50.png create mode 100644 simulator/worlds/sim_markers/51.png create mode 100644 simulator/worlds/sim_markers/52.png create mode 100644 simulator/worlds/sim_markers/53.png create mode 100644 simulator/worlds/sim_markers/54.png create mode 100644 simulator/worlds/sim_markers/55.png create mode 100644 simulator/worlds/sim_markers/56.png create mode 100644 simulator/worlds/sim_markers/57.png create mode 100644 simulator/worlds/sim_markers/58.png create mode 100644 simulator/worlds/sim_markers/59.png mode change 100755 => 100644 simulator/worlds/sim_markers/6.png create mode 100644 simulator/worlds/sim_markers/60.png create mode 100644 simulator/worlds/sim_markers/61.png create mode 100644 simulator/worlds/sim_markers/62.png create mode 100644 simulator/worlds/sim_markers/63.png create mode 100644 simulator/worlds/sim_markers/64.png create mode 100644 simulator/worlds/sim_markers/65.png create mode 100644 simulator/worlds/sim_markers/66.png create mode 100644 simulator/worlds/sim_markers/67.png create mode 100644 simulator/worlds/sim_markers/68.png create mode 100644 simulator/worlds/sim_markers/69.png mode change 100755 => 100644 simulator/worlds/sim_markers/7.png create mode 100644 simulator/worlds/sim_markers/70.png create mode 100644 simulator/worlds/sim_markers/71.png create mode 100644 simulator/worlds/sim_markers/72.png create mode 100644 simulator/worlds/sim_markers/73.png create mode 100644 simulator/worlds/sim_markers/74.png create mode 100644 simulator/worlds/sim_markers/75.png create mode 100644 simulator/worlds/sim_markers/76.png create mode 100644 simulator/worlds/sim_markers/77.png create mode 100644 simulator/worlds/sim_markers/78.png create mode 100644 simulator/worlds/sim_markers/79.png create mode 100644 simulator/worlds/sim_markers/8.png create mode 100644 simulator/worlds/sim_markers/80.png create mode 100644 simulator/worlds/sim_markers/81.png create mode 100644 simulator/worlds/sim_markers/82.png create mode 100644 simulator/worlds/sim_markers/83.png create mode 100644 simulator/worlds/sim_markers/84.png create mode 100644 simulator/worlds/sim_markers/85.png create mode 100644 simulator/worlds/sim_markers/86.png create mode 100644 simulator/worlds/sim_markers/87.png create mode 100644 simulator/worlds/sim_markers/88.png create mode 100644 simulator/worlds/sim_markers/89.png create mode 100644 simulator/worlds/sim_markers/9.png create mode 100644 simulator/worlds/sim_markers/90.png create mode 100644 simulator/worlds/sim_markers/91.png create mode 100644 simulator/worlds/sim_markers/92.png create mode 100644 simulator/worlds/sim_markers/93.png create mode 100644 simulator/worlds/sim_markers/94.png create mode 100644 simulator/worlds/sim_markers/95.png create mode 100644 simulator/worlds/sim_markers/96.png create mode 100644 simulator/worlds/sim_markers/97.png create mode 100644 simulator/worlds/sim_markers/98.png create mode 100644 simulator/worlds/sim_markers/99.png diff --git a/simulator/worlds/sim_markers/0.png b/simulator/worlds/sim_markers/0.png old mode 100755 new mode 100644 diff --git a/simulator/worlds/sim_markers/1.png b/simulator/worlds/sim_markers/1.png old mode 100755 new mode 100644 diff --git a/simulator/worlds/sim_markers/10.png b/simulator/worlds/sim_markers/10.png new file mode 100644 index 0000000000000000000000000000000000000000..9f9d020bfe314799aa2a3e001247384f9fe038e6 GIT binary patch literal 3267 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwym#2$kNX4AD*ADjHFyLW0 zs8R4=S6lSXc?JD@Gub?D9%y?0k8#z%Jbi{Yf(#tOqlmZ=s7^aJXQtr?$?}vgZiYiF zqllCcnD>_T$H}{K4_wpJ&YV$~t~$db&d|a+iii#Y+uPg$1>40RuZ$Ql~vyiI7x>0xOXX zuXFSdXpM#&N#O=mJa_kA#tp|<84{UB5z!&=pW(c^sKA?K`3g|)#M9N!Wt~$(69Db> Bd0_wm literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/100.png b/simulator/worlds/sim_markers/100.png new file mode 100644 index 0000000000000000000000000000000000000000..9dfba3d79c06c896a3da990f908663f17766eeb1 GIT binary patch literal 3259 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwylc$SgNX4AD*AC_$G2mf1 zs1fjAS6lSXW4n+yb2A&J@apV1#~<*ux|;EU9AksQC?YNdHrN`co$YD7ZlN3;!yuqG zibx58ZTb2i9MaRyNX<0*JY(ke54PeAEu5o>=n!~&o7?8XEXm@uV?7m@qnG{r&odf; zq^2KW7=Ab@HM7WV*@yU@3<^G@i0BZ=xgYnS@!XjiUl(aQ&+l138hRup9&qSgJ2S)B zDD|1)`d=yQA2E$qyQGD{hT7^zb}QrLYiA@bjn=*-H9o*q@9S?&H4o0$oMmN5WEw@J mguv@N_ZW5@8x1#-l1+VRl&HXzMT$Xd%gG%{<+t=?`(Pntmf6^ zkJn=u1k^?m(IK!cUcca~)XXBcWjr5G-Wm-&QqvAN{3K^?0*0S$o0&L63+E^zIt1Qc z=Z@J5s)Cox9kxF;TJVut?!Vr1kD=n&Xtl#+wzs=3?or9r;a}*I50&iy;W~cG&IVL&t5mSQ! z<0v8_1UA%GH@eTAsF|H|YC?GJ&DC&ap z{5wCIhe;~JfO)td9DFx`8T!$rlWb4q@erF?93)A;Ir>nC#YBA>FVdQ&MBb@08X$2(f|Me literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/103.png b/simulator/worlds/sim_markers/103.png new file mode 100644 index 0000000000000000000000000000000000000000..85fe7a4e5cb8771669ea3b83335552505bda3ccd GIT binary patch literal 3271 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwypQnpsNX4AD*AC_$G2mf1 zs1fjAS6lQ+dO-QTnQR`X4>Z00!w|ZEyEwx;K?V-tQAAt_+%`_Wc1EJ2*VyPND?=jF zC?X{Uet%=?w^9zic4CU6vA@}q(E7ACZiYiFqloAb`1Y1nBf>cO+=(d*`)596YA|3N zMI?m4hT7^z_q7u>(^F1On5q6acqfB`&nO}~1aj`jHT++5o7?8aow$bj9YpIJ4P#&k z00ZwqATZ%c%`{4RcCu~HtMg|H7#(IXj3N?3;D(iPvfDDAnU$Nu_ujlP`K-h*L*x8s zqvaqe)c~jv)Zdb)|Do3A=JKM^BuHWoykWK7oMBzzXtLw* z7*p_H*IM++kIpR3K<<{ zFpMG+Lg2>My$2S*o2Z$da%#1l@#krZ&j0J%xET(yj3S~#VBK3*xzcUo2~+?7Hxy@R z;T%Pzgh1?V?hUWyW)`_E`(Qa5dL$(tV9fy5Cg}K6hfu!sB~hP3G;b6dujOq-J58S2_A0mW123 z*`H!%NMssCq=dlpd-oV39*^c+;+o2kKE($4o<>o@eHj@yKz$QWS3j3^P6V7}fp2pSU!Rkx=q*m|;vNk) z5<}qI7p8uz%iK1ZzWNRgqrpdHl7lD%hTZ=QyNsX3%q)6oSpFj=zL?Qr2E!;KAp~yB zi)-+|_JxVxs{GiVmy=^3F*O)4jv``1V1w;mhRx@`F!}HLJfk%Al&T&BhwvyOIs|TC z<__4fO#A_}I718PC?X{U-o9j&+qz7=;?ho|r{~mnf1XzU_rG-vgMiv7B02=NEf;?< z*>vxL=6heJl^2fI9VAwrH>@s8GbE3uIg+y6H}CAlJFuKa>m-@h>(uw`OM97RNiKy})gS(420k9&Ly869RY zj3N?3;Ksha2i)gQ)XYvf6+ZK)g#G6^+zf|UMiJ2=@a-*Y+>1ML40cCZN3$%6A@KVf zll)eZ%pquryct-^Z01!k(zjb0eB!bJ>`_t%tOU`3>?Cvi0BZwy=xMX#~ZQC5aT zrcp#n2>kxW)Ni$2yyBA7%ulQ0&61xbw(Ve0@EJu!hd|E#xCeo+zcIx;{cHb>slkA8 z6p;`D8)~Z?-RDl!%uYEqVP^l#N{RRXEyWpHI7boDA@KG#cg;d$Hchf{Xi8OfPOpAC)gA9^0cAfPsi zhz@~m`T7Uyuf1iJ`?4&*Qhc=ZBen2fTU^cjKx#DHND8;VjKR~y1eC8gzXtVCJYD@< J);T3K0RXii_yzy~ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/108.png b/simulator/worlds/sim_markers/108.png new file mode 100644 index 0000000000000000000000000000000000000000..407106fb1f1cbe583d20a801f0dc4055d81ce699 GIT binary patch literal 3266 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyr>Bc!NX4AD*BUdAIPfqW zj4Al9Yi(*Hq4{rarh}EV*xcXjD}LRLW4NKrAfPsihzo(Tvptr^$q%ycCEpnV(|&XFg6z?CM7MyUM}mPE1*N{LGJK+iS$d8Cp0; z5h)=Mdz;(lRgce3_hkndMnjLJ!~+hxdvOnH&wXR^|McJf*=Y79rSt-4-??vD?>z^G zq36H<$49FVc)dU*16X~0aQY5ReOAiBZFV=$%$VtKc7&B7k!chW9RkBVFQ2*^qL-Vz{#__*WrdKdJ z%wQNrB!s{XW7`KSY;7OZUi;E8+3sudyAMna28^SK*bvx|UUeWayXt`FZ|88mpI83Z zw~I5haE>CPL%{YjbKkA-b!)W4^X4j^=$*J`QGu-;3FyZ z0K?9G?Mue@k0)=f9IZJ>tT=Dny3E~R7{?%>Hj0Q2fp6^Z(?kUF_O5*i>Y8}E`njxg HN@xNA?hK?a literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/11.png b/simulator/worlds/sim_markers/11.png new file mode 100644 index 0000000000000000000000000000000000000000..4f8a22ad9984f5364f2d7af75c9cf8289b2688c3 GIT binary patch literal 3262 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwytEY=&NX4AD*AC_?JMu6b zoPGG&{7)8)zttyPC<|qJlC^;C{9pEvzxU%9ZYVPdsEs1xLg3q(9!ulo2d3{%h=?<^ zaE>BULcsPm_lN1b_cH9azRg`TiJRdN%P1l`1m?YEwR@GP&v5@JD?=jFC?X{U&VOTy zf03jA!LvN&)CGUD&xY$CF*O)4jv``1U_*K}W7*t^nxODIzNc$6>ylJ*0kiJD3v(rl z(~j*qdFJ$yezv z^xp9E`4UEl84RO{gb=u~^R_fY_GrF^XGmfg-;V0bi@D86U_oHW-W|;zD3UdfJ&;lFaKjx-Z+opx`r# zNC|;AJNF(4{QZqdeeFa|4v0);#@!OL8+mtqMPOd^8o3 zlnTK~u(rB!^0gBp>(`uRWk_TiMWlp4_W2&knMNtkrhZ)8R`+b?{WGIMNKy(q|CaUN x!qRF+i=(3fM^eB66=&bS$FSqrXt#d$C1)M$Y^D4woXA@ zHi}3Ifo;p#ZC?5CSIjrHZ3xt3;1C`~M2Eob%gl0Hm$C0Tzw=WU|L5?X3<^G@h?Ee> z@#lYFo?dmJS?}+((&sbv3mF||FpMH%L*T|dxerdj;QPJiCF7q%tPF`vqloAbsIEG& z_}rILx&Obm&mh{zB)e`bcMFpZ#;XZ3lyb&nO}~1m5i2dm!-lHzxJ96E%(f z%|7eaoEuGoBqc$hVx&|kS+!~A{r{mc3<7GSi0Babb|>zEd=#(-eikUbi1B!$~I_7*iU{`Irkia|XTPgg&ebxsLQ0P!9h4FCWD literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/113.png b/simulator/worlds/sim_markers/113.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e02a4703f86c22a503339691b0803311f6093f GIT binary patch literal 3270 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyucwP+NX4AD*AC`BFyLW0 zc-isq_BAFGmMb2+HtP$Fg`a`Q;#?u zqd^M~f!mk4_gt76_n`LLT*LBzXO{NwJj}|F$TW(G4uR^bM)$ee!Plm0PQO!W^iNBi zp@nl4krD!LU$V+=T_#>}X{XWCVE=C`N7Epw`45-|#jSuj`TX*EIllTIR7TSvNm&q- z087{TM20Vm`6c0h?HN;p0plnlAp|zq?mfUg_a*DRE$e)KUYT6m#m#VtWfTz|0^hzc z^+#Ri{$OqYY<&@kA@J=jt6XWG{)Z)|Mn@-a-N~TfGm3}~ft>qs4+67OPD#!*Ix-q~LQz!!fkI}IDV#p(P0L|C?YllZtUB8VDY)Ptn;?GEvvaY`Jh-Zy4qkR_!ZW4@1IAHALI`ZAt!@;L+Adx(-`M!r{GT&Mt6!2@AHcd-BVxPw y19?5-8aksbLU;&7KmW#dz;ra+-~mDm<2SR@Eiu0N7axXzIwhX2elF{r5}E+OR!Hyw literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/115.png b/simulator/worlds/sim_markers/115.png new file mode 100644 index 0000000000000000000000000000000000000000..4bafc9e62a6274a4d332e06872eec2b57e894265 GIT binary patch literal 3271 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwypQnpsNX4AD*DiJ*G2n4H z`1#?#=x?C~^4yMTpVOo!%sJrv`VT|s{_Wxn?*th*ghvr^A#mF``PvzYie6)*qpS>x zOrwaD5cvI#so!e5c*Uh%dk-|X)t#AbcT+%|p@nl45gh_=Z*$iyG&O$K<0DyhhG+hp zWIf{2?Pvyvhrn%M3cLbLfs@nZirtp+{GBoL_?|9qhC?i)i0Bab_Lfzy)NR?CiJH#+ z3(t<0gd|l2pkgpeIr!X(DGPxq&;Og@Xcsq_M7-yi39 y?PXvbtv%q?0+Ed9=ik^4n2v@Uk--H~_M7>2v8a%iQHVaMhvMn#=d#Wzp$Pz55$(JH literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/116.png b/simulator/worlds/sim_markers/116.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1d23c7a9858bfeae90a5e03d321dcf3dc04b04 GIT binary patch literal 3263 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyo2QFoNX4AD*DmJXb>Lw* z7_;DC^ga`TdI< zS~y1$DIs8coBNMbd3EFc=Q;WZ#A6r))J74}A@D6n|HG=?dk@S$_l=2V2ZMsoC?X{U z-rS69XtFkbcBbd2iXL%!eY8-7gh2H+@rtXGGmG4p`SeN}eok()yLllwZ8Qmzlmmh3 z??EWA>@%M`QB(fw$scB;)d#7yC$Re1@Vdumr*d$c+~>g2>Vu@(6I^|4-pla+`SCv? uqXi(TWxI8GHFH8QH^U*8QABhI{9~LrQG{Rk#^DK|o{6WcpUXO@geCyfoWkh< literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/117.png b/simulator/worlds/sim_markers/117.png new file mode 100644 index 0000000000000000000000000000000000000000..2436087df9c119b99a260156e7f9e8c2d9ca8d5b GIT binary patch literal 3265 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyho_5UNX4AD*DiM6aNuz` zm{agyH(zTS+Gf%D&(*6&gdK6he@f9;tw+j%6b{!8jHa0rhgqC=p1n|Q@l$(cp&%W6)YIb1RG zelerN42DreLI~X0y!XKBcPFM88>PNTPFn^{g){XFM?;a6L<9^%27Alf+A%26=HRp`%isZ-A&nrrnhQNmU(?a5W_av4Dfchq$u6{1-oD!M< D4e5hX literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/118.png b/simulator/worlds/sim_markers/118.png new file mode 100644 index 0000000000000000000000000000000000000000..d2eef389e51731d108d9c860dc720b197893fc7e GIT binary patch literal 3260 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyv!{z=NX4AD*BU!-IPfqW zj4Al98=u7?@$$a)<%W`DI#%EL1HP75GbZ#iILsJD#D%~OW8-IMdK%B~P!5h^5KtRM zq=dk?9Q_Zgtc{-b_()cr=~?K1tiG6WH0hBL0yj4AJ+S)Ri7CJ^jP8HfUNjnd#N}Fe z@dgY)hTY%*OnqTE{}EGz0plnlHUu`LS2I?em7Q7Swv4B6H0hC&^uQVS-8ZKEUssaT z=DcOClNV=b;T%Pzgn;dB?me%7HOTKfZ&~k|e4gR|H&u^;LwFPs9Rk(c#1pRHjB5xT t4L4Ggjdgi7b3!jS!y%SYM05!JV+?pM$~Vt*uNJ6V;_2$=vd$@?2>@I}t=a$p literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/119.png b/simulator/worlds/sim_markers/119.png new file mode 100644 index 0000000000000000000000000000000000000000..ccd303db64654feef520f5ba697346b34cd6c979 GIT binary patch literal 3266 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyr>Bc!NX4AD*AC_~8}cwX zY6tw+)fW9B_`u=ly_swtcNw|YeP&u!m#5EgN0~uDZ4?m~0^8D$t(j@~!Svh-5pjkV z&QU~42)w<`U9-U0IIY)bX62bP(Lbz5gOH>Y1Pni$S3N$F%E9|y85-wH8h!bnzJo!* zXB3eV0y+2N9t6Jr#^gV%@{Ht6qc6#6a-TzEh|B(?8ow&m-8XgqgjhN*E{i~qOy zouq{SXmSOnz=o#MYQ}p7j1DsxMiB`iaAV(IhWB%T<=~6i_dZ2!7q6Ja&2Wfi6cHT) z-`=v?UD&mk!R9C{Ln6~CA|(V~-?_)I{d*Y-`WYN%j3VMf;Kn@3&1uIDq|ceCsmH(} zJc>vOf!o`~D;63Xr=9IlJj=?E$TW(G4uRj_nEI`N!FTCQ^0gCF7RskRGo1g3slkA8 z6p;`D8)~Z?-Phjcwt0Cc?t!DT{h2fBzpv~+Gny7j%8J0Ws9%zHY|TtVc;OM xPyW*qXK3LZMWlql+Tv>F2U4TqMpCl*%aAE6%J2Ezw;t3x@pScbS?83{1OPD~N0I;l literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/120.png b/simulator/worlds/sim_markers/120.png new file mode 100644 index 0000000000000000000000000000000000000000..8484786afd0d9ab4dbf61352c568a635535f8d0e GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*BG;o81OJ0 z-1XyseA)c~4x^LjY8;CCqPLvm5BOSL&Gm^-_B5WiP!5h^5KtRM zq=dk>eEkEl&%ZJGM{O6ckQZlY;T%Oohrrw0+yNWXj?I~<>D)i_A=7ABc!NX4AD*DiJ*G2n4H z`1#?#=x?C~^4#4%pVFiz%sJrv`VT|s{_Wxn?*th*ghvr^A#mF``PvzYie6)*qpS>x zOrwaD5cvI#iN7RI|AS3-+L<%+C9BTxh%>Zsjv}H%;O%YhnyWka9{9XwqNcNb+B3uT zkC++^7)KEaA+Vvgnvv_;Th<@#+zf|UMiJ2=@a-+DT*lcROZ{0!Urzp*F&cU#B_3et z?aS)*u~ZIj+w*GjS(|5}F$@A~qllCc*p{#V!2wuzR9>7CUb|`G@iPUC4l@`=5wRg~ zW8Yqe|B>6pE9B~F9w5Xpels^|i3yhPe(ewHoOrtW KxvXC)lN;&x2i7ATywVRg986O@ELz0pZC;+3ji~qQ^bMJxnxT@39F~p_X(d-Qm zfo=KvAK2&4G|Wypbs;(JOwFd{I~WvvMiJ2=kaIuoL2!D?DXE!8UuG<~`TF~O0i(kV zhEYUp2;A7W_rP*s8E9;j`ohq-X4Cysqop88r65o-xF!J>gw<(wH>GBNx|Wyjc;tVaEqllCcSX*4p{6K0n+(=3`e;IyHkzxOGuGJaTNAYy^b6Mw< G&;$V8@FmIs literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/123.png b/simulator/worlds/sim_markers/123.png new file mode 100644 index 0000000000000000000000000000000000000000..597e62c3c2113aa99a47d0af6cdb976656a39ad4 GIT binary patch literal 3259 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwylc$SgNX4AD*AC_$G2mf1 zs1fjAS6lRn;DH52_hzzr%rD?x_n9@M_I@104tE9xpHW0y2;`jai8M}rV0!L^h&V$F z=O`j21m51}4k$=Fwq~Yb{v)Oa1IAHAYzSP#Z<0 zguu3Z{SPZjs~gql-sY~E7rysD&u9)NsQ?3JUz=BV;vRfnGf`9S+5RF%hZzi`h}aOg zv2QQK{z&EEb0?q`=fI)a*@wF3EjEz{?b`V!zk2Y)|A&@h7rlE51 z1KYHJGxZoaghvr6ArSri8`}ZX(QqRv+5BdFUn<6}u!eOCs8{0Y>gTe~DWM4ffr~+Y literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/124.png b/simulator/worlds/sim_markers/124.png new file mode 100644 index 0000000000000000000000000000000000000000..98564d65ec71565b30e5287fe8bdf717e29b505d GIT binary patch literal 3253 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyji-xaNX4AD*AC_$F%V#J zyqxe)^RnQNM281a*F!lAmbfQh|H-s!-*R?_Vitx&qlm~5_%=8F+T8R9$#b;V?_f~y z8AYUoK#o6u#X@7-2cFqg42xqJ1k^?m(IK#HIlIAYAO4C*e6C&C|W!SDgpAMtecb6Mw<&;$U0tk-1# literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/125.png b/simulator/worlds/sim_markers/125.png new file mode 100644 index 0000000000000000000000000000000000000000..89e07f9fe56159c3d3dc4e5624c3fb19630fca4b GIT binary patch literal 3259 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwylc$SgNX4AD*Dm@VFyL`; zY})kyR3hUKhgC^0c1IuZ)3&Xg%fH}NaTQ}iAA`e;QAAt_+}LNFc2|;lec?KvLdMZx zBP|4O%!_*v`25tA($rJC3Y_LLkRq|A7CwshY1{gMZkHGqiAyBBDd!?Mqg<(q-ZaSLXiTzs_gp5mtsorcp$6 z2vk=!)@S(Ye^_F?mtk=XgMiv7A|(X2Ef-I?w#(>g%*>*fhU*`V)*Yl&ov^y2=6wIp s)uU;T)U3Dd+!wY35~I}xNwsAyqwiv2q4-;CN-6KS0M!0_A&5pjkV z&QU~42)w<`{o$14%uQ~~KE&@NF1$w*CL{!M?#DHRUwg}H_u@|6gUR#080ax*2s3bu zBH}~f_IB|fD~yd&dwnE-&5(57-?M!*4U&|-fNAi-;%g_S7#lqel>fXU{+ov0XbL1H z1VAa!DLd`VOv%qG#`|+#{7v66S_+aF0-!|5J$I%dFc>HE>^(DiGz3Y`!`y3u^>EYl w%Guluhge1tDIsue=U&Ew-qCO)DcSsExN0ZHU%7d57pQ;Y>FVdQ&MBb@0N`~f2mk;8 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/127.png b/simulator/worlds/sim_markers/127.png new file mode 100644 index 0000000000000000000000000000000000000000..dd211ad6dcf6daf92a30acedf19fd56ed6de4488 GIT binary patch literal 3262 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwytEY=&NX4AD*AC`Bao}M% zIJ^0if2B-gJsaoB)j|qeH)njfQ}1x~|6A4uTPB9YQAA`2oIf+e*qF`kai32iqr(h_ zQA9!r+}OPL0QcRutUr$4jC)WU!yuqGiii$@Z#nuOmcRSP^uE|_8ISFmGc#t+&*|W1 zIK(oFNC|;?Z&~ABoaxzVoV+jPMe4pItfOTgDIswF8&mx&U`n(ruWsCL^4W0yujxA( z6nsVz(IM~#SoXEP1JxpJCgKb&oTG@85U{Q{5H775euIU^t07)wUfu-M% yvp3@!7)DbbsTptX?!Al~j*V6qM7EP5%Ixz#itwL!{A(?!W8&%R=d#Wzp$PyE9f0}( literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/128.png b/simulator/worlds/sim_markers/128.png new file mode 100644 index 0000000000000000000000000000000000000000..d59304d157b1b04156cda0830a6398b90d5292de GIT binary patch literal 3263 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyo2QFoNX4AD*BU#YIPfqW zoPGG`avS->jT0-%LzymB+;n^Xk0EsbZEl8Y7KTHkh{zC_H`6dZji=_A?94|@4F-&( zh=dT>kY3#wes`i~ddjH@{zJLAC_(2d*J_Z_20&$K}b>x0*7CZ&rapwwlg+q&)Ofpk6{o{8%0Eiz_%Rz z1M4>LWmr8LZlop~V93+J w#<4^vSyJO^xT-IE_l@m<)M$l4QibuCnblc>+q68y1k^L}boFyt=akR{06fou3jhEB literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/129.png b/simulator/worlds/sim_markers/129.png new file mode 100644 index 0000000000000000000000000000000000000000..9ead7fa9ca59bbdede894d2dd73f4a8a3196cb30 GIT binary patch literal 3257 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwygQtsQNX4AD*DhwV7z(gD zp4Rw3A-&t0MM5a+hbO=;e9awzsON07a?e%wlo_tqxy1e#`tR8VC=4jOd z34z;}ndP=FW4C$f!>@2)H2sm9{eVf3d+tj{|ESB%^S*@27q@dW9AX(oM2En)FAd_r tuzR36nr%rfk)qS97!8h%W?7Q5Y(2vwVS#15GkrmQ5>Hn@mvv4FO#mmRHJJba literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/13.png b/simulator/worlds/sim_markers/13.png new file mode 100644 index 0000000000000000000000000000000000000000..be27c394242d371b8e87b62581586fac2c33342f GIT binary patch literal 3265 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyho_5UNX4AD*DhurFyL`G zxU1s-)VrLW1fZ*Q0)As6+WeZ{Z6dl?G)860MeBH}{e#yrW*X~zzv&zY#H$G{;x zibx58+uOw}78)C;o$dKKY3B5wR}SxBQ1BT=M2A4m{kR8#&%ZIfH~xJ3+KDME4dWj% zH5f3CA`(JiLv3}Vc$9JSxid5LXZ}oees6!6l_8O76cHT)zrQi{M*(y4rRjFh?!-0J zk7i<$$}n&yPER={HS?3E^ZuM?f9;QsCO}g2A2HfYNX4AD*AC_$G2mf1 zs1fjASDRO5KeK3cx|D*VH21pCtRc1c;}~|hGbs3sBH}_I=X_73aqK+?MS*b*5eN)2jFHnHmfjM-j0hu%Wh^@n4bKvNhtql2x0+3mF|| zFpMG+Lg2=}y$6`*&NR$U5(-2lH#0v?+7bHBGV`$ zIs|@yW8yDKJGN$~p|Z`*`lq8MABhD&u<&c_kJ>K&pxjyhS&vWU)%a(lVMt0Cf@+T+ wGfJx)pO01?q}H1^thSpotQ!qClEUomdKI;Vst08@&?fdBvi literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/131.png b/simulator/worlds/sim_markers/131.png new file mode 100644 index 0000000000000000000000000000000000000000..75d111e8010e9631528e5a6a0e66527f8267348e GIT binary patch literal 3254 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyt*47)NX4AD*BG;o81OJ0 z-1X#teA)c~gKJOAo-t1nj@a^zKj5qNUIqhq1_hr{L|h2G*=d}1SCTnCIez9NrUnDX zQA9!rY)G$Sfjj+qUsP9Zh^B<~?BI zYg~M7swOZD*H@jHyZz2D00R)z4*}Q$iB}D!^{0 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/132.png b/simulator/worlds/sim_markers/132.png new file mode 100644 index 0000000000000000000000000000000000000000..a6954bee25286a7aeeb160b10761835085b77e17 GIT binary patch literal 3265 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyho_5UNX4AD*DhwV8uBn4 zwAk@~+FY(rf)-Eq+@8s%a{u6>(tQo9-rweC_|C!5!a0hF3xT&Y4YSjD_8gO(`G~2( zfN>O&5CR)&s~g?tPSng!IW=LX|2M7mzy9kna0rhgqC?>JcJYcUQZtL(mhn_xRi9mX zX7vsR1)otwN(kiKk9)wpcBbKT*We%PV;BU~MiJ2=uq|Kz!wO@g)Lx&NQqHru84j_G zBBDd!+gsKjXLs&B(0uL8jG6vsUuH;-mVTrb{zwI&ZJU`madq}+;|3A}Z*OzgEGVsJ xtb2I=&&<)xOKRD5ZRcLbg5J?^BPrbK7%naq6?Eu&!Vc=2c)I$ztaD0e0swi5TP^?q literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/133.png b/simulator/worlds/sim_markers/133.png new file mode 100644 index 0000000000000000000000000000000000000000..1c3d619857d81bd01d90c6f6b053b832d0eb53a5 GIT binary patch literal 3260 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyv!{z=NX4AD*KX$?G2mf1 zs1fjAS6lSS;RZ+9ymTprzXzIL|6vH-zg?W+ogf2;@F*fK1a2EAUppi5Ln=L`i<{vP z%P1lx1irmxjVsO5|FF!|=%{vfF{8r_hEYUp2;8tTPIg=NVP)FCO^VL;pU+s2h99ZP z=f=Lh4F4^agRh;Kq8R_xz&M6MKy4He9Rl0(^*^jKHcIXFk(4t2eCkJt9&u&nXypP4 zf!o`~E3Qh-EOJ|RfI*z0g>w{<5&~~;bMJZ8;}fYITygGu{TWtr|CmtP$F#R@FQ;&f| zcodNm0@cgJEwcRe3oh+4dK&6qc6_dUaVIy!A(l}@bO_9Q$=VlnnS0Kb<>D4EF7;Pl zo*es#slkA86p;`D8`7&9`M139i7Y?1r&Im6xj1oof3%QiA! literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/135.png b/simulator/worlds/sim_markers/135.png new file mode 100644 index 0000000000000000000000000000000000000000..672b70f1a11c508d19b3b9de74b8508d899b0fea GIT binary patch literal 3254 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyt*47)NX4AD*BWyh40sq0 zE=&49^|GXvBKwcstT{?wKHai+xcdGjYeO*$!=X_`WC*OAX_%eHQ*%si<|C#C1IAHA zLI`Yl{e?+?OZu@jGYyq(ZU*mUQ1BT=M2El|tGx%-emgP6)aYrn{9)(O&?7bRL_5FSNDhrn(>{SQvRzc3Yui!-!vjv}H%Aa=Rzq`)9JLtbe$$_&-Bv{dRGNZyXFQoTG@i5U@2)K6ggqM~}79QC5aT zrcp#n2%P`Mq+haK{D*IPHDlOL1_hr{M05zexf%DM_1u{mzZYsc`ycBc4Lwp54>$nd zePeoW{3Rtl?acHYLoHVsSlpx_I?`zopr0AM(^djJ3c literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/137.png b/simulator/worlds/sim_markers/137.png new file mode 100644 index 0000000000000000000000000000000000000000..93bcf70140368698b1a400a3c8646e5ff52536b7 GIT binary patch literal 3271 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwypQnpsNX4AD*AC_$G2mf1 zs1fjAS6lQ+dO-QTnQR_64>Z00!w|ZEyEwx;K?V-tQAAt_+%`_Wc1EJ2*VyPND?=jF zC?X{Uet%<%e{rTK(m2`eN6P$DqX9@#`T>Ssztwi}2difO-|x1Jr;yQM2E!;KAp~yh z+k0T~wG&f}jZ#mnmNWkRKYlb1lU9U*GH}M(9!urmG+_8m3$NXzs7GA6IaNN8v+|@ zs~g?d-sZM>8QTBQc_%61KAKE{A&@iowlu@_(M(HHVtB(ZbxDHnOYDJ*pdN~+tDnm{ Hr-UW|?KTi^ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/138.png b/simulator/worlds/sim_markers/138.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a16b4053dcff45033292d81f0588123cbae874 GIT binary patch literal 3269 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwykEe@cNX4AD*BG;o81OJ0 z-1X#teA)c~gHN$#&zL6(M{N1VAMmxhn(=`gV}rpcA}$0rq^F&kCCR*gqx-TQ3<^G@ zh?Ed`vvV(l%x3pxYbI(s$1n(}jUu8$;M<+J2PZsjv}H%z;?U%52xSXnC_>a?V0)0*tvh^L#ENX zgM<*+@cbK-``d|{*(s+kB*%R{`NMoP1(KQpfr-!}>u%hGB{Pq|nW$N#H5!5>g&;8a z9;_>^Zk!zVb%x|kA@J=jt6ZtuvNaPmo#j7kIqQE`(_`Qe9z{fl!0qkg6<4HY7P&3kbL!0D50>H# zEu5o>ln{7(o7?79k58m>a9rxM#64%8#}JqAM+-xgYl+@cB0;|5-n0m>Q+NNKCVP7CM@X zNh+Ygxwy2NvF>@|Kkd;^R;A>jZ3 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/14.png b/simulator/worlds/sim_markers/14.png new file mode 100644 index 0000000000000000000000000000000000000000..d836c56ed92d6599c67d868a82bbb90d23ef02a7 GIT binary patch literal 3266 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyr>Bc!NX4AD*SdRC6nPj9 zK6d%1x!Kc3k~em0!`YgsxaaZ#U;lq&I$+DhkT{Bn41wyjGqWU_&s!)5$1n(}jUrM) zU|YWahvsujX9%&a_fCVJViJx5qa%Rf>=0GJ5vGw#MQ?0dx2V8A$vhz)@a zwbhOOYj1Pcyu1_lz*&Fq)3xz4xfu?zj3QD(;M-ePyHdAhYbI(s&#O9f=KKHAGLWpF literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/140.png b/simulator/worlds/sim_markers/140.png new file mode 100644 index 0000000000000000000000000000000000000000..3623c012a2e2f1de47e62689c2cd83618eeefebf GIT binary patch literal 3257 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwygQtsQNX4AD*DiJ{JMuUj ze4YHsf2VoV-v|knH{nwot|b4tu=9Vzs{gmS8LC+r4viurLtx%a!}K(snqF(8qpS>x zOrwaD5IFyhN&ZEi{)c78MyW3*pS5|mdIy7o&nO}~1m4_?Yq&pWqGox@sR=WWpZR0p z9K#@>Hi}3Ifp0nb4C^g#bJxg;GqiAyBBDdU_BQvPSA9N~%E4`N#>p=xe@xe7;1C`~ zM2A52Ht~e(k~53km+{Q}nKGJnNiMlYvo4th)?91jv=pwI{+ad5xJMg%B!({(w^QABhIFVdQ&MBb@0A?|pX#fBK literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/142.png b/simulator/worlds/sim_markers/142.png new file mode 100644 index 0000000000000000000000000000000000000000..7b808b518f82a1267218995ac58e49f51f4f8e9d GIT binary patch literal 3275 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyIBu^K|kcv5PuN}-iV!*?2 zP@~|#uD0kCK?i~2do$TQe)4gz`^y?q>#xsnMv#F+coY#A0@d$&BFm2*$bO?89K#@> zHi}3Ifp0$g2lBstVPaqVlJ!R`H^U*8QABhI%zMe&ck43uoGt5oDzB>V{yf9l{*0;~ zajAARd&5JZdYQOIR_x48>wR{bJUgfUcz+S2!wiN|L~ID$Fy4D0u)3=8eDU+iYqf*( zdMky+8Cp0;5z!%Fdzo8iD=-yi`s){5n0@cly84-;MIos*0kAZ*yRgqVEp}$nOT$0G zqvasHfFp(hEChczWLGs#j{7R{?+hzLBGV`$B?Pkl^BH;yM=K6e>dhPccAv$0m3A%I Q3+knKy85}Sb4q9e0Q0s$H2?qr literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/143.png b/simulator/worlds/sim_markers/143.png new file mode 100644 index 0000000000000000000000000000000000000000..222915575dc1825f147ed4583bfe0c6ddd9ffea7 GIT binary patch literal 3263 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyo2QFoNX4AD*AC_$cHm(+ z7_;DCbePr&rrnhQNmGYDTVe-%5YFpUSI~_jYkJ9AX(oq=djZTjR8pQxj&YS6`p~G2OV{c(e{CsR;tC zfNK_P-pgQfbhQ2;wfcO1?;bHfYNX4AD*BWyV8}Kk3 zTy^1}_G)7hgB3^Ww=-z6R~F2bU-0VtH>Lx&Obm&mh{zDAPCGM8l6ifh+p--D3O=KV zln}_dANL?IJ>`_t%unl%pZRd|-&xktlt)Sk{Qkz&AEg|8?u3ZM1EvN8#!*B<2yCdW zZq(nBc5Kc}!zDXONw%Z89Gr2Ve`C6z{%rEviJHO5_l}I_Tp}wBh%$K2ouX(wzsLXS zXznGk@B-yt_qh`_vr|r8NKWI~oBCpUrLZ_d3+E^zIt11l8>gjk?KytN{_<${B`Ny? m6~Df7k738L(QqRv-0JsTm*8BzutpNpFY$Esb6Mw<&;$TOuR&4( literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/145.png b/simulator/worlds/sim_markers/145.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb0828eacbd385e6b0b2fc5db8dab3cfa73ae5d GIT binary patch literal 3268 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyx2KC^NX4AD*DiJ*G2n4H z`1#?#=x?C~^4yMTpVOo!%sJrv`VT|s{_Wxn?*th*ghvr^A#mF``PvzYie6)*qpS>x zOrwaD5cvI#DgMQoo=D~3Ho4Dg#`b9)+zf|UMiJ2=@a-+@z6-M?i`|y-*rpvjqh2j4 z&d|a+ibx58x3{@J%r`Z9+T$~`l6!tJqr(h_QABJA+}OAGz~XZ!rkEO~zA!XyyJz$z z{oaw$f{>(o09Xq4M=1vbLs8K#a`tEmNNNQDECl6B-IlGHsOem@$!xR$B&qxdmVP!_ zcjF%X{*jWaM_iLiWKj3S)78&qol`;+ E0KJJdMgRZ+ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/146.png b/simulator/worlds/sim_markers/146.png new file mode 100644 index 0000000000000000000000000000000000000000..a0c4787b6a5db37f2e0940e29cb10937ad170245 GIT binary patch literal 3259 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwylc$SgNX4AD*AC_$G2mf1 zs8R4=S6lSX;ReU2dyIJ}7(HOU{*Q50oxeWA9AyRpwNXS|2$Y@ei8M}rVEXNZh&V$F z=O`j21Y(zqKbUN5l-lbf`DpUpXG{$SjH8Iy5ZLhg3se6s<=|^4rmQr~9}Pb;(hevH z<1^;RJ@Cv<>GJ;;zmq}1XA}_~0&lGL9$0+sCF{H`{`w9L+zf|UMiJ2=uOXSCfy oYO`%^Z58taiP3N)Dct@t8pMcmzV4g{>YFfly85}Sb4q9e0GnNt?f?J) literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/147.png b/simulator/worlds/sim_markers/147.png new file mode 100644 index 0000000000000000000000000000000000000000..452915a91643107850bad3841e63678dc41db394 GIT binary patch literal 3270 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyucwP+NX4AD*ADhRG2mf1 zc-isi@-@8)a@;&Cw(izqykvCYfz|(pRsXk(GrSXI;1C`~#D&0ZR2*w`FT4Y8u}+`eL~L5mSQ!<0v9F1UA%GH?mu87k|(^(|)ttGM++4 zhZzi`h=dThv2QO!`P|#wHJ5koJ@9!4gM!Z}B02HBD{8Dim_2@#+lXgdg6;m3qexq z0ALAtfO+k0ZkvAf->YL71k^?mDIu`!+*{s;?9p%|DcO8u{#qi=`=MD|5Y$2OboFyt I=akR{01WC`-v9sr literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/148.png b/simulator/worlds/sim_markers/148.png new file mode 100644 index 0000000000000000000000000000000000000000..d07d02224b02bb15b302039a73cc02121a214216 GIT binary patch literal 3261 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyi>HfYNX4AD*AC_~8}cw5 z)Cl;mt1bFN@PWdi?Z&(l)TO!CeP#~%>!;6fMv#F+coY#A0=LVLt+7siV0vzIJ*VI9LDpf-w# z4uNgU#VfANjB5zYu4;V$n5n^laTJjd0vl}i9uSWL)*vtUWSrVvH*+-kk(T?w$!}KN ygWnaK%tlK-QVagI#(NnJjpb7S2&bTnN0KX_%eHv*(!P%tuTO z28^SKgb>(JTixhBccNx?%Bj_MY0skDc>eyE)MMZf9z{fl!0qkg56po9C^_>`{L|4C zNMZ&Ar@*zhxouwd_*7n<{LxUHxLiM4JVHX?EimX__4q_82e%zNV{>!$Xa**^@B(Jw ziYvSJ9{6wkIVC-%>;Het(KJYE_CiXA6`RaP!;hr!0|j2z-M9z;Kc?i4R=%XRJ))m~ iV>@6v8g3+o+i%8@MWVvuj&~P;Iw+p5elF{r5}E*8)d0x= literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/15.png b/simulator/worlds/sim_markers/15.png new file mode 100644 index 0000000000000000000000000000000000000000..016e11fced84c359dc54efb80261453cbc4828b1 GIT binary patch literal 3257 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwygQtsQNX4AD*AC_~8}cw5 z)Cl;mt1bE?@qvToy_swtcNw|YeP#~%doPY*hdYCU&nO};1ai*zL>ebQ$euG%Q;&f| zcodNm0=Kt||7bsVW`?Oz>N7**{D-xpK}b>x0)}7370H>K+?E|+5NBxN97Uvrz}ws0 zHd(zsmde3xXKIY>rgAeJVi`q5hrqYDtQD!?;7hxA=ywc*fZ8Y`Is~@m>wj2bYy=Fy zpIXND$L3egA5DFvWg!ndw1g=c*cK~u$wZP?nq5{*LLn@Ea)8# dH|$vR<8g6 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/150.png b/simulator/worlds/sim_markers/150.png new file mode 100644 index 0000000000000000000000000000000000000000..50a3c73da21ca582cab46c1cb0ef37cf83453be3 GIT binary patch literal 3262 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwytEY=&NX4AD*DhwV81gtA zwAk@~+FZ6t{mn;D-JPB35T$Rk<(zoHSKGY|2JQ?BKBI`Z5XiYNx%pjBV}Ic~pF&25 z84RO{gb=tfFRo$#oR_RW?#_yP;Hk&JAv}tR4uRX3x%VtAPCv8D_!*b~xA>jJrPtAn z4G)1FfBg?DjQ1Xx{I2HAE~BSH{@;wm8Cp0;5z!&=_9d&_)@9-q_RmjE@wR_j()Nd8OY>jqs#oYh@M{_S}g%>>c&RcVq tl_8O76p<1FuYK|vdPbXkB(->N@c&sT#`n@QvKrJe@pScbS?83{1OOANimLzs literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/151.png b/simulator/worlds/sim_markers/151.png new file mode 100644 index 0000000000000000000000000000000000000000..2d17931a78785725af2a413f82b40e42e0c0af6f GIT binary patch literal 3260 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyv!{z=NX4AD*DhwV8uBn4 zwAk@~+FY(rf)-Eq+@8s{w`U7Xoi*8fK^Q>^UYm^AS^n z0plnlAp|zmRyVrOov4|e!o^d-=rDs}6cHN&H}>si*l)RA{D;l!Z%p%#voa(yjUrM) z;P*GCJ6rSgKP)jedK&8gY&7qZQgnec?%Ii(=_#jH+oe5={$VXnTxmI4tw2KH?QQOw z1*XQ&&h%7HUTFVWO^<;?codNm0=Kt|S6q>txyfxAPw&i1qkr0?DUhVh1x$f9S$E?e xe6HAJHX3v!1szcF+Tv>F2U4TqMpC%_WmqUCETrgsUIx@H@pScbS?83{1OR(iiS_^h literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/152.png b/simulator/worlds/sim_markers/152.png new file mode 100644 index 0000000000000000000000000000000000000000..23d8aa1de31278649beae67df6b1593c48efef5f GIT binary patch literal 3257 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwygQtsQNX4AD*BUz?81OJ0 z{66_#^tY=80xEjemm5Ub#peFzU-4`IUWN_s3<^G@h`11VGgGoS?bw0zI}1y-hsfy6ns%w`CuyM?;UK!~+bvAI=eam{UWSh9cfzgylQpN)&yY;|q`|iXP|Cv7x z|IFiNIK(oFNC|;?Z&~9?-IvXosOg+G?@h4X*Z;8$0&1g(=n(jpqyJ&m=Di2*KR$UY whG<=*Aq)wDvUlIu4oHbJv~Z3hqC?;>!`ujA0oTVp=Ab@_r>mdKI;Vst0BT+5KmY&$ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/153.png b/simulator/worlds/sim_markers/153.png new file mode 100644 index 0000000000000000000000000000000000000000..53c1cdb95a6f2f7fa28274505eecf2bcd2d43c9a GIT binary patch literal 3259 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwylc$SgNX4AD*ADXDG2mf1 zs1fjA*P8c99lOx;xtR@HSamAq**jdl|CY7EmWd&86cHH${rfM@$U{jH8Iy5ZJJLF9U0OHKSd@XwgSX$qy{|9FVdQ&MBb@0FP!=-~a#s literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/154.png b/simulator/worlds/sim_markers/154.png new file mode 100644 index 0000000000000000000000000000000000000000..e1744610b6b66e4d22e4c1edbb6fe9ae7fb35df4 GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*ADjHao}Na z>|gjNSWf-Hc}AwnfN)g@uUokv?$|qAz5kZA!Ip_3aTF050_V@nFg9khd)((!$mlSG zVHA-N0yj4AJ+S)Si7CcLPow#b4{QH66lZAR97RNjz+7wNv=pwI<7ezIvySFj5<}qp zH>UNwZgcN>nWO(<(L(;uOT*2MjD{kS#U4Z%CoIT$k0Me+pn98l!u7jx4WXk!M^efGhFiten{f|(=T}M8X^vLB pq_#We?%vC|;n-+-M^btBpF#M)IQJ@*&C@_#6Hiw^mvv4FO#ppC0kHr8 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/155.png b/simulator/worlds/sim_markers/155.png new file mode 100644 index 0000000000000000000000000000000000000000..bd8357437fd018d23fc280ed4ad3efda83662bf8 GIT binary patch literal 3266 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyr>Bc!NX4AD*DhwV7z(gD zp3eEFd0OztV~30#Z&$H=c_%h2@;Cd6UvuRc&ImGa2#+G-LZJGc&E|JD%)pNYOnS*x>L3hTSD#7+zS)|9RQ| zH$vhJEu5o>=n$~I%)IZyJh=n**S<8oe>_@`kXVg^>yhfJ1D@Gc42*ijRotU397qUM zFJqV4x{UomdEscyOJc+0#;wcT4ThuXjijvfo4L_Wl(+xJwdtVFiKnZd%Q~loCIHe{ BPHg}H literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/156.png b/simulator/worlds/sim_markers/156.png new file mode 100644 index 0000000000000000000000000000000000000000..5565ad0e21f99f94bae59137f69feea8064c0ee3 GIT binary patch literal 3261 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyi>HfYNX4AD*DmHhao}M+ zIJ^0if90G8dsd;aa8(2T)vnFY|1q!nm(S1ejf0_ua}*I50=CBI=gdrhVEpccwjKkA z@F*fB1gf{O2NY~)-}5quzhW{s!y%SYM05zud&{_fm-6~K6T{oi{7G@P`?VZa=`=T#nm#pRoF4h^F@n4|*i+}z5v zCsP%T?Qc%-ubt^X^XKfHq@>-^tPTtTUAgYH;d)c+PE1Gv5X?3L*Uz6){3V+K9S17KUR;XKT@+F zIQ^AYH~xR#<0JXYVBi1SqhUx=7=i+jf9_1f?37by4)g5YBxx+4)-jreNh-mBSy-;r zZP}WMn$G;j$uFjUG!tiN;T%PzguvU|+%{Qv;~MVI1u|YP{%15Age0XPVEBDFwQDZ} vqaFi?@F*fB1frjRV>@6v8g3*do8OG3?P3Ct4WAta^-w%r{an^LB{Ts5?(!M% literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/158.png b/simulator/worlds/sim_markers/158.png new file mode 100644 index 0000000000000000000000000000000000000000..30cf7c4d8d951e1535f1487b387bd79cd739267c GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*DhwV81gtA zwAk@~+FY)8${Ql??3>A^l2ef}SAM~(@+!uJJ_d&wqlmZ=xUtVT?XD#A`oeWSg^Z)Y zMp_8mm>2hed+tltd0Uo=S6rGqzw+wjoeT;-qloAb$nn?zu)=unf$twva`hNEghvr6 zA#nRLw@p^;%%XKZ5C6aW^MCaYqQiYOjRHdel=xb&ePOC8Sm#rD_5beC&?6-TfT4Fl zJ-w=teeFxu9|u?&5}8I3DIri@)#yG~JNVjE&FRPPRBrOt`+H{gXa**!U;@`3rlYk7 rdDUigdKGg*4>!XhmQh4>2>fGExFaGEC&DfW>Y8}E`njxgN@xNA6iGv2 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/159.png b/simulator/worlds/sim_markers/159.png new file mode 100644 index 0000000000000000000000000000000000000000..27da7fb1a23c82e3a803c82c68678db88e622dc7 GIT binary patch literal 3250 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyrKgKyNX4AD*ADu!8uBMwXzUB#Ht$KWty6cHB!H})B)-IZisU%1Yvka0BF zNDF}*^Wq-JTV3Y1$@JAfpdrrC!a0hF4uQ8XS$~|J71zKp8g8T}8(`4Mm9F!N3||)W z==7}^1_8BEM05yjTP|L4WtY*@n3+W{4fm}%%gT_*G>V80f$FM8_qi`w=Y3gq{KLZ0 zq(^GbL!`b>>qY~RjL`ehe(ejBf7R9GAI75<2dNduTI0Qp2FFHAJdz50dueSEfpzlB Q-h(zopr08>jlF#rGn literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/16.png b/simulator/worlds/sim_markers/16.png new file mode 100644 index 0000000000000000000000000000000000000000..150574dee30a9b26fc9ade423131a7552fe0c0f3 GIT binary patch literal 3262 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwytEY=&NX4AD*DmHhHQ-@5 zs8R4=_qEoJeg?Lgd*)^~OySk3cqbn4b?;t=4eksIKBI`Z5O_0FvN-M7f#W-rgJT#3 z)J730A@D6n{{#EonTF{pr!FL?ovGQ>|A?uNN8v+~Bs~P`2@AI)#4sQFAV*hM3 z^hiuRpa3kp`<6B0>1fcA5_G_DYYYd5+r1LEWx#wpb9>FT|MMS?h9SveICr9Ec?y@k z`RD)kUEBkAu#VPYh3Ae@rui5lFywGsnZr`XyF`1M2CRwZSFmpu*k`?rfTyc1;L5FSOug}`m&7R4L6d)t=`E?jPL59*^faz6Hiw^mvv4FO#tkcP(%O# literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/161.png b/simulator/worlds/sim_markers/161.png new file mode 100644 index 0000000000000000000000000000000000000000..37da960c0361878307e1a6caf714b711d910a495 GIT binary patch literal 3252 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwywWo_?NX4AD*DiJ*G2n4H z`1R4h=x?C~^6ZXwpVFiz_?&QlUDL4Y{aerpx zgusT{>PGjq6E%UsxLfY9{nOC^BqjZTLvQXx&Fqv@tL2P8i~T#t%8gTe~DWM4f!SQ={ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/162.png b/simulator/worlds/sim_markers/162.png new file mode 100644 index 0000000000000000000000000000000000000000..241170325921bd444979270c56d6a63624a0d7e5 GIT binary patch literal 3269 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwykEe@cNX4AD*BUbq81OJ0 z+*R>^>Sal;V@f}Fvo1OEA;Z?*;p+P@Ob28b8w^GfaUrmwHvP;lV>Y|TJB^OAG9)sM zB2q%2x~g&UJni6XQ#GgCJ?r!TyUAO=xSgBf5X&ecIt0FbVJbK?EAByU41<8$C?X{U zwk;R8$cml$DQ0HT%VfK!=T6tWN*oPEk`fUp2w%+vroMN7HkGDw{eR9hT6d5T0vl}i z9tg~?YMeapCF{NC!SCxwOFxnee_#RVZhM(~&v{@WxWxMX|CRC2MiU`%trti$51I%W z-75dr7c)A{U>HRtgusoeW#$aWb}%UTj3S~#;0^!zZc#zotv{PU{S!}DKbLh*2~7YN CE38Za literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/163.png b/simulator/worlds/sim_markers/163.png new file mode 100644 index 0000000000000000000000000000000000000000..aa9761dfd24199cf4e9018a15948bc954184e1e4 GIT binary patch literal 3274 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyIL{AsTkcv5PuN}-iV!*?2 zP@~|#uD0lt!Uo5=dyRP~Y-(h^{*Q50oxeWA9AyRpwNXS|2$Y@ei8M}rVEXNZh&V$F z=O`j21Y(zq@3?BW_rTn1FInfMKl{J`)$tt+3O=KV=n!~gwfDfVzLPaK?m;E69=3lLy_4ty zbhNSoh5)b@VfY`pT)aYV{+nby1`gp-L`n!m|Ng>uz;HC&NJ=)pnP29J3MITK*$C>S Nc)I$ztaD0e0szG51(^T< literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/164.png b/simulator/worlds/sim_markers/164.png new file mode 100644 index 0000000000000000000000000000000000000000..c3cd2529f06cb0aa07d4fe7bc262819ac085a9a7 GIT binary patch literal 3262 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwytEY=&NX4AD*DiJ*G2n4H z_<7>L=x?S4zXdsrW}9DbNO6*j`pv%Lm+fALf<6X^8Ka1}5V&D#oOZUS@%jzr;1~u0 zwNXS$2$ao@dk|Qia!P9Eq1t`_bM+WFghvt4A+Xy||HF#Xs>b)5-IwvyO5Fc%CeF~p zIf_ULf!O8Z6<6%`9{3))T>OE?X!wzoe1L)XV6v%EYQN9S%G0~$j1RLiBr=U6qC?>N zOIEq9e)Ijigd_!F_W2&knN05uKd0|v sQ1BT=q=Z1u+so1n$9IsTWi*7}@LQ&cbF0J%%YZs2p00i_>zopr0G7TGdjJ3c literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/165.png b/simulator/worlds/sim_markers/165.png new file mode 100644 index 0000000000000000000000000000000000000000..72bab1d0bcc74751d0e964bd74335a8f9721948c GIT binary patch literal 3271 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwypQnpsNX4AD*BUux40#w1 zTEzU)2V#E>|Ohzx=IXJ(ihv(4M+zHA4Bg3l-- zB?R8=-g|)mmT~g6Gc%^2shPRlu7{i95X&ecIt2FJ=9by&zHH4zP3L)4o0ji8!z0en z!a0ga34z+};ucxGJ~x$v=Y6^|`Rt$5ZKD~Pq;d?DivxduW7?m7H?CoI41<8$C?Yxp zzTJ&`u%fiOaq>6k;5M7Df73@3A4!Q1s2G<1)YnebH1;?99Q~tSkAXvY6cHT)zw`79 zuI$=-;Qhyx+|i&THRVMA{>FB|bTr&Z3b)_vk1fRn8nun@gL){Qu6{1-oD!Ml)B_4Z_qh`_ zvr|s3K4a4}{pTERhC?i)i0Bab_Lfy6V!QYQc|8UW;Za0%2;AN-UU5ZgW|7-6p4u}# z3+Lw?n=N;Yl_8ahA#oHD9|FI>G4)$*7yn^rY=2W~=A*y%&qr$zQYz35rD?}{d>X&c y_?f8g8V7z#D#%6fv%Qe`9Ju-4ah%KbLh*2~7Z0^=p{` literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/167.png b/simulator/worlds/sim_markers/167.png new file mode 100644 index 0000000000000000000000000000000000000000..e20aaa7d7d3626705cafa5da01d0f9fd88fa8136 GIT binary patch literal 3260 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyv!{z=NX4AD*Dhurao}+{ zm{agy*IM++;{zT)?)flJy8hw9&iaN`_usNM*fKFBjv^vM;QE;v#>Q;>j@cR=WgQJR z5<}qnHzxg(eEkEfHt#(!Ifg+%Z4?n50%f`SA68UXH>%H_sA=qP_F4D-*Z=7|7!-U) z5h)??=2qN;!1QXyu%G|siy0keFpMH%L*T~Ny$rk0otRRca%#d%b?HY;4F-&(h}aO= zkX_v9Au1VGug_1u{mz_fSfc+J(xwW8t-Eu5o>=n#m#&HZ6M yu-g4yv8jJF`H`BZ-rTt@&5%9XVj-!)_Kp3qwXjgC^~@wtx5U%c&t;ucLK6Uz<1{7! literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/168.png b/simulator/worlds/sim_markers/168.png new file mode 100644 index 0000000000000000000000000000000000000000..b5f06d2cdd64091d9c866598566804b4b3fc8f4f GIT binary patch literal 3268 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyx2KC^NX4AD*DhwV8uBn4 zwAk@~+FZ6zc1-QAdFfIUYS_E4{bX9TZ@DzwD_liy~{a@eC&2Wfi6cHT)-@Y)NvAWD{lj*Df;r|W> z1)otwN(kim>wj2LntE!d(bLfWou9@2onvK4WEw?8hd^~zqx;;KtUvCqt~)a;?t!Ns z1BdV^B02Z00!w|ZEyEwx;K?V-tQAAt_+%`_Wc1EJ2*VyPND?=jF zC?X{Uet%<%e{rTKQaQLy?z5V)eOd=M!y%SYM05yzd&??U>b7jnM9ueAXL@G(f78+< zF4>OeZ+HmY-Y#BoW!GMY8gX%k7S2&L8Ui#6fw#B0YZe+Cr=9JQd^ovQYc#!)n%#f_ zX!Gh$+yhVJeqg2XBV@F+gBN4OFknU9|If*GQ%9>>Qd=6=cJ5^?=p79=lEUpDLnpHc U&y9Wezk~WBp00i_>zopr0L~yXV*mgE literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/17.png b/simulator/worlds/sim_markers/17.png new file mode 100644 index 0000000000000000000000000000000000000000..fd85f29ae8916c382f041bf2bdc07b2cefd40dda GIT binary patch literal 3267 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwym#2$kNX4AD*AC_$G2mf1 zs1fjAS6lSXd4b}4Gub?%4>Z00!w|avGB-mp3&WvNL}Unjn``*`oJ2)$acUR$Xt0qO z0^hzc#lP^;|FEPq_0-b%vggThM_CyXnMM)OAy8e_sJ~^I_=D!+)KjbP-5(7-QWFm_ z0Nv+m2Va}2Io3Z=Lm`=?9|28^SK*bvxY zyO&|}wJ%KmR^iL`yqdm~=wKgBqL2^(CBGG>dk;)L_l1dn*B68JRsXGH7zETt5z!&A zZMpb^$)?6WS2zFw literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/170.png b/simulator/worlds/sim_markers/170.png new file mode 100644 index 0000000000000000000000000000000000000000..eb79a5bd5219e80dec558f7b01b4225f6b55e414 GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*BUdAIPfqW zj4Al9Yi(*Hq4|Dprh}EV*xcXjD}LRLW4NKrAfPsihzo(Tvptr^$q!85P1Mw5;1C`~ zq=dlkZQ>PI_U=6}`P_*qGyTmzPb;@gYvX1(#4?JA4uN%VS>;N%i6>0`|KCuYp@nl4 zkrD#2x4CN;R;QhrDQSF2{rCD9;xhec=?DpdvRwTSt>?Zm`Bz;{{xM@TOTHRtgusohdk={3NzXA}_~0&n=&yNL)_id%<)x+b2kelF{r5}E)*OqN3c literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/171.png b/simulator/worlds/sim_markers/171.png new file mode 100644 index 0000000000000000000000000000000000000000..6196162c99410fbcdb3da0eed9e7fc501a338248 GIT binary patch literal 3276 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyIWKS2zkcv5PuU*V!G30SL zXtCq}w7G0W@{P{t-po2^ z{Lpyr%nVbb)Mtjq`7?hR`#)kDt$s-hfep3QjoYo1gRh;KqG;Sd^QYmTxuZ1+Nm&_~ zkMCvOjcd67)A0Y)(Xb;a?0|}|?cB>)&^sD#B!ycYL*OO}K3UOeyFlF(Pgg&ebxsLQ E0MH__r~m)} literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/172.png b/simulator/worlds/sim_markers/172.png new file mode 100644 index 0000000000000000000000000000000000000000..70f25c387396fb420bb62ad008bafefb7c3e1f0c GIT binary patch literal 3253 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyji-xaNX4AD*EZ&|81gVU zo(}l0ds?*S!vV*Z{B$XWr3nX1>l#+wf63Zl$;6O2iiiw>-{)qOrt|DMw$tb+>u9i% z7y{K*j1^~g8l}e0Eb8QDIK(oFhz@~oUzlo&mWfwfm=)K+AHyJ^Hi}3Ifo;ph6RrV+ zE>MqwLwFPs9Rjy6bN_LE4l47`h)&BU mLSU`&UPgmsqiK$$G*@rkC(NhA*ewX^k9fNJxvXpv~LSRFB+L@V>%<+%=dH;J(T literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/174.png b/simulator/worlds/sim_markers/174.png new file mode 100644 index 0000000000000000000000000000000000000000..0931ea7d2fab97bb508ba3372cb08bacd0aba350 GIT binary patch literal 3253 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyji-xaNX4AD*AC_~8}cw5 z)Cl;mt1bFN@PI(=y_swtcNw|YeP#~%>!;6fMv#F+coY#A0=LVLt+7sikUd8`IEFz$ zZ4{9b0^630SFA2hJ+;f|>7@0)QsTePupSLWlF|?`1RqQ_-pjzKM_h6p&DZb{xP6)1 z=E6?nw7Zg@eQP$=7c)A{U>HTjhQN(^aSh?;zA&BNyiB}8PMo2Ia}*IB0&ick%4OV@ zEMDic^NWPt6mEt?ETf2&5cu|mDSs<4;ms>f?UMhzaFVdQ&MBb@04f~djsO4v literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/175.png b/simulator/worlds/sim_markers/175.png new file mode 100644 index 0000000000000000000000000000000000000000..e6e478bc2522ddefa337250222d9d686f970b613 GIT binary patch literal 3259 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwylc$SgNX4AD*BG;o81OJ0 z-1XyseA)d1fhTcg&zL6(M{GIAAMmxhn(=`gV}rpcA}$0r*czvu?PM|1EwegM!Z}B02 zU>HRtgusn`dk-wWc4CUL(bL%e%E>e3jgPQ0Br=U6qC?>KH>UWEyKxUZ*H`h#7mp@D p67$~;tL^3t>k3E1jg)Y^A>X7XDqvY25CQ6yc)I$ztaD0e0sxk8l5YS2 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/176.png b/simulator/worlds/sim_markers/176.png new file mode 100644 index 0000000000000000000000000000000000000000..4c4825a1c4725c0e9508f25670734a483d425a28 GIT binary patch literal 3263 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyo2QFoNX4AD*DhwV81gtA zwAk@~+FUk0`NpG4ztf~9)KuGSIVT?Q)pjp~fjfhO&nO};1aj_6ZhqI(c-9+_$LIXNX^m!LQp+%4CjR4`UDc?5xAF`qAmg9$i8Hitjv}H%;O$FR zjfl(KAGk-ujnrhb)_5bP0l+XkK*SGf= literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/177.png b/simulator/worlds/sim_markers/177.png new file mode 100644 index 0000000000000000000000000000000000000000..4aaf781ea83d87083fd53a4e1d9f0a4c99d642fa GIT binary patch literal 3273 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyI1Wy;okcv5PuU*V!HRNG9 zXtCq}w7FcL1TCKIxjmCj<^I7%rTZFIy}!-P@STI9g>w`U7Xoi*8fK^Q>^UYm^AS^n z0plnlAp|zmRyVrOz0F-Sue7>R{p_Fr;k8EM#0C3k`hgFhxKRzBq?tJ6JX5(W8<`5pP7|s&P3n)Izv*A zfkSu{5gh`zw~Iem2g$-!XIAfEQ1BT=q=Z1u{kR9rYiAm!r=6L7re@Q^|MrJROF@z< z0bmi>AGKY);?iol!}d={n=vG|;x?4#Rr{Qt3Te0O?Y%*@z(l=Rrg=AHdrz-B#t5?L*V>O!`Ejdb{w-aI?6g4Y$S%j z`7caoZn-a8qa6J1*9_wr1_8BEM05yz^U?pX%69L8+1I`>>05nC&a2wwJQ{?grXX-A zn(jUDJ?3l5?-Ns2&pR`kjfpJ!Aj*JwSbocL@gMU_ug;jggF(S(6cHT)Z)V0l2(7MS zbesG0|LYS|Mzb%;6#yvvI=((Lqc-h~FW=vpqY03-{0B~e*;S3^v0n}U1nV(y2#+FC qLLj=jiaDW&o8b`4C?Yxp{xMkn7ZDOOx&-Q)FnGH9xvXvmy8Ew7#j>m5pf}~q4xRA(&v&tq@JJB)??rh z9z~>t!0pS-GfJ1S+hqFkSICPqv~Z3hqC?>AOU5%%;c=GXaS#8;FbJrPB2q$N+j90j z7iP+RuzP*ZxcuKtZ~JF_qv?;N><3JL`dgN<9|#^zd?e*PV9K+3<-=bwzx1hS{h8%O zj1DsxMiB`iaATg_2dC_+1C!594d3@_a;@lS#w9i5_D5Z2zIR+byLdG5k(l>xSY76B hFdS{^k<`%r&AjiskieN7rg~6!#M9N!Wt~$(696RhH9Y_T literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/18.png b/simulator/worlds/sim_markers/18.png new file mode 100644 index 0000000000000000000000000000000000000000..1770cbad6f18c80ab212937a7d985ccc7dada4bf GIT binary patch literal 3269 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwykEe@cNX4AD*DhurFyL`G zxGUxV)VrL&1UZaO?v8foV&-4_mpSC`yf_96cLoKYQAAt_yqP7rIqlei^fwbV^%yvW zM-eF@u-i}ngVXOXO#V^I!EN($o+aBIWo1ZY8bw5h!1b4`a$EiNKiJJ%b9OZ7NKHB5 z&~sY`%)8F=#>p>E?idY2(sCa-0Nt0Z0R~{&yqu2z^|QGd4zY|PqC;TaWp10Sxp5CX zt5Z%bpVxCchCx7W6p<1FWx&vD{dQ)Csqr)Kw0~!o*Y%7hL6UMHFbVFtV6~Uw|A+Lv vVn&A<45NsI5V&z`xj92$;b^##l5B3sb9jpL+Vr*5fcht%u6{1-oD!MbDACwnjTx&$i7>oS}tt6p<1F zZ(p*?ZC&SM8NMv0>P+~~&&Kgz4fPl}ghvt4A#nRLx6P}VnVZ)6JS?tzmOL7IBqbhT z=o!2Qhu+V1$L~BGtvyJrJYluRkK?oA9@NG#2&j!BqC;TYa`B2Qv*H-;9c5)mWEw@J ogurW`e1@Jv#?eMH2_bMpewmU8zYqK7Z=f!Tr>mdKI;Vst0CU1^uK)l5 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/181.png b/simulator/worlds/sim_markers/181.png new file mode 100644 index 0000000000000000000000000000000000000000..b0929ecad04c4aae83d2b15e80eabdabd3798bde GIT binary patch literal 3252 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwywWo_?NX4AD*DiKS81gtA z{QU4=beYx(_k@j`ey2%I=y|xXw60;*{giY81D+%)RIQthk2#1&j_e7)BAXA#h_}+=Ia9r>2yqo?0$f{9Jc>%&-5}F$@A~ zqllCc*tT4};>s?gr!g}>tv&u>e$i+mBqa}`C&EA0;tVaEqloAbc>9ty?uC#3hb8{D zX}KEwM*ObrH%qi8e)Xcz(;N|%{49NWR5;4_Md4uLoP Ys_9}}`LoWh0Ch(^UHx3vIVCg!0BK%k@Bjb+ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/182.png b/simulator/worlds/sim_markers/182.png new file mode 100644 index 0000000000000000000000000000000000000000..a1374ad2a5bd22791ad4dacdb7556b40262c404d GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*DhwV8uBn4 zwAk@~+FY(rf)-Ei+@8s{w`U7Xoi*8fK^Q)btn|9c5)m zWEw@Jguw4_On;vB_(UoPw^eMiFJ^R@!7z%54S^f`_8wS#?!**RqtvW39W&(*-`~lg z;4_Ly34xsZaSvM0otXg)!xzbEXKZe|7mg-EQt}`u5pu7+&3zy^hCx7W6cHT)+w%24 zI6eQy6rI{M5f;=M54ORQtK-5U6Y7>FVdQ I&MBb@0HBe91^@s6 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/183.png b/simulator/worlds/sim_markers/183.png new file mode 100644 index 0000000000000000000000000000000000000000..406ed24b7761f8de9e7c27e46beda68361b2e8c0 GIT binary patch literal 3259 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwylc$SgNX4AD*A8Z~IPx$! z_TT&yEa(29{o#a~>!F+;n>X~H`^&Uy-*$0^ZyXFQoTG@i5U@2)K6ggqheUZw7dOKp zmQh4X2+VuS8uuzs|G=uvdk_3BWOSIpFp7u`fg8XuleRKWes^NZ!s8$OcQPpWj3QD( z;LXjr2TRYLm||^|`oeI_X!wzoe1L)1aR1Ik&GeL0XQJEA)NE4JW8e@TMMQ@{^)~T} zmAm&I(4PC2^lh~Q5#{-Eu)hk_EAe#ob6Mw<&;$UzWG-d^ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/184.png b/simulator/worlds/sim_markers/184.png new file mode 100644 index 0000000000000000000000000000000000000000..b2847f48355bc9df67e37f84fe252bbf39ab25de GIT binary patch literal 3260 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyv!{z=NX4AD*BX0U40sq0 zp4a}neNHx$W%(N)W;2Dbxaa&Ue(m4OP|(ldFk=)E7XmltNp4O%b|8DsL`^*g4&hNm zN(kKEF8;&u`8TGRt$F$%RKyutI7boDA@KG#x6P{_pGf84wu;o;(Zok;-UBASiYrnx zi`bFu3zII|txh+rpDb~@TBP9fYp=bZ% zOi!e7^1YO2r}w-%yn{i(XB3eV0y+2N9cZgQ6eGA{Gb0!DaPeFVdQ&MBb@0Fn%*Y5)KL literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/186.png b/simulator/worlds/sim_markers/186.png new file mode 100644 index 0000000000000000000000000000000000000000..cab4721044b9a603fdcc462e2b84917f19f215b1 GIT binary patch literal 3265 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyho_5UNX4AD*ADhRG2mf1 zc-isi@-@8)a@-P+s&;8H2AN%WVD-OY)&I-f48<%Ahei>RA@FUk;p=k}Kct?Y5)o%; z;T%PzguvUEtZ^@V^gr0WJ~zX<{@JDEcLj_NGZ;n@u_16{UfhG$YhRfBtuAxhyj=b7 zjI165hwvyOB?N9?=KgSUX50hE>Gw9h>-niR8iFJxAYky>yaMLoC8epS=K7aC*S-IB zhII^sfZ8Y`Is~>Y7k@ChIQ7&nqt^YWSQ!$TMiD6?P+i4n7kQa`Prv`S?9tpya_-IY z)n|DBh^fJVaTJjd0vk$~nKK;Q!JyzXiii$@H|z^@MFcEPawLNKCZ4W-F6*2Ung9-s B561ui literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/187.png b/simulator/worlds/sim_markers/187.png new file mode 100644 index 0000000000000000000000000000000000000000..640f08d4188b3ed96ccfe03899aa6fa276ca4cea GIT binary patch literal 3273 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyI1Wy;okcv5PuQhf)FyLW0 z_145u5v)f5or;dl@#kGbs3sBH}{e%}mMSv||U-?@ZLxW8e@T zMWlp4^)~SZ56<;i8Yk~N!pe}yG>V80f%D&(*6&gdK6he@;{0DJ^Q+GAh%>Zsjv`V* z!1gxxo>w{gAC_4gJq@1!Cb)m*L#74;#!*CU2y95NZVbQsmi1nV+p;q?n`UnRP(4}* zl2iu(OTZt^=g!QqHcEYFXq+!;^yPp04&rK_(JC4q0&i}{J>cI3%*~n44AWCiZT~k~ z8j?~D0;>&ZQFuV>|NrYT3<7GSh?Ed0d-sj)fYfLOOj7&fFGEtUxWFP-)rFuwil?ie J%Q~loCID~N0N4Nk literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/188.png b/simulator/worlds/sim_markers/188.png new file mode 100644 index 0000000000000000000000000000000000000000..c8aab3f6fd56e8ee057b0f6bbbe6755df9c2c0b4 GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*DiKGFyL`G z`1#?#=x<>g3Y_LLkRq|AW)>b2CcQ&xlUHSM>6HO(!?QA(l}@bO?O=!qjgSzHE(lu%7L+KK;E< zqhlBZ)J74}A+T+^c*T`jaSv+kzMeeyh3WlcrUnDXQA9!rY_Q$Suo)P1{!y2?_w;(c#c=h-2>{Hc)I$ztaD0e F0syK>hz`T7iR1Q|GlM-g!$P@Q&c&P>A(lI1B~+zf|U zMiD6?Fz+qvjZ*hzb0%uuuR6mc&d|a+iii#Y+uPiK9Lv+r%#<`vdZGUKdJKbr+9)C= z1it0ye^|A9?}6EAa>Z`Tcxq?NJYF-Ji%BcQz*%^^c*W&2$>&Z?QPd-@)Euo|AR$n_ zO}ygj%{YdCVxxs0sbxQ~{M+-Y&&N_Z*zW6$ncID8XX+O+I?P}gMZ|`{jh)8HZp#jo ypZQ}POG>#pTFn4MpzPf@wgXb5*_Nbi`^i>y literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/19.png b/simulator/worlds/sim_markers/19.png new file mode 100644 index 0000000000000000000000000000000000000000..21a9b25040ce5ee0ae38e46583349bdc85f41e86 GIT binary patch literal 3265 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyho_5UNX4AD*DiKGFyL`G z_<7>L=x=5l?70sr)fw}89DK5H>wm`3|I5W0o^dd=aE>D4Lclit*c#*H2U5RJh=>!X zV>D>tAz*u%yXL~YxQ4*&sz&pj3<^G@i0BY_Gc)c%=fgSp0nYpf6mlkz&MIX z2!RdhRgK|mU$X8?m!DbmBJo_!na~&p0ku&?bO?O&(f{CB4a~d1P`p=i_4u5Jqlu7| zJP1yKZ(p+hxEsp9d6{^{WNwB-ETf2&5SaIp)h=VMQ1W8Ij*X)d+ zoe5P{(mB3oOAt>9)S8Lp00i_>zopr E0QgI~m;e9( literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/190.png b/simulator/worlds/sim_markers/190.png new file mode 100644 index 0000000000000000000000000000000000000000..db9b2e6a35c9f1aed4367f0de56baa5c0f9cda25 GIT binary patch literal 3262 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwytEY=&NX4AD*DhwV8uBn4 zwAk@~+FY(rf);D;+@8s{#QN}}(tQo9-oIpRuw-IL97RNi!0&T2O4E62dWuuKxET(y zj3QD(;M*6beyi|hYqWzOFo`p?aE>CPL*VU8)*okQ#yzOL_J!&FW2OcJ#!*B<2yC$3 zdw_fHOV)eocO{FTr|Q+7k=0}15FSNDhrsR2+%{Rh`XB6`H!rLBzrUE#VFtq}A~pnW z%!_*v`25tA($rJ#A5Z_&9xeSyE&PE6VB8BI{SQk__a2!1ZqFI_zeb~hNKzmILr`w( zGVz2d-~Str1|3O32UNV)crT;DG1k$hGASWoubUwv@N)i}d{D>4)78&qol`;+0J~F( A1^@s6 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/191.png b/simulator/worlds/sim_markers/191.png new file mode 100644 index 0000000000000000000000000000000000000000..5749c45111aeb46e2ac28e82e328995ac5a078c2 GIT binary patch literal 3259 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwylc$SgNX4AD*BUcf40#w1 zTI~2gZLSoP+q3#~sRb7jnL`{POtPF`vqloAb`2CeBeC>7aJ0)@Y1s5;0&#c_E{@3Xk;?nGB z=7xvBws`#yjpxqHFg1QQyJAy)F{8r_hEYUp2;8XKdmuDD<&@M+Cg#z!2TxSQFn|fK z;A++01HS1gUFyHLudgy1tv*PtJrUK1bFxk3Y;J}_ETf3%5cu|*bzRhY@gFwx)|?%! pd`WG4yxwz(tQo9-rweC_|C!5!a0hF3xT&Y4YSjD_8gO(`G~2( zfN>O&5CR)&s~PKx-IlGHsA-%pS#@Uh4h99EQABhIwjpx_LlX5=4jF*HRnY?|HgK}bTr&Z3b)^keZ69QV);@wp#F)ctDnm{ Hr-UW|a0~F~ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/193.png b/simulator/worlds/sim_markers/193.png new file mode 100644 index 0000000000000000000000000000000000000000..80ef0ac8f3dc822e03439f941374e0102d4b44fb GIT binary patch literal 3265 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyho_5UNX4AD*DiJ*G2n4H z`1#?#=x?DLe@~N|Fz0~t>pu*k`?rfTyc1;L5FSOug}`m&$$hA`_9jje0<*K z*=PzRB?Cf|-*)kei#zu+$nRiK@EJvw`U7Xoi*8fK^Q>^UYm^AS^n z0plnlAp|zmRyX!rDF(2C&uc^D zG`pLtcQ7dUj3QD(Am@JEgT`xTW*8ek^96?Bh5z#(j^<@jiZY~(tZ3Xn^QYmTx!eqg zSVj@iA@J=jtK5q_aStl5y=DE;IvRMSrX67T*=6 OPsP*K&t;ucLK6TlRoj06 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/195.png b/simulator/worlds/sim_markers/195.png new file mode 100644 index 0000000000000000000000000000000000000000..7c4bc55695da6b00e81405999f0428a0540cfa06 GIT binary patch literal 3270 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyucwP+NX4AD*DmHBHsEnM zxaz|{?bX~S@{BxM=XOUoY~isfcq_l))%Pz<2P~Nw5=Rk{A#nZ73{zvaeaGZxK4NMx zU>rpxgusT^Uzqr}`0F3w1~Se+9t}TIk`E~Gw%=MVzT>jg%uk{IW}gj>?bABA84j_G zB2q$N-DPf@3$r9QryuM2kTU-i>uA|WN(fwk$(py-Pyd6BvHv#rWgqOs8Cp0;5z!$K zyIlOiR8ynWexI2?#qK>HEdfa>0fDtGtPrf2XKM6xb={dWlX(jn9cD0$B4R_}Mrl=J z^xDhZAMEX)1@B}~@EJv>onx)1;W literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/196.png b/simulator/worlds/sim_markers/196.png new file mode 100644 index 0000000000000000000000000000000000000000..c767a64f9f127e385fe2e3eb5c8a3b5d89b3af6b GIT binary patch literal 3255 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyou`XqNX4AD*DmHBHV|Mv zXprz<*I4w2{{z>1GueJ9NOwm+XJ7Gat{lS|K?V-tQAAt_+%BINSw63Eec`%2kC++^ z7)KEaA+W*LwjnaT>cH5-W8fJyH`;PX@3 zuTN=jpQm`1l_8O76cHT))l~-;U;EOaKKCUf|E@2G@BB=O|Ega+nt@3vzknI|gA*_V zPrf!aeBZ0dwW8t-Eu5o>ln{9PlCfsfGIoInqs1R7#UH5bYXxTC?;lV8(;iKAq-MIc k#(NngMr&M>+PWL;*=Gw02F0#;1nQA^y85}Sb4q9e04dqX6aWAK literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/197.png b/simulator/worlds/sim_markers/197.png new file mode 100644 index 0000000000000000000000000000000000000000..fe8260210066a703458fcb13cc787421ffe41d23 GIT binary patch literal 3263 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyo2QFoNX4AD*DiKGFyL`G z`1R4h=x?C~@{J0cD~)+Q{2nYUt!r3y|28+ncMgUY&QU~M2)vzXn4QK`b4+sPBc=ue z#!*B<2yCdWW_)L*9DMD>lziK?Hg1MPETf3%5cu|%HLlcc*_w%(&iy~9EVTcus>i?~ zJc>vOf!o`~E3WR^dtmmyFEfmdpLx&E=@?CgBxOQiD%|n9$0t%bxZ)fuLn6~CB02%!3O=KVln}_dANL?IJLQz*OrtL|W@`RfAHyJ^Hj0Q2fo=KvADmu)WAe8GX6H-G z|DE9xXK3LZMMQ_d+uPh9CL0^2_WI1MJiXlRrod?Uk(zvfLAd7vuqK(DCb!vbSR%-4{)yqCPe1?XV*syKvK*9ZRg(dHe`>68%g2zjsK6iIRBv@BPCEj N#naW#Wt~$(698F2OQ-+< literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/199.png b/simulator/worlds/sim_markers/199.png new file mode 100644 index 0000000000000000000000000000000000000000..7f836f74829abc45e7cc607964847e30427cdc8c GIT binary patch literal 3263 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyo2QFoNX4AD*AC_$F%V#J zyd3aP^RnO%_k#CVLOBZ*7<*%Xv#$*Lg*6%5LIn#Rnn@QgF&wOJT1k^?m(IN27hyRCDHZTePKBYa~?&j)$XJkhcB0Pl= z!vLqk3Z=L*UI!xdZjr xzA!M2COuM<-nMUFm=b!p84j_GBBDd!AHyUa5yAIKo6mxJCZ4W-F6*2UngEFH$w>eJ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/2.png b/simulator/worlds/sim_markers/2.png old mode 100755 new mode 100644 diff --git a/simulator/worlds/sim_markers/20.png b/simulator/worlds/sim_markers/20.png new file mode 100644 index 0000000000000000000000000000000000000000..43afd2da8c30b42306364647cd4c99e541b732f4 GIT binary patch literal 3258 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyqo<2wNX4AD*BWyV8}Kk3 zTy^1}wzjuK$fNzy4O4h+cAS$B_*!4h_&|=a!C({-7Xlk>jnmHdG+wt*4vt|EP#Z<0 zguu3Z{SPaQjZ%Ak8X5H%ID|(L(IIeqyLiPFshLG?%l4c)(=YkU*tvh^L#EMuOIiqQ zsI6{vpF2@AJLS}Fxx>?o7#(IXj3Qz~;Ksha2Nqv@%lcsZ4h99EQABhI}T zVRqUXj`?q*cM`2}G>{=701Cjs^psOlGmXB?2(P^QfBtCMM^cjwT=1>E&295CwEv;^ rXaXcPW97`fEzNL!wAdpl+}bP0l+XkKcyLnr literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/21.png b/simulator/worlds/sim_markers/21.png new file mode 100644 index 0000000000000000000000000000000000000000..9821a953188e8295a703b3a3d66dabb8a03d7936 GIT binary patch literal 3266 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyr>Bc!NX4AD*BVzoHQ-@5 z`1#?#=x^&EI!^E`TgIr#rxW#DKH%&BZ%hYlnHUmB5s@KKopxrHB=h`2w`DsR6nsVz zDIt(^Kkh+bddexOnTOv0`9FUrDSAhP8XS7rDW@c78l^lt*;ex^Ic+ovlA0_)f!KQO z%#6Ejv?l=FE1V-k(CFfk;vs0*0VX*4?-VwKkEnxfu?zj3QD( m;M&f;j0L@;;YL!j`NyzZN>r%pRrVQB=fu<1&t;ucLK6V)-(VB~ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/22.png b/simulator/worlds/sim_markers/22.png new file mode 100644 index 0000000000000000000000000000000000000000..f7a1ee61c8e0d5f27b15afe0c1c8bae3690acbcf GIT binary patch literal 3274 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyIL{AsTkcv5PuN~|?Y{0{C z@Ur9I?Q23N%y(40H3>)fZku*& z*WLr~N6SHyssT_TxcJ&z)(6{nFevzpB2q#iXYOrjhU=r@MpCkQ!+d~IoVQ{g+X+x7 N#naW#Wt~$(69BcOU1b0O literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/23.png b/simulator/worlds/sim_markers/23.png new file mode 100644 index 0000000000000000000000000000000000000000..0219121ab3b9c443313393919134f6fcd1892945 GIT binary patch literal 3268 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyx2KC^NX4AD*AC_$G2mf1 zs1fjAS6lRn-~oZ+do$TQe)4gz`^*|r>#xsnMv#F+coY#A0=LVLt+7siV0vz5I+r13?ErB^X!&m=+ehh~Pq?yR%J|1`xJS~y1$ z(IN2mC9Bj~0BSmirq@mzgsh+rgmVGm3}~fj8{C*N6&eelpSpbx%B9 L{an^LB{Ts51Nkk+ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/24.png b/simulator/worlds/sim_markers/24.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc7bc8910c8225be844d5fbac75801de02363ba GIT binary patch literal 3253 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyji-xaNX4AD*BUbq81OJ0 z+?Dcw>Rm~ugIS--xjl}3$apKi;8l4QV?rN;!;DcxTnOAKO*>;{%x0G?Kl2e&g8}0x zA|V7eWLGu1zf}&tHc|6_70>@E+zf|UMiJ2=udVM}O z-IvK!omswvLBVGf5gh_=X2m^d{q}{)-|F*>(iE=mJBijg8p^;B00-Z-FHG+@pYQo- zynQtENKF->01SM6VoGhwspWHiO1vv(9Bs0Y5CS($_a5M0`;zs6rXB-_@F*fB1fr{} jm=k(N>sylQ+kXsC-U$mlkzOzd)F1J5^>bP0l+XkK|L4cp literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/25.png b/simulator/worlds/sim_markers/25.png new file mode 100644 index 0000000000000000000000000000000000000000..2bbe12c572f5942a8f1731d57dbbc4aec3411c64 GIT binary patch literal 3272 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyzo(01NX4AD*Dhu<8;ZCd z)L8L<+ElJT8x!W8m^YJc-IinQYdD^32HC zp67fe<7n(OFMVwOhrrnhQNl}-wg4kZeiC>oVsx4jQZ@zhnD&b9KxfBln}VRo&SJ(dP-{VnlpD=pO0o? z(z5W}nKLJfR`k!TUnb7b!a0ga34yi6zgZ5L#xV$}jUu8$;2Zmb4rz{i$L1^nbx}NB L{an^LB{Ts5zN~l#+wzs=3?or9r;a}*I50&iy;W~cG&IVL&t5mSQ! z<0v8_1UA%GH@eTAsF|H|>OyiFPpzbUF{8r_hEYUp2;A7W_rT(7C#D!1Jq_)zygGev z7dOKpmQh4X2z-0XDp#7P|6$3@<7*~rI@jDh9>XA@Hj0Q2fo=Kv2V&DxPD#x?^n5hv zNJ=@tpmR7lQ*v|Ku|1umIhWLe3z&0%oZq#Vfl-fvLwFPs9Rjzvi&tC$hFgueIB{*9 s(Z(P=1lAT;Ge3|T4L5jz5X1P(sGTgz7yDMy0n{JyboFyt=akR{0C%u(W&i*H literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/27.png b/simulator/worlds/sim_markers/27.png new file mode 100644 index 0000000000000000000000000000000000000000..4f78b699db7b8821b81f95de2cfe9a5ecbce590e GIT binary patch literal 3267 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwym#2$kNX4AD*DmHBHsEnM zxaz_`?cLle@~k|DA9qJLY+k0U5>ygHc3W2yCcLJ7Z{ngIcrWrYcg_6QC#JaD_HZ*CVi`q5hrqWlOz|&f#Wk2;`@(ep_-N`QDfOWgeUj~U zlK-DEjaIv)g}?^ey$8g1Efe2y*~;kY1%2z!hW(F51Ch9f3#5ey3cXp96Hiw^mvv4FO#o@*z-j;h literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/28.png b/simulator/worlds/sim_markers/28.png new file mode 100644 index 0000000000000000000000000000000000000000..c0c75c4199bd1f7ccfacd2cdb81d9c35c04eec02 GIT binary patch literal 3271 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwypQnpsNX4AD*DiJ*G2n4H z_<7>L=x<>gv|1Vh^ESVS*M-h=BaDArX>oXD+y|pP_+zf|U zMiD6?u|H8z-WtsSc?%I@7tMA<(4Lu^W zEnFEm0HH}RbpM;s7zP2gQABhIl=>UgWKBI`}5O^~y?m-wZ z_^jW)WS#ds^nHEXXeB~w9SW>OmdKI;Vst04?B* A!2kdN literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/29.png b/simulator/worlds/sim_markers/29.png new file mode 100644 index 0000000000000000000000000000000000000000..1a4710443930c151856c5e13031a79e5e40ee930 GIT binary patch literal 3261 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyi>HfYNX4AD*AC_$G2mf1 zs1fjASDW`qaf74ky_swtbNRW~eP#`*y&uQ0!<|9FXA}_^0y*b4pd*GR!a_Wq~+2?8HwrOqL42M`o5z!&=?JeuSg{9Sv>XkmTM}v;k zlmiSsxvg%?=1kQ56Kec_lcF92hwvyOIs|TS7q7S?IdhZSvJX3FzW=W^8hj+B9$@f2 zSZ8dM+UxVMcr@rp3Ob--aOjyDJ?-(4tU9xL2XXcFXu}2)0y+2N9t6Jr#`Nc0`_I)e t3<7GSh?Ef6cJ3{2L-uI6k(6w{G0!|HEd1%xq$*Iq#M9N!Wt~$(699k(*nI#1 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/3.png b/simulator/worlds/sim_markers/3.png old mode 100755 new mode 100644 diff --git a/simulator/worlds/sim_markers/30.png b/simulator/worlds/sim_markers/30.png new file mode 100644 index 0000000000000000000000000000000000000000..15272dff3e8ac44c9784e7541f48a6e4707590a4 GIT binary patch literal 3268 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyx2KC^NX4AD*AC_$G2mf1 zs8R4=SDRPG-tkOjx|D)0Gxxf`tRc1j`V40T890PT5pf|<{jMjn{Mdo)H`>853<7GS zh?Efc=A&P5WnSEa&udRP`ymtBFk65;1Vzt7kJLWiM-d4jupzywaq+h=OzLa3gKZ*bkCuNV z75|{ZFX}RPjhz3rXQN4v#GJQb>vD63V>?ERJ5oa64SPzL7{3C?($%2uiKnZd%Q~lo FCII>?8WaEk literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/31.png b/simulator/worlds/sim_markers/31.png new file mode 100644 index 0000000000000000000000000000000000000000..39d6615d5b4d5b4e9390b6747814ec265f6536e9 GIT binary patch literal 3275 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyIBu^K|kcv5PuN};N;=sdj zaCY-2|H!@r_KjPvgmO+;9BWeXuHND5|F^6SwoD9(qlm~5xPE4au`!$7W4W1+m>LWi zM-d4jupzsev97q^$5J^s?VeG}v&p=Lj1DsxMiH?gaAWJ<1Kf9SbK7J-GfYo8wY_ep zq#gr@@F*fB1a@x|ueh>z?}6WQ-m*qK9nHj~lwrUe+$e5kocwO4p>o?jqc5jxI=LAR zv5X?3Ltx!oR=HAO3Y=eE-Kc)n=2`H6BXNcn&QU~42*lpz-g5z%g(sgoF=e5@+2^>Rm~$gGxVlvo5jtkTF+&!K?Br#)LiwhZ&=YxDdFp&p7R_B=h{jbv}iRqrpa6 z2;7(#_n`IMT*KGrBre4;2&j!BqC;TYa`B2QGvgk3#{Zg8nto=k`tC1=ZzSZPcI#>=~Dk~F3!-xIf{r5fwwPN<1+3_7QgG+`RLN*kNJ8G9KxfB z=n%MlnS0L#P&Ur4YE-}b(|CTB(P#oBHU9zApj_!P@q{b0;vUqF)*~cUqu_dERvg2< uqpS>xOrwaD5P0pA&(Jg4>LaPIa6?{MRz%=cNkSl~W8&%R=d#Wzp$PzI7FzKD literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/33.png b/simulator/worlds/sim_markers/33.png new file mode 100644 index 0000000000000000000000000000000000000000..ad84316bb70e8a3bf2185ddf0d5e599623e08514 GIT binary patch literal 3263 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyo2QFoNX4AD*ADhRG2mf1 zc-isi@-@8)^4t<4Z`OG=T&cM5!0La)s{h-?8Quvpa0rhg;zHoIaq_h@5Y&gojK$GZDsvTZiYiFqllCc`1Y1H?!}p&NaJLWVn&A<45NtH5V)~#?*Z<$x4A!X u$3HtiT4j)0V{SY5mbW2$G~7rEw{OhF*&>3y;q{rIo{6WcpUXO@geCy`r2zH- literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/34.png b/simulator/worlds/sim_markers/34.png new file mode 100644 index 0000000000000000000000000000000000000000..c7189c82287263d9aa06a390a12322b3fc69a5fc GIT binary patch literal 3268 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyx2KC^NX4AD*AC_$G2mf1 zs8R4=S6lRn;DH52w`Q_=%rD?x_m?%Kc77a#g*$_S&nO};1m4V)+?;mofa$jrBH|1! zoTG@85U^b?{=?z-7pDBE<>D2W&zz3=I(a8?!9JQkAt8|ScBY|n@H?Z=M#g*o-#@!& zKR3f6mQh4X2+X_8U9-T}IPGlD&Xb@dXrRZyAv}tR4uNVv{ST{Zs~XK?zZ(7t9t}K_ z(hex_8n2z1VQZB7B025MpOo-IMu!;;qlknMxKUiiShv}2*_(-)#`h21AFV-1svIFT x$OAd!|30G)7*gABYip~RA4rUb8%g2zm*LzaNtSvy!)c)IiKnZd%Q~loCIEhjMn(Vt literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/35.png b/simulator/worlds/sim_markers/35.png new file mode 100644 index 0000000000000000000000000000000000000000..02bcf5682d55f8dc8d57d2584ea15ff62a502db9 GIT binary patch literal 3260 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyv!{z=NX4AD*BW~t8}Kk3 zyngua_BGju6a?SkKhM({Jsxv&|#Fd(( z)e9s9Y;SY#d6lEjuz$4jAi3@YRvznjDF>fBF~#3D?U`&r4`Nl8^sEs00 zLSWl+@gGjhq$iMURf0~Okv~Z3hqC?>A zOIEq9>wGN3m+g6Nm|yh#c+8{G^haX$LnOf|-u(;Dj#eKe)tX>-C`njxgN@xNA35YLs literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/37.png b/simulator/worlds/sim_markers/37.png new file mode 100644 index 0000000000000000000000000000000000000000..168d819a1e02871951573cce63ca854183abe8ae GIT binary patch literal 3259 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwylc$SgNX4AD*BG;o81OJ0 z-1XyseA)d1fhTcg&zL6(M{GIAAMmxhn(=`gV}rpcA}$0r*czvu?PAZEl;aULQ;4;5NC>T6Q;&j~0C-mHeP`Z-uc@YOjxE z)tS{ie`lH(GCIs)7)2z6z>R%-4~SbCCto`;W#;iSds@%$WKi%KMMQ@{&i%Ltfv>+Y x-9N6LT|AolNX&dUthSpotQ*a>Bo$gWw`U7Xoi*8fK^Q>^UYm^AS^n z0plnlAp|zmRyVrOov4|ea%%ONKQk29|N5`Tz#%+}hz^0<+r=xcNX;yATgGFXc5L>& zPkN&PNNV~4hT((B#zv{VJ~Jy%PnhX%c7&B7k!chW9Rk0^*oqTZXOA{+AR+MfHuoRr w*WZ{vh>QjtscB+uaW(S;snKvFDct@tNGA#lG8U~l2kMx3y85}Sb4q9e0DrMxZ2$lO literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/39.png b/simulator/worlds/sim_markers/39.png new file mode 100644 index 0000000000000000000000000000000000000000..069b1ba68d26562469d9b5529617ffd54a9a67c1 GIT binary patch literal 3279 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyIG*1`Dkcv5PuN}-)G2~%5 zcscQte`MbQ`^KiLp_~(D9W~qW&3?hF|8H3vs#zEgjUpmLVBbu`>@*&mp9G%fcA}>7 z{G4aH`L=0oqtywK%@~NXYx5+Hjacs)em-9^+L$4+EqCMAc5{Yxqm4k4+Q2vXCq0wm Ua^lyX2=xMX#~ZQC5aT zrcp#n2>kxW)NiF6eC@=P@Y*wHw)03<{g>1uF5E{GC?o`KZx^q)A~mzfZ5dDH)#D!w z#Ti;SM-eF@@b)%$z=pJAb7mUmKVoVyU>rrnhQNl}>PG!7dHNrgd|ssazG~)Z-X*Qx z1n1qIdk;*$_LgeEknAN~;^y=T6kDi=55PaEN6T5gh{G z-m?BUziaP-?;lUwJsU0kNG$v}l;-6##5^7iH&ViFgMH|IaXx*4e|DhWiKnZd%Q~lo FCIFg&9`yhK literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/41.png b/simulator/worlds/sim_markers/41.png new file mode 100644 index 0000000000000000000000000000000000000000..6c5b405b8e0e244b93212bcaeb81606554ac77c7 GIT binary patch literal 3269 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwykEe@cNX4AD*DiKGFyL`G z`1#?#=x<>gG)MMZf9z{fl!0qkg6<2ocJ@C8c)yZ>jS??WZ zWk_TiMWlql?{7@~R?5NGPE1jpU$x2q@66FONLm(zr@@L%X5tJjoTG^75O{l=d(VZL zlAF_x^+;50l8palsK=l&TKI?=!2J0)CjKbnZU>S3j3^P6w`U7Xoi*8fK^Q>^UYm^AS^n z0plnlAp|zmRyVrOz0GZt+3Pd&XNqzD!}l=^0&1g(=n&YJum6F6?M%b;lv5Xy(|)AX zKO0SiB<4YIB3uhhgfD&jEsc}!eL2~-gF(S(6cHT)Irrlp1Oii_)XY!oj(=DLw* z7*p_HH(u++ac1R-Z+w_9-Q4ivj{bsI)zyp%{R|E>MiFr#aKqU6*_ock`p11fg^Z)Y zMp_8m*u3|^>UZCm@~xDEYc`pQGqiAyBBDdU_BQvPS3N#Em4lZZoA8XO!GLiTkq`nK z(yJToU!3UyhF_YT@nP`yn&;rh+E2fqJb85+kh t2&j!BQbM5Y-8Z%aQlpI(lGL=x?C~^4tfL{-#My5IXFf{huLp|7C85Vitx&qlm~5m}i`PZKh#CZ*58!_h_(@ z7y|QNvc_#)F8;$VyQHTj zhQJNuy$t^&FLT$-2L@p%|6`^G1IAHALI`X~uVPGls~mi7qUQ2rcaE?!Br=U6qC?>P z7pC|OUtsaK+OBQ1>?678&w2Zjx4}@4fkSu{5gh`*nZ5su3jEViI}Ylfc)I$ztaD0e F0svECs&N1S literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/45.png b/simulator/worlds/sim_markers/45.png new file mode 100644 index 0000000000000000000000000000000000000000..f4d2a10b507d704c9741a53bba079273116bf141 GIT binary patch literal 3271 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwypQnpsNX4AD*DhwV8uBn4 zwAk@~+FZ6z!WL`p+@8s{JW$rx}b{RjrBUyaZ-S+0v{+)+eNAoR- zAy8e_=)U$P>%HgaCePIl{$VZ7(84*2hz^0bFInYEmx))*@2}cqy7$2E9SjOSqloAb z$nn?zu%a~e)J~(PlYk*;o&3(`rs`-hNNOzrED3F1`RIRG0!o4vo9v4j9cD0$B4R_} z#=N)(f!S4zb;q^7>;^eX0rp3$}+Nlo86hHzm~!PbuL`$0VvPgg&ebxsLQ E0JelG!TBc!NX4AD*AC_?JMu6b zoPGG&{7)84|5+~GTIba;XX=FqJO4MV`hT07p_+x^&?q7@1m?{&Oi$z4b4+&TBc=ue z#!*B<2y95NW-Pn=meuZMj{b+*7zP2gQABhIe9O^4ux|6-1L}7tYOep4qQ}4?Jc>vO zf$DAIKUP>9J?-(SyqcVL&*4}|Gj!N>_`ebpyIN3-`EaFi8Hitjv}H%;4gz(qB!sV9nbcGIwzj4elF{r G5}E+^jA@ww literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/47.png b/simulator/worlds/sim_markers/47.png new file mode 100644 index 0000000000000000000000000000000000000000..1fde55b0595a33c531ca84d37dc75411fccdd998 GIT binary patch literal 3266 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyr>Bc!NX4AD*DhurH4tDp zsIlY!w5e>9_?s_2txT8Nv6=Ps+P|zJwf_1HX9O8Ighvr^A+Y;gPh|SB1KDqsgJT#3 z)J730AyDS4e<1$bM9tSHra1rEbbB-aNlHJ!(EG5WHszF+(bLd#Hay>VGAQ_rB2q%& z&8)Zw%x_<^+MTyDK6d)fGo}Uu#!*CU2yDo%YII-wlJ&=3JL6-&?~jHaNr?v>dcd?d zZ_6_AiVL&%J&heL{zxkRfQmsSVB@u!hQH6uFt_|-l>cZn1CvsI!7}i?FRS_=&M#tg sn87fLNC<%&w=PRFB#&lWlCteL=4+cp1QdLax`R3=p00i_>zopr0LE<`UjP6A literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/48.png b/simulator/worlds/sim_markers/48.png new file mode 100644 index 0000000000000000000000000000000000000000..160e6c8b508b2fc43e44f1d9ca690eba6e659da4 GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*Dhurao}+{ zm{agy*IM++;{zUZ?)xxL+WXQ-MkL6}QVrnp8 z97QCAz=rH<#(%~AK97DyWuTzj<-TmrM9uX^pADSjzW&o=;1C`~M2Eoc zZQ>PIBxe@&`#dZ*e*a%U@ByZ69%OHdXb&A%k)UtrO9puCXLVFtq}A|V8B n?A&h7aBT;Jg3l--It1SE8|w=T$@D9lfVw80u6{1-oD!Mx zOrwaD5cvI#DgMQoo=D?lk77oL84RO{*bum}Z|?!|sO{nvmn3HzeK{HTb%vxKaS3)b zXTw9_HZc6I?A&``^0n?|dtM#i)5Xnjh-DNJ9RlCpvdV3BTQ+B+rgNH{@#o}wU(?fe zFevzpBBDbe=YCwn?rSHe7#pR&FkJtLslkA86p;`D8)~Z=xvrg=0S-Uo7zP2gQABhI zY|GdG(0c7H>yLK(&xYa*Eu5o>ln_{3T+RGIYBbzPN;ZEPuWk_)bgWw)0qUE0y85}S Ib4q9e02}f=P5=M^ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/5.png b/simulator/worlds/sim_markers/5.png old mode 100755 new mode 100644 diff --git a/simulator/worlds/sim_markers/50.png b/simulator/worlds/sim_markers/50.png new file mode 100644 index 0000000000000000000000000000000000000000..8e39247b678a1ca5357786b7257d60438152f5a7 GIT binary patch literal 3257 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwygQtsQNX4AD*E%y<9C;WV z`)~dUmOEas!DG&DEyhfFsky(IL;mLJGrSRG;1C`~#Dze0+Oat^4L{`HnW(8poQ~0; zg@-`(Ht`=$<<*Vvi_?ysshPR3eda@^1_Q=XL~ICbNUv@Tzx$T;UWwbXiqzcE6bMgR zL^6OWu;S{?xCg%FDW}e8&#s)N`2UrDF{8r_hEYUp2;A7b_rU6RC#D!1wVwZJBtIH@ zBqbhT=rQbuhTcvF1)otwN(j6G=H1ZrlvA=ZnV4f31k^?m(IN0HNB=|Xxo=D##Kaj| tI7bmFAuxCMUd9c_SQ!$TMiJ2=P@mT;B5;O#ogb)A;_2$=vd$@?2>`Z@5MBTP literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/51.png b/simulator/worlds/sim_markers/51.png new file mode 100644 index 0000000000000000000000000000000000000000..d568e2b16aefc1eb9d12c52fe04ec7586079e9d2 GIT binary patch literal 3249 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyg{O;SNX4AD*BU#I81OJ0 z{Qme~^tY=59Af3xmm5Ub#nygi5Bck_&u~VNfkSu{5f=it%a5(GPJWO+M>{x%K|pO3 zkrD#imWx+h-D#8>JM&QSzyHa4#0B|i+JuC_?aSPIvSMczt@C-f)B6AaZzSZtOYLn6~CB02=Bs~W@CzGU6kuby4Z z=rDs}6p;`DH|E7X2u-hQGzW$tN5N?Dk&=4AVV7OS_(N~Bz9qFO5uIMeoY2F~aEN6T c5gh_{=aqy77Hxg}1=JVuboFyt=akR{08zj3egFUf literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/52.png b/simulator/worlds/sim_markers/52.png new file mode 100644 index 0000000000000000000000000000000000000000..0c1ee419131c5de3d73ea9c9549e65df678dcfd3 GIT binary patch literal 3270 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyucwP+NX4AD*DhwV8uBn4 zw21kyYt5@7&)*}Hmo7Eo9Z&bQe@v_P!X1Naf(T)MtrpdtUvGB`(xQlP4quzTJs?u)@?Rwckhbm&C1@(ZC}y z1i;~EYn0mS^RPJXS+X7jhwvyOIs~fo^b4-++IztB_ctc?y{{7Ejd z*1lW7GBC5(XXejTXMW?)r$@t(=+J|wG+;3PI4w7GliRX0HQe)y869RYj3Qz~;6`zE zPky42evmi0Bab{f#O9#hthZp0B?##XMyi&9|h5 zz=qoDM)$Q7HPcg0t(G(XEN1t7Gzf_+_aGGnIQ-_`=C*n1+b>yldY0s8H9ZCn;Za0% z2;AN-{=+Fd?TqA1qt7#DZvS8@&d|a+ibx58x4`t5)$3!a9NZ@NSHfYNX4AD*BU#I81OJ0 z{Qme~^f}W+ok?>u9lUtDuYG0@`RlLGa7K`ULwFPs7Xr7-kFBvzeqcOLJ2-|xKy4I} z5(3+ni(9;!8TVj`>D~js?^OQxx9#C(IK(oFhz@~oUzpt2zGQt6JDT`N&3mxKS9@)$ z=5)Dd=Z@EOjV3;l@*Xhp>2Fyk-Y{D7kyh}7QeIZ<%ug{hi(V$b+wn!WJnoq{|6`^G zBgO`UQABhIY_Q#XfE!r)`Bkm+`FTbEw}?1H3+E^zIt1RnWSy~fnYhKvVEN+q(Xx-E rvJa^En(bP0l+XkK&i*}6 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/55.png b/simulator/worlds/sim_markers/55.png new file mode 100644 index 0000000000000000000000000000000000000000..728a1c4dfa22a460612ccc28db58ca60fedde17d GIT binary patch literal 3258 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyqo<2wNX4AD*DhwV8uBn4 zwAk@~+FY(rf);D`+@8s%a{u6>(tQo9-oIpRuw-IL97RNi!0&T2O4E7v9NTGhlyx-N zNDP7Msz&#@FInepStedFLH=|6P6h>^QABhIl|@&Mzl_7>hHsaE>CPL*VU8 zR=KU~d@RG4#e7ln2kHz$D1Pnq9?M_i!}pl2USkvu@O7Zkv~({SVK_ tFbJrPB2q$N+qo}n2P8%dJd(=$zYKqUgaxlNwQGVpC7!N+F6*2UngE>GJzW3* literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/56.png b/simulator/worlds/sim_markers/56.png new file mode 100644 index 0000000000000000000000000000000000000000..002528d58dde53ee6147809de0eb509d6158e8a7 GIT binary patch literal 3258 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyqo<2wNX4AD*DhwNI`S|$ z_TT&yET{h9w?&0V+HNhzOo@z=cj5tG_wHrb;Lf1nGm3}{fj2WHi_?xB$i6dCQ;&f| zcodNm0@d5Z6Ryk7EOJ}6=e41641<8$C?YxpzUAm2*bhv0=_#kqM7PO()*4NJq-MX- z^hb1R!_1kW^taB~=xLviWYw9~JBTYTN9z?x2)wx&*AQEta!PXMq5s8<4l@`=5eXr1 zWAokv?swm^+P%!t|KMo%Y<CPL*Ori^j%Sbb+;^@f;uIhu6{1-oD!Mj(R8zD}{Kq2Gy$td@7!-U)5z!%#!7z$Q2!R{( z;vTF%H&yfXsVU*LXXfTtUY#8Kh^fJVaTF070vl}i9tdCil6Btmn3+W{kKg$@BYZR+ zl9UaBiLk-{+EmTwr$qi~i!-!vjv`V*;O$FRxfeeAAACWX*!Je?(Mp7*Iuu-qWCJUa yk17ABj<#QjZ1cgDU7LB2LE`afl|f34xxxPPDsi5aq{;t4eG^YtKbLh*2~7amDH&7% literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/58.png b/simulator/worlds/sim_markers/58.png new file mode 100644 index 0000000000000000000000000000000000000000..e357a902c46fb824dd44fb2e9a907744c69d7b9d GIT binary patch literal 3252 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwywWo_?NX4AD*BWz=81OJ` z+;!rg_HJ*Mp#S|b4qc5hCGYqHzV6=3u)&={!Dkc^7Xoi)N*1RbJ8*r6a&QcTfZ8Y` zB?P|Z=znN@_l+svN;%l(X8lv91_Q=XL~ICbNUv_>FWDwuartgsL#Q4DhwvyOB?PL0 zL3dSlW|7;n0}SE}Eu5o>=n$~I&AsPUkIzo!;5NHsleg|9uB;rbR3IVn=4RZ3(DLfW z^N&y78m%-)tuw)u#ytc_BiC8zCsx_Vwt2RFkZmQh4>2%MWMX>7#0@A#SdFGs6f q5?dS_inp6HT-z~P;*k;pZ}=w~N^oA@n4Asjj(EEIxvXHfYNX4AD*AC{Y81gV2 zyzKaMxsLmT`HqQKLOCZ`A2Qo<&VIqG|8H3vs#zEgjUpmL;MkK}8=h0M%zpe!g^g2g3rAj2PjHAxZEp>%U8qGe2EXukPX=t#nBY zfp2eF?OvSei8M}*Gx}`gZ`(5(ghV!4Aj+=Ilr%PCy=VCOdGKz=}fp2eF_g$DNxjF6Fgl9~n6$c3+u%WiP z(S7bj&Fqv@7n0NVywrXFXfyzct9Ie-6L1)=ov4`(4nv+=BfHT=2oD@$7@z>u-;$^Q zp|)nz|5Ky&FT7?TlJWY^J%$~}M#GKB;DRWt&zd2|_a||B9jJTa>FVdQ&MBb@0L1=* A8~^|S literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/61.png b/simulator/worlds/sim_markers/61.png new file mode 100644 index 0000000000000000000000000000000000000000..0b1ddece865b3b1ec038cdd3f7d119e95af402b3 GIT binary patch literal 3255 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyou`XqNX4AD*BUz?81OJ0 z{66_#^tY=80xEjemm8k2h|T@Yzv9>ay$l=N85Dd*5pf~#W~O9u+OY%acP47;F>nZv zB2q%2dYgE~RoR(EZp&&;o#~hSwDSLZrUnDXQABJAY)G$e44*quvpnV0b~)qZXOnBY zxET(yj3QD(VBTBSxKj6Jb0%uuuR6ms|IPIn1_8BEM05yz%hCU^YV+O$v(w~?-IwwF zyz+nk!_jO!T8hy)1VCk<{fj*P56d?1Wmr9$XGtouKzWvZ?pxLex}&WYQX6g7<<-my gy`%LkNzIHp2Gar&ekN|!UQmz3)78&qol`;+0KI@Wd;kCd literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/62.png b/simulator/worlds/sim_markers/62.png new file mode 100644 index 0000000000000000000000000000000000000000..a3d685738634a722bf908f69244544e609a7ea74 GIT binary patch literal 3269 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwykEe@cNX4AD*DiJ*G2n4H z`1#?#=x?C~^4yMTpVOo!JUZa~`VT|s{_Wxn?*th*ghvr^A#mF``PvzYie6)*qpS>x zOrwaD5cvI#sozRD_}Ymniu2Z-9SuK{k`E~GqLhQrotUz)f96c1lxOGnygC`fAfPsi zNC|;$`T8GPubr7;Y@BxF!erjwN?~z^7S2&bbO^k?&297QPTT{}?37byCiDKCF;l%- zbTkY}NAR1RKttY^kgLuY@pFNVgWnR&DKUNf8y!t=d#Wzp$Pz$vE1MQ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/63.png b/simulator/worlds/sim_markers/63.png new file mode 100644 index 0000000000000000000000000000000000000000..49305f7e779207f0a0f0b95f69b19f04765ba4f7 GIT binary patch literal 3272 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyzo(01NX4AD*ADhRG2mf1 zc-86W@-^NM?3g94^zGJSykvCYft9_()%R~%8>(3t4viurL*Uz)8K%Z;agTd^3K<<{ zFpMG+Lg2=}y$2SbJ2A!7=xMCH@!`p}XIL2$nMM)OA@KVfQ~ZlFJ(0%A_l}H)9vLYI z6o46b;~xB;bDP`dW$6F=qY03tPy~iwf0S}CFb^vl`seJhM|yt)BNLG=@PyZ4?n50^9QSKddONX8d=) u|L5w_up>3;Y&-Xsw;_8p+(-(yZ~S?GMTLa7tY-&xQ9ND!T-G@yGywp1>=>f} literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/64.png b/simulator/worlds/sim_markers/64.png new file mode 100644 index 0000000000000000000000000000000000000000..ce48abfe4188497a3677d4ae11f30d510988eab5 GIT binary patch literal 3276 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyIWKS2zkcv5PuU*V#QRHzr zC~&d<^pd7Ob9?&CFE^ZB_vJ}xUBjyTx49X@*&m$2~rUj1Dsx zMiB`iaAV)z1MYJtYG$XL3htj-d3wUa|MrJj84{UB5z!&=`y11r^j;rJ<>0h?Mqg$u z-@%~ZGm1zFft>qs4gcqWQ{kEDHo4Ct;>6|r(IOHO0&j0~*DNfqZhXHv?bw+=GZ!8| zQ!rW*l2Q?Xi@~)MHPcg0MfcA%{CslWBc=ue#!*B<2yCdWZq(nBr~je0&F-e;%uiST zmyaew5)&aq`C4FBz67j_AC9I!60_fi(!6|zn8%~xMoPGCu%EqLTBc!NX4AD*DiKC8}cw5 z{QU4=beYx(cZCyA-uf_4GSrEB&cEW<{=EzZ{R|E>MiFr#aATh2=Cor6lIKj+)MMZf z9z~>t!0qkgKUNtVrS|$rR-IYQ^Y_f;9SjOSqloAb$hjZ)VD+^VQ;dzC2KLXaJiS@Y z_%JI&BGV`$B?NwdV-lG&(=a=2H2o2s@*uesl>XS)&NNIA-BPI9i2}T7v?skOy;3jh^=S%&g>|U(7h#av>oEZtUB8fIkXY z2`_WEZR_7jV&)&MsB`AtmS(s<+GZgsCA?vsWFsapQ_gQ6sB_}!>gTe~DWM4f5TgwB literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/66.png b/simulator/worlds/sim_markers/66.png new file mode 100644 index 0000000000000000000000000000000000000000..920b781e3a02ade8a58d3d431f61da3a09f8c874 GIT binary patch literal 3261 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyi>HfYNX4AD*AC_$G2mf1 zs1fjASDRPGzWG#Tx|BjHGxxgBtRc1c;}~|hGbs3sBH}_I=X_73aqkxW z)NiF6eC@=Pa@(|HtL2Ojj|L#A=?55w@-NPSs$h@e(Y#Aa(FMx8i?6+9{V`YmbNo)? t8atz{LU;(|%)KqmaDB&UxRDY9Z`dcvi3nDT2~>jmC7!N+F6*2UngAn2Ik^A; literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/67.png b/simulator/worlds/sim_markers/67.png new file mode 100644 index 0000000000000000000000000000000000000000..ad6308853906ac980c021694c2089ef8386ef0f2 GIT binary patch literal 3276 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyIWKS2zkcv5PuQhf)FyLW0 z`2F#}=xrrnhQNl}>PGjqx4HM6-?{g|Ny+l|&EeD((1XE?6h~d`u-c!0XfD7gHc3W2y94CJ2O*~d3~Y#vK{*wNXTL2z<-Y{}5PS-T2=4^T~53ME=d?W;nz$iii$@ zd2dmqCQ#SJ)78&qol`;+0K~g~ A#Q*>R literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/69.png b/simulator/worlds/sim_markers/69.png new file mode 100644 index 0000000000000000000000000000000000000000..3e88a2de4a581c6eb2f48a6cb7490733eeef66ab GIT binary patch literal 3268 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyx2KC^NX4AD*Dm(nG2n4H zs1fjA_qEiH8Ww{ivHNGTc|;#zzW$Rr1RaiZZ0okbeO>~iiiz?8}s5G1g2Lts_%W3{3Ae*fkSu{ zkrD#8FLQs;&#r1@pKIP*dHL`Th6O$h3Zsa~5XkY@|FEJo_0&$I*8kWk_Ti zMMQ@{bycJOmSy4?&MbPF_^#&6 z>K&t5n3NCz=VH^n4EsMD%s(}ngGnvGUi;)T^c0RZTS#fO-Qd6fUX1@q)Rh;Y?uni%BfzIs1xVbK@9hC^HDCjUwVgVB7ni$ns+c(&uOg#}KDu zG-%-=ux+_`#lqtBGrNqRb$Rc9)2DCS!_9Dth2hXBA~FQNePQaiy3B3!^4#$?{JuZ0 z{l5Q@slkA86p;`D8*KL;SbS}&=JQii@@skiYl<_paE>CPL*VU8*0>B`{SQm5<%`$( z{JeJh&S(-ODF=emANSmstoPD=^$*zZU{LTGMWlp4j=%ng6~=oR>c6jSj|7&5Cs`R1 znMM)OAy8e_=)U$P>x0zopr0NHFr82|tP literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/71.png b/simulator/worlds/sim_markers/71.png new file mode 100644 index 0000000000000000000000000000000000000000..132b7093b3cedfbed9d0288f7ed894e71ea05e12 GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*DiJ*G2n4H z`1#?#=x?C~^4tfLKBq}d5IXGq`VT|s{>$79#VibmMiG%A@NKT)>vIwny~U|r+@rxp zVhDWu!W93)NB_eT)4c~KzuR+Wb=}O-KqNBZL6iYQ@WTvX=zT9_beO>~ibx278}s5G z1U^4Cr8M=_(*BR9?aE#zzbhCGMN$$GFbEs|uh9-ZH&t``ou8@eA2Br;FpeT(LtumL zUIy0msz&v-FIne384WuUlMXQW4lKSlRTG$p!*_l*hx zOrwaD5cvI#sozRD_}Ymn<+W#c{J$BBGqiAyBBDd!?QQOwg~rBdy*`q^W=I#K}LQy@th5SRjOvhKz`@JvrRb!PI}8t(bUj1Dsx zMiH?gaAV(IhX0Yu!RJm)Q5?;{gTe~DWM4fIJkAz literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/73.png b/simulator/worlds/sim_markers/73.png new file mode 100644 index 0000000000000000000000000000000000000000..8a90fe7652146b9aed1709acebcf472fad9e93c9 GIT binary patch literal 3263 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyo2QFoNX4AD*DmHBHV|Mv zXb|vU*I4w);f4d7w;1z&ILRiq{TqM4S8H2_8OjU-YNLp_5Gb2lnKrkQEiPHU@+d1q zBGV`$B?PX2X^4LNlJWfJzCE8-**`nuU)I6RaEN6T5gh{SUNUZvy3G7;OZ*qE`=>@z zAgLJ;m;%{vfx>SYyTNGikyd_zbFcFHHOlKhSpNTiJchUubF^xKgg}`uf5ie@+Xt1` zzA*fI$kbrKIEqLJfeqPJ2i9Jj82)Wyc-&XR^}kNWjn=;;XJ2+u)$wIj|HEWG1`gp- oL`n!mS649_92>21Nvd({HzbJh@f^6z59*nCy85}Sb4q9e07o74-~a#s literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/74.png b/simulator/worlds/sim_markers/74.png new file mode 100644 index 0000000000000000000000000000000000000000..535aeb5faab0bd3e6e287f33d2016193e4be2516 GIT binary patch literal 3262 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwytEY=&NX4AD*AC_$G2mf1 zs8R4=S6lQ+;(-P4_89X{*wn~+{U771I)8nJIm!$IYNLp_5GXs_6KS0M!1UV*5pjkV z&QU~42*fTIf3T*us`341Km89Xqv1zV@&N^&eRawyshNkC7cn}_U>HRtguso`sz&#> z6E(9_xW51VzkMfzg3l--It1QW?LDyg+KDN)Mo(k=XBvJ!8F!SGA(3em5gh{8U$V+= zbzin-qUQUmGd%O(n2nZxB$a+Z#lQlv;)>MFP43I~yf&=S7!5#@0uUH_Kb&5FVe+rK un!MxeXznGo@XDTlkHO;DXtkA@B`Yd6eeqGyLx!4Lg#O4k+NZ=II~Et~(R| vbhOMPuCWKt+#5>s@)=?tkA@p5;kH3u^P7mk&+=vRpl*q$tDnm{r-UW|aLWTT literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/76.png b/simulator/worlds/sim_markers/76.png new file mode 100644 index 0000000000000000000000000000000000000000..10f9564ad2280b13b8d83368676dd2ac0c790b78 GIT binary patch literal 3275 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyIBu^K|kcv5PuN~}tV!*?2 z@amzT%hz}(*fVoH>fNoy7-V+g!7Y1-tM9)s9gtycFc?L|g}{dA=Vp|q^Xxgc&*&&C zLn6~CA|(XQe_@KxxG%YRozKqCGpzF;7V9x^2#+G7L!f$@xJ8z~{(<{(Uz4wWVN&18 zpx`r#NC|;AGvgktFx`9Ld*xO2+n2d(YOf{>(o09pz%)PGL?7d~1CliCD{uC8KE=;3BK#4?JA4uOA+U57=44J{@v2K7=r MUHx3vIVCg!0OH0Z@&Et; literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/77.png b/simulator/worlds/sim_markers/77.png new file mode 100644 index 0000000000000000000000000000000000000000..2ce1a55ef3a3993ab322bca733af202d59c2b813 GIT binary patch literal 3270 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyucwP+NX4AD*DkJ9G2~%5 z`1#?V;BVat_F`<^bJuw}%rZ2IdM+REwZ4imp^w2~#wa2#1a9mzPP;3~yuNUqPa)%I zu#px5H|E7XV4rK9d~K@cbh~H1?`+Pf>M?K#k0PQ&;Pz#1n^!S2H?8w|SRMB)do=V& zO+3H={BUw++ylq#Dn`44(Hu-%sRyYZAldgN>yHQLPOs4p)*CGVNvbwM!55fa)u=vK zJ2>v^>A0_k8u zS#b@4_x_L8A0#(EqSLFG6MDEA4zY|PqC?;x!^Ec|f>L6gvY-x%r>mdKI;Vst0IPRs A`Tzg` literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/78.png b/simulator/worlds/sim_markers/78.png new file mode 100644 index 0000000000000000000000000000000000000000..64712f3ee54082e1d5230fa0cfe92f3381dfefc0 GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*DiJ*G2n4H z`1#?#=x?C~^4tfLKBq}dm~+7S^&f`N{g=5Jidh&AjUpmL;M-io*XJZEdW%!LxJQGH z#1Q!Qg(?1pkNyGsYhRe|A7^DqWEw?8hd^~zqyCm<;tk7pFevzpB2q#i$6x=$isIB$ zyNsSrvY!7YH16yFSOx*LQABhIY+Ei~ab;HA1JCp-My42|wT%WbFa*G1x6>#!c4pDZ zxySGPG<^TdxO_AdlUjy>GjVC^shvhoL;H7r7PEWK)L_6kiiiz?4Yqp^h(}%Kws{%a y|1epPfkSu{krD#Y=~c`LJ)@02A{)vOW&ap%$_op{TI-vEx+b2kelF{r5}E)G!A9}` literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/79.png b/simulator/worlds/sim_markers/79.png new file mode 100644 index 0000000000000000000000000000000000000000..31016f370b5000ab6594870f8f181e33aecc27a0 GIT binary patch literal 3274 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyIL{AsTkcv5PuQg^KFyLW0 zxGUxV)Vr!pcYeGVo6z#`<1KrKtM6a3HWafk92!MLhQPd;hS_O6G0FWtADJ5r7)KEa zA+X{37pC>MmW%(GXKIxCA~CIRXO}!f3+E^zIs|N&i&tEgnz_k+*`3leJu{QjJy$5Ee^+hTNudAA|`Uj)K42DreYzW*au4?3uGEV+>X2xuuy=Q#?Fevzp zBBDd!jpg10>~Db;Ny@1+hQ`~0S((S4fkSu{krD#ce)=CAv(wJZlQe#`Ec)Fec7{Zz zQABhIoPWt0w-p$K%U1V2od0RGDMMmQZo^jpd*p2c4 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/8.png b/simulator/worlds/sim_markers/8.png new file mode 100644 index 0000000000000000000000000000000000000000..620b70c6e099f3d3ebf361859675f1ef94d0e551 GIT binary patch literal 3259 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwylc$SgNX4AD*AC_~8}cw5 z)Cl;mt1bGZe8HRBGub?TK4886lW|pDzCObpWd;GYQAAt_Y)e13W~Si>sq~aCZiYiF zqllCc`1Y3d$9c(_o7|RtSQ$fHc#kGbNC<4p*Z;7>*eJEvr*i5{e&Z*h_wTbZBr=U6 zQbOSOH>Uom?cx=e&Lp2ZA!0XmGzXJZfC01bz6(3|GT0m)O?o8dJW#r`+AjXXE<5Ga zh4z`1XIAfEQ1BT=q=Z1u{kR9*YiAlhcMXpFI+@ott!*^-l9YR|&6G4YV!fCAZ2n88 u1_Q=XL_!E`D9y`fhR_k;cgnB-2y6xET(y zj3QD(;M-f)e+!I_(|Ua*tIqVy^#3Lz&d|a+iii$@x3{@#UiJ7yDhId8eV(%X-+!Lb z03Nn<0{ zd&$q{zZ}iJq-0-UJ+YxQFP|ai@o2b_5^fvhb4$gzyie7qf;uLiu6{1-oD!M(tQo9-rweC_|C!5!a0hF3xT&Y4YSjD_8gO(`G~2( zfN>O&5CR)&s~g?t-sY~EXKM5`)IROmWZptXhZzi`h}aOgv2X8z#n(8Lg3q5)*okg?LE+Z?#vAH+D(dj3>?Cvi0BZw zytlgIFG2{^?L74Q2)f!)z4*} HQ$iB}%Y%dy literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/83.png b/simulator/worlds/sim_markers/83.png new file mode 100644 index 0000000000000000000000000000000000000000..4aee9c6880d8e52b53c4df5887889202024b897c GIT binary patch literal 3269 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwykEe@cNX4AD*AC_~8}cw5 z)Cl;mt1bE?@xX#dw`a0>%zemu{U_t9x_o_xJIV|KYNLp_5ZIP}Y|Tu=4-)AqUEBkA@J=j>%I#!B{#b*tl2_DeSPB|qx^HBX$rUnDXQA9!rY^befjI#umgbRRa&~tuH$7n@N zQaj|@Oi5!S)_KX#=D!?Gdn9JP4W)Vc3^9*K!;O@1+h9LET9SQVrQBjr|HRYP&t;uc GLK6VtQB!&V literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/84.png b/simulator/worlds/sim_markers/84.png new file mode 100644 index 0000000000000000000000000000000000000000..98d817d8bd66678e704ab55d7f8f8fc076640afa GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*DmHhF%V!q z_}KC1av%2x_D#tvR|`G3ER}cW*8hf8|1UE)STZprjv^vM;QZY5Yje{d7=N1@9>XA@ zHi}3Ifp0$i6$@=`8v?Vd4tVM@a0rhgqC=p18T+0Kv*ZrwfBVw#y^zsi2E!;KAp~w1 z+dgOo2HoUqKy3HbuzUxDg3l--It1R#lqHfYNX4AD*AC_$G2mf1 zs1fjA*P8c<93zk6w{s>AUj3}szp{qZ`s*{C5oF*H9!123!0q&7YmAd0n66U}j$sf` z8%3mqz_#V$JFc4UJuvs$7bcb+3<^G@i0BZ=@z*a{U7B(Vh!z^I|Fy}uzfx43p@nl4 zkrD!LU$V+&`09VK+4p9D5u?KlhEYUp2;7(#*WeE<_O4CTZ2z&zzIZhBNJ%`v(0kCh z&NvwqdUD0bX6jdu=3bHuFJSJ?EA`bs@E%xy)I4BnFkl=-#D>5I+r0kb69&o*VO1~X#dR0(-RinuW#dKIK(oF zhz@~kGbN3USnnl2oBwjO^dqtG-%y&D&k*x?G~7rDw+;3w)smckF1E6u9*U={pUXO@ GgeCy1CF5TJ literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/87.png b/simulator/worlds/sim_markers/87.png new file mode 100644 index 0000000000000000000000000000000000000000..613581572f4dcdcc2e762085391a8ee92060c7ec GIT binary patch literal 3266 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyr>Bc!NX4AD*AC_$G2mf1 zs8R4=S6lSXV}|Cgy~ex~wl%O`|Hrth&R?HljxvLQ+9)C}1j^3#L>ebQF#UEyM4X|8 za}<#h0YIK2MCRDKJX6fd7SzUS57SmH{}(dq>f0%ddK z9yESCGvn(bP3O3;hQ=|Y!AD{U07J0B|J#Wvz+BuB|IKu?4k5J;saQ~2#c21zD887{ tVFtq}A|V8B+*)qV&{sGbZlole8}jaJMTF{)#hQXTC!Vf;F6*2UngF?T2vYz6 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/88.png b/simulator/worlds/sim_markers/88.png new file mode 100644 index 0000000000000000000000000000000000000000..08db45e1b573c5f6f83a369535bb5835f90a46fa GIT binary patch literal 3269 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwykEe@cNX4AD*DmI=DDpTQ z6v+LrJDKYp|HIS!X0qk9e0j39zG2nnZvB2q%2dYSlx$+mkBIA&Kd+7&Q5%wQNr#D>5Pd7I-z$3k|NUqNCaL@a zXW(pL29EnGv2V&~8-~;-+_ic47$hE#wpvJOv~95OQxp~4bJ%MdsDI+=>gTe~DWM4f DzFNRo literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/89.png b/simulator/worlds/sim_markers/89.png new file mode 100644 index 0000000000000000000000000000000000000000..8c3a4b3df8c8a694d162b6ef0138e6c4631483fe GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*AC_$G2mf1 zs1fjAS6lQ+dccPAWsE`l4mZ92!w|ZEyEwx;K?V-tQAAt_+%`_Wc1GeykFn8FR)$2T zQAA1z{QkzIUy^og%}hh(HoKcW`hN}d7&Jzc9`PY?d%JkWLQ~^sXL^24S{VP#JBC3( zZ4{9b0^9QSKRBhQospVp^m)e2?KQ6rjYk8Kq%;Hy!4<{Tjo%}IiSg2MIpf2l1tCfG z0I(G7k5UdkcVdeF&nxP)e@^EuWOSIpFp5YBfgAhwGO)h>#`I@2@sZXD0ad|U^7I+} rN7EdsS?-3_c5{Yxqv1wUxZRNF^brw^|5gwR>Y8}E`njxgN@xNAraTvq literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/9.png b/simulator/worlds/sim_markers/9.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f5c565d5e46b42c4e8fb1c73bfd07417994123 GIT binary patch literal 3262 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwytEY=&NX4AD*DhwV8uBn4 zwAk@~+FZ6t{p{^BdFfIUYS_E4{bX9TFJGVGjxvLQ+9)C}1h%CgTQk$}gH(D-7dOKp zmQh4X2z-0X`s1|Z%uQ~~cs`!Ad&bmYz&MJC4S@}{)s60RCu(M=oVqY0yw+$m{D=)X zcq#)1A>+Ryw`FT4Y8vN1EY@S-5FSNDhrsRa;uTkH$2RTQ?0cW|Mgx$f^aBjQ zhU0UJS^Z|_nA55@4YyN9qtSYKBI`Z5Xd>-6KS0M!0_A&5pjkV z&QU~42)w<`U9-^GIIY)bX62bP(G~N#84j_GBBDd!+gsLs7iLKoyDj6fZL2@U%8zA z*FT`0o^ncRrqSnV3y<4$jTU{Rmi)ld&n~Oi$5J_1?(2-1+ihMO8jmJIlJelTb7y8u y)chc0T)%8I`H`CZuI=2*SkOBfZX|`L;yjmM*k1*8O*~!wT-G@yGywodjFaL3 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/91.png b/simulator/worlds/sim_markers/91.png new file mode 100644 index 0000000000000000000000000000000000000000..ce51aa15792ba65665b69b796bf549376f71761a GIT binary patch literal 3261 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyi>HfYNX4AD*AC_$G2mf1 zs1fjA*P8c9af9RBy~ex~wl%O`|H>TlcU~NWg*$_S&nO};1ai*zL>ebQFkLrMQ;&f| zcodNm0=Jio@3?Ael-ld_u=w8ptMqdnTG{qTOI7bmFA@KGx z_noX>pPg>YcxL`gb&mULWE{gFpf-w#4uNg{`UR_Be_=ZRc~$&2Km89jqgj~LEWG2Y z)n11GpAGJxVr58V8bzdp!0#_i+jqGwTQgA;n0XCr&Wwg2NeKuPd{N8A8`29I9cD0$ tA`(L2#xB2n2ARi94F-&(h}aO=V6S*ygrBKn6Dz1+;_2$=vd$@?2>{FH;DZ1F literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/92.png b/simulator/worlds/sim_markers/92.png new file mode 100644 index 0000000000000000000000000000000000000000..ac0bd5732abd5716a178ae0eb2643caf58abad2f GIT binary patch literal 3279 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcyIG*1`Dkcv5PuU*V!HRNG9 zXc6;Y*IM+6a>0qpdo$To?jKyVb$`RE_m{aDo^vp?aE>D4LcrEI`PvzY9mnKmK4NMx zU>rpxgusU9Uzpb4QVza$V#;bc?*aB(z+CJa+-7(4%#4}-W=B{V5}8I3(IIgDC2QPP_hoA)YKGfB zTjgISI+}?|DxbiaSZd}b_hm6(XUyF0)4Q{io8b`4C?X{U=3VBlSzv0McD`rl$usKG zzy2G?FbJrPBBDd!+nl(D`)h!qC^!Gj`O&Z=HR){o_L8?Dc{JQe3b${}>rYDx&0zU6 Q3Di^ZboFyt=akR{0MlYQu9lDsiul;0R^>4X2!!r(s7S2&bTnN0iPQEtR@Pp*@QzGKT=@<=K zcnG|G$tqX6OuS-#Y3iw^^2N`S?T)fCBr=U6qC=p%s!=@ZGPljkn3@t3KN78u~H^U*8QABhI zeEY)GZw1W2nZEiT7Wn_2;a|w;FoR(fkq`nm=EXf|z4nF49~h1Xr$#FflIl-j1>(N; zCF{N8leg|w^}`!b*TmD+&t;ucLK6TM Cx;&o% literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/94.png b/simulator/worlds/sim_markers/94.png new file mode 100644 index 0000000000000000000000000000000000000000..331cb70e4b8ade71f1c391e5feb7d427a1083996 GIT binary patch literal 3267 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwym#2$kNX4AD*BUbq81OJ0 z+*R>^>Rr{Qt54pGO_+0FacNz{s{1cl8!VX^5=Rk{A@KX$jM8+TnqxbSj+!R42DreLI~WL z7xy6W`Kc+Tsi(Hf6(3(NSKQ9caEN6T5gh{GzA*JiUFNoVc`o_fRL%Ln4Cg;$YA|3N zMZ|`{2HU*{xPfKhz30L6bA0tbsEihaq}Bq!l2ER6olj)=vYOY1e}eTGID|(L(IIdf zn0vE;32%wNZCm}R(KZZ`?LN4&*FO0SJ%yuHFDWgL8}f=QqJpn=Q)@uI6Hiw^mvv4F FO#p)vlkA@J=j>yPu2GdH;{wj=cPdhV9(m3hG$%-?q42evmi0Bab{f+5PsoSzO6E&UXKZlMcKaz4EDD4HNr<{_S zd8qi`nPffUYMRk186E<+w~JRSG&W8<+aqcCCB=B(%i}v37L3*%#D@T|?s%~H+FRCp z$0u(ct#*kIH;BrdxwoYmuJ0harY6<=VX6KN|GSr>d{-CDV+VCgJYD@<);T3K0RUbF B#_9k7 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/96.png b/simulator/worlds/sim_markers/96.png new file mode 100644 index 0000000000000000000000000000000000000000..75b4988ce3ae8370b1f39682aac709a590c46db8 GIT binary patch literal 3264 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyyQhm|NX4AD*DiKC8}cw5 z{QU4=^taFg`NsA+Dd|!ZHY8rOvUj-p{w-@mH4DR`QAA`2d^LWi zM-d4ju%WiPk-sEQ|HBefqob4eYKt?paE>CPL*VUgZktykR6x? zf7r}>6T6e>mdKI;Vst0OP`O A1poj5 literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/97.png b/simulator/worlds/sim_markers/97.png new file mode 100644 index 0000000000000000000000000000000000000000..dd8f5cc9896ad141b559e01540789793837be651 GIT binary patch literal 3269 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwykEe@cNX4AD*BVzoG2n4H z`1#?#=x^&26;G(-FJnA8`{}~ce~h93^Yt0-C^HDCjUwVgU|agJH8TxANT#QBaWfoZ z8AYUoz_+)oa;0v|)=boNPOICbIRBTCaSU<6KAJuuA+Rl9|HBGXqo+MS56g|?)1Jkf z9bsiiWEw@Jguw4_O!`~Wj?I~ZU>S3j3^P6yqe5wo7Tq7aEN6T5gh{G-m=PVbz3$EmHn@mvv4FO#ri9zM=pC literal 0 HcmV?d00001 diff --git a/simulator/worlds/sim_markers/99.png b/simulator/worlds/sim_markers/99.png new file mode 100644 index 0000000000000000000000000000000000000000..ca417e652e08396914c78559ea05d3dbe5ad369a GIT binary patch literal 3255 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7&w3=LsVHwJOcwyou`XqNX4AD*ADu!8uBMwXzUB#Ht$KWty6cHB!H})B)-IZisU%1ZaBjaeW zkro0s=EXf=o@g3!GHRf7@yCj6Mmo`iKnZd%Q~loCIFBB*xvvE literal 0 HcmV?d00001 From f621cb4f6e5a9bf4c0cdb19588202f2b23c7d06a Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 11:40:22 +0100 Subject: [PATCH 08/23] Correct marker locations --- simulator/worlds/arena.wbt | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/simulator/worlds/arena.wbt b/simulator/worlds/arena.wbt index 17e3fc0..1252d9e 100755 --- a/simulator/worlds/arena.wbt +++ b/simulator/worlds/arena.wbt @@ -127,7 +127,7 @@ Marker { name "A0" model "0" size 0.1 0.1 - translation -1.4798 2.29 0.07 + translation -1.4798 2.165 0.07 rotation 0 0 1 1.5708 texture_url ["sim_markers/0.png"] upright TRUE @@ -136,7 +136,7 @@ Marker { name "A1" model "1" size 0.1 0.1 - translation -1.4798 1.99 0.07 + translation -1.4798 2.015 0.07 rotation 0 0 1 1.5708 texture_url ["sim_markers/1.png"] upright TRUE @@ -145,7 +145,7 @@ Marker { name "A2" model "2" size 0.1 0.1 - translation -0.4192 0.001 0.07 + translation -0.535 0.001 0.07 rotation 0 0 1 3.1415 texture_url ["sim_markers/2.png"] upright TRUE @@ -154,7 +154,7 @@ Marker { name "A3" model "3" size 0.1 0.1 - translation -0.7192 0.001 0.07 + translation -0.685 0.001 0.07 rotation 0 0 1 3.1415 texture_url ["sim_markers/3.png"] upright TRUE @@ -163,7 +163,7 @@ Marker { name "A4" model "4" size 0.1 0.1 - translation -2.699 0.91 0.07 + translation -2.699 0.815 0.07 rotation 0 0 1 1.5708 texture_url ["sim_markers/4.png"] upright TRUE @@ -172,7 +172,7 @@ Marker { name "A5" model "5" size 0.1 0.1 - translation -2.699 0.61 0.07 + translation -2.699 0.665 0.07 rotation 0 0 1 1.5708 texture_url ["sim_markers/5.png"] upright TRUE @@ -181,7 +181,7 @@ Marker { name "A6" model "6" size 0.1 0.1 - translation -2.19545 -1.98335 0.07 + translation -2.14243 -2.03637 0.07 rotation 0 0 1 2.3561 texture_url ["sim_markers/6.png"] upright TRUE @@ -190,7 +190,7 @@ Marker { name "A7" model "7" size 0.1 0.1 - translation -1.98335 -2.19545 0.07 + translation -2.03637 -2.14243 0.07 rotation 0 0 1 2.3561 texture_url ["sim_markers/7.png"] upright TRUE @@ -200,7 +200,7 @@ Marker { name "B0" model "0" size 0.1 0.1 - translation 1.4798 -2.29 0.07 + translation 1.4798 -2.165 0.07 rotation 0 0 1 -1.5708 texture_url ["sim_markers/0.png"] upright TRUE @@ -209,7 +209,7 @@ Marker { name "B1" model "1" size 0.1 0.1 - translation 1.4798 -1.99 0.07 + translation 1.4798 -2.015 0.07 rotation 0 0 1 -1.5708 texture_url ["sim_markers/1.png"] upright TRUE @@ -218,7 +218,7 @@ Marker { name "B2" model "2" size 0.1 0.1 - translation 0.4192 -0.001 0.07 + translation 0.535 -0.001 0.07 rotation 0 0 1 0 texture_url ["sim_markers/2.png"] upright TRUE @@ -227,7 +227,7 @@ Marker { name "B3" model "3" size 0.1 0.1 - translation 0.7192 -0.001 0.07 + translation 0.685 -0.001 0.07 rotation 0 0 1 0 texture_url ["sim_markers/3.png"] upright TRUE @@ -236,7 +236,7 @@ Marker { name "B4" model "4" size 0.1 0.1 - translation 2.699 -0.81 0.07 + translation 2.699 -0.815 0.07 rotation 0 0 1 -1.5708 texture_url ["sim_markers/4.png"] upright TRUE @@ -245,7 +245,7 @@ Marker { name "B5" model "5" size 0.1 0.1 - translation 2.699 -0.51 0.07 + translation 2.699 -0.665 0.07 rotation 0 0 1 -1.5708 texture_url ["sim_markers/5.png"] upright TRUE @@ -254,7 +254,7 @@ Marker { name "B6" model "6" size 0.1 0.1 - translation 2.19545 1.98335 0.07 + translation 2.14243 2.03637 0.07 rotation 0 0 1 -0.7853 texture_url ["sim_markers/6.png"] upright TRUE @@ -263,8 +263,11 @@ Marker { name "B7" model "7" size 0.1 0.1 - translation 1.98335 2.19545 0.07 + translation 2.03637 2.14243 0.07 rotation 0 0 1 -0.7853 texture_url ["sim_markers/7.png"] upright TRUE } + +# 5400/2 - 1219.2/2 ± 150/2/sqrt(2) +# 2.14343, 2.03737 From 5c98874a3af2c154317005b4a6c337c14104da25 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 11:40:40 +0100 Subject: [PATCH 09/23] Update can locations --- simulator/protos/arena/Arena.proto | 1 + simulator/worlds/arena.wbt | 28 +++++++++++++++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/simulator/protos/arena/Arena.proto b/simulator/protos/arena/Arena.proto index 01ebf22..0754203 100755 --- a/simulator/protos/arena/Arena.proto +++ b/simulator/protos/arena/Arena.proto @@ -59,6 +59,7 @@ PROTO Arena [ children [ Solid { # Floor translation 0 -0.002 0 + rotation 0 0 1 3.1416 children [ DEF FLOOR Shape { appearance Appearance { diff --git a/simulator/worlds/arena.wbt b/simulator/worlds/arena.wbt index 1252d9e..72de12b 100755 --- a/simulator/worlds/arena.wbt +++ b/simulator/worlds/arena.wbt @@ -23,16 +23,26 @@ DEF AMBIENT Background { TexturedBackgroundLight { } -SRObot { - name "robot" +DEF ROBOT0 SRObot { + name "robot0" translation 0.45 1.95 0 rotation 0 0 1 3.1415 - flagColour 1 0 0 + flagColour 0 1 0 controllerArgs ["0"] controller "usercode_runner" customData "start" } +DEF ROBOT1 SRObot { + name "robot1" + translation -0.45 -1.95 0 + rotation 0 0 1 0 + flagColour 1 0.4 0 + controllerArgs ["1"] + controller "usercode_runner" + customData "start" +} + Arena { size 5.4 5.4 locked TRUE @@ -81,11 +91,11 @@ DEF CANS Pose { children [ Can { name "can1" - translation -0.3 0.44 0 + translation -0.46 0.60 0 } Can { name "can2" - translation -1.5 1.2 0 + translation -1.48 1.1 0 } Can { name "can3" @@ -97,16 +107,16 @@ DEF CANS Pose { } Can { name "can5" - translation -1.5 -1.5 0 + translation -1.48 -1.95 0 } Can { name "can6" - translation 0.3 -0.44 0 + translation 0.46 -0.6 0 } Can { name "can7" - translation 1.5 -1.2 0 + translation 1.48 -1.1 0 } Can { name "can8" @@ -118,7 +128,7 @@ DEF CANS Pose { } Can { name "can10" - translation 1.5 1.5 0 + translation 1.48 1.95 0 } ] } From 967e6f0f2d74535a100cab81a84b7a3853e873a1 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 11:55:27 +0100 Subject: [PATCH 10/23] Update servos --- .../modules/sbot_interface/devices/servo.py | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/simulator/modules/sbot_interface/devices/servo.py b/simulator/modules/sbot_interface/devices/servo.py index 1ecf4b2..440aebc 100644 --- a/simulator/modules/sbot_interface/devices/servo.py +++ b/simulator/modules/sbot_interface/devices/servo.py @@ -4,7 +4,10 @@ The servo will apply a small amount of variation to the power setting to simulate inaccuracies in the servo. """ +from __future__ import annotations + from abc import ABC, abstractmethod +from typing import TYPE_CHECKING from sbot_interface.devices.util import ( WebotsDevice, @@ -14,10 +17,11 @@ map_to_range, ) -MAX_POSITION = 4000 -MIN_POSITION = 300 -SERVO_MAX = 1980 -SERVO_MIN = 350 +if TYPE_CHECKING: + from controller import PositionSensor + +MAX_POSITION = 2000 +MIN_POSITION = 1000 class BaseServo(ABC): @@ -94,13 +98,16 @@ class Servo(BaseServo): """A servo connected to the Servo board.""" def __init__(self, device_name: str) -> None: + self.position = (MAX_POSITION + MIN_POSITION) // 2 # TODO use setAvailableForce to simulate disabled self._enabled = False g = get_globals() self._device = get_robot_device(g.robot, device_name, WebotsDevice.Motor) + self._pos_sensor: PositionSensor | None = self._device.getPositionSensor() # type: ignore[no-untyped-call] self._max_position = self._device.getMaxPosition() self._min_position = self._device.getMinPosition() - self.position = (SERVO_MAX + SERVO_MIN) // 2 + if self._pos_sensor is not None: + self._pos_sensor.enable(g.timestep) def disable(self) -> None: """Disable the servo.""" @@ -114,11 +121,11 @@ def set_position(self, value: int) -> None: """ # Apply a small amount of variation to the power setting to simulate # inaccuracies in the servo - value = int(add_jitter(value, (SERVO_MIN, SERVO_MAX))) + value = int(add_jitter(value, (MIN_POSITION, MAX_POSITION))) self._device.setPosition(map_to_range( value, - (SERVO_MIN, SERVO_MAX), + (MIN_POSITION, MAX_POSITION), (self._min_position + 0.001, self._max_position - 0.001), )) self.position = value @@ -130,6 +137,12 @@ def get_position(self) -> int: Position is the pulse width in microseconds. """ + if self._pos_sensor is not None: + self.position = int(map_to_range( + self._pos_sensor.getValue(), + (self._min_position + 0.001, self._max_position - 0.001), + (MIN_POSITION, MAX_POSITION), + )) return self.position def get_current(self) -> int: From bf10016cc8dad6b39faaa58d121bbd85c58ec14c Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 11:55:44 +0100 Subject: [PATCH 11/23] Fix noise --- simulator/modules/sbot_interface/devices/util.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/simulator/modules/sbot_interface/devices/util.py b/simulator/modules/sbot_interface/devices/util.py index 9724b74..a160215 100644 --- a/simulator/modules/sbot_interface/devices/util.py +++ b/simulator/modules/sbot_interface/devices/util.py @@ -13,6 +13,7 @@ Accelerometer, Camera, Compass, + Connector, DistanceSensor, Emitter, Gyro, @@ -45,6 +46,7 @@ class WebotsDevice: Accelerometer = Accelerometer Camera = Camera Compass = Compass + Connector = Connector DistanceSensor = DistanceSensor Emitter = Emitter GPS = GPS @@ -152,6 +154,6 @@ def add_jitter( std_dev = value * (std_dev_percent / 100.0) mean_offset = value * (offset_percent / 100.0) - error = value + gauss(mean_offset, std_dev) + error = gauss(mean_offset, std_dev) # Ensure the error is within the range return max(value_range[0], min(value_range[1], value + error)) From 76db08fe658bcba24187b49faca9cff8d31a4b49 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 11:55:58 +0100 Subject: [PATCH 12/23] Add switched power board outputs --- .../modules/sbot_interface/devices/power.py | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/simulator/modules/sbot_interface/devices/power.py b/simulator/modules/sbot_interface/devices/power.py index 849914d..71b06d1 100644 --- a/simulator/modules/sbot_interface/devices/power.py +++ b/simulator/modules/sbot_interface/devices/power.py @@ -4,7 +4,7 @@ from abc import ABC, abstractmethod from typing import Callable -from sbot_interface.devices.util import get_globals +from sbot_interface.devices.util import WebotsDevice, get_globals, get_robot_device class Output: @@ -36,6 +36,36 @@ def get_current(self) -> int: return 0 +class ConnectorOutput(Output): + """ + A class to represent a power output that controls a webots connector device. + + :param device_name: The name of the device in webots. + :param downstream_current: A function to get the current draw of the downstream device. + """ + + def __init__( + self, + device_name: str, + downstream_current: Callable[[], int] | None = None, + ) -> None: + super().__init__(downstream_current) + g = get_globals() + self._device = get_robot_device(g.robot, device_name, WebotsDevice.Connector) + self._enabled = False + + def set_output(self, enable: bool) -> None: + """Set the output state.""" + if enable: + self._device.lock() # type: ignore[no-untyped-call] + else: + self._device.unlock() # type: ignore[no-untyped-call] + + def get_output(self) -> bool: + """Get the output state.""" + return self._device.isLocked() + + class BaseBuzzer(ABC): """The base class for the buzzer device.""" From d3476916e2e1af73976be6c4f66c9f1678ca5129 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 11:58:34 +0100 Subject: [PATCH 13/23] Setup box token with connectors --- simulator/protos/props/BoxToken.proto | 39 +++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/simulator/protos/props/BoxToken.proto b/simulator/protos/props/BoxToken.proto index f84f25c..461d7fa 100755 --- a/simulator/protos/props/BoxToken.proto +++ b/simulator/protos/props/BoxToken.proto @@ -7,13 +7,15 @@ EXTERNPROTO "./Marker.proto" PROTO BoxToken [ field SFVec3f translation 0 0 0 field SFRotation rotation 0 1 0 0 - field SFVec3f size 0.12 0.12 0.12 + field SFVec3f size 0.13 0.13 0.13 field SFVec2f {0.08 0.08, 0.15 0.15, 0.2 0.2} marker_size 0.08 0.08 field SFColor colour 0.7 0.55 0.35 field SFString marker "0" field SFString model "" - field SFFloat mass 0.100 + field SFFloat mass 0.080 field MFString texture_url [] + field SFFloat connectorStrength 35 + field SFFloat connectorShear 20 ] { Solid { @@ -78,6 +80,39 @@ PROTO BoxToken [ model IS marker texture_url IS texture_url } + # Shape { + # appearance PBRAppearance { + # transparency 0.4 + # baseColor 1 0 0 + # } + # geometry Sphere { + # radius %<= fields.size.value.x / 2 * 1.4 >% + # subdivision 5 + # } + # } + Connector { + type "passive" + distanceTolerance %<= fields.size.value.x / 2 * 1.4 >% + axisTolerance 3.1415 + rotationTolerance 0 + numberOfRotations 0 + tensileStrength IS connectorStrength + shearStrength IS connectorShear + snap FALSE + name "Front Connector" + } + Connector { + rotation 0 0 1 3.1416 + type "passive" + distanceTolerance %<= fields.size.value.x / 2 * 1.4 >% + axisTolerance 3.1415 + rotationTolerance 0 + numberOfRotations 0 + tensileStrength IS connectorStrength + shearStrength IS connectorShear + snap FALSE + name "Rear Connector" + } ] name IS model model IS model From ed23c1f3b4d4381fbed547a77da37d90a3e55222 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 12:03:02 +0100 Subject: [PATCH 14/23] Rework usercode runner --- .../usercode_runner/usercode_runner.py | 66 +--------- simulator/environment.py | 18 ++- simulator/modules/robot_logging.py | 21 +++ simulator/modules/robot_utils.py | 120 ++++++++++++++++++ 4 files changed, 159 insertions(+), 66 deletions(-) create mode 100644 simulator/modules/robot_utils.py diff --git a/simulator/controllers/usercode_runner/usercode_runner.py b/simulator/controllers/usercode_runner/usercode_runner.py index 535add0..002b3cd 100644 --- a/simulator/controllers/usercode_runner/usercode_runner.py +++ b/simulator/controllers/usercode_runner/usercode_runner.py @@ -12,10 +12,8 @@ import logging import os import runpy -import subprocess import sys import threading -from datetime import datetime from pathlib import Path from tempfile import TemporaryDirectory @@ -24,7 +22,8 @@ # Robot constructor lacks a return type annotation in R2023b sys.path.insert(0, Robot().getProjectPath()) # type: ignore[no-untyped-call] import environment # configure path to include modules -from robot_logging import prefix_and_tee_streams +from robot_logging import get_match_identifier, prefix_and_tee_streams +from robot_utils import get_game_mode, get_robot_file, print_simulation_version from sbot_interface.setup import setup_devices from sbot_interface.socket_server import SocketServer @@ -36,65 +35,6 @@ LOGGER = logging.getLogger('usercode_runner') -def get_robot_file(robot_zone: int) -> Path: - """ - Get the path to the robot file for the given zone. - - :param robot_zone: The zone number - :return: The path to the robot file - :raises FileNotFoundError: If no robot controller is found for the given zone - """ - robot_file = environment.ZONE_ROOT / f'zone_{robot_zone}' / 'robot.py' - - # Check if the robot file exists - if not robot_file.exists(): - raise FileNotFoundError(f"No robot controller found for zone {robot_file}") - - return robot_file - - -def get_game_mode() -> str: - """ - Get the game mode from the game mode file. - - Default to 'dev' if the file does not exist. - - :return: The game mode - """ - if environment.GAME_MODE_FILE.exists(): - game_mode = environment.GAME_MODE_FILE.read_text().strip() - else: - game_mode = 'dev' - - assert game_mode in ['dev', 'comp'], f'Invalid game mode: {game_mode}' - - return game_mode - - -def print_simulation_version() -> None: - """ - Print the version of the simulator that is running. - - Uses a VERSION file in the root of the simulator to determine the version. - For development, the version is uses the git describe command. - - The version is printed to the console. - """ - version_file = environment.SIM_ROOT / 'VERSION' - if version_file.exists(): - version = version_file.read_text().strip() - else: - try: - version = subprocess.check_output( - ['git', 'describe', '--tags', '--always'], - cwd=str(environment.SIM_ROOT.resolve()), - ).decode().strip() - except subprocess.CalledProcessError: - version = 'unknown' - - print(f"Running simulator version: {version}") - - def start_devices() -> SocketServer: """ Create the board simulators and return the SocketServer object. @@ -173,7 +113,7 @@ def main() -> bool: # Setup log file prefix_and_tee_streams( - robot_file.parent / f'log-{datetime.now():%Y_%m_%dT%H_%M_%S}.txt', + robot_file.parent / f'log-zone-{zone}-{get_match_identifier()}.txt', prefix=lambda: f'[{zone}| {robot.getTime():0.3f}] ', ) diff --git a/simulator/environment.py b/simulator/environment.py index 65af930..2a1d673 100644 --- a/simulator/environment.py +++ b/simulator/environment.py @@ -3,15 +3,27 @@ Also contains constants for where several important files are located. """ +import os import sys from pathlib import Path SIM_ROOT = Path(__file__).absolute().parent -ZONE_ROOT = SIM_ROOT.parent MODULES_ROOT = SIM_ROOT / 'modules' -GAME_MODE_FILE = SIM_ROOT / 'mode.txt' -NUM_ZONES = 1 +ARENA_ROOT = Path(os.environ.get('ARENA_ROOT', SIM_ROOT.parent)) +ZONE_ROOT = ARENA_ROOT +GAME_MODE_FILE = ARENA_ROOT / 'mode.txt' + +NUM_ZONES = 4 +DEFAULT_MATCH_DURATION = 150 # seconds + + +if not ARENA_ROOT.is_absolute(): + # Webots sets the current directory of each controller to the directory of + # the controller file. As such, relative paths would be ambiguous. + # Hint: `$PWD` or `%CD%` may be useful to construct an absolute path from + # your relative path. + raise ValueError(f"'ARENA_ROOT' must be an absolute path, got {ARENA_ROOT!r}") def setup_environment() -> None: diff --git a/simulator/modules/robot_logging.py b/simulator/modules/robot_logging.py index 56ba910..a6d39ff 100644 --- a/simulator/modules/robot_logging.py +++ b/simulator/modules/robot_logging.py @@ -7,10 +7,15 @@ from __future__ import annotations import sys +from datetime import datetime from io import TextIOWrapper from pathlib import Path from typing import Callable, TextIO +from robot_utils import get_match_data + +DATE_IDENTIFIER = datetime.now().strftime("%Y_%m_%dT%H_%M_%S") + class Tee(TextIOWrapper): """Forwards calls from its `write` and `flush` methods to each of the given targets.""" @@ -109,3 +114,19 @@ def prefix_and_tee_streams(name: Path, prefix: Callable[[], str] | str | None = ), prefix=prefix, ) + + +def get_match_identifier() -> str: + """ + Get the identifier for this run of the simulator. + + This identifier is used to name the log files. + + :return: The match identifier + """ + match_data = get_match_data() + + if match_data.match_number is not None: + return f"match-{match_data.match_number}" + else: + return DATE_IDENTIFIER diff --git a/simulator/modules/robot_utils.py b/simulator/modules/robot_utils.py new file mode 100644 index 0000000..4cb02f5 --- /dev/null +++ b/simulator/modules/robot_utils.py @@ -0,0 +1,120 @@ +"""General utilities that are useful across runners.""" +from __future__ import annotations + +import json +import platform +import subprocess +import sys +from pathlib import Path +from typing import NamedTuple + +# Configure path to import the environment configuration +sys.path.insert(0, str(Path(__file__).parents[1])) +import environment + +# Reset the path +del sys.path[0] + + +class MatchData(NamedTuple): + """ + Data about the current match. + + :param match_number: The current match number + :param match_duration: The duration of the match in seconds + :param video_enabled: Whether video recording is enabled + :param video_resolution: The resolution of the video recording + """ + + match_number: int | None = None + match_duration: int = environment.DEFAULT_MATCH_DURATION + video_enabled: bool = True + video_resolution: tuple[int, int] = (1920, 1080) + + +def get_robot_file(robot_zone: int) -> Path: + """ + Get the path to the robot file for the given zone. + + :param robot_zone: The zone number + :return: The path to the robot file + :raises FileNotFoundError: If no robot controller is found for the given zone + """ + robot_file = environment.ZONE_ROOT / f'zone_{robot_zone}' / 'robot.py' + + # Check if the robot file exists + if not robot_file.exists(): + raise FileNotFoundError(f"No robot code to run for zone {robot_zone}") + + return robot_file + + +def get_game_mode() -> str: + """ + Get the game mode from the game mode file. + + Default to 'dev' if the file does not exist. + + :return: The game mode + """ + if environment.GAME_MODE_FILE.exists(): + game_mode = environment.GAME_MODE_FILE.read_text().strip() + else: + game_mode = 'dev' + + assert game_mode in ['dev', 'comp'], f'Invalid game mode: {game_mode}' + + return game_mode + + +def print_simulation_version() -> None: + """ + Print the version of the simulator that is running. + + Uses a VERSION file in the root of the simulator to determine the version. + For development, the version is uses the git describe command. + + The version is printed to the console. + """ + version_file = environment.SIM_ROOT / 'VERSION' + if version_file.exists(): + version = version_file.read_text().strip() + else: + try: + version = subprocess.check_output( + ['git', 'describe', '--tags', '--always'], + cwd=str(environment.SIM_ROOT.resolve()), + ).decode().strip() + except subprocess.CalledProcessError: + version = 'unknown' + + print( + f"Running simulator version: {version} in Python {platform.python_version()} " + f"({platform.system()}-{platform.machine()})" + ) + + +def get_match_data() -> MatchData: + """Load the match data from the match data file.""" + match_data_file = environment.ARENA_ROOT / 'match.json' + default_match_data = MatchData() + + if match_data_file.exists(): + # TODO error handling for invalid json + raw_data = json.loads(match_data_file.read_text()) + match_data = MatchData( + match_number=raw_data.get('match_number', default_match_data.match_number), + match_duration=raw_data.get('duration', default_match_data.match_duration), + video_enabled=( + raw_data.get('recording_config', {}) + .get('enabled', default_match_data.video_enabled) + ), + video_resolution=( + raw_data.get('recording_config', {}) + .get('video_resolution', default_match_data.video_resolution) + ), + ) + else: + match_data = default_match_data + + return match_data From 17ff9088fce01912e30ce48b72b5739883ef2606 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 12:10:16 +0100 Subject: [PATCH 15/23] Add competition supervisor --- .../competition_supervisor.py | 261 ++++++++++++++++++ simulator/worlds/arena.wbt | 6 + 2 files changed, 267 insertions(+) create mode 100644 simulator/controllers/competition_supervisor/competition_supervisor.py diff --git a/simulator/controllers/competition_supervisor/competition_supervisor.py b/simulator/controllers/competition_supervisor/competition_supervisor.py new file mode 100644 index 0000000..a47d0f3 --- /dev/null +++ b/simulator/controllers/competition_supervisor/competition_supervisor.py @@ -0,0 +1,261 @@ +""".""" +from __future__ import annotations + +import sys +import time +from contextlib import contextmanager +from pathlib import Path +from typing import Iterator + +from controller import Supervisor + +# Robot constructor lacks a return type annotation in R2023b +sys.path.insert(0, Supervisor().getProjectPath()) # type: ignore[no-untyped-call] +# from lighting_control import LightingControl +import environment # configure path to include modules +from robot_logging import get_match_identifier, prefix_and_tee_streams +from robot_utils import get_game_mode, get_match_data, get_robot_file + +# Get the robot object that was created when setting up the environment +_robot = Supervisor.created +assert _robot is not None, "Robot object not created" +supervisor: Supervisor = _robot # type: ignore[assignment] + + +class RobotData: + """Data about a robot in the arena.""" + + def __init__(self, zone: int): + self.registered_ready = False + self.zone = zone + self.robot = supervisor.getFromDef(f'ROBOT{zone}') + if self.robot is None: + raise ValueError(f"Failed to get Webots node for zone {zone}") + + def zone_occupied(self) -> bool: + """Check if this zone has a robot.py file associated with it.""" + try: + _ = get_robot_file(self.zone) + except FileNotFoundError: + return False + return True + + def remove_robot(self) -> None: + """Delete the robot proto from the world.""" + self.robot.remove() # type: ignore[attr-defined] + + def preset_robot(self) -> None: + """Arm the robot so that it waits for the start signal.""" + self.robot.getField('customData').setSFString('prestart') # type: ignore[attr-defined] + + def robot_ready(self) -> bool: + """Check if robot has set its pre-start flag.""" + return bool(self.robot.getField('customData').getSFString() == 'ready') # type: ignore[attr-defined] + + def start_robot(self) -> None: + """Signal to the robot that the start button has been pressed.""" + self.robot.getField('customData').setSFString('start') # type: ignore[attr-defined] + + +class Robots: + """A collection of robots in the arena.""" + + def __init__(self) -> None: + self.robots: dict[int, RobotData] = {} + + for zone in range(0, environment.NUM_ZONES): + try: + robot_data = RobotData(zone) + except ValueError as e: + print(e) + else: + self.robots[zone] = robot_data + + def remove_unoccupied_robots(self) -> None: + """Remove all robots that don't have usercode.""" + for robot in list(self.robots.values()): + if not robot.zone_occupied(): + robot.remove_robot() + _ = self.robots.pop(robot.zone) + + def preset_robots(self) -> None: + """Arm all robots so that they wait for the start signal.""" + for robot in self.robots.values(): + robot.preset_robot() + + def wait_for_ready(self, timeout: float) -> None: + """Wait for all robots to set their pre-start flags.""" + end_time = supervisor.getTime() + timeout + while supervisor.getTime() < end_time: + all_ready = True + # Sleep in individual timesteps to allow the robots to update + supervisor.step() + + for zone, robot in self.robots.items(): + if not robot.registered_ready: + if robot.robot_ready(): + print(f"Robot in zone {zone} is ready.") + # Log only once per robot when ready + robot.registered_ready = True + else: + all_ready = False + if all_ready: + break + else: + pending_robots = ', '.join([ + str(zone) + for zone, robot in self.robots.items() + if not robot.robot_ready() + ]) + raise TimeoutError( + f"Robots in zones {pending_robots} failed to initialise. " + f"Failed to reach wait_start() within {timeout} seconds." + ) + + def start_robots(self) -> None: + """Signal to all robots that their start buttons have been pressed.""" + for robot in self.robots.values(): + robot.start_robot() + + +def is_dev_mode() -> bool: + """Load the mode file and check if we are in dev mode.""" + return (get_game_mode() == 'dev') + + +@contextmanager +def record_animation(filename: Path) -> Iterator[None]: + """Record an animation for the duration of the manager.""" + filename.parent.mkdir(parents=True, exist_ok=True) + print(f"Saving animation to {filename}") + supervisor.animationStartRecording(str(filename)) + yield + supervisor.animationStopRecording() # type: ignore[no-untyped-call] + + +@contextmanager +def record_video( + filename: Path, + resolution: tuple[int, int], + skip: bool = False +) -> Iterator[None]: + """Record a video for the duration of the manager.""" + filename.parent.mkdir(parents=True, exist_ok=True) + + if skip: + print('Not recording movie') + yield + return + else: + print(f"Saving video to {filename}") + + supervisor.movieStartRecording( + str(filename), + width=resolution[0], + height=resolution[1], + quality=100, + codec=0, + acceleration=1, + caption=False, + ) + yield + supervisor.movieStopRecording() # type: ignore[no-untyped-call] + + while not supervisor.movieIsReady(): # type: ignore[no-untyped-call] + time.sleep(0.1) + + if supervisor.movieFailed(): # type: ignore[no-untyped-call] + print("Movie failed to record") + + +def save_image(filename: Path) -> None: + """Capture an image of the arena.""" + filename.parent.mkdir(parents=True, exist_ok=True) + print(f"Saving image to {filename}") + supervisor.exportImage(str(filename), 100) + + +def run_match( + match_duration: int, + media_path_stem: Path, + video_resolution: tuple[int, int], + skip_video: bool, +) -> None: + """Run a match in the arena.""" + robots = Robots() + robots.remove_unoccupied_robots() + + time_step = int(supervisor.getBasicTimeStep()) + match_timesteps = (match_duration * 1000) // time_step + # lighting_control = LightingControl(supervisor, match_timesteps) + + robots.preset_robots() + + robots.wait_for_ready(5) + + with record_animation(media_path_stem.with_suffix('.html')): + # Animations don't support lighting changes so start the animation before + # setting the lighting. Step the simulation to allow the animation to start. + supervisor.step() + # Set initial lighting + # lighting_control.service_lighting(0) + with record_video(media_path_stem.with_suffix('.mp4'), video_resolution, skip_video): + print("===========") + print("Match start") + print("===========") + + # We are ready to start the match now. "Press" the start button on the robots + robots.start_robots() + supervisor.simulationSetMode(Supervisor.SIMULATION_MODE_FAST) # type: ignore[attr-defined] + + # for current_step in range(match_timesteps + 1): + # lighting_control.service_lighting(current_step) + # supervisor.step(time_step) + supervisor.step(match_timesteps) + + print("==================") + print("Game over, pausing") + print("==================") + supervisor.simulationSetMode(Supervisor.SIMULATION_MODE_PAUSE) # type: ignore[attr-defined] + + # To allow for a clear image of the final state, we have reset the + # lighting after the final frame of the video. + save_image(media_path_stem.with_suffix('.jpg')) + # TODO score match + + +def main() -> None: + """Run the competition supervisor.""" + if is_dev_mode(): + exit() + + match_data = get_match_data() + match_id = get_match_identifier() + + prefix_and_tee_streams( + environment.ARENA_ROOT / f'supervisor-log-{match_id}.txt', + prefix=lambda: f'[{supervisor.getTime():0.3f}] ', + ) + + try: + # TODO check for required libraries? + + run_match( + match_data.match_duration, + environment.ARENA_ROOT / 'recordings' / match_id, + video_resolution=match_data.video_resolution, + skip_video=(not match_data.video_enabled), + ) + # Set the overall Webots exit code to follow the supervisor's exit code + except Exception as e: + # Print and step so error is printed to console + print(f"Error: {e}") + supervisor.step() + supervisor.simulationQuit(1) + raise + else: + supervisor.simulationQuit(0) + + +if __name__ == '__main__': + main() diff --git a/simulator/worlds/arena.wbt b/simulator/worlds/arena.wbt index 72de12b..54814c0 100755 --- a/simulator/worlds/arena.wbt +++ b/simulator/worlds/arena.wbt @@ -43,6 +43,12 @@ DEF ROBOT1 SRObot { customData "start" } +Robot { + name "competition_supervisor" + controller "competition_supervisor" + supervisor TRUE +} + Arena { size 5.4 5.4 locked TRUE From 0509f4ea588f2314b64e6ef4d3f685903ac27706 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 12:10:30 +0100 Subject: [PATCH 16/23] Remove unused robots in dev mode --- .../competition_supervisor/competition_supervisor.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/simulator/controllers/competition_supervisor/competition_supervisor.py b/simulator/controllers/competition_supervisor/competition_supervisor.py index a47d0f3..1e73f0b 100644 --- a/simulator/controllers/competition_supervisor/competition_supervisor.py +++ b/simulator/controllers/competition_supervisor/competition_supervisor.py @@ -227,6 +227,8 @@ def run_match( def main() -> None: """Run the competition supervisor.""" if is_dev_mode(): + robots = Robots() + robots.remove_unoccupied_robots() exit() match_data = get_match_data() From c5eaaaaecf8d46affd787bae13ad0d22463b01df Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 12:10:42 +0100 Subject: [PATCH 17/23] Explain other zones --- assets/user_readme.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/assets/user_readme.md b/assets/user_readme.md index fc1f294..0ee692b 100644 --- a/assets/user_readme.md +++ b/assets/user_readme.md @@ -252,6 +252,15 @@ If you see a message saying that Python cannot be found that looks similar to th As well as the guidance above, there are a few other points to note when using the simulator. These can help you to understand what is happening and how to get the most out of the simulator. +### Using Other Zones + +If the arena has multiple starting zones, you can run multiple robots in the simulator. +To test how your robot behaves in each starting zone of the arena, you can copy your robot's code to run in each corner. + +In the folder where you extracted the simulator, alongside the `zone_0` folder, you may have other `zone_` folders. +Such as `zone_1`, `zone_2`, etc. +Each of these folders can contain a `robot.py` file that will be run in the corresponding starting zone of the arena. + ### Performance Optimisations The default settings work for most users however if you are using a less powerful computer or one without a dedicated graphics card (as is the case on many laptops), you may wish to adjust the graphics settings to enable the simulation to run faster. From 9c0fa984296769b7b80a1907b50347034b173f24 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 12:35:18 +0100 Subject: [PATCH 18/23] Fix servo update --- simulator/modules/sbot_interface/devices/servo.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/simulator/modules/sbot_interface/devices/servo.py b/simulator/modules/sbot_interface/devices/servo.py index 440aebc..834dc9a 100644 --- a/simulator/modules/sbot_interface/devices/servo.py +++ b/simulator/modules/sbot_interface/devices/servo.py @@ -4,8 +4,6 @@ The servo will apply a small amount of variation to the power setting to simulate inaccuracies in the servo. """ -from __future__ import annotations - from abc import ABC, abstractmethod from typing import TYPE_CHECKING @@ -20,8 +18,10 @@ if TYPE_CHECKING: from controller import PositionSensor -MAX_POSITION = 2000 -MIN_POSITION = 1000 +MAX_POSITION = 4000 +MIN_POSITION = 300 +SERVO_MAX = 1980 +SERVO_MIN = 350 class BaseServo(ABC): @@ -98,7 +98,7 @@ class Servo(BaseServo): """A servo connected to the Servo board.""" def __init__(self, device_name: str) -> None: - self.position = (MAX_POSITION + MIN_POSITION) // 2 + self.position = (SERVO_MAX + SERVO_MIN) // 2 # TODO use setAvailableForce to simulate disabled self._enabled = False g = get_globals() @@ -121,11 +121,11 @@ def set_position(self, value: int) -> None: """ # Apply a small amount of variation to the power setting to simulate # inaccuracies in the servo - value = int(add_jitter(value, (MIN_POSITION, MAX_POSITION))) + value = int(add_jitter(value, (SERVO_MIN, SERVO_MAX))) self._device.setPosition(map_to_range( value, - (MIN_POSITION, MAX_POSITION), + (SERVO_MIN, SERVO_MAX), (self._min_position + 0.001, self._max_position - 0.001), )) self.position = value From bb0740cd2457e4198c978d355af162c712fa0a5f Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 13:36:15 +0100 Subject: [PATCH 19/23] Update example robot --- example_robots/basic_robot.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/example_robots/basic_robot.py b/example_robots/basic_robot.py index 25a16f5..c87070c 100644 --- a/example_robots/basic_robot.py +++ b/example_robots/basic_robot.py @@ -1,26 +1,26 @@ -from sbot import Robot +from sbot import arduino, motors, utils -robot = Robot() +# robot = Robot() -robot.motor_board.motors[0].power = 1 -robot.motor_board.motors[1].power = 1 +motors.set_power(0, 1) +motors.set_power(1, 1) # measure the distance of the right ultrasound sensor # pin 6 is the trigger pin, pin 7 is the echo pin -distance = robot.arduino.ultrasound_measure(6, 7) +distance = arduino.measure_ultrasound_distance(6, 7) print(f"Right ultrasound distance: {distance / 1000} meters") # motor board, channel 0 to half power forward -robot.motor_board.motors[0].power = 0.5 +motors.set_power(0, 0.5) # motor board, channel 1 to half power forward, -robot.motor_board.motors[1].power = 0.5 +motors.set_power(1, 0.5) # minimal time has passed at this point, # so the robot will appear to move forward instead of turning # sleep for 2 second -robot.sleep(2) +utils.sleep(2) # stop both motors -robot.motor_board.motors[0].power = 0 -robot.motor_board.motors[1].power = 0 +motors.set_power(0, 0) +motors.set_power(1, 0) From dd5c1d4d041e4f86c53fb356cf9a088c4197e6f0 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 13:42:52 +0100 Subject: [PATCH 20/23] Update runner scripts --- scripts/generate_release.py | 4 ++ scripts/run_simulator.py | 116 +++++++++++++++++++++++------------- scripts/setup.py | 82 ++++++++++++++++--------- 3 files changed, 132 insertions(+), 70 deletions(-) diff --git a/scripts/generate_release.py b/scripts/generate_release.py index 2abe1ca..a0ee683 100755 --- a/scripts/generate_release.py +++ b/scripts/generate_release.py @@ -78,8 +78,12 @@ logger.info("Copying helper scripts to temp directory") shutil.copy(project_root / "scripts/setup.py", temp_dir / "setup.py") for script in project_root.glob("scripts/run_*.py"): + if "run_comp_" in str(script): + continue shutil.copy(script, temp_dir) + script_dir = temp_dir / "scripts" + script_dir.mkdir() logger.info("Copying example code to temp directory") shutil.copytree(project_root / "example_robots", temp_dir / "example_robots") diff --git a/scripts/run_simulator.py b/scripts/run_simulator.py index 6a76e3e..e4a6a7d 100755 --- a/scripts/run_simulator.py +++ b/scripts/run_simulator.py @@ -3,10 +3,13 @@ A script to run the project in Webots. Largely just a shortcut to running the arena world in Webots. -Only functional in releases. """ +# ruff: noqa: E501 +from __future__ import annotations + import sys import traceback +from os.path import expandvars from pathlib import Path from shutil import which from subprocess import Popen @@ -14,53 +17,84 @@ if sys.platform == "win32": from subprocess import CREATE_NEW_PROCESS_GROUP, DETACHED_PROCESS -try: - if not (Path(__file__).parent / 'simulator/VERSION').exists(): - print("This script is only functional in releases.") - raise RuntimeError +if (Path(__file__).parent / 'simulator/VERSION').exists(): + print("Running in release mode") + SIM_BASE = Path(__file__).parent.resolve() +else: + print("Running in development mode") + # Assume the script is in the scripts directory + SIM_BASE = Path(__file__).parents[1].resolve() + +POSSIBLE_WEBOTS_PATHS = [ + ("darwin", "/Applications/Webots.app/Contents/MacOS/webots"), + ("win32", "C:\\Program Files\\Webots\\msys64\\mingw64\\bin\\webotsw.exe"), + ("win32", expandvars("%LOCALAPPDATA%\\Programs\\Webots\\msys64\\mingw64\\bin\\webotsw.exe")), + # Attempt to use the start menu shortcut + ("win32", expandvars("%ProgramData%\\Microsoft\\Windows\\Start Menu\\Programs\\Cyberbotics\\Webots.lnk")), + ("win32", expandvars("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Cyberbotics\\Webots.lnk")), + ("linux", "/usr/local/bin/webots"), + ("linux", "/usr/bin/webots"), +] + + +def get_webots_parameters() -> tuple[Path, Path]: + """ + Get the paths to the Webots executable and the arena world file. - world_file = Path(__file__).parent / "simulator/worlds/arena.wbt" + :return: The paths to the Webots executable and the arena world file + """ + world_file = SIM_BASE / "simulator/worlds/arena.wbt" + if not world_file.exists(): + raise RuntimeError("World file not found.") + + if not (SIM_BASE / "venv").exists(): + raise RuntimeError("Please run the setup.py script before running the simulator.") + + # Check if Webots is in the PATH webots = which("webots") # Find the webots executable, if it is not in the PATH if webots is None: - if sys.platform == "darwin": - webots = "/Applications/Webots.app/Contents/MacOS/webots" - elif sys.platform == "win32": - webots = "C:\\Program Files\\Webots\\msys64\\mingw64\\bin\\webotsw.exe" - elif sys.platform.startswith("linux"): - possible_paths = ["/usr/local/bin/webots", "/usr/bin/webots"] - for path in possible_paths: + for system_filter, path in POSSIBLE_WEBOTS_PATHS: + if sys.platform.startswith(system_filter): + print(f"Checking {path}") if Path(path).exists(): webots = path break - else: - print("Webots executable not found.") - raise RuntimeError + + if webots is None or not Path(webots).exists(): + raise RuntimeError("Webots executable not found.") + + return Path(webots), world_file + + +def main() -> None: + """Run the project in Webots.""" + try: + webots, world_file = get_webots_parameters() + + # Run the world file in Webots, + # detaching the process so it does not close when this script does + if sys.platform == "win32": + Popen( + [str(webots), str(world_file)], + creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP, + # shell=True is needed to run from shortcuts + shell=(webots.suffix == ".lnk"), + ) else: - print("Unsupported platform.") - raise RuntimeError - - if not Path(webots).exists(): - print("Webots executable not found.") - raise RuntimeError - - if not (Path(__file__).parent / "venv").exists(): - print("Please run the setup.py script before running the simulator.") - raise RuntimeError - - # Run the world file in Webots, - # detaching the process so it does not close when this script does - if sys.platform == "win32": - Popen([webots, world_file], creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP) - else: - Popen([webots, world_file], start_new_session=True) -except RuntimeError: - input("Press enter to continue...") - exit(1) -except Exception as e: - print(f"An error occurred: {e}") - print(traceback.format_exc()) - input("Press enter to continue...") - exit(1) + Popen([str(webots), str(world_file)], start_new_session=True) + except RuntimeError as e: + print(f"An error occurred: {e}") + input("Press enter to continue...") + exit(1) + except Exception as e: + print(f"An error occurred: {e}") + print(traceback.format_exc()) + input("Press enter to continue...") + exit(1) + + +if __name__ == "__main__": + main() diff --git a/scripts/setup.py b/scripts/setup.py index 928d9b7..b5776a0 100755 --- a/scripts/setup.py +++ b/scripts/setup.py @@ -13,44 +13,24 @@ import logging import platform import shutil +import sys from pathlib import Path -from subprocess import run +from subprocess import SubprocessError, check_call from venv import create logging.basicConfig(level=logging.INFO, format="[%(asctime)s] %(levelname)s: %(message)s") logger = logging.getLogger(__name__) -try: - if (Path(__file__).parent / 'simulator/VERSION').exists(): - # This is running from a release - project_root = Path(__file__).parent - requirements = project_root / "simulator/requirements.txt" - else: - # This is running from the repository - project_root = Path(__file__).parents[1] - requirements = project_root / "requirements.txt" - venv_dir = project_root / "venv" +def populate_python_config(runtime_ini: Path, venv_python: Path) -> None: + """ + Populate the python configuration in the runtime.ini file. - logger.info(f"Creating virtual environment in {venv_dir.absolute()}") - create(venv_dir, with_pip=True) + This will set the python command to the virtual environment python. - logger.info(f"Installing dependencies from {requirements.absolute()}") - if platform.system() == "Windows": - pip = venv_dir / "Scripts/pip.exe" - venv_python = venv_dir / "Scripts/python" - else: - pip = venv_dir / "bin/pip" - venv_python = venv_dir / "bin/python" - run( - [str(venv_python), "-m", "pip", "install", "--upgrade", "pip", "setuptools", "wheel"], - cwd=venv_dir, - ) - run([str(pip), "install", "-r", str(requirements)], cwd=venv_dir) - - logger.info("Setting up Webots Python location") - - runtime_ini = project_root / "simulator/controllers/usercode_runner/runtime.ini" + :param runtime_ini: The path to the runtime.ini file + :param venv_python: The path to the virtual environment python executable + """ runtime_content: list[str] = [] if runtime_ini.exists(): prev_runtime_content = runtime_ini.read_text().splitlines() @@ -79,12 +59,56 @@ runtime_ini.write_text('\n'.join(runtime_content)) + +try: + if (Path(__file__).parent / 'simulator/VERSION').exists(): + # This is running from a release + print("Running in release mode") + project_root = Path(__file__).parent + requirements = project_root / "simulator/requirements.txt" + else: + # This is running from the repository + print("Running in development mode") + project_root = Path(__file__).parents[1] + requirements = project_root / "requirements.txt" + + print(f"Python version: {sys.version} on {platform.platform()}") + + venv_dir = project_root / "venv" + + logger.info(f"Creating virtual environment in {venv_dir.absolute()}") + create(venv_dir, with_pip=True) + + logger.info(f"Installing dependencies from {requirements.absolute()}") + if platform.system() == "Windows": + pip = venv_dir / "Scripts/pip.exe" + venv_python = venv_dir / "Scripts/python" + else: + pip = venv_dir / "bin/pip" + venv_python = venv_dir / "bin/python" + check_call( + [str(venv_python), "-m", "pip", "install", "--upgrade", "pip", "setuptools", "wheel"], + cwd=venv_dir, + ) + check_call([str(pip), "install", "-r", str(requirements)], cwd=venv_dir) + + logger.info("Setting up Webots Python location") + + controllers_dir = project_root / "simulator/controllers" + usercode_ini = controllers_dir / "usercode_runner/runtime.ini" + supervisor_ini = controllers_dir / "competition_supervisor/runtime.ini" + populate_python_config(usercode_ini, venv_python) + populate_python_config(supervisor_ini, venv_python) + # repopulate zone 0 with example code if robot.py is missing zone_0 = project_root / "zone_0" if not (zone_0 / "robot.py").exists(): logger.info("Repopulating zone 0 with example code") zone_0.mkdir(exist_ok=True) shutil.copy(project_root / "example_robots/basic_robot.py", zone_0 / "robot.py") +except SubprocessError: + logger.error("Setup failed due to an error.") + input("An error occurred, press enter to close.") except Exception: logger.exception("Setup failed due to an error.") input("An error occurred, press enter to close.") From a2f524f753ad58ce40a3febedce83c1e360dd5ec Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 13:52:24 +0100 Subject: [PATCH 21/23] Update arena image --- README.md | 2 +- assets/arena_overview.jpg | Bin 72483 -> 0 bytes assets/arena_overview.png | Bin 0 -> 100071 bytes 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100755 assets/arena_overview.jpg create mode 100644 assets/arena_overview.png diff --git a/README.md b/README.md index dd94980..eb73a6e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # sbot_simulator A simulator built around Webots to use the sbot library virtually. -![sbot_simulator](assets/arena_overview.jpg) +![sbot_simulator](assets/arena_overview.png) ## Installation diff --git a/assets/arena_overview.jpg b/assets/arena_overview.jpg deleted file mode 100755 index 784c6e6a9e8147695f20f10e4d95a6dac2a57709..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72483 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 F{{c5~$z%Wk diff --git a/assets/arena_overview.png b/assets/arena_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..5a2e2fe19a1a06bb15147e1e3c59ba0701467380 GIT binary patch literal 100071 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 literal 0 HcmV?d00001 From f24317927817c4163b6d16d48b5ea2f1c2c00143 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 14:02:31 +0100 Subject: [PATCH 22/23] Fix old python --- simulator/modules/sbot_interface/devices/servo.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/simulator/modules/sbot_interface/devices/servo.py b/simulator/modules/sbot_interface/devices/servo.py index 834dc9a..e1daf1b 100644 --- a/simulator/modules/sbot_interface/devices/servo.py +++ b/simulator/modules/sbot_interface/devices/servo.py @@ -4,6 +4,8 @@ The servo will apply a small amount of variation to the power setting to simulate inaccuracies in the servo. """ +from __future__ import annotations + from abc import ABC, abstractmethod from typing import TYPE_CHECKING From 3419c8506c8162581d46059430a4fb6cdd346bef Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 3 Aug 2025 14:26:19 +0100 Subject: [PATCH 23/23] update keyboard robot --- example_robots/keyboard_robot.py | 78 ++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 33 deletions(-) diff --git a/example_robots/keyboard_robot.py b/example_robots/keyboard_robot.py index a717140..df21df1 100644 --- a/example_robots/keyboard_robot.py +++ b/example_robots/keyboard_robot.py @@ -1,7 +1,8 @@ +# mypy: ignore-errors import math from controller import Keyboard -from sbot import AnalogPins, Robot +from sbot import AnalogPin, Colour, arduino, comp, leds, motors, utils, vision # Any keys still pressed in the following period will be handled again # leading to rprinting sensors multiple times @@ -62,7 +63,7 @@ def angle_str(angle: float) -> str: return f"{angle:.4f} rad" -def print_sensors(robot: Robot) -> None: +def print_sensors() -> None: ultrasonic_sensor_names = { (2, 3): "Front", (4, 5): "Left", @@ -70,9 +71,9 @@ def print_sensors(robot: Robot) -> None: (8, 9): "Back", } reflectance_sensor_names = { - AnalogPins.A0: "Left", - AnalogPins.A1: "Center", - AnalogPins.A2: "Right", + AnalogPin.A0: "Left", + AnalogPin.A1: "Center", + AnalogPin.A2: "Right", } touch_sensor_names = { 10: "Front Left", @@ -83,29 +84,30 @@ def print_sensors(robot: Robot) -> None: print("Distance sensor readings:") for (trigger_pin, echo_pin), name in ultrasonic_sensor_names.items(): - dist = robot.arduino.ultrasound_measure(trigger_pin, echo_pin) + dist = arduino.measure_ultrasound_distance(trigger_pin, echo_pin) print(f"({trigger_pin}, {echo_pin}) {name: <12}: {dist:.0f} mm") print("Touch sensor readings:") for pin, name in touch_sensor_names.items(): - touching = robot.arduino.pins[pin].digital_value + touching = arduino.digital_read(pin) print(f"{pin} {name: <6}: {touching}") print("Reflectance sensor readings:") for Apin, name in reflectance_sensor_names.items(): - reflectance = robot.arduino.pins[Apin].analog_value + reflectance = arduino.analog_read(Apin) print(f"{Apin} {name: <12}: {reflectance:.2f} V") -def print_camera_detection(robot: Robot) -> None: - markers = robot.camera.see() +def print_camera_detection() -> None: + markers = vision.detect_markers() if markers: print(f"Found {len(markers)} makers:") for marker in markers: print(f" #{marker.id}") print( - f" Position: {marker.distance:.0f} mm, azi: {angle_str(marker.azimuth)}, " - f"elev: {angle_str(marker.elevation)}", + f" Position: {marker.position.distance:.0f} mm, " + f"{angle_str(marker.position.horizontal_angle)} right, " + f"{angle_str(marker.position.vertical_angle)} up", ) yaw, pitch, roll = marker.orientation print( @@ -119,11 +121,15 @@ def print_camera_detection(robot: Robot) -> None: print() -robot = Robot() - keyboard = KeyboardInterface() -key_sense = CONTROLS["sense"][robot.zone] +# Automatically set the zone controls based on the robot's zone +# Alternatively, you can set this manually +# ZONE_CONTROLS = 0 +ZONE_CONTROLS = comp.zone + +assert ZONE_CONTROLS < len(CONTROLS["forward"]), \ + "No controls defined for this zone, alter the ZONE_CONTROLS variable to use in this zone." print( "Note: you need to click on 3D viewport for keyboard events to be picked " @@ -138,36 +144,42 @@ def print_camera_detection(robot: Robot) -> None: keys = keyboard.process_keys() # Actions that are run continuously while the key is held - if CONTROLS["forward"][robot.zone] in keys["held"]: + if CONTROLS["forward"][ZONE_CONTROLS] in keys["held"]: left_power += 0.5 right_power += 0.5 - if CONTROLS["reverse"][robot.zone] in keys["held"]: + if CONTROLS["reverse"][ZONE_CONTROLS] in keys["held"]: left_power += -0.5 right_power += -0.5 - if CONTROLS["left"][robot.zone] in keys["held"]: + if CONTROLS["left"][ZONE_CONTROLS] in keys["held"]: left_power -= 0.25 right_power += 0.25 - if CONTROLS["right"][robot.zone] in keys["held"]: + if CONTROLS["right"][ZONE_CONTROLS] in keys["held"]: left_power += 0.25 right_power -= 0.25 - if CONTROLS["boost"][robot.zone] in keys["held"]: + if CONTROLS["boost"][ZONE_CONTROLS] in keys["held"]: boost = True # Actions that are run once when the key is pressed - if CONTROLS["sense"][robot.zone] in keys["pressed"]: - print_sensors(robot) - - if CONTROLS["see"][robot.zone] in keys["pressed"]: - print_camera_detection(robot) - - if CONTROLS["led"][robot.zone] in keys["pressed"]: - pass - - if CONTROLS["angle_unit"][robot.zone] in keys["pressed"]: + if CONTROLS["sense"][ZONE_CONTROLS] in keys["pressed"]: + print_sensors() + + if CONTROLS["see"][ZONE_CONTROLS] in keys["pressed"]: + print_camera_detection() + + if CONTROLS["led"][ZONE_CONTROLS] in keys["pressed"]: + leds.set_colour(0, Colour.MAGENTA) + leds.set_colour(1, Colour.MAGENTA) + leds.set_colour(2, Colour.MAGENTA) + elif CONTROLS["led"][ZONE_CONTROLS] in keys["released"]: + leds.set_colour(0, Colour.OFF) + leds.set_colour(1, Colour.OFF) + leds.set_colour(2, Colour.OFF) + + if CONTROLS["angle_unit"][ZONE_CONTROLS] in keys["pressed"]: USE_DEGREES = not USE_DEGREES print(f"Angle unit set to {'degrees' if USE_DEGREES else 'radians'}") @@ -176,7 +188,7 @@ def print_camera_detection(robot: Robot) -> None: left_power = max(min(left_power * 2, 1), -1) right_power = max(min(right_power * 2, 1), -1) - robot.motor_board.motors[0].power = left_power - robot.motor_board.motors[1].power = right_power + motors.set_power(0, left_power) + motors.set_power(1, right_power) - robot.sleep(KEYBOARD_SAMPLING_PERIOD / 1000) + utils.sleep(KEYBOARD_SAMPLING_PERIOD / 1000)