2013-2014 Mars Rover Electrical Lead
So for those of you who aren’t aware, Oregon State University has an awesome, student-run robotics club. I’ve been a part of it since 2012 and have enjoyed being around like minded people to make awesome robots and technological projects of all kinds over the years. Being electrical lead for the Mars Rover team as part of this club has so far been the most difficult, time consuming, and mentally rewarding thing I’ve done since being at college. Every year, the team builds a mock mars rover from the ground up. Electrical, mechanical, and software are all custom and created by student. Then, at the end of the year, a few members head to a competition to test it against other teams from around the world. The competition we decided to attempt for my year as lead was the Sample Return Robot Challenge, a NASA sponsored autonomous competition. The goal of it is to create a rover that can navigate a course by itself, without the use of earth-based sensors like GPS, find objects, pick them up, and return to base. If this had been a remote controlled course, that would have been achievable fairly easily, but the autonomy of this competition made it the most difficult the club has ever attempted.
Now lucky for me, I was the electrical guy. No stereo camera 3D depth mapping and object avoidance code for me. That being said, I had plenty to fill my plate throughout the year. To start, I had a sub-team that started off with almost forty members. Then, the rover itself needed an arm control board, drive control board, drive feedback board, radio telemetry board, and intel NUC computer, power converters, batteries, a wireless pause system, and motor controllers. At this point, I’d taken a two classes on programming and had never built a custom PCB ever, so it was a lot to take on, but I was excited to get started. Things went slowly. Not surprising considering I was taking full time classes while working part-time, but it still was slower than I would have liked, and it came back to bite me later. I found out quickly that I wasn’t very good at teaching classes on advanced embedded programming and PCB design (the latter I was learning while trying to teach it) when my sub-team members were mostly freshman. This resulted in many members dropping out (and I don’t blame them, the complexity was definitely off-putting) and I was left with a few core members who stuck through and either already had some knowledge, or were learning it quickly.
Some of those people were tasked with developing the radio telemetry system, others wiring, one to helping me code later on (this guy was Nick McComb who is now the club president), and myself to pick up any slack while designing, fabricating, and programming the custom control boards. I was lucky to have been co-learning how to design PCB’s at work while I was doing so for Rover, so I’d gotten most of my newbie mistakes out of the way on previous projects. As deadlines approached, I spent a week and designed all the custom boards for the rover. I decided that the cost effective way to do it was a shield based system where the brain with the micro and power supply were on their own board, and that universal board plugged into changeable daughter-boards. This resulted in my “BrainBoard” and a few sub-boards. I was happy that the core boards (drive and arm) came out working along with the micro board itself on the first run. There were some issues, like a lack of decoupling capacitors that wreaked havoc on my ADC readings from potentiometers, an the occasional one that let out blue smoke for seemingly no reason, but overall I was fairly happy for a first run for something I was new at.
As the competition approached, things got more hectic. I started pulling all-nighters a couple times a week in order to make the progress that was needed while still getting any school work done. I struggled a lot with the fun that is serial communication and buffer overruns. But finally, at things drew near it seemed like we might actually be able to complete the goal of the competition if we were lucky. Of course, murphy comes to get you every time. The arm started mechanically failing almost daily as we struggled to find way to work around the issues. Software team had been left with very little time to test their code because of my team and mechanical being behind schedule, so we were encountering large bugs in code often. By the time finals week rolled around, we’d gotten the biggest issues squared away and packed the rover in a crate to check on to our plane.
Yes, you heard that right. We checked our $15,000 rover, broken up into boxes and suitcases, onto the plane. Trust me, I was not pleased by this, but with the time and financial constraints we were working around, it was our only option. Surprisingly, nothing seemed damaged when we arrived. Our first day of the week of the competition however, we spent a whole day troubleshooting issues with the arm only to find that a potentiometer inside one of our linear actuators had died. Just straight up gone. Open circuit. No reason at all. Buried inside of cast aluminum. Oh well. We drove a few hours away to an electronics shop, picked up a new one and were good to go for the next day. The rest of the week was insanity as software frantically tried to finish up what code they could while I troubleshooted an arm that kept failing both mechanically and electrically for seemingly no reason. Switches died. Microcontrollers died. Motor controllers died. In that one week,we lost, and replaced with spares, more hardware than in the previous six months. Seriously. Murphy will get you every time. When our time came to perform phase 1 of competition, we weren’t running at 100%. That being said, drive worked and vision worked so we decided to traverse the course and avoid obstacles. At this, our team actually did incredibly well. We drove the largest distance on the course than anyone had ever managed, all while not running into any obstacles. So, we were pretty happy. The last few days we managed to jerry rig most of our systems to the point we had it finding and picking up objects so we could give phase 1 a second try. When it ran the course again, I kid you not, it found a flower. It found a flower, thought it was an object, tried to pick it up, decided it was no longer an object it wanted, froze, and never moved again for the rest of the allotted time. Our rover did worse on our second run because of a flower. Granted, there were potential lightning storms on that second day, so the lighting of the field was very strange and threw a lot of the camera systems off, but I still laugh about it today.
All in all, I was super happy to have been a part of the team. It was hard, hard work. And honestly, I worked myself too hard during it, but still don’t regret having done it. Because of being a part of that team, I found out what my limits were all while getting more hands on experience making PCBs, programming, and troubleshooting then I’ll probably ever get out of classes at OSU. Plus, it got me a ton of new friends and solidified my enthusiasm for embedded systems development, which I’ve continued ever since.