From ac0b0f877f069e02e90d807855e8a09cb4b35fe7 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sat, 1 Nov 2025 16:19:01 +0000 Subject: [PATCH 01/14] Move remote debug to it's own page Separate from editor setup --- _data/sidebar_tree.yaml | 2 ++ tutorials/editors/remote-debug.md | 53 +++++++++++++++++++++++++++++++ tutorials/editors/vscode.md | 50 ----------------------------- 3 files changed, 55 insertions(+), 50 deletions(-) create mode 100644 tutorials/editors/remote-debug.md diff --git a/_data/sidebar_tree.yaml b/_data/sidebar_tree.yaml index 103ccaff..534a7f5b 100644 --- a/_data/sidebar_tree.yaml +++ b/_data/sidebar_tree.yaml @@ -41,6 +41,8 @@ tree: title: PyCharm - url: /tutorials/editors/vscode title: Visual Studio Code + - url: /tutorials/editors/remote-debug + title: Remote Debugging - url: /tutorials/update_brain title: Updating your brain board - url: /tutorials/discord diff --git a/tutorials/editors/remote-debug.md b/tutorials/editors/remote-debug.md new file mode 100644 index 00000000..9eebde15 --- /dev/null +++ b/tutorials/editors/remote-debug.md @@ -0,0 +1,53 @@ +--- +layout: page +title: Remote Debugging +--- +# Remote Debugging + +When connected to the [robot's WiFi hotspot]({{ site.baseurl }}/kit/brain_board/web_interface), it is possible to attach VS Code's +debugger to the robot by performing the following steps: + +1. Ensure the [Python extension](#python-extension) is installed. +2. Open the Run and Debug panel. +3. Click the cog icon at the top of the panel. +4. Paste the following configuration: +```json +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to Robot", + "type": "python", + "request": "attach", + "connect": { + "host": "robot.lan", + "port": 5678 + }, + "pathMappings": [ + { + "localRoot": "${workspaceFolder}", + "remoteRoot": "." + } + ], + "justMyCode": true + } + ] +} +``` +5. Add the following snippet to the top of your code: +```python +import debugpy +debugpy.listen(("0.0.0.0", 5678)) +``` + +If you would like for your code to not run until the debugger is attached, you can also add the following: +```python +print("Waiting for debugger...") +debugpy.wait_for_client() +``` + +6. In order to debug, you can now either click the green play button at the top of the Run and Debug panel or press F5. + +For more information on debugging with Visual Studio Code, please visit the [VS Code documentation][vs-code-debug-docs] + +[vs-code-debug-docs]: https://code.visualstudio.com/Docs/editor/debugging diff --git a/tutorials/editors/vscode.md b/tutorials/editors/vscode.md index 83919fa2..c75e4c61 100644 --- a/tutorials/editors/vscode.md +++ b/tutorials/editors/vscode.md @@ -37,53 +37,3 @@ you'll need to make the library available within the Python environment that you 3. Run `pip install sr.robot3`. [code-completion]: https://en.wikipedia.org/wiki/Autocomplete#In_source_code_editors - -## Remote Debugging - -When connected to the [robot's WiFi hotspot]({{ site.baseurl }}/kit/brain_board/web_interface), it is possible to attach VS Code's -debugger to the robot by performing the following steps: - -1. Ensure the [Python extension](#python-extension) is installed. -2. Open the Run and Debug panel. -3. Click the cog icon at the top of the panel. -4. Paste the following configuration: -```json -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Attach to Robot", - "type": "python", - "request": "attach", - "connect": { - "host": "robot.lan", - "port": 5678 - }, - "pathMappings": [ - { - "localRoot": "${workspaceFolder}", - "remoteRoot": "." - } - ], - "justMyCode": true - } - ] -} -``` -5. Add the following snippet to the top of your code: -```python -import debugpy -debugpy.listen(("0.0.0.0", 5678)) -``` - -If you would like for your code to not run until the debugger is attached, you can also add the following: -```python -print("Waiting for debugger...") -debugpy.wait_for_client() -``` - -6. In order to debug, you can now either click the green play button at the top of the Run and Debug panel or press F5. - -For more information on debugging with Visual Studio Code, please visit the [VS Code documentation][vs-code-debug-docs] - -[vs-code-debug-docs]: https://code.visualstudio.com/Docs/editor/debugging From c2f21247b7008cc479f7d7af73ac481e550a64d0 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sat, 1 Nov 2025 16:46:47 +0000 Subject: [PATCH 02/14] Rename pre-kickstart activities to simulator activities --- _data/sidebar_tree.yaml | 4 ++-- ...kickstart_activities.md => simulator_activities.md} | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) rename competitor_resources/{pre_kickstart_activities.md => simulator_activities.md} (53%) diff --git a/_data/sidebar_tree.yaml b/_data/sidebar_tree.yaml index 534a7f5b..1251e2d5 100644 --- a/_data/sidebar_tree.yaml +++ b/_data/sidebar_tree.yaml @@ -141,8 +141,8 @@ tree: - url: /competitor_resources/ title: Resources tree: - - url: /competitor_resources/pre_kickstart_activities - title: Pre-Kickstart Activities + - url: /competitor_resources/simulator_activities + title: Simulator Activities - url: /competitor_resources/microgames title: Microgames - url: /competitor_resources/markers diff --git a/competitor_resources/pre_kickstart_activities.md b/competitor_resources/simulator_activities.md similarity index 53% rename from competitor_resources/pre_kickstart_activities.md rename to competitor_resources/simulator_activities.md index 84b45f15..b1dd651a 100644 --- a/competitor_resources/pre_kickstart_activities.md +++ b/competitor_resources/simulator_activities.md @@ -1,11 +1,15 @@ --- +redirect_from: + - /competitor_resources/pre_kickstart_activities layout: page -title: Pre-Kickstart Activities +title: Simulator Activities --- -# Pre-Kickstart Activities +# Simulator Activities -The pre-Kickstart activities were first included for SR2025 to introduce the concepts of autonomous robotics that can be completed prior to receiving your kit or this year's game being announced. They use our simulator for a set of activities intended to be completed between registration and Kickstart. These will teach some core concepts of robotics and introduce some basic sensors that teams could use on their physical robots. +We have created a set of activities to introduce the concepts of autonomous robotics that can be completed prior to receiving your kit or this year's game being announced. +They use a special version of our simulator for a set of activities intended to be completed between registration and Kickstart. +These will teach some core concepts of robotics and introduce some basic sensors that teams could use on their physical robots. We recommend you work through them as a team, so you can learn from each other. If you have any issues, just ask us on [Discord](/docs/tutorials/discord). From b7c59dcba5f4f436f8d82aa88430cf8847bbe294 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sat, 1 Nov 2025 18:43:16 +0000 Subject: [PATCH 03/14] Include arena diagram for simulator activities --- competitor_resources/simulator_activities.md | 9 + resources/simulator/fig-arena.svg | 413 +++++++++++++++++++ 2 files changed, 422 insertions(+) create mode 100644 resources/simulator/fig-arena.svg diff --git a/competitor_resources/simulator_activities.md b/competitor_resources/simulator_activities.md index b1dd651a..01ee569f 100644 --- a/competitor_resources/simulator_activities.md +++ b/competitor_resources/simulator_activities.md @@ -21,3 +21,12 @@ This year's activities will be available shortly and we will contact all team su The robot used for the pre-Kickstart activities differs from the robot used in the regular simulator to have more of a focus on sensing the environment around the robot and lacks any mechanisms for picking up other objects. All sensors attached to the Arduino are the same, but there are no servos on this robot. + +## Example Game: Tin Can Rally + +To allow us to demonstrate the utility of various sensors, the simulator is set up for a game called Tin Can Rally. +In this game, the robot must navigate around a course avoiding the tin cans placed around the course. + +Below is the diagram of the arena: + +![arena diagram]({{ site.baseurl}}/resources/simulator/fig-arena.svg) diff --git a/resources/simulator/fig-arena.svg b/resources/simulator/fig-arena.svg new file mode 100644 index 00000000..422389ac --- /dev/null +++ b/resources/simulator/fig-arena.svg @@ -0,0 +1,413 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100 + 101 + + 100 + 101 + + 102 + 103 + + 102 + 103 + + 104 + 105 + + 104 + 105 + + 106 + 107 + + 106 + 107 + + + + 1220mm + + + + 1220mm + + + + 610mm + + + 1480mm + + + 1220mm + + + 1220mm + + + 380mm + + + 460mm + + + 600mm + + + + + 610mm + + + + + 150mm + + + + 740mm + + + + 1220mm + + + 750mm + + + + 370mm + + + + 370mm + + + 5400mm + + + 5400mm + + + + + + Robot starting area + + + Can + + + 2 + Marker (with ID) + + + + Scoring Line + + + Inner wall + + + + + Line follow guide + + From 8a6643299bd7a1205d8b3d29a3ae78d87fe1755c Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 2 Nov 2025 14:53:47 +0000 Subject: [PATCH 04/14] Wire colour is no longer in the rules --- tutorials/assembly.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/assembly.md b/tutorials/assembly.md index 01f2c47c..edffd7d8 100644 --- a/tutorials/assembly.md +++ b/tutorials/assembly.md @@ -43,7 +43,7 @@ Board | Power In order to connect the Brain, Motor and Servo Boards to the Power Board, you will need to create some power cables. This should be done using the provided red and black _power wire_ (this is the thicker wire provided in the kit) and a pair of green CamCon connectors. The blue power wire should only be used to connect motors to the motor board. -_Remember you **must** use black wire for any ground connections as defined in the [Rules](/docs/rules)._ +_Remember you **should** use black wire for any ground connections as this will make debugging issues later much easier._ When creating your power cables be sure to refer to the pages for each board so that you connect the wires the right way around. In our diagrams, the + outputs from the the Power Board should be connected to the + inputs on the board being powered. From 9dc9318e6ea5542193deedce9d3b8c00a70d87c9 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sun, 2 Nov 2025 20:12:34 +0000 Subject: [PATCH 05/14] Fix link --- competitor_resources/simulator_activities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/competitor_resources/simulator_activities.md b/competitor_resources/simulator_activities.md index 01ee569f..543c9fff 100644 --- a/competitor_resources/simulator_activities.md +++ b/competitor_resources/simulator_activities.md @@ -12,7 +12,7 @@ They use a special version of our simulator for a set of activities intended to These will teach some core concepts of robotics and introduce some basic sensors that teams could use on their physical robots. We recommend you work through them as a team, so you can learn from each other. -If you have any issues, just ask us on [Discord](/docs/tutorials/discord). +If you have any issues, just ask us on [Discord]({{ site.baseurl}}/tutorials/discord). This year's activities will be available shortly and we will contact all team supervisors when they are released. From 73193da534dae933b7a633ca89e3d271b937074f Mon Sep 17 00:00:00 2001 From: WillB97 Date: Mon, 3 Nov 2025 22:29:54 +0000 Subject: [PATCH 06/14] Update Python instructions for the simulator --- simulator/setting_up_simulator.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/simulator/setting_up_simulator.md b/simulator/setting_up_simulator.md index dde17439..78b86675 100644 --- a/simulator/setting_up_simulator.md +++ b/simulator/setting_up_simulator.md @@ -9,11 +9,14 @@ Setting up the Simulator ## Required Software In order to use the simulator a few set-up steps need to be done. -First you need to install Python 3, between 3.9 and 3.12, and Webots R2025a. -Python 3.13 is not currently supported by the simulator. +First you need to install Python 3, between 3.10 and 3.13, and Webots R2025a. +Python 3.14 is not currently supported by the simulator. -To install Python, you can download the latest version from the [Python website](https://www.python.org/downloads/). If you have already installed Python from a package manager, such as homebrew on MacOS, apt on Ubuntu, or the Windows store on Windows, you can skip this step. -![python download site]({{ site.baseurl }}/images/content/simulator/python-download.png) +To install an appropriate version of Python from below. If you have already installed Python from a package manager, such as homebrew on MacOS, apt on Ubuntu, or the Windows store on Windows, you can skip this step. + +- [MacOS Installer](https://www.python.org/ftp/python/3.11.8/python-3.11.8-macos11.pkg) +- [Windows x86 Installer](https://www.python.org/ftp/python/3.11.8/python-3.11.8-amd64.exe) +- [Windows ARM Installer](https://www.python.org/ftp/python/3.11.8/python-3.11.8-arm64.exe) We recommend using **Python 3.11** as it is the version which is used on your physical robot. From 84cf190e6de809975c3692a413b8aca99a83aee6 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Mon, 3 Nov 2025 22:32:34 +0000 Subject: [PATCH 07/14] fix link --- tutorials/editors/remote-debug.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/editors/remote-debug.md b/tutorials/editors/remote-debug.md index 9eebde15..ae009bd5 100644 --- a/tutorials/editors/remote-debug.md +++ b/tutorials/editors/remote-debug.md @@ -7,7 +7,7 @@ title: Remote Debugging When connected to the [robot's WiFi hotspot]({{ site.baseurl }}/kit/brain_board/web_interface), it is possible to attach VS Code's debugger to the robot by performing the following steps: -1. Ensure the [Python extension](#python-extension) is installed. +1. Ensure the [Python extension]({{ site.baseurl }}/tutorials/editors/vscode#python-extension) is installed. 2. Open the Run and Debug panel. 3. Click the cog icon at the top of the panel. 4. Paste the following configuration: From d80ebdbbba3c8a34628098ae427a224c7bd1c60a Mon Sep 17 00:00:00 2001 From: WillB97 Date: Wed, 5 Nov 2025 19:52:11 +0000 Subject: [PATCH 08/14] Add SR2026 markers --- resources/2026/sr-markers-sr2026.pdf | Bin 0 -> 133988 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 resources/2026/sr-markers-sr2026.pdf diff --git a/resources/2026/sr-markers-sr2026.pdf b/resources/2026/sr-markers-sr2026.pdf new file mode 100644 index 0000000000000000000000000000000000000000..087d28aebb4c70d5f409db65b89a8fc7b5394a64 GIT binary patch literal 133988 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 Tk0J;JG?t+L@cHu1!XN(^ZqT?u literal 0 HcmV?d00001 From c1440d8ee7b0af2f7f16fbd93cfd6a509a3b5136 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Wed, 5 Nov 2025 21:07:55 +0000 Subject: [PATCH 09/14] Add simulator activities code --- resources/simulator/sim_activities_code.txt | 141 ++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 resources/simulator/sim_activities_code.txt diff --git a/resources/simulator/sim_activities_code.txt b/resources/simulator/sim_activities_code.txt new file mode 100644 index 00000000..a7f5e75d --- /dev/null +++ b/resources/simulator/sim_activities_code.txt @@ -0,0 +1,141 @@ +## Student Robotics Simulator Activities Code ## +## To use each segment of code, copy it into a robot.py file ## +############################################################### + +#### 3. Making a Move #### + +from sr.robot3 import Robot + +#Create the robot object +robot = Robot() + +#set the left motor to 50% power and right motor to 0% power +robot.motor_board.motors[0].power = 0.5 +robot.motor_board.motors[1].power = 0 +#Robot power goes off at end of code, so wait for 1 second +robot.sleep(1) + +#### 3.1. Open Loop Control #### + +from sr.robot3 import Robot + +robot = Robot() + +#Go forward and backward at 50% power for 1 second 10 times, ending at the starting point +for i in range(10): + robot.motor_board.motors[0].power = 0.5 + robot.motor_board.motors[1].power = 0.5 + robot.sleep(1) + robot.motor_board.motors[0].power = -0.5 + robot.motor_board.motors[1].power = -0.5 + robot.sleep(1) + +#### 4.2. Bump Switches #### + +from sr.robot3 import Robot + +robot = Robot() + +#pin 11 is the front right microswitch +#Consult the docs for the other switch pins +frontright = robot.arduino.pins[11].digital_read() + +#### 4.3. Ultrasound Distance Sensors #### + +from sr.robot3 import Robot + +robot = Robot() + +def set_motors(left,right): + robot.motor_board.motors[0].power = left + robot.motor_board.motors[1].power = right + +set_motors(0.2,0.2) +while True: + distance_left = robot.arduino.ultrasound_measure(4, 5) #This is the left sensor + print(distance_left) + +#### 4.4. Infrared Reflectance Sensors #### + +from sr.robot3 import Robot, A0, A1, A2 + +robot = Robot() + +while True: + left_IR = robot.arduino.pins[A0].analog_read() + centre_IR = robot.arduino.pins[A1].analog_read() + right_IR = robot.arduino.pins[A2].analog_read() + print(left_IR, centre_IR, right_IR) + +#### 4.4.1. Finite State Machines (Bang Bang Control) #### + +from sr.robot3 import Robot, A0, A1, A2 + +robot = Robot() + +def set_motors(left,right): + robot.motor_board.motors[0].power = left + robot.motor_board.motors[1].power = right + +def set_state(state): + if state == "forward": + set_motors(0.2,0.2) + elif state == "left": + set_motors(0,0) #Add your code here for left and right + +while True: + left_IR = robot.arduino.pins[A0].analog_read() + centre_IR = robot.arduino.pins[A1].analog_read() + right_IR = robot.arduino.pins[A2].analog_read() + print(left_IR, centre_IR, right_IR) + if left_IR < 1.2 and centre_IR > 3.5 and right_IR < 1.2: + current_state="forward" + #Add your code here for left and right + set_state(current_state) + +#### 4.5. Vision System #### + +from sr.robot3 import Robot + +robot = Robot() + +while True: + markerlist = robot.camera.see() + print(markerlist) + robot.sleep(1) + +#### 4.5.1. What's in a Marker? #### + +from sr.robot3 import Robot, A0, A1, A2 + +robot = Robot() + +target_id = 100 + +#Helper to set both motors +def set_motors(left,right): + robot.motor_board.motors[0].power = left + robot.motor_board.motors[1].power = right + +#Helper to find the target marker in the list of markers +def find_target(markerlist, target): + for marker in markerlist: + if marker.id == target: + return marker + return None + +while True: + markerlist = robot.camera.see() + targetmarker = find_target(markerlist, target_id) + if targetmarker != None: + angle_error = targetmarker.position.horizontal_angle + if angle_error > 0.2: #target is on the right, 0.2 radians is about 11° + set_motors(0.1,-0.1) + elif angle_error < -0.2: #target is on the left + set_motors(-0.1,0.1) + else: #target is straight ahead + set_motors(0.2,0.2) + robot.sleep(0.2) + set_motors(0,0) #stop to take a new photo + else: #can't see the target + set_motors(0,0) From 6912adcc084a694112247d82126a4a132a9468ed Mon Sep 17 00:00:00 2001 From: WillB97 Date: Fri, 7 Nov 2025 17:43:55 +0000 Subject: [PATCH 10/14] Add simulator activities document link --- competitor_resources/simulator_activities.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/competitor_resources/simulator_activities.md b/competitor_resources/simulator_activities.md index 543c9fff..77d07aa8 100644 --- a/competitor_resources/simulator_activities.md +++ b/competitor_resources/simulator_activities.md @@ -14,7 +14,7 @@ These will teach some core concepts of robotics and introduce some basic sensors We recommend you work through them as a team, so you can learn from each other. If you have any issues, just ask us on [Discord]({{ site.baseurl}}/tutorials/discord). -This year's activities will be available shortly and we will contact all team supervisors when they are released. +You can access the [the activities here](https://drive.google.com/file/d/1HdddMfZFeciXrP_EHFU5HUefce51VO_7/preview). ## The Simulated Robot From d1df8545ded898f61139374867396965063942b7 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Fri, 7 Nov 2025 17:46:14 +0000 Subject: [PATCH 11/14] Add main simulator bundle --- simulator/setting_up_simulator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simulator/setting_up_simulator.md b/simulator/setting_up_simulator.md index 78b86675..db8ab8ea 100644 --- a/simulator/setting_up_simulator.md +++ b/simulator/setting_up_simulator.md @@ -25,7 +25,7 @@ To install Webots, you can download the latest version from the [Webots website] ## Simulator Bundle -Once you have installed these, you need to download our simulator bundle. The bundle for the main competition will be released at Kickstart. +Once you have installed these, you need to download our [simulator bundle](https://github.com/srobo/sbot_simulator/releases/download/2026.1.0/sbot-simulator-2026.1.0.zip). The bundle for the main competition will be released at Kickstart. This is a zip file containing the arena and the necessary files to allow the sr-robot3 library to be used in the simulator.
From 485479196157ced27723dc90d7e6390ab7b334a5 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Fri, 7 Nov 2025 17:47:43 +0000 Subject: [PATCH 12/14] Update sim activities bundle --- competitor_resources/simulator_activities.md | 2 +- simulator/setting_up_simulator.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/competitor_resources/simulator_activities.md b/competitor_resources/simulator_activities.md index 77d07aa8..51ae10d9 100644 --- a/competitor_resources/simulator_activities.md +++ b/competitor_resources/simulator_activities.md @@ -18,7 +18,7 @@ You can access the [the activities here](https://drive.google.com/file/d/1HdddMf ## The Simulated Robot -The robot used for the pre-Kickstart activities differs from the robot used in the regular simulator to have more of a focus on sensing the environment around the robot and lacks any mechanisms for picking up other objects. +The robot used for the simulator activities differs from the robot used in the regular simulator to have more of a focus on sensing the environment around the robot and lacks any mechanisms for picking up other objects. All sensors attached to the Arduino are the same, but there are no servos on this robot. diff --git a/simulator/setting_up_simulator.md b/simulator/setting_up_simulator.md index db8ab8ea..7dc54bf3 100644 --- a/simulator/setting_up_simulator.md +++ b/simulator/setting_up_simulator.md @@ -29,7 +29,7 @@ Once you have installed these, you need to download our [simulator bundle](https This is a zip file containing the arena and the necessary files to allow the sr-robot3 library to be used in the simulator.
-The simulator bundle used for the [Pre-Kickstart Activities]({{ site.baseurl }}/competitor_resources/pre_kickstart_activities) is available [here](https://github.com/srobo/sbot_simulator/releases/download/2026.0.1/sbot-simulator-2026.0.1.zip). +The simulator bundle used for the [Simulator Activities]({{ site.baseurl }}/competitor_resources/pre_kickstart_activities) is available [here](https://github.com/srobo/sbot_simulator/releases/download/2026.0.2/sbot-simulator-2026.0.2.zip).
Once this has downloaded, extract the contents to an empty folder. From 3754201835cdcb0b729968ad8507b3f293f0976b Mon Sep 17 00:00:00 2001 From: Will Barber Date: Sat, 8 Nov 2025 09:36:24 +0000 Subject: [PATCH 13/14] Apply suggestions from code review Co-authored-by: Jake Howard <6527489+RealOrangeOne@users.noreply.github.com> --- competitor_resources/simulator_activities.md | 2 +- simulator/setting_up_simulator.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/competitor_resources/simulator_activities.md b/competitor_resources/simulator_activities.md index 51ae10d9..5ec891a3 100644 --- a/competitor_resources/simulator_activities.md +++ b/competitor_resources/simulator_activities.md @@ -7,7 +7,7 @@ title: Simulator Activities # Simulator Activities -We have created a set of activities to introduce the concepts of autonomous robotics that can be completed prior to receiving your kit or this year's game being announced. +We have created a set of activities to introduce the concepts of autonomous robotics that can be completed without a kit or this year's game being announced. They use a special version of our simulator for a set of activities intended to be completed between registration and Kickstart. These will teach some core concepts of robotics and introduce some basic sensors that teams could use on their physical robots. diff --git a/simulator/setting_up_simulator.md b/simulator/setting_up_simulator.md index 7dc54bf3..41dd3522 100644 --- a/simulator/setting_up_simulator.md +++ b/simulator/setting_up_simulator.md @@ -12,7 +12,7 @@ In order to use the simulator a few set-up steps need to be done. First you need to install Python 3, between 3.10 and 3.13, and Webots R2025a. Python 3.14 is not currently supported by the simulator. -To install an appropriate version of Python from below. If you have already installed Python from a package manager, such as homebrew on MacOS, apt on Ubuntu, or the Windows store on Windows, you can skip this step. +To install an appropriate version of Python from below. If you have already installed Python from a package manager, such as homebrew on MacOS, apt on Ubuntu, or the Windows store on Windows, you can skip this step, however please ensure the versions are compatible.. - [MacOS Installer](https://www.python.org/ftp/python/3.11.8/python-3.11.8-macos11.pkg) - [Windows x86 Installer](https://www.python.org/ftp/python/3.11.8/python-3.11.8-amd64.exe) From d08c6a6ca8a00fc4cc47d678f81ed417c79a27c8 Mon Sep 17 00:00:00 2001 From: WillB97 Date: Sat, 8 Nov 2025 11:32:59 +0000 Subject: [PATCH 14/14] Clarify vscode remote debugging --- _data/sidebar_tree.yaml | 2 +- tutorials/editors/remote-debug.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/_data/sidebar_tree.yaml b/_data/sidebar_tree.yaml index 1251e2d5..da5aac1c 100644 --- a/_data/sidebar_tree.yaml +++ b/_data/sidebar_tree.yaml @@ -42,7 +42,7 @@ tree: - url: /tutorials/editors/vscode title: Visual Studio Code - url: /tutorials/editors/remote-debug - title: Remote Debugging + title: VS Code Remote Debugging - url: /tutorials/update_brain title: Updating your brain board - url: /tutorials/discord diff --git a/tutorials/editors/remote-debug.md b/tutorials/editors/remote-debug.md index ae009bd5..7806cac7 100644 --- a/tutorials/editors/remote-debug.md +++ b/tutorials/editors/remote-debug.md @@ -1,8 +1,8 @@ --- layout: page -title: Remote Debugging +title: VS Code Remote Debugging --- -# Remote Debugging +# VS Code Remote Debugging When connected to the [robot's WiFi hotspot]({{ site.baseurl }}/kit/brain_board/web_interface), it is possible to attach VS Code's debugger to the robot by performing the following steps: