Skip to content

Concept of Operations 2025

Dominic Adamson edited this page May 15, 2025 · 7 revisions

This page should be a comprehensive guide for setting up the robot (Lunabot) and mission control software (Lunabase) for a competition setting (including just general testing).

Pre-Setup

Before any setup should be done, the mission control team should verify that they have all of the necessary components. There are 2 ways this can be achieved, and ideally this should be done the day before. At the very least, Lunabase must have been able to run once on the intended laptop.

Minimal Configuration

If there is no software member available, you can download the compiled Lunabase software from the releases page. Please ask Naj to configure Lunabot to be runnable in this way, which entails adding a .allow-ws file to his repo on the computer. This allows Lunabase to remotely trigger Lunabot to start up, assuming the robot's computer is already on and connected to WiFi.

Nominal Configuration

This configuration allows changes to be made to the mission control software on the fly and requires the following components:

  1. This repo - This contains all the necessary code and should be cloned on the mission control's laptop.
  2. Godot - This is the game engine used to develop our software. It should be on your PATH, so consult a software member for advice.
  3. Rust - It is strongly recommended to get a software member to get the mission control software to compile at least once on the mission control's laptop. The fastest way to ensure this is to also install Cargo Make. This repository contains the script setup.sh that will install rust and cargo make for you automatically. There will be several external dependencies needed, such as CMake. Rust should list all the required external dependencies as it attempts to compile Lunabase.
  4. VSCode - This is an IDE that makes issuing fixes a lot easier. You will need to install the Rust Analyzer extension, and the SSH extension. VSCode SSH tends to require updates fairly frequently, and during a competition setting the robot will not have Internet, which can lead to VSCode outright refusing to connect to the robot. To avoid this, connect to the robot's computer locally while it is set up in MEB 2340. In that lab it is connected directly to ethernet, and to an Internet-enabled router. This step can be done right before the computer needs to be unplugged and moved to the robot.
  5. SSH Credentials - An account and password, and optionally SSH keys, need to be set up for the mission control team to allow them to remotely connect to the robot and start the Lunabot software. This account must also have the repo downloaded in their home directory, and they can start the software with cargo make main and an appropriate app config, such as lunabot.json. Do note that it must be renamed to app_config.toml and moved to the root directory of the repository before running cargo make main.
  6. Battery Management System App - This is a mobile app that connects to the BMS using bluetooth, and allows the user to identify power issues. Verify that you can connect to the BMS before committing to the test. You will need to connect the LiPo to the BMS first to power it before being able to connect to it.

Collect Hardware

In no particular order, the following hardware needs to be collected right before a test:

  1. Laptop - The laptop needs to have a long enough battery life and must be set up with the software described in Pre-Setup. If testing outdoors, the laptop screen needs to be bright enough, or there needs to be good enough shade. This is quite important. If the laptop needs to be charging during the test, scout the testing site for power outlets and verify that the charger's plug can actually fit in the outlet and that the outlet is receiving power. In actual competition, the laptop must only connect to the router using ethernet, so the laptop must either have an ethernet port or an ethernet dongle needs to be acquired. There is one ethernet dongle in storage for USB-C.
  2. Controller(s) - The current version of Lunabase requires the use of a controller. Strictly speaking, any controller should work. However, testing has been carried out using the 2 PS4 controllers in storage wired directly to a laptop using Micro-USB to USB-A. If the laptop does not have a USB-A port, a USB hub needs to be acquired. Lunabase will display an image of the controller when it is plugged in, and it should flash yellow every time a button is pressed on the controller. Verify this is the case before committing to the test. Bringing a spare controller is not a bad idea.
  3. WiFi Router - There are 3 WiFi routers that can be used, and they should be picked in the following order: The black router in the MEB 1340 that uses a power outlet. If the testing site has a power outlet that can fit the adapter, this is the best option. If it won't fit, use a cable extender; The travel router in the software drawer. This is powered off of USB-C, such as from a USB-C plugged into a powerbank capable of charging a laptop. The UGreen batteries for the robot are valid choices; The white router in MEB 2340. If the black router cannot be found, and the travel router is not available, but there is a power outlet at the testing site, you may unplug the white router and use it just as the black one. However, when returning the router, please plug the orange ethernet cable back into the WAN port.
  4. PowerBank(s) - The only powerbanks capable of powering the robot's computer are the UGreen powerbanks. There are 4: Alan, Bobby, Cecile, Dudley. Cecile is the largest one but it may not fit in the electrical box. Ensure that the powerbank you take is fully charged. On top of this, you will need a USB-C to barrel jack cable to connect the powerbank to the computer. Of course, bring a spare to testing. If the power bank in use falls below 35% charge, the PC may begin to shut off randomly.
  5. Computer - The Minisforum PC's are the official computers that run the robot. The primary PC is labeled "2024 16GB" on one side, and is what should be used whenever possible; if the main PC is not available, there is a secondary PC with the same form factor labeled "2025 32GB". By default, the main PC is stored in MEB 2340 and plugged into the wall ethernet. If the blue light on the power button is on, the computer must also be on. Push this button once and wait up to 10 seconds for it to turn off. If it does not turn off, hold the power button until it turns off. If it does not turn off after holding it down for 5 seconds, let go of the power button and simply pull out the barrel jack. Then unplug all cables, including the ethernet, from the computer. If you are testing for an extended duration in one area (that is, you are not driving the robot further than about 1 meter in any direction), you can consider bringing the power brick for the computer and plugging it into a power outlet in the testing area if there is one, and using the barrel jack from that instead of a powerbank. The computer will run indefinitely in this configuration.
  6. LiPo Battery - The robot runs off of one (or more) LiPo battery which should be charged to at least 27 volts (the robot will stop running if the voltage falls to 23V). When transporting the battery, keep it within a flame-proof bag. Leaving it within the electrical box can pose a risk should the robot unexpectedly fall off the cart while being moved (this has happened before). If necessary, the robot can use more than one battery (extends run time), but due to acquisition limitations, only one battery can be attached to the BMS system at a time, so it is possible for the batteries to back charge each other. As such, if multiple batteries are used, ensure they are both charged to entirely full to balance, and try to monitor battery heat over time if possible.
  7. Robot - The robot should be in the stowed position, which means both actuators should be fully retracted. If transporting within a vehicle, the robot should be extensively cleaned off Azomite and especially lunar regolith simulants. At the bare minimum, the 2 VESC boards and the actuator controller Pico should have a Micro-USB cable plugged into each of them. Whenever the robot is transported, ensure that at minimum two (2) people are working to move the robot, when lifting the robot, the minimum is four (4) people instead.
  8. AprilTags - All of the AprilTags created by the software team need to be on hand along with the hardware needed to hold it up.
  9. Metric Measuring Tape - Used to measure any distance as needed.
  10. Bubble Level - Used to check if an AprilTag is standing upright and level.

