The development world is cluttered with buzzwords and distractions. Speed, focus, and freedom? Gone.
I’m Nicky Pike. And it’s time for a reset.
[Dev]olution is here to help you get back to what matters: creating, solving, and making an impact. No trend chasing, just asking better questions.
What do devs really want?
How can platform teams drive flow, not friction?
How does AI actually help?
Join me every two weeks for straight talk with the people shaping the future of dev.
This is the [Dev]olution.
Max Bretschneider (00:00):
Robotics is such a broad topic. And in such a small club, you don't have anyone you can hand off your finished C++ code too, and then they deploy it, but you have to do it all yourself. So you have to bring in a very, very broad range of knowledge, which obviously makes the learning curve that much steeper.
Nicky Pike (00:19):
This is [Dev]olution, bringing development back to speed, back to focus, back to freedom. I'm Nicky Pike. Okay, so everyone's talking about the future of robotics. We've got self-driving cars, vacuums that keep our floors clean and factory automation. But here's what nobody's saying. The future isn't being built by Silicon Valley Labs. It's being built by college students with $500 budgets, broken servos, and code that crashes five minutes before competition. The proving ground for tomorrow's engineers, it's messy, it's underfunded, and it's happening in robotics clubs right now. With me today is Max Bretschneider. He's a software engineer working on autonomous parking and simulation for advanced driver assistant systems. But Max has spent years in the trenches as a software team lead for his university's robotics club, helping students bring machines to life. Max knows what happens when theory meets reality. When parts fail, code breaks, and you've got 48 hours until competition.
(01:18):
Max has seen how building robots shape the way students think, troubleshoot and solve problems, skills that translate directly to engineering, software development, AI, and beyond. He helps students learn to design, troubleshoot, collaborate, compete, and push the boundaries of what's possible. Before Max and I get started, here's the challenge on the table. Everyone wants more engineers. We want more STEM talent, more technical problem solvers, but robotics programs are fighting for funding. Expertise is scared and we're expecting volunteers to somehow prepare the next generation for AI-driven careers. How the hell do these programs thrive when they're barely scraping by? Max has seen firsthand where it works and where it completely falls apart. Max, welcome to The [Dev]olution.
Max Bretschneider (02:03):
Hi, Nicky. Thanks for having me.
Nicky Pike (02:05):
So before we get kicked off, anything you want to start with us, anything you want to get going before we jump into the questions?
Max Bretschneider (02:11):
No, I'm fine.
Nicky Pike (02:12):
All right. Well, let's go ahead and jump in. So when we got to talking, what really brought you to us is that you use Coder as the foundations for setting up your robotics programming environments. How did you get introduced to Coder and what was the moment you thought, "Man, this is exactly what our Robotics Clubs needs."
Max Bretschneider (02:28):
Yeah. Well, I started using Coder at work. I think it was about two years ago. I work in autonomous vehicles, like you mentioned, and we used some other solution before and switched to Coder. And it made my day back then a lot easier, solved a lot of simple things that I had problems with, and then I started looking more into it, found out that it's open source. And this summer I was in Amsterdam at a conference, met some of you guys there. We went and got into talking and I thought, "Yeah, well, we have some sort of gap with the development or with the onboarding in our robotics club. Maybe this is something I could use and set up myself." And yeah, went ahead and now we are trying it or on the rollout phase of that.
Nicky Pike (03:15):
All right. So you said it made your life easier. Hell, what did it do?
Max Bretschneider (03:20):
Well, first of all, it made it faster. We use very big simulations that run in the cloud. Every morning you log on, you connect, and typically you have a very long login and authentication process. You have oftentimes waiting queues because people don't log off of their instances. So it's many small things that add up and slow it down. And with Coder, I think a lot of these issues more or less disappeared. I can't quite pin down why, but it works a lot faster for me. One more thing which worked well in our team specifically is the whole templating option made the collaboration part, I guess, a lot easier because we also have some fluctuation in our team and being able to use those templates at least to a smaller degree, although I'm not in an administrative position like that, I help with that.
Nicky Pike (04:12):
Gotcha. Well, I mean, you get to be in the administrative position when we start talking about the Rodox Club. But one of the things I've got to ask you is a lot of people, this is a cloud development environment, things are happening through a browser. Did you have any sense of loss giving up the local machine and doing development in the cloud, or did you find that it was actually easier for you?
Max Bretschneider (04:32):
I want to say I had some loss, but honestly, it's tempting because it's so quick, especially with the code server integration. There's always some last involved, although the programs that we run, at least at work, are so large that I never would be able to run them locally. So it's limited through that. And with all the modules and plugins that are available, I don't think there's anything I'm missing right now. So no more loss.
Nicky Pike (05:01):
That's awesome. All right. Going back to the robotics club. So when we first talked, you kind of talked about some of the challenges that the robotics club faced. It's a program within the university, so there's some funding issues, there's lack of resources. And with new students coming into the club, you got varying levels of expertise. So paint me a picture of how this really impacts the club. How do all these things impact what the club's doing on a year-to-year basis?
Max Bretschneider (05:26):
That's a good question. It's really, I guess you could say the foundational issue, because like I said, the students have varying level of experience, but also students like myself are only there for a limited amount of time. If we are lucky, they study for their undergrad and grad time here, that would be like five, six years, but sometimes they're also only there for their master's degree, that's two years. And in those two years, you have to onboard them, you have to get them going with all their setup or their environment, and then they have to also do some actual development work because while one of our goals is to educate people, we do mainly produce or develop a robot that has to win a competition for us. So the main goal is still the development and you have to fit all those parts in a very limited timeframe often, which makes it more difficult.
(06:22):
And then also, yeah, the varying levels of expertise is something that's challenging. Of course, sometimes people come, they have already some professional experience. They have maybe even worked with robots before or with the frameworks that we use, but sometimes they maybe don't have any Linux experience, for example, or any Linux hardware. And what's important for us or what we need is that those people actually ... And so for example, Ubuntu, because one of our frameworks needs it. So there's no way around some Ubuntu machine or some environment at least. And if we have people that only come with Windows machines have never used Linux before, then that's an additional hurdle or learning curve that we have to help them cross. So balancing all that is quite difficult.
Nicky Pike (07:11):
Well, now take a chance here. I want you to brag a little bit, Max, because you guys have actually, what was it? A year or two ago, you actually won one of the competitions, yeah?
Max Bretschneider (07:20):
Yeah, actually we won a couple more.
Nicky Pike (07:23):
Yeah.
Max Bretschneider (07:25):
The competition, so we're in our 11th year of the club. I think we started participating in a competition after two years. So nine times we participated, I think we won four or five times the highest place.
Nicky Pike (07:40):
There you go.
Max Bretschneider (07:41):
Last two, three years were not so good, or at least the last two since we're transitioning our code to a new version of our middleware, which is a lot more work than anticipated. And yeah, it just means that some of the things on robot don't quite work as expected, but I think overall we have a pretty good achievements. Yeah.
Nicky Pike (08:07):
So how long have you been with the program?
Max Bretschneider (08:10):
I went there, I think even before I went to my first lecture, that was probably like five years ago. Yeah. Then two years I was with the computer vision department. I also was the lead there for one or two more years, and then I also went onto the general management part of the club. And now I'm doing mainly development work and trying to fit it in my other work hours.
Nicky Pike (08:37):
So you've been there for five years. Are you a mentor in the program? What's kind of your position in the program now?
Max Bretschneider (08:43):
Yeah, right now I've branched out to some more topics besides the computer vision that I'm originally from, just to learn out a little bit more. So theoretically, I'd be like a developer. Also, I do some of the IT department stuff, but definitely also a mentor. Usually once or twice a year, we get new people. Most of the time, like 15 to 13 new people, and then you assign mentors to them, like one-on-one mentors, and then we just go through their setups, through their questions, and everyone participates in that. So I'm also one of those people. When I was the team lead, there was a lot, or that part was at least a lot bigger because you are the first person that they come to when they have some questions, but still doing it day-to-day,
Nicky Pike (09:32):
Basically. Well, that leads up a whole load of questions there, to be honest with you. So as kind of the software engineering lead on the computer vision team, I mean, you were responsible for, and I guess you still are, for onboarding a lot of people into the program, the robotics community is known for being open and it's a very engaging community. Why does this kind of open source community culture so essential to bringing in new club members and how do you get them up to speed?
Max Bretschneider (09:57):
That's very important for much of the same reasons we face when we started out our club. The entrance is very, very high or the entrance barrier, let's say, because robotics is such a broad topic. You might be a very good programmer in C++, but you have to really bring C++ knowledge, networking knowledge, operating systems knowledge, a lot of hardware knowledge as well, and bring it all together. And in such a small club, you don't have anyone you can hand off your finished C++ code too, and then they deploy it, but you have to do it all yourself. So you have to bring in a very, very broad range of knowledge, which obviously makes the learning curve that much steeper, and which also means that you always have edge cases. You don't ever have something going very smooth. So having a community behind your back, I guess, that can really help you out there where you have questions, it's very essential.
(10:58):
The local community that we have in our club, but also the open source community. There are some very, very cool and well-maintained projects without those, the robots literally wouldn't run. And also some very open communities that you can just talk to. They have events even here within our city or relatively small city in Germany, you have robotic meetups and you can always just go up to people, ask them something. That's very, very essential.
Nicky Pike (11:26):
And I'm guessing that that was one of the things that played a part into bringing Coder into the club was the fact that it was open source. There's an open source component to that. So big community around that. Do you find yourself reaching out to the Discord channel and the open source community to get help with coder issues or questions that you may have?
Max Bretschneider (11:44):
Yeah, definitely. So the template that we used for Coder, we started off by looking at the community templates. The documentation is great, but also different people created templates for different progresses, and that's a great base to start developing off. And then also the Discord asking questions is one thing, but also the search function in Discord is good. So you can check if someone has asked the same question before. And we definitely made use of that.
Nicky Pike (12:11):
And one of these things that we're talking about, so you get into this, parts break, the code fails, you got a competition tomorrow. That seems like things that could be, especially when we're talking about robotics. This is not something that everybody's getting into, Max. So how do you keep the team from kind of falling apart when it seems like everything else is? From a mentor standpoint, what do you do to keep the morale up and keep people chugging along?
Max Bretschneider (12:37):
Yeah, that's also a very good question. Also probably one we haven't solved at least fully. I mentioned we were very successful, so tough competition is probably a good thing because it motivates us to improve our robot or improve our car, but things breaking are another thing. I think when it's actually code that's breaking, like when you're developing a feature and it's breaking at that point, then it's fine. It's just part of the process. You can't really go around that. But as I mentioned, it's such a broad range of things that you need to know and also a broad range of tools that need to work in order to get to that point where your code can break. And getting to that is something that's at least intervening very frustrating and also for a lot of new people. When we onboard them, of course we try to mentor them, we try to be there when they have questions, but they also have to go through that on their own experience that.
(13:35):
And also, like I said, there's so many edge cases, we definitely can't answer them all. There's more things that we haven't seen than things that we have seen. So finding the balance between letting them figure that out on their own and helping them so they stay motivated and ideally stay in our club is still something that we're working on.
Nicky Pike (13:58):
Now, the part that I love most about that was when I asked that question, you were like, "Man, did you not hear me? We've been doing this for like nine years. We won first place like four times. Our stuff doesn't break." What do you mean?
Max Bretschneider (14:09):
Oh, it definitely breaks, but it's a big component for the motivation part, I think, because well, when things work, then there's little drive to improve. But if the robot works well and the car drives well, why make it even better? But if you have, like in Germany, we say fire under your butt, something isn't working and you have a deadline and the car maybe isn't parking straight and the competition is in two weeks, then of course you're going to pull in all nighter to fix it.
Nicky Pike (14:42):
So this is not official curriculum. This is a club. This is something that you guys are doing for fun. You're coming together as an enthusiast. So does that develop almost like a family mentality within the club because you guys are spending some long hours working on these robots together?
Max Bretschneider (15:00):
Yes. Very big family feeling. We have yearly meetups also with the people that have departed that are now maybe done with their PhD or are also industry leaders and they still come back every year. Next week, for example, we go to the Christmas market together, meet up with old mentors of us, also old professors maybe that have given us some help or some knowledge with some projects and you really create sort of a network where you kind of know everyone even though it's a lot of people right now. So that's really the coolest part. And when you spend many nights literally in the workshop on the floor with the blobot. Yeah, it creates a tough bond.
Nicky Pike (15:47):
That's absolutely wonderful because we're all about community. That's how we found you was through the coder community, you've got the robotics community, and it's got to be an awesome feeling to be able to take part in something where you learn a new skill, you learn something that a lot of people don't know, but then also keep those relationships. I mean, people that have already graduated that are still coming back, that's got to be a great feeling and it's got to be fun for them to watch and see how the program's growing. Has any of those people that have left and that you're talking to now, have they seen what you're doing with Coder and do they have any opinions on that? Or is this just something that it's really just kind of rolling out for this current batch?
Max Bretschneider (16:24):
The current work is rolling out, so they haven't seen what we did at the club with it yet. It's really like a prototype currently. They have seen Coda though since I even professionally worked with some of them and well, we use Coda at work, so they know it from there.
Nicky Pike (16:45):
Yeah, bring it in. It works for us. All right. Well, tell me a story, Max, right? Tell me a story. Was there a competition or a particular club member or a problem that you had to solve that's kind of stuck with you? You've been at this for, I think you said five years. So tell me something that's really stuck in your brain about the romotics club.
Max Bretschneider (17:03):
So maybe to give some more background on what we actually do, like we build a small robotic autonomous car and the competition we partake in has two disciplines, one where you basically race around the track as fast as you can. It's like a normal street track just in one 10th scale. The other part of the competition is actually following the road traffic rules. So letting some people walk over the crosswalk, stopping the vehicle when there's like a stop sign in front of you or completely like parallel parking maneuvers, stuff like that. And you get points for each completed maneuuver, but also points for each driven meter without error. And yeah, in many ways it's a little like Formula One. So you have a set rule book and before the competition starts, you always try to look through and think of some things that you could maybe read through the lines, maybe some things that aren't meant that way, but where you can find a smaller improvement over the other teams.
(18:07):
And one of the things that we found out was that a successful parking maneuver, for example, was defined by free or more wheels placed inside the parking lot. So you don't actually have to put all four of them in there, but just free. And we found a very specific maneuver for a specific parking situation where we could deliberately only place three wheels inside and keep one outside. And then we were like a little faster and we calculated how many meters that would add up to over a certain amount of rounds and it actually made quite a difference. And then there's also many painful bucks and things that maybe didn't win so well that are also quite memorable and yeah.
Nicky Pike (18:58):
Now you tell that story and I find it funny because, okay, well, we don't have to get all four wheels in and we shaved some time and we did better in the competition. But when I look at some of the autonomous cars like Waymo, and I'm not sure what the German equivalent is, but I've got to imagine there's people out there going, "Well, wait a minute. Now, if I'm in one of these cars, I want all four wheels in the parking
Max Bretschneider (19:20):
Spot." Yeah, that's true.That's why the one thing is the homie and at work, I check that the cars actually park.
Nicky Pike (19:29):
There you go. So there's the difference between the hobby and doing it for real, but I mean, that's got to play into. I mean, are you guys getting sponsored by any of the autonomous clubs or car companies?
Max Bretschneider (19:40):
Yes and no. So it changes throughout years. We definitely have some bigger sponsors in that direction, but it's been tough, let's say, especially since COVID broke out. So when I joined the club, it was right at the start of COVID, everything was online. Everyone lost their sponsorship basically. Even the competition we partake in was organized by a very big German university with some very big industry sponsors. They all pulled out because they didn't really have much money anymore. And we are quite lucky because we are basically the biggest team in Germany that does this kind of thing, but we also know some other robotics clubs that had to close permanently because they couldn't get the people in, but they also couldn't get the funding. And it's not as tough as it's been during that. We recovered quite well, I think. And also the competition we know these partly organize ourselves, but it's still a difficult thing since at the end of the day, we are not like a big company that can just dish out certain things that would be considered basic, but we have to really turn every coin around twice.
Nicky Pike (20:51):
Well, I'm glad to hear you guys survived. I'm glad that you're still doing good. Let's go ahead and kind of switch gears a little bit. So we've talked about the club, we've talked about what kind of led to some of the decisions, but let's talk some of the actual challenges. Let's talk the development challenges. What were some of the hurdles that students were running into most often that you felt that Coder could come in and fix for you? Or even if it's not Coder, what are some of the things that new students are coming in that are having the biggest problem with when they want to join and start partaking in the club?
Max Bretschneider (21:20):
Yes. Okay. So besides the things we already mentioned with just the general learning curve of different topics, if we stay on the hardware side of things, it's difficult to have or to provision everyone with sufficient resources to actually do the development. So we work in ROS, it's short for robot operating system. It's a middleware open source. It's really great, but it's quite resource heavy and it only runs in Ubuntu or actually in a specific version of Ubuntu, depending on which specific Roth version you use. So if someone comes to us and he says, "Well, I only have a Mac or something," then we already have a problem because we can't just maybe do a boot or something, but we actually have to convince the person, "Hey, in order to even start working, you have to install a different operating system that you maybe never worked with before." And this is a very big point just because to most people it's scary.
(22:22):
It was also one of the first times I did it when I started five, six years ago, just going ahead and installing a new operating system and saying goodbye to the one you've used before. To me, it was still Linux, but a different Linux and yeah, it can be scary. And then also as a resource intensive software, not just Ross, but the tools that you use Ross with can be also very big, like big simulation softwares, stuff like that. And not everyone has that or has a sufficient laptop to run that. And yeah, there's a bunch of these things that add up and make it kind of difficult to get up and running.
Nicky Pike (23:06):
Well, and I think you hit on one of the greatest use cases right there. Well, a couple of them actually. One, you kind of abstract away the need to have that compute power locally, you're moving it somewhere centrally where you can kind of control it. But I imagine that there's also probably an issue you said that Ross only runs on a certain version of Ubuntu. So if you got people coming in, students coming in that have Windows machines, then that would automatically exclude them from doing that unless they're using something like the Windows subsystem for Linux, but that can get pretty difficult. So I imagine this not only helps maybe potentially bring in students that may not have been able to do that otherwise because of hardware constraints, but it makes it a lot easier for you guys that are helping mentor and helping run the club to make sure that everybody's working on the same page.You're able to answer questions a little bit easier without worrying about what's on their local machine.
Max Bretschneider (23:57):
Yeah, definitely. And on that topic also, we are able to keep multiple templates for the different versions that we use right now and have used before. I mentioned that we're transitioning to a new version of the system. So that comes with a new version of the tools we use and also a new version of Ubuntu. And through these templates, we're still able to say, okay, I don't know that one feature was working in our previous version, we can just use the template from back then and see maybe what was different and do that in a very quick way, which also makes things a lot easier.
Nicky Pike (24:34):
So you were doing this before you brought in coder. So how would that set you back if you had to kind of context switch between different versions? I mean, did that take a lot of setup time prior to having something like Coder where you could do it fairly quickly? What did that involve on the local machine side?
Max Bretschneider (24:52):
Yeah, on the local machine side for most of the stuff, it was soccer based. We also had some virtual machine setup that was okay, but that depends on the resources you had available. Like I said, it's quite heavy and it's just not a joy to work with and it comes to a point where you could do it, but it's tedious and then you don't or you look for other ways to solve it and kind of miss out on those features that would make it easier. It would probably only set you back a couple of minutes each time, but having this little barrier or maybe having to have access to a bigger computer makes it just not really feasible for convenient development in the long term.
Nicky Pike (25:33):
And do you find that something like this system that you put in place, does it make it a little bit easier to introduce new club members to things like automation and the Raw system? Whereas before trying to do this would be a little bit more difficult because there are so many variables there.
Max Bretschneider (25:50):
Yeah, that's the hope. So right now is the rollout phase. The new people have just arrived and the hope is really to get them up to the point where they have the fun of development much quicker and then through that, keep them.
Nicky Pike (26:07):
So you're trying to cut all the frustration to set up out of the way, just get to the fun stuff, which is starting to play with robots.
Max Bretschneider (26:13):
Yes.
Nicky Pike (26:15):
Basically. I like everything about that. So being that you're a mentor there, I know I've been there myself, mentors want to fix things, but sometimes you've got to let the builders struggle. They got to figure out where things are breaking. How do you personally fight the urge to just kind of grab the keyboard and go when somebody's running into a problem? How do you let them figure out the issue for themselves?
Max Bretschneider (26:38):
Yeah, many times I can't. Like I said, there's so many edge cases. I don't know the answer myself, but I think that's probably also the lesson that we at the core should really teach them is that it's okay not to know them. We also don't know these questions ourselves many times, but that we show them how to look it up. And without that, it also probably wouldn't be possible because we have much less mentors overall probably than new people at least attempting to join or trying to join. So you have to develop some sort of responsibility that they can use to figure it out themselves. There are just there to just, well, do these simple things, but when you get to watch them learn it themselves and enter some commands themselves that they maybe didn't know before, and you see the learning process, then it's really rewarding.
(27:36):
Well,
Nicky Pike (27:36):
And that's got to be part of the fun, I imagine. I mean, you're dealing with robots here. Some of those breaks have got to be entertaining. "Hey, every time I tell the car to stop, it takes a hard right into the wall or I tell it to back up and it tries to do a back flip. "Those got to be some of the fun things that you see. Any of those stick out in your mind where it's like, " I can't believe the car just did that.
Max Bretschneider (27:57):
"Yeah. Well, fun and also expensive, but literally exactly what you mentioned, it just happens. We have a deadman switch more or less, but it happens that the car just drives into the wall and yeah, once or twice things break, but since we built most of the stuff ourselves, we can just 3D print the broken component again. But yeah, sometimes the car detects some, I don't know, some light through the window as an obstacle and then tries to dodge it and strays too far away into the pillar or
Nicky Pike (28:31):
Something. But you said it's expensive. I mean, have y'all had some of those issues where it's like, " Man, we've got to build the whole car over again.
Max Bretschneider (28:40):
"Whole car, I don't remember. I think I would've heard that if it happened before my time. I think the most frustrating thing once was the suspension because we don't print that and we didn't have that in our component storage, so we had to order it and do it again. But luckily, no, the whole car has never been quite broken.
Nicky Pike (29:03):
Wow, that's good because I can only imagine you got the race car people out there, you're just a smaller version of the race car and those parts are pretty expensive. I got to imagine the same thing as with the cars that you're playing with.
Max Bretschneider (29:15):
Yeah. The main difference is that these race cars, they don't need to sensors. They don't have LIDARs and things like that. And those are really the components that drive the cost. So yeah, it's expensive if it breaks.
Nicky Pike (29:27):
Yeah. Well, I mean, every hobby worth having seems to take more money than you think it will be. And do you do this outside of the club? Is this something that you just kind of play with on your own on the weekend? "You know what? I'm going to see if I can't make my car do donuts in the sand or something to that effect.
Max Bretschneider (29:42):
If I could, I would, but there are so many issues or not issues, so many things that need improvement within the club that-
Nicky Pike (29:51):
Gotcha.
Max Bretschneider (29:52):
There's enough to do there. Yeah.
Nicky Pike (29:55):
And is this a part-time job for you, helping with the club? Is it ...
Max Bretschneider (29:59):
No, So it's all completely voluntary. In Germany, there's a thing where you have to register clubs like that. It's all very German and bureaucratic. So it's an official club. I registered at the university. We are also part of an institute where we have the workshop and the office and stuff like that. But officially all the work is voluntary. We don't get paid or anything. And every Euro that we earned with the competition or any sponsorship or stuff like that just gets put into the car and the development again.
Nicky Pike (30:33):
Yeah. And I know, I mean, you've told me this is voluntary, but it seems like there's a lot of time, personal time that you put into the club, meaning that I know you're not getting paid, but it's got to feel almost like a second job. I'm going out, I'm doing things that are helping me with my rent money, but then I'm putting a lot of extra time into the club itself.
Max Bretschneider (30:52):
Yes. It definitely felt like that at some point, especially during those COVID years, I guess. The later parts of that were quite tough where it kind of felt like a second job. But it's given so much back that I almost have a very bad feeling that I'm not doing enough because it creates connections, it creates a lot of learning experiences. And it really teaches us many of the things for our future as in most cases a software engineer that we don't get taught at university, which is sad, but it's worth it even if it sometimes feels like a second job or failed.
Nicky Pike (31:33):
I'm absolutely with you. Well, I think at that point, we've kind of went through what brought you here, what the motivation was. This is a two-code episode, Max. This is one of the things we do. We are going to interview you, but now it's time to show us. It's time to prove what you've done and how it helped you. So what have you got? Are you ready to do some demos for us?
Max Bretschneider (31:53):
So yeah, like I said, we have some templates that we use for development for the different Ross or robot operating system versions. We have them tailored to our very specific needs. There's many tools that are very common in robotics development that we also use in our templates, but also some tools that are not very common. And we use the template that we have and created a more general robotic template from that or used that as a base. And I've set it up locally to demonstrate a little bit which tools we installed and why we installed them for the robotics development.
Nicky Pike (32:30):
You started off with one of the templates that were provided by Coder, one of the generalized templates, but I'm fairly certain we don't provide a template that helps host the robot operating system. So what kind of changes did you have to make to the template in order to make this viable for the club?
Max Bretschneider (32:46):
Yeah, the main changes were, first of all, thinking about how to do a Docker file, what damage should look like, what's really needed, and then also how to install that if we should pre-bundle it or install it later on inside of a script. But a lot of those tools are quite heavy. Also take some time to install. Some of them we have to install from source. So we bundle those together in the Docker file. And as a default image, we use the Ross II version image that's publicly available in the registry and just built on that and install all the tools. I think that's the one big change and the other big change are the modules, I guess, that we use on top. It really took some time to think about, okay, how do we actually develop? How do we work? A lot of it is browser based because where we have our GitLab, for example,
(33:44):
Which is run in the browser. And also you have to look at the documentation constantly. So we like that idea of keeping the VSCO Dev container set up. We provide both the desktop and the server. Let me open it up just to maybe give the people a little bit more options. But yeah, those two are really the default. Like I said before, we had a Dev container set up before, still use it for a lot of things and it just made the change that much easier that we could use the same VS code layout, let's say, because we are already used to that. We could also use some of the things from the dev container that we have. And yeah, for the times that we don't just code in an IDE, but we actually have to test the robot. There's different ways to do that.
(34:42):
There's many great tools and we installed three of those in our template. The first one being a Gazebo. It's like a robotic simulation software. We have our own forecast that we use. Then there's ListBlick. I think it was called Fax Glove before. It's probably more well known under that name. It's to visualize and plot certain things that the robot says. So Ross is publisher subscriber based and most of the debugging that you do, you look at the messages that two components send each other. So you have maybe a camera component and the camera sends the process data to some navigation component. And then I don't know if the car fails to break at a crosswalk. First thing that you would do is check that the camera component actually sends the crosswalk message to the navigation. So do we actually detect the crosswalk? And you can do that with Poolcyclift, but you can also do that with tools like RQT or Arvis that we also installed.
(35:54):
All of those are GUI based. You have to have agree for development. And we had some talk about how to integrate that. We wanted to use a web version similar to the code server, but most of those tools don't support it yet. So we use the CASM VNC. I prepared a little bit something here, which just makes it easier to maintain in the short term since we don't have to figure together all the different things. If something breaks down road, we can just use it in there right now. And once the web sockets or the web socket versions get supported, we'll integrate that. At least that's the plan for now. Okay. So this is called robots. It's also like a robotic simulation software and you have your little robot here. There's like a demo version that we use to teach new students how to do things.
Nicky Pike (36:47):
Gotcha.
Max Bretschneider (36:47):
And yeah, what you then do is you have ... Yeah, you can select your robot and like I said, it's message based. So you send a message which contains the new position for the robot more or less. And then the robot would work to position X, Y, Z, or rotate or stuff like that. And there's many tools like this that are simulation based that you can use, especially for the new members to introduce them, to play around with it a little bit, I guess. And for those we need to go in, that's why we use the CAS and VNC, works quite well for us right now. And in the future, yeah, probably also some web-based solution if we can find it. It's a little bit difficult to navigate the ROS2 ecosystem channel.
Nicky Pike (37:41):
Gotcha. So what's the development process look like? You kind of know what the competition's going to be. So you go in, you do the programming, you do the simulations. Once you get the simulations where you think they're right, then you're going to actually pass those off to the robot and make sure that they work in real time?
Max Bretschneider (37:59):
Yes. There's multiple steps in between, but overall we have the simulation. Like I mentioned, we have our own version of that, where we can test specific features. We don't have ... So we have two versions of a robot. So two people could test simultaneously, but it's much easier to develop at home and test it in the simulation if you can. But in the end, there's still always a simulation gap. You never have real world lightning, real world road conditions. So we actually have to test it on the road then too. But the overall development is really tested at home, right? Also some unit tests for a lot of these things, it's sufficient in unit tests for the simulation. Test it out visually in the simulation if you can, and then bring it onto the car or the robot and test it really in a workshop.
(38:49):
So
Nicky Pike (38:49):
When you're getting ready for one of these competitions, do y'all have an idea of what the competition's going to consist of? Do you try to build a simulation that's as close as you think it's going to be? Now, granted, we know it's a competition, so they're going to throw things at you that maybe you weren't expecting, but do you kind of preload, here's what we think the competition scenario's going to be, and that's how we do our simulations. And how long does it take you to set those simulations up?
Max Bretschneider (39:12):
A long time.
Nicky Pike (39:15):
Okay. Are we talking we talking weeks? We talking days? What are we talking here?
Max Bretschneider (39:20):
So maybe let me start by giving a more general overview of our season. Competition is once a year. And for us, the season actually starts after the competition. We take a lot of very meticulous notes throughout. We note down what worked, what didn't work, whether car may behaved strangely or even just were swerved a bit more in the curves and create a long list. We have some special supervisors at the competition that really just investigate a single feature of the car for all weekend and document that. Now we have a very long list of things that we can look at after the competition and write out what we maybe need to improve on, what worked well. And from those lists, then we then develop our overall structure, I guess throughout the year, what features we should fix. And in what order, maybe assign some priorities, assign some teams that work on different things and then go from there.
(40:21):
And then the simulation, adapting that, it's a bit dependent on what specifically we're testing. We can't simulate everything. This is our version of Gazebo. On the right, you can see the eco vehicle, first person view of our car. This is a top down view of the same world. And this is the track as it actually was, I think, four years ago at the competition. We have a small tool that we can draw the tracks in and adapt those. But what's much more tricky in this is to get the other conditions right at the competition. For example, you can see there's no background, there's no reflections on the road. In real world, you never have perfect environment like that. So we have a small generative adversarial neural network that adds some noise to the image and makes it a little more realistic.
Nicky Pike (41:14):
Well, and I see you're doing things like taking some of the sidelines out in certain parts of the road. We've got some things floating across, some trees, turns.
Max Bretschneider (41:24):
Also, these are all things that are contained in the rule book of the competition, so we also actually have to watch out for them.
Nicky Pike (41:32):
Gotcha. Now, you've been doing this for five years, so kind of walk us through what a competition season looks like because it seems like, hey, we won first place last year. What does the next season look like? Is it something completely different? Are you just trying to learn how to shave time off or maybe they're throwing different obstacles at you? What's the difference between seasons and how do you prepare for it?
Max Bretschneider (41:54):
Yeah, that depends basically from season to season. I can maybe give a more concrete example from one that sticks particularly in my mind, I guess. On this track here, you can see these little parking boxes.
(42:09):
And in the past, it was a rule that you drive around track three times and you can park once every drive through. And if you do it successfully, you get a multiplier on your points. So if you do it three times and three times correctly, then your points are times three in the end, which is very good. But we had some issues with the parking. So we noticed that the competition before that I think one of the parking attempts failed because the car didn't actually see this little box or it saw it a little bit too late. So there was the main goal to fix during the whole season leading up to the next competition, and that's really what we structured the development on. So once you have this buck, I guess, documented down after the competition, you start seeing how to reproduce it and then splitting it up onto different departments or different software departments that maybe have more insight into what the issue could be.
(43:09):
For example, in this case, it could probably be the computer vision or perception department that had an issue. So you assign it to that team. Of course, you have some other box that get assigned to different teams, and then they really start working on that throughout the year. Then of course we also have exams, so we have some breaks in between, but leading up to the next competition, you start to get a sense of, okay, maybe we get finished with this particular problem, but not with this one. And maybe then two months before a competition, you really have to start to prioritize a bit more, write down a deadline, say, okay, well, we do this for one more month and then it's a feature freeze and we just do optimization and really lock down all the things that need to be stable for the competition and this then repeats until the actual day of the competition, we pull many all nighters.
(44:03):
And yeah, the day or the weekend of the competition then is really just routine, I guess. I think I can quite confidently say that we have a very good flow or process at the actual competition where we have different people assigned to do different tasks or watch out for different things like some that you have to run by certain changes, for example. So if you really want to do a quick fix for, let's say the parking algorithm at the day of the competition, you have to target over with the specific supervisor for that. And then it's really just routine and letting the car drive and hoping that it scores well.
Nicky Pike (44:48):
That sounds scary. We're going to make a change the day of the competition.
Max Bretschneider (44:52):
Yes, it does. But that's also one of the very fun parts because there's a lot of adrenaline involved. It was before my time, but there was also one situation where the display port or something died, so we couldn't really access the car other than SSH at the actual competition and the SSH agent died as well. So someone had to literally a couple of minutes before the start of the competition, plug in a keyboard and basically blindly write down correctly all the right commands to get the current starting mode and did it successfully.
Nicky Pike (45:31):
Wow.
Max Bretschneider (45:32):
And yeah, it's a lot sort of hacking involved, but that's part of the fun. Yeah.
Nicky Pike (45:39):
That is part of the fun, right? You've got some guys like you that have been in the club for a while, you know the competitions. What are some of the things that kind of trip up the newbies, the guys that are just coming in and the gals that are just coming in? What are some of the things that they have a difficult time kind of grasping? And we've talked over, I'm not talking about the hardware issues or getting familiar with Linux or the robot operating system, but just from the competition standpoint, what are some things that new club members have a hard time kind of adjusting to?
Max Bretschneider (46:11):
I'm going to try to compare it a little bit, but we are like one of the bigger clubs. We have like 70 people, something like that. There's also some smaller clubs for those it's just difficult to get like an actual up and running system. But for the competition day itself, I think the routine is something that a lot of them might not have nailed down as well as we do. Of course, we don't have the insight into those processes, but you can sort of sense that this is something that really comes with practice that I think works at least well for us and that the new ones might be lacking a little bit.
Nicky Pike (46:47):
So I'm guessing you don't have this over in Germany, but in the US, we have something that we call battle bots and they build these, they're small robots. Think of maybe a little bit larger than one of the robot vacuums like a Roomba or something, but then they put all these like spinning blades on them or things like that and they put them in a ring and they let them
Max Bretschneider (47:06):
Fight. Okay. Yeah, I know what you're talking about. I think I've seen that before. We don't have that, I think. Letting them fight is a bit tricky. So we wanted to raise our cars at least against each other on the same track at the same time. But even that, at least for university clubs, it's a bit too expensive in case one of them accidentally crashes
Nicky Pike (47:25):
And
Max Bretschneider (47:26):
Fighting and crashing them deliberately against each other is probably a bit too expensive for us.
Nicky Pike (47:33):
I'm going to give you homework, Max. When we get off of this, I'm going to send you some links to Battle Watch. You got to go watch this stuff. It's a lot of fun.
Max Bretschneider (47:40):
Okay.
Nicky Pike (47:40):
But yeah, it does look like a very expensive hobby because these robots tear each other apart.
Max Bretschneider (47:46):
It sounds like a very fun hobby though.
Nicky Pike (47:49):
It looks like it's fun to watch. I will tell you that. Absolutely tell you that.
Max Bretschneider (47:53):
Interesting design challenge.
Nicky Pike (47:55):
I want to ask one more question because in your coder instance that you had for the people using the club, I see that you've got both like VSCode desktop, you got VScode on the web. Why provide both? Convenience.
Max Bretschneider (48:09):
I think it's a good question. Why? I think it's something we might have to do some polling and ask people, are you actually still using VSCode desktop if we have it on the web? And if like maybe in half a year when more people have or are using this daily and reporting, "Hey, we never use Viscode Desktop. We only use code server, then we'll switch." But right now, if we can provide both, why not do it?
Nicky Pike (48:36):
I'm with you. Are you seeing anybody where they're wanting to come in with maybe some of the AI tools like Cursor or Kiro maybe wanting to use those instead of VS code?
Max Bretschneider (48:47):
I think someone was trying Cursor before, but if I remember correctly, it's also using, what's it called? BScodium, right?
Nicky Pike (48:55):
It is. It's a fork of VS code, but it does have AI built into it. And I guess that's the real question for you. Are you seeing any of the new club members coming in where they're trying to use AI to maybe help them with some of these solutions or AI development being a part of what you're doing here within the club?
Max Bretschneider (49:15):
It's difficult to generalize. I think there's definitely some people that are using it. There's also like a university plan for some of these tools that we can then use for free. Personally, I don't have much experience with that, but some of them are definitely using it and at least using something like ChatGPT to ask. But I've noticed when I tried it out is that our project is fairly large. It's like almost a million lines of code by now. It gets to a very complicated level quickly that probably doesn't really fit in the memory of most of those models, or at least in the context window in some sense. So for smaller things, I think we are using it or a lot of people could be using it, but it's difficult to make an assessment.
Nicky Pike (49:59):
Well, and that'll lead me in. I mean, are you seeing any future trends when it comes to robotics that really got you excited? What's changed over the last five years? What do you see coming on the horizon or like, "Ooh, I can't wait, man. I got to stay in this because I want to see what happens when this comes in.
Max Bretschneider (50:14):
" Yeah, a lot of things change. So at the heart, we started out with a really non-AI-based robot. It's just not a thing really anymore today. The complete car was rule-based, so you have really no AI component. For everything we wrote it ourselves, we have classical algorithms from computer vision theory, stage three, stuff like that. And now it's really just moving onto either modular or even end-to-end AI systems, which are, I think, really exciting because it's just so good. We have a very well-running role-based system, but if you look at the modern models that maybe NVIDIA, for example, is publishing or even the smaller ones it could run on these cars, it's just out of question to use anything else, to be honest.
Nicky Pike (51:05):
So thinking about things that are coming, we're talking, if you could talk to say Google or NVIDIA, what's one of the things that you think tech companies could do to better support robotics programs?
Max Bretschneider (51:18):
Well, funding is one thing. Sponsorship?
(51:21):
Okay. Sponsorship, definitely. I think I speak for many university robotics teams when I say more funding would be good. Also, something that I'm kind of missing that I think got less already is cool community events. Robotics is such an open community and a lot of these other departments maybe don't have the same community. And I think it's kind of said, I think it was much more before COVID, and right now you don't really have those community events anymore. Even bigger hackathons, stuff like that. So maybe doing more of those community events would also be cool.
Nicky Pike (52:04):
Well, and you mentioned one more I want to ask you about because you talked about some of the tools and you're kind of waiting for those to be web-based. Are you of the mindset that a lot of these tools should start moving to more of a web-based interface rather than something that we've got to install on a machine?
Max Bretschneider (52:20):
Yes, definitely.
Nicky Pike (52:23):
Why is
Max Bretschneider (52:23):
That? Ease of use is one thing. I guess it comes with a certain aspect of stability, having to patch them for your system. Maybe if you need to install them from source, install a specific branch with some changes to make it work. It's just tedious. And if there's a running web-based version, maybe something that you could even couple with Coda, that just makes it that much easier to use in the end.
Nicky Pike (52:52):
Well, I love the plug for Coder. Thank you very much. But I agree with you. I think as we start seeing hardware come in, the vast amounts of different hardware that you see inner things like University, having tools that are web-based kind of help clear out some of the conflicts or maybe the inability to run on certain systems, and it just makes it, I think, more accessible to everybody. So I'm actually with you. I hope more things become web-based for simply that reason, because everybody's got access to a browser, but not everybody's got access to maybe a big enough machine to run some of the tools, which you said was a challenge for you guys.
Max Bretschneider (53:30):
Yeah, definitely.
Nicky Pike (53:32):
Yeah. All right, buddy. Well, we're coming to the end of the show. I've got two more questions for you. The first one is something that we ask everybody that comes on the show. What does being a coder mean to you, Max?
Max Bretschneider (53:44):
What we encounter every day is just it's okay to not know something. It's okay to ask the stupid questions. You have to ask them all throughout your robotics career. It's never going away. So just be comfortable doing that and be open about that and then just care about the community, I guess.
Nicky Pike (54:06):
Yeah. All right. And here's the last one. So this is kind of the hot seat question for you. Now, as somebody who does this now professionally, you're still in university, you're still going through the robotics club, but you also have a job where you do this for another company. What percentage of students that you think going through robotics programs today are going to end up in technical careers? And honestly, I mean, is that even the right kind of metric for success of what the robotics club provides?
Max Bretschneider (54:33):
It's one of the right metrics, I think. You can't fully take it into account because while it is very important for the actual engineers and technical people later on, I think it's also good if some people in a more tech manager position also have this kind of background knowledge because the one thing we provide that I noticed that we don't provide at work, or the first thing was that I found really strange was that at work, I have a small feature that I develop in C++ and then I merge it and someone else takes care of everything else basically. I have no idea how it goes on the car basically. I have no idea how those parts work. And at the robotics club, I really know how the code goes from my computer to our simulation and then actually onto the car. And I know how to start the car.
(55:26):
I know how to get on the car. I know how to debug that the whole system, the whole pipeline. And I think having this overview is really valuable for a lot of different positions.
Nicky Pike (55:38):
You started the robotics club, you're now helping lead and mentor the robotics club. That turned into a job where you're working for a large car manufacturer doing exactly the same kind of things that you do in the robotic club. So you're one of those examples where the club actually did prepare you for real life. And I think that, and I hope that a lot of students follow in your footsteps because Lord knows we're going to need a lot more of that in the future. Autonomous is becoming all the rage and everything, cars, robots, even in development.
Max Bretschneider (56:07):
Yeah, I hope so. And it's just so much fun. Everyone should do it.
Nicky Pike (56:11):
I agree with you. Find the passion. Have fun doing it because if you're having fun, it's not really work, right?
Max Bretschneider (56:17):
Yes. Yes, that's true.
Nicky Pike (56:18):
All right, buddy. Well, we're going to close out the show. Is there anything you want to end with us? Last thoughts. What's the big sage advice from Max before we close this out?
Max Bretschneider (56:28):
Well, thanks for being open source and for everyone else, just look for some open source projects, participate, look for the Koda project, maybe find something that you can work on. It's a very cool project and a very cool thought. And
Nicky Pike (56:46):
If we have anybody out there over in the Germany or the EU region that's listening that want to get more information on the robotics club, they can reach out to us. We'll put you in contact with Max. I'm sure Max would love to see some new people come in.
Max Bretschneider (56:58):
Definitely.
Nicky Pike (56:59):
All right. Well, thank you very much, Max. Last question. Can we consider you a full fetched member of the [Dev]olution now?
Max Bretschneider (57:07):
Definitely. I'm wearing my Coder shirt.
Nicky Pike (57:10):
Love it. Love everything about it. All right, buddy. Well, thank you very much. And for everybody else, catch us next time. Thank you for listening to [Dev]olution. If you've got something for us to decode, let me know. You can message me, Nicky Pike on LinkedIn or join our Discord community and drop it there. And seriously, don't forget to subscribe. You do not want to miss what's next.