The University Rover Challenge (URC) 2026 Experience
Introduction
As the Firmware lead on the Rover branch of the Queen’s Space Engineering Team, I had the incredible opportunity of attending the University Rover Challenge (URC) in Hanksville, Utah to help refine and debug before the competition went into full force.
For some background, URC brings together the top 38 University Rover Teams internationally out of over 115 applicants. Once at the competition, there are four missions:
- Delivery - Where the rover tries to take objects long distances
- Equipment Servicing - Where the rover must manipulate small objects for points
- Autonomous - The rovers try to complete a series of tasks without any human operator
- Science - The rover must go to different sites, dig soil, and run various science experiments on it
This page will mostly focus on my contributions throughout the 9-day competition, where I primarily focused on the Science mission. Before going forward, it is also important to note that the Rover is named Miller.
Pre-Comp
QSET always aims to get to Hanksville a few days before the competition starts to have that extra time to account for the inevitable results of Murphy’s Law. We ended up arriving on the Sunday, where the competition started on a Thursday.
Firmware
My primary job as the firmware lead was to write the firmware and debug the hardware for the stm32F4 on the newly designed science board shown in the diagram below. (Note, although I tested many of the circuits and validated the schematics, I was not involved in the design of this board).
This board would control an apparatus with 3 scoops (servos) a drill with a hinge and a cache (DC motor + 2 servos), 2 steppers to move the apparatus up and down and various sensors, all working in tandem with a mini PC which would communicate via ROS to the main PC and controls to allow for wireless control. The apparatus is shown below.
The firmware for this board all in all was relatively simple in theory. It needed to be capable of taking an input from a custom controller, then output that to one of the motors or LEDs. Although simple, running all of these in a large while loop as is typically done in simple embedded systems would likely not suffice. To combat this, I decided to learn and implement FreeRTOS which separates each action into a task and uses the MCU more efficiently in parallel.
As for ROS, since the Payload board needed to be controlled wirelessly, a mini-PC on the payload was used to host a ROS node which would then transmit the instructions to the Board over UART over the USB-C port on the board. Both the node and firmware interacting with it were made as simple as possible to mitigate failure modes. But there was some fault detection in place, both sides of the line would cut out if the line went stale and start searching again, and they would both beam constant debugging info to serial which helped ensure everything was working as planned. Enough about the firmware though, the meat and potatoes of a competition is all the stuff that goes wrong.
Everything Going Wrong
While I was in my own little world making the firmware, I was keenly aware of the Science team working. They are the ones taking the dirt samples and doing the science on them. For a little bit of background, the point of the payload was to scoop dirt from various locations and let it slide into test tubes with chemicals in them. These chemicals would interact with compounds in the dirt and change colour, thus allowing to search for things like signs of life. To detect these colours, there were 12 individual fiber optic cables which needed to go into a spectrometer with a hole the size of 1 fiber optic. And only 1 fiber optic cable would be “on” at a time so there wouldn’t be competing colours. They had known this going into the competition though, they had an adapter which could screw onto the spectrometer and on the other side it had room for the 12 to squeeze in. There was also a small lens which ideally would focus the light at the base of the spectrometer, but was too small so the fiber optic cables on the outer edges couldn’t get a clear reading.
While all of this was going down, someone accidentally managed to drop the spectrometer about 2 feet off the ground. Turns out spectrometers are as delicate as a pig’s house made of straw and after the drop we could hear a rattling inside when we moved it, and the readings became bogus. So this all of a sudden became a Mission: Impossible-esque mission, where we needed to fix the spectrometer, and even once fixed, fix the system to read the data, all while in Hanksville, Utah, a city with a population of around 150, making buying new parts much more difficult.
To start, I looked up the diagram of the spectrometer we used to see what it would look like if we were to take it apart. We determined it was likely one of the mirrors that were knocked out of place. And sure enough once the incoming Electrical Manager took out the electronics, we were right, the mirror had been knocked off from the impact.
Once we knew the problem, we brainstormed what to do about it, given how expensive and fine it was we figured the angle was very precise, making doing it by hand risky, but at the same time, we realized we didn’t have a choice. So after some deliberation, I put on some gloves as to not get fingerprints on the mirror and I used Loctite to put it back in place, then held it there for a while to make sure it set. Then the moment of truth came, we turned it on and it worked! The graph was normal, but with an asterisk, when in the adapter, although bad previously, now the light yield was even lower, meaning to get enough light for a reading, we would need to up the voltage of the lights from 12V to 24V, a voltage the Science board does not support. This however, needed to be put on the shelf for a bit while the more important problem was dealt with, that being fixing the bad adapter.
Since I have a background in physics, I recognized pretty quickly the flaw with the lens design as it stands. The height of the lens means that light hitting the lens from the edges would bounce off the edges, meaning that light from the edges wouldn’t come straight at the lens making the light not converge on the other side. An example is shown below.
After doing some calculations, specifically using $ \frac{1}{d_o} + \frac{1}{d_i} = \frac{1}{f} $ where $ d_o = 2f $ and $ d_i = 2f $ is the condition for an image to be the same size as the object, we realized we would need to either use a bigger lens, or move the current lens a lot further to emulate a straight source. We thought we didn’t have any other lens, until someone had the idea to go to the convenience store, who very conveniently had a flashlight in stock which had the ability to push a lens up and down to focus light. So we bought it, took it apart, and had a much larger lens. We then manually calculated what our focal point should be by doing the classic optics experiment with a lighter and a sheet of paper. And finally we gave all of these numbers to the mech team, who made 3 iterations of a design until finally landing on a design which fit everything.
Remarkably, this solution worked so well, it increased the light yield enough to where the 12V lights were once again sufficient for the mission, below is a happy spectrometer spectrum.
During Comp
After all of that, and many more shenanigans, the Science day finally arrived. After a few underperforming previous missions, with one strong one already in the books, the science mission was QSET’s last one. And I was given the privilege to drive the payload for the mission because of my systems-level understanding, as well as my familiarity with the controls, being the one who made them.
Science Day
The mission started off well, we went to the first site, and for the first time in QSET history (that I am aware of) actually collected soil. I then lowered the drill to try and get the soil into the drill cache, but the mechanical element failed meaning that wouldn’t work. Regardless, the scooping is the most important when considering points. So we moved onto the next site, we scooped again and moved the drill down, but while drilling in the ground, the payload disconnected from the rest of the rover.
This was a problem that had happened once before in testing, after being on for a long time, the Mini-PC disconnected from the primary ROS node and got stuck in some sort of loop. We only found out about this issue the night before, however, after it had been on about an hour, and it was not repeatable, making the problem very difficult to solve.
Regardless, we were in the field, the problem happened and the firmware continued working despite the disconnection meaning the drill was in the ground and spinning, which is bad. After a few seconds of discussing with the team, we decided to stop troubleshooting and go for photos, which would be worth more points at this point than a third scoop anyway. So we drove forward, drill still in the ground. It slowly snapped and then cracked and we were free to move again, now with a still somehow spinning drill hanging off. After we got the photos, the mission was over and it was up to the science people to give a presentation on the results of the spectrometer.
It turns out the spectrometer worked perfectly and gave us a bunch of great points of data, which when paired with the camera allowed us to walk away with 88/100 points in the mission, our highest score in the competition, and tied with QSET’s best in history.
Conclusions and Lessons Learned
I learned a lot in Utah. In hindsight, a hardware watchdog / firmware heartbeat timeout needed to actively cut motor PWM if no valid ROS keep-alive packet was received within 500ms. Regardless, you can never be too prepared for Utah. It’s hot, dry, and quite mean to rovers. But despite all of that, with some good engineering, stress, and friendly competition, it is amazing what the team was able to accomplish. Building a system like this is not easy, and I am very grateful to have had this opportunity.
Bonus Dinosaur Photos
As a little side thing, we got to see Dinosaurs everywhere, since apparently that’s common in Hanksville so here’s a photo of those.