Pre-Arena Setup

Assuming all the hardware has been transported to the arena/testing area, these steps should be taken before handing off the robot to competition officials, or simply before entering the testing area.

  1. Place the computer into the PC box - At the bare minimum, the barrel jack, VESC boards, and actuator controller Pico, need to be plugged in. As long as they fit into a port, they will work. Nominally, there are labels on the computer for specific cables, and the cables themselves are labelled in the same fashion. The "1" camera should be plugged into the "1" port, and these ports may be on USB hubs, and the USB hubs will also have labelled ports to plug into on the computer. Just match the cables to the ports. There are 3 mini cameras on the bottom frame, 2 mini cameras on the arm, 2 RealSense's on the arm, and 1 WiFi antenna. Including the motors, that is 11 USBs that need to be connected to the computer in some way.
  2. Place the LiPo battery into the electrical box - The LiPo has two connectors, and anderson connector and a data bus. The anderson should be connected to the male anderson attached to the E-Stop, which should be pushed down beforehand. The data bus should be connected to the corresponding port on the Battery Management System, which is a wide blue component that sits on the bottom of the electrical box.
  3. Place the lid onto the electrical box - The lid should not be screwed in. Ensure that it is. On top of the electrical box lid, the PC box is screwed in, with another acrylic plate on top that is held in with a screw and washer. This lid should be screwed in; on top of the lid there is a velcro command strip that the wifi antenna should be attached to. If testing outdoors, there is a cardboard lid that connects to the command strip instead, and the WiFi antenna should then sit on the command strip on the cardboard lid. This lid shades the internals from sunlight.
  4. Plug in the router - The router must be powered. Do note that the competition requires a wall powered router. The wall powered routers we have include LED status indicators on the top. The power symbol should be green if the router is powered. If it is not, check that the power switch on the router is engaged, and that the outlet is powered. After that, verify that a wave symbol is also illuminated. There are 2, a narrow and a wide indicator representing 2.4 GHz and 5 GHz respectively. Only one should be on. If neither are on, refer to the troubleshooting section. Do note that the indicators might be hard to see in sunlight.

Arena Setup

Once the robot needs to be moved into the arena/testing pit, the following steps must be taken. Some steps should be taken by the ingress team, and some by mission control. The steps are not numbered, but they should still be followed from top to bottom.

Ingress Team

  • Wear proper attire - The ingress team must wear appropriate clothing as both Azomite and various lunar regolith simulants stick to clothing strongly. For Azomite, the team must wear shoe coverings and long pants, and some form of mask. If testing outdoors, the team is strongly encouraged to wear sunscreen. For working around lunar regolith simulants, follow the instruction of the competition officials exactly. Remember that those simulants are carcinogenic, and contamination on regular clothing requires professional attention.
  • Turn on computer - Both PCs are set to turn on as soon as they receive a suitable power source, but if for some reason the PC fails to turn on, follow the instructions below. Reach into the electrical box and press the power button once. If it does not turn on instantly, the barrel jack must be unplugged and plugged back in at a different rotation after waiting a couple second.

Mission Control

  • SSH into the robot - SSH into 192.168.0.102 (2024 16GB) or 192.168.0.103 (2025 32GB) with the appropriate credentials. It usually takes 20 to 30 seconds for the computer to be ready after turning on. If connection fails because the computer is "down", connect to the router admin portal. If the portal does not exist, the laptop may not be connected to the router. This should be automatic if connected using ethernet. If connecting to the router wirelessly, do note that the password is 49558869. Once the admin portal is accessible, log in with the password: 49558869A@. Go to the DHCP client list and verify that Lunaserver is listed there. If not, instruct the ingress team to reboot the computer by turning it off and on again. However, this is quite uncommon so you may skip to the next step and return if it does not work.
  • Start up Lunabot - Run cargo make main over SSH, and cargo make fluna on the laptop. If the spare pc is in use, use fluna2 instead of fluna any time it is mentioned. Assuming no errors occur, the camera feeds should appear on the 2nd window of Lunabase, and the primary window should show the "Last Received" duration being very low (~17ms). Anything higher may indicate a problem. The actuator controller Pico should have also connected, and there will be a line in the console indicating as such. If there are no issues, permit the ingress team to move on to the next step. If cargo make fluna fails or the GUI appears empty or not as expected, from the root of the project run godot ./godot/lunabase/project.godot which will open the lunabase godot project in the editor and fix any asset imports that failed. Close the editor and re-run cargo make fluna as needed.

Ingress Team

  • Seal the electrical box - The protocol may be updated, but it currently just entails screwing it shut. NOTE: the e-stop conflicts with the electrical box slightly, it may be necessary to unscrew the e-stop button while sealing the electrical box.
  • Secure the WiFi antenna - Press the antenna firmly down into the lid to ensure the command strips are properly attached onto each other.
  • Place the AprilTags - The locations for these will be specified soon. Use the metric tape measure to verify their positions along the walls, and use the bubble level to ensure the tags are level, upright, and flat against the walls.
  • Power the robot - All but one of the ingress team members should remain as part of our safety protocol. They should lift the EStop up to power the robot. The VESC boards should light up immediately. If not, connect to the BMS and check for any issues and fix as necessary.

Mission Control

  • Check that the VESC boards are connected - Each board connection is represented with one line logged in the console, so two lines stating "connected to motors" should be seen. If the VESC boards are lit up, but no such messages are seen, the Micro-USB cable may not be plugged in. In this unfortunate scenario, an ingress team member must be instructed to approach the robot, power off the EStop, unseal the electrical box, and assess the damage.
  • Move the robot - Start by moving the actuators, then by driving slowly forward and backward. Use this time to assess the network delay and compensate as necessary. If the actuators don't move, the Pico may need to be reset. First, attempt running usb-reset over ssh to reinitialize the Pico, if this does not resolve the issue the Pico will need to be unplugged and plugged back in. As of the time of writing, this cable is a red Micro-USB cable.
  • Declare readiness to judges - Let the judges know that the team and robot is ready. If all onboard cameras are usable, declare that the team will not be using any arena cameras. Otherwise, select an arena camera that would be beneficial.

Competition Run - Ingress Team

If testing outdoors, an ingress team member should be on standby to hit the EStop when the robot endangers itself, the testing area, or the people around it. The rest of the ingress team should seek shelter and hydrate. Heat exhaustion is a common occurrence and can lead to further injury when moving the robot. During a competition run, follow the instruction of the competition officials exactly. This commonly means not approaching unprotected people until the ingress team is fully cleaned.

Competition Run - Mission Control

Press the "Continue Mission" in Lunabase. If autonomy is ready, you must indicate to the judges that the team intends to run autonomy, then push the "Autonomy" button and keep your hands off the laptop and controller(s). Watch the robot closely to determine if it is working correctly. Should it endanger itself, hit the "Software Stop" button. If the UI does not change to the software stop state, the robot may not have received that command. Over SSH, stop the program with Ctrl-C. if the program does not stop, press Ctrl-Z, then reboot the computer with sudo reboot now.

Once the robot successfully navigates the obstacle zone, it will begin mapping the excavation and construction zone. When it is done, it will wait for 10 seconds to give mission control enough time to verify that the obstacle map is sensible. If it is not, push the "Software Stop" button and then "Continue Mission" to assume manual control. Consequentially, that will end our autonomy attempt. If the obstacle map is fine, simply wait until the duration is up and let the robot continue autonomy.

If at any point manual control must be used, the mission control will follow a driver-navigator-observer system where each member will assume 1 role. The driver should not be expected to be fully aware of the whole situation, and the navigator should be focused on time and operation, and the observer will look out for errors. The operation at this point is up to the navigator. Just get material into the berm zone however seems to be best. One thing to consider is how easy it is to move rocks into that zone.

Post Competition Run

In a similar setup to the Arena Setup section, the following steps should be followed from top to bottom.