 Hi everybody, I'm Josh, thanks for coming to my talk. I wanted to talk to you today about open source car control. So I'm the CEO co-founder of a company called Polysync. OSCC is one of our various products and right now the only open source one. So we're sort of maintaining that and giving that out to the community. So just briefly, what Polysync does and why this matters to us. We build an underlying infrastructure layer for autonomous car software applications. So in effect you can think of this as sort of applying fault tolerance concepts and safety concepts that have been pioneered in distributed computing systems to the car. So the underlying infrastructure that enables a fault tolerance central compute architecture in the car. So we think this will be completely important and critical for building autonomous cars because of course they use very powerful processors and very difficult to get to safety certification with those without kind of new approaches. So the important thing about that is that we're a platform provider. So like any platform provider, we live and die by an ecosystem around us. We don't actually do application software. So how do we build an ecosystem is a question. So this is what we built OSCC for. So three reasons. The first one is we want more startups in this space. So traditionally automotive has been extremely close to startups. Very difficult to build technology and especially to commercialize technology in this space because it's so proprietary. So what you're seeing with autonomous driving is that there's some challenges to implementing that. There's challenges to the OEMs and the two ones supply chain auto are having difficulty solving themselves. And suddenly this industry is open for startups like it hasn't been for maybe like 40 years. So that's pretty awesome. We want to enable more of that. We want to see bigger fleets. Our platform is really about achieving production and scale. And so for us, more cars is better. And then finally, safer testing. We've seen a lot of different approaches working across this industry for four years. A lot of different approaches to getting control of a vehicle. And some of them are sort of much less safe than others. And none of them really wonderful. So if you're a startup or whatever, we don't want you putting like hobby servers on your car and trying to figure out how to do this. In the least safe fashion, we'd like to give you an easy entry to building a safe and controllable car. So for that reason, we started with this beautiful car right here. Actually, it's kind of stretched out. Unfortunately, it's not that long in real life. Does anyone actually drive one of these cars? Kia Soul? Yes, one. It's like the most common economy car. Anyway, you can get these things brand new. We get them for like 16,500 U.S. And you can get them on a used market all the way down. We've seen that if you want to go sketchy, rebuilt titles after accidents and things, you can get under $10,000 on this particular car. And the key to this car is that not only is it inexpensive, it's available worldwide in basically the same configuration. It's very, very simple, so it's really easy to reverse engineer. And importantly, it has electronic power steering and throttle by wire, although everybody has that. So I'll explain what those are in the future. So just to give you an idea of what the state of the art looks like and typically, this is a control robot. Actually, this is probably a half million dollar rig that I think is a Ford. Ford uses to test their vehicles. And it looks super haphazard because it is. It's all bolted onto the car. And we've seen everything from this type of implementation to the hobby grade version of this, which is super sketchy. And then really, really nicely integrated cars, too. So really nicely integrated cars do exist, but they're still incredibly expensive. Basically, you can't get into this, a controlled car that's like done well for under $100, $150,000. So how do we solve that? So enter OSCC. So let me play this video. How do I play it? Nope. It was? There we go. Okay. So enter OSCC. So this is a 2014 Kia Soul under control by OSCC. It's using the car's own system. So power steering, throttle by wire, and then we have to add some other stuff for the brakes. But this is it. So this is a guy controlling this on, we have a game controller interface, a laptop or whatever. But you can see it's very smooth and controllable and is awesome. So that's OSCC. So how do we do it? Oh, wait. How much does it cost? So normally this type of implementation, like I said, costs $150,000. You've probably seen, if you've seen the cars, like NVIDIA, and you're often seeing them in the news now, demo cars, they're always a Lincoln MKZ. Lincoln MKZ costs about $100,000 to $150,000 to get in fully out, including the car, into a fully outfitted by wire system. With OSCC you can do that for $10,000 to $15,000 including the car. It's dramatic, right? So that's awesome. And we think that it's safer. Did something funny happen? Or is that just, that's hilariously awesome. That's great. So a key part of this is that it's not only is it inexpensive to build yourself, you can build the hardware from our site or whatever, or from GitHub. But it's also all open, right? So in those other systems that I said, $150,000, they're proprietary. They're totally closed. You can't get into them. They often use like vendor specific IP, like interface files and things like that, that they can't give away to you. This one is completely done with Arduino. So have at it. So how do we do it? Cars typically have, there's four major modules to the OSCC system. There's a steering module, a brake module, a throttle module, and then a gateway. Each of these is connected up over a CAN network, a private CAN network. Everyone knows what CAN is? Yeah, okay, cool. And then there's an external CAN interface for control. We use CAN because it's fault tolerant. And it is all the wonderful things other than high bandwidth that is very low bandwidth. But it is all the wonderful things. It's fault tolerant and resilient and cheap. So we use CAN to communicate with the modules and like auto people get it. So how do we do steering? Steering is the key one that is difficult to control. The cool thing about the Kia Soul is this thing right here, which is called a column drive E-pass system, column drive electronic power assisted steering system. And then in Kia parlance that's M-D-P-S motor driven power steering. So Kia is a really great company. They have an online site called KiaTechInfo.com and for like $19 for 72 hours, you can have access to 100% of service information about the cars. So all the wiring diagrams, troubleshooting stuff, like very, very deep information. And we got into this thing and what we realized about it is that it's actually a very simple little self-contained system. What it has is a brushless motor, there's a motor controller, and then there's some analog torque sensors which sense your hand on the wheel. So the way that works in typical operation is that you put your hand on the wheel and if you've ever used an electronic power steering system, you'll notice it has just a little bit of like wigglyness to it, like a little wiggly play. That's a torque sensor in between the wheel and the column that's sensing your input. And so it's job, the power driven electronic power steering system, it's job is to decrease the force that you put on the wheel. So I give it a little bit and it goes, oh, I want to help you. And that's the control loop. And so we do what is essentially very simple, which is that we spoof those torque sensors. It's basically a man in the middle attack on the system. So what a good way. This is kind of a diagram of it, which looks kind of mind-bendingly confusing. But basically what you've got is the MDPS in the middle, that's a black box to us. We don't really know what goes in there. We add a little relay here and we just kind of switch over to the Arduino. And actually we have to add part of the LCC system adds a digital analog converter. So we go from pulses to actual voltage. And then we're able to spoof that torque control. And then what we've done, and you'll see it in the software if you get into the GitHub, what we've done is we've had to linearize the response to that system. So one of the problems with power steering is that for control it's trying to make it feel a certain way. It makes it a nice dead spot in the middle. It changes the response depending on how fast you're going. We really wanted to keep a light touch and stay very much at the edge of the system. And so what we did is we were able to linearize the response of that using a velocity control as opposed to a rotational velocity control as opposed to a positioning control. So the result of that is that you can command an angle for the steering wheel and it will go to it at a specified speed and it does so very smoothly and accurately. And that's awesome. So that's number one. That is done with this little guy here, a little Arduino shield. So this goes on an Uno and it has screw terminals for all their relevant sensors. We provide all the wiring diagrams and things like that. We don't specifically say how to, we specifically say how to wire a new Kia Soul but there's some other details that we leave out so that it's a little bit more generalizable. I should mention that the intent of the OSCC system is that you can apply this general methodology to other vehicles as well but that the Kia is the simple one and it's cheap so we focus our efforts there. So that's part of why we open sourced it, one of the people to move things. Now from a safety perspective, this is the, we think that this is the right way to do this. So the important thing there is that we stay at the very edges of the system. So electrically we're as close to, electrically we're effectively a hand on the wheel in the case of this system. And so other approaches that you may have seen on the internet or whatever of controlling the MKZ or different things, they often use a CAN based approach where you're spoofing CAN signals. And the problem with that is the way that it's often done is, especially if you're steering, is that you spoof the power, or excuse me, the parking assist system, which is the system that you pull up next to a parking spot and it spins the wheel and parks you in it. You have to buy a really expensive car typically to do that because there's only a few that have that functionality. All right, you're telling the car that it's driving under five miles an hour all the time and that's what basically gives you the steering control. So our system doesn't require that type of spoofing. So basically by staying completely at the edge of the system, we maintain the safety case that the manufacturer intended around their control system. So that's key. So the redundancy that exists in those torque centers, all the way back through redundancies in the control system for the wheel, all maintain completely, we don't spoof them in any way, but we do get full control of this wheel. And in fact, the steering wheel in this car can hurt you, it's so strong. So as opposed to other systems where you end up with like, they artificially block your control for various reasons. So yeah, that's steering control. The next one is throttle and it doesn't really require too much more description than what I've already given you. The throttle is the same way, although it's just less safety critical, right, because throttle response in a car is less immediate than a steering response. So this is a throttle, so this is just some example of throttle by wire images, but almost every car, like modern car, has gone to throttle by wire and what that means is that your foot pedal is completely disconnected from the throttle body and the engine that actually controls how fast it's trying to rev. So again, this is just the same type of analog spoofing attack and in fact we use the, I probably shouldn't call it an attack, approach. In fact, we use the same board. So it's the same deal and then the Kia, you know, it's the same, like they're almost the same sensors, it's kind of cool. Let's see. And then finally brakes. So brakes are the problem. So the fundamental problem that we're solving with cars and maybe everybody has experienced is that there's no interface to these damn things. So you end up, you want to do something with a car, you have to hack it. The only interface that exists on most cars is called OBD2 and so who knows what that is? Yeah, everyone. So you guys are all car people, this is awesome. OBD2 is like the only standardized interface to a car and there's been like this massive, you know, influx of startups that have created around that one interface. So in some ways this is kind of a call to action for the OEMs to open up their cars and allow us to have like a developer mode in them or something like that. We'll see if that like becomes a thing. But you know, one of them are really a super risk averse, right? But you know, whatever, we've been able to do that with phones for a long time. So anyway, the problem with these cars is that there's no interface and that's certainly the case for brakes, right? So spoofing the E-pass and the throttle are relatively simple but brakes get into something that's kind of ugly. The fundamental problem here is not only that there's not an interface but that the car itself doesn't typically have the facility to brake itself. It doesn't have the facility to brake itself. So the car is typically like an ABS unit and the role of this ABS unit in the case of an analog brake system in the case of a skid or something like that is simply to modulate brake pressure that the driver is providing in cases to provide a little bit of your own. But in terms of controlling a car, you need to have full access to the braking facilities of the vehicle. And as it turns out, creating that actuation in any meaningful way is difficult, right? So we've seen everything like you put a piston on the brake pedal. That's really slow and dangerous. We even tried to design our own sort of form of that once. It was really bad. The way we do this is we have to add an actuator. So this particular actuator that we add is probably a better picture of this but this is it integrated into the soul. It's from a Toyota Prius. So this particular actuator you can get from in a junkyard costs about 200 bucks. If you want to buy a new one, a reman, it's like 1,000. But it's a Denso unit. It's rated for full automotive duty cycle, which is awesome. And the critical thing about this one comes from a 2004-2007 Prius. This one doesn't have any electronics in it. So it's just a pinout, basically, to a set of solenoids, pressure sensors, and a big pump. This particular unit has a high pressure accumulator, a high pressure pump, has like five or seven pressure sensors in it, including all the safety stuff around that. So if you over-pressurize the pump, it'll blow a seal and things like that. And then it has a set of solenoids that are rated either for continuous duty or for PWM. So that's pretty great. So what we did with LCC is we created a board to control this unit. And I'll show you hydraulically how that hooks up. So you thought this was just a total electronics or code class. This is not it at all. So this requires unhooking brake lines getting covered in brake fluid and then hooking them up to this thing. And basically the way it works is you have your master cylinder out of your foot pedal. You have two outs. This is typical of almost any modern brake system. There's a redundancy in the brake system. Those two outs go instead of directly to the stock ABS unit, which is this blurry word here. This is the stock ABS unit. That usually has two ends. So rather than, again, we sort of take the man in the middle approach, what we do is we just put this unit between the master cylinder and the ABS unit. There are lots of different problems with this that this magical box solves. So I would encourage you, though, this may seem like a total hack. This is, from my experience, incredibly slick. So what this does is two lines come out and they come into these two solenoids, SMC2 and SMC1. There's pressure sensors there, and those are actually continuous rated 12 volt solenoids. So what happens is you can power those up and you completely lock out the foot pedal. As soon as those are powered up, you can't press that thing down anymore. But we can sense what pressure you're putting into it. The first demonstration we did with this is we actually created a full detached brake by wire system in the Kia. So you can press on the pedal and then we would actuate the brakes for you, which is kind of cool. Coming out of it, so now that the foot pedal is blocked off, what we do is we take our high pressure pump, we charge up our accumulator. You can see we have a pressure sensor there that allows us to modulate that pressure and we just put it on a really simple loop. And then we have four out solenoids that are just very simple, excuse me, four fill solenoids and four spill solenoids. So very simple, we can pressurize the outgoing circuits or we can release them. This is very different, if anyone knows automotive braking systems, this is very atypical. So normally they have these crazy like eight to nine solenoid systems with all kinds of crazy backwards looping things. They're very complicated and they contain a bunch of electronics that are all housed in epoxy and you can never get at. This one is just a pin out. So anyway, so the principle is very simple, which is that two of these outgoing circuits we just block off, we don't need them. And the other two we pass through into the ABS unit. And by using PWM on the solenoids we're able to modulate the pressure going in and out. And we've tested that pretty extensively and it tracks really well. So that sounds complicated and maybe like overwhelming, but it's actually not that hard. You put it in, you look up our board to it and then you run the code and we're taking care of the control. That's the prototype of the board. It looks gargantuan. We've shrunk this now in the shipment that we actually shipped to the SEC to about 40% of that size. So it's much smaller. It does take an hour. Do we know the bigger one? Megan. Megan, thank you. And yeah, put it on and then have at it. But this was kind of a task. We have a bunch of power systems on it and the MOSFETs that are cooled and things like that. So you have to do a little bit of housings and stuff to keep that in a good shape. We usually put it in the glove box. Okay, then finally we have to gateway into the chassis. So this is my gateway icon. We actually just, right now, we're thinking of building our own, but right now we just use a, this is our open source can shield which anyone who's played with can probably has like five of these. We just have two of these. One of them connects to the private bus that we use to control the control systems. And then the other one connects to the vehicle bus. And so what we're able to get from that is pretty cool. So there's three can buses on the Kia Soul. There's a C can bus which is like a chassis can. There's a B can bus which is the body can. And then there's a media one, M can. We're currently reverse engineering the body bus, but the control one gives us access. We can turn on and off the headlights. We can do like wipers and things like that. The problem is we haven't figured out yet how to do turn signals we're getting there. But basically, you know whatever, turn on your turn signal yourself. This is a, it costs $10,000. Come on. So a couple of these things. So this is actually where reverse engineering of the car is a pretty interesting task. There's a bunch of, if you're familiar with automotive can systems, there's typically no spec to them, but they're super easy to, you know, to parse off the wire. So, you know, the way that we, the only signal that we actually use for SCC through the gateway is the steering angle. And we simply reverse engineered that from the can signals. For anyone who's familiar with can, this particular Kia Soul is awesome. All the signals break on bite lines. There's no sharing of bites. And it's, yeah, so it's super easy to reverse engineer. We just haven't, haven't done all of it. So anyway, part of why we're opening as a community, we'd love for you guys to help us with, with that. There's certainly people in the most skilled at reverse engineering can buses than we are. We also get all the OBD2 PIDs and, and you know, all the, all the normal goodness that you get off there. Other signals that we can have are brake pressure. We get individual wheel speeds, which is neat and turn signal status. There's a bunch of information you get off the bus that you don't normally get off OBD2. So I talked a lot about safety. I talked a little bit about safety. The overarching safety concept for this particular thing is, is that it has a fail safe mode, which is that when the whole system is powered off, all the relays default to a, to either normally closed or normally open status. Include all the, all the solenoids in the brake system power open. Basically, if you, if you hard shut down power to the system, it, it returns the car to a stock state. And so that's the, that's the overarching safety concept. We have implemented, we have implemented manual disabled so you can grab the steering wheel. You can touch the brake or you touch the throttle and it will actually, it will disable the, it will disable the system, not in a hard shut down mode. I will say that if you do hard shut it down, there's a disc, you can have a discontinuity in some of the signals and you, you can fault the ECUs on the car. But that's the, the other great thing about Kia is that you can get the factory reset tool for like 100 bucks on eBay. So another reason, another reason to use that fabulous little, little car. From a, from the repo's perspective, there's a few things that we comply with. We have a coding standard. It's Misra-ish. If anyone's familiar with the Misra-C standard, it's gargantuan and impenetrable. And we didn't want to force that. And we also can't distribute it because it costs money. So we kind of made our own version of that that's just, includes code examples in a simpler, a little bit more approachable. And exist in our, in our contributing.md file. From a, from an actual safety perspective, some of you may have alarm bells going off and going, oh, this is not an ASL. You, you guys are, you know, let's see, you would say, Arduino is not ASL-D. And that's in fact true, far from it. ISO 26262, the Automotive Functional Safety Standard does allow for diagnostic based safety systems. It's not, like, we have not, we're not in any way claiming an ASL rating for this system. But we do implement diagnostics on all our outputs. So there's, so we have diagnostics on CAN. That's a keep, all modules published should keep alive. And if you miss, if we miss that for a certain period, then we, then we disable control. There's an ADC and a DAC and a PWM check as well. So for all signals that we receive, we check them redundantly. For all signals that we send, we check them redundantly. And then we have a, and then we do the same thing for PWM. So it's not, it's not, it's certainly not, you know, a, you know, dual processor lockstep arrangement. However, it's, it's, it is checking itself. And you have a, you have a driver there. And again, the overarching fallback is the, you know, the driver that can disable control of the system at any time, either through a hard shutdown or through grabbing the steering wheel or those other things. We have a code review process. You can read more about it in our, our contributing.md. We just, you know, it's a peer, it's a peer review process. And we, and we maintain the, the repos that we have. We actually actually have ISO 26262 trained safety certified individuals reviewing incoming code. And then finally we include some unit and integration testing there. The important thing here is that we actually, we actually do test all new code revs on functioning vehicles on the road. We make sure that, you know, thresholds are correct and, and, you know, test paths and things like that. So we have a full set of testing firmware. Also when we build boards and ship, we run them through a set of testing as well. And finally we'll be adding property-based testing and chaos testing to this, you know, kind of in the next few months. Part of OCC for our company is providing us kind of a microcosm of, of learning how to build a company that can build safety certified codes. So this is a journey that companies take and this is part of our, part of our, our journey. So how do we do on this? We launched in January 29th, 20, so not very long ago. Already we have, you know, fairly, fairly strong engagement on our, on our Git repo. I will say that we are the only people that have contributed code so far, but you know, it's early. But importantly, it's a cost reduction. So for startups, this makes a huge difference. You can't, you know, you don't have to, you basically don't have to raise money to go get your, your algorithms on the road. So that's huge. We've shipped 20 kits. We, we had an initial buy of, of, you know, boards that we built. We've also had some, we had some guy in LA build like five of them themselves, which is pretty cool feeling. And we've also built four cars for different companies ourselves. So we do, we do car building services for our, you know, as part of our, part of our company. And then we also, we also, we also doing what we're calling guided builds. So we'll have companies come in. We've only done one, but we have a company come in. We actually build their car with them for two weeks. They sit alongside us. We teach them, you know, how to run all the wires, how the fundamentals of all the systems work. And that's pretty cool because that means they can go home and build their own cars for much cheaper. Of course, when we build cars, we charge a lot of money for it because, you know, like it's work. So, and then finally, we have, you know, in terms of safety, we have failsafe and safety case for, for this particular system, which is, you know, not only is critical, I'm not going to say it's like an industry first, but it's something that's often overlooked. And I think, you know, one of the most valuable parts of this system. So what's next? Look at this beauty. Isn't it pretty? What, what color is this? Is it A or no? You guys are like not following Kia at all, are you? Oh, good. That's good. Gold star. This is a Kia Nero, the ask in its glory. This is a sub $25,000 hybrid. That's pretty cool. Buy one for your kids. In the meantime, in the meantime, it has a break by wire and it has, you know, throttle and E pass also full set of by wire controls, which would mean if we could figure this thing out, we don't have to add a brake actuator anymore. Again, our hands messy with brake fluid. We just send those beautiful can commands. The problem with that is that I think it's pretty heavily, we've got, we've like poked into it, and it's pretty heavily protected on the can side. So if anyone's looking for an exploratory project, this is the one. We're poking into this ourselves and finding that it's harder than we thought. Yeah, so the E pass and the throttle, we think we can do the same. Sorry, the question was, what's required? What's required? Is it just the same type of reverse engine area on the can bus? So the throttle and the steering, we think are basically the same as the Kia Soul, so we can use the same approach, which is a good one. On the braking side, this car, so Kia's starting to be much more sophisticated, so they're adding, this one comes with auto-emergency braking, you can get with a radar and things like that. And also, hybrids always have a brake-by-wire interface because they modulate the brakes between a regenerative braking from the electric motor and hydraulic braking. So what that means is that it's a much more complex system. The way that they do that regenerative braking is they have a pedal sensor on the foot brake, which is easy to spoof, but they double-check that with a pressure sensor in the master cylinder, which is all self-contained and on circuit board traces. So that's the problem. So for this guy, we think that we have to have a can interface. Typically, those interfaces don't exist, so there's clearly some work to do there. Anyway, it would be much better if we can do this, but it's non-trivial. We're also in the process of doing some real production engineering on the Kia Soul implementation that we build. So when we build a car, we build it with a whole bunch of power bus systems and extra cabling and sensor pinouts and bracketry. So we're doing all the CAD modeling and production work to get ready to actually provide bombs and full-build specs for companies that want to do this themselves. We don't really want to be a car-build company, but this stuff has to be done. And so if you're looking to build a fleet, soon we'll have full production engineering done on that. And then finally, we really want to partner with a tier one. So if you're a tier one sitting in the audience, we would love to partner with you to build this into an ASLD hardware. It's not ideal that it's Arduino in terms of safety and resilience. We think that a little ECU implementation on ASLD hardware would be a great move, not only for the project, but also for the companies that might be interested in building their own systems. Or there's just a lot of good reasons to contribute to this. While I'm here, and I've got all your eyes, I wanted to mention this, this is pretty cool. So we just partnered with Udacity Human Cities Announcement. Is anyone aware of the Self-Racing Cars event in the U.S.? Yeah, some people. Self-Racing Cars is a hilarious track day organized by a guy named Joshua Schachter who started Delicious. If anyone remembers that. So it's a really cool event where basically a whole bunch of startups in the Bay come and show off their latest autonomous driving stuff on a race course and try to drive fast. So last year, it was a total junk show. People with fastest laps were average 12 miles an hour or something terrible. Racing. And all done by hilarious economy cars like Kia Souls. So this year, I expect it to be much better. If you're not aware, Udacity has this really cool program now where they're training people to do. They have their self-driving cars, nano degree. So probably some people are in it here, I'm guessing. And so they're organizing a set of teams that will then come in and bolt into two LCC cars that we're providing and then race them around the track. So this is the beginnings of that type of interface for the automotive industry. We might have to hack our way to it, but this is a big message for the auto industry is like, we need interfaces, that breeds innovation. And so look here, we give you cars, other teams have never seen them before are going to come bolt in and drive them really fast around a racetrack. There's nothing bad that could happen there, right? Here's a cool video from last year. Look at that guy. Yes, however you want. There's flags. This is just to give you an idea of the type of cars that will make available there. If you are interested in racing those cars, or you have algorithms or whatever, please let me know afterwards and we'd be happy to get you in the running. I don't think it should just be Udacity students that are able to do this. So this is the type of car that we provide. We have computers in the back, and here it is about to go out on the track. This is kind of gives you an idea of how the event is. Here's slow-mo. We're not actually driving that fast. Yep, see? I've been talking about it some more. Look how slow that bell line is spinning. Anyway, so we provide you with all these cool sensors on board, which I'm sure a lot of you, if you're developing self-driving cars, would love to get your hands on. We'd be happy to provide you not only data for this, but also give you a chance to get on the car and race it around. Or to show up and hang out and see what the industry is doing in their garage. There's usually no big OEMs or anybody, or there shouldn't be any big OEMs or anybody at this event. It's totally startups, so pretty cool. How can you get involved? Here's an old shot of a repo, and you can make a Kia Soul yourself. It's really not that hard. We'll be launching an actual specific Kia Soul build manual in the next couple weeks, couple months that'll show you not only what wires to cut and where to run them and all that fun stuff. You can reverse engineer some can signals. As I mentioned, that's an important thing that we need to get done. You can probably do different cars. If you've got a car that you think you want to run it on, send us an email, and we will tell you how to do that, or you can try and parse it from the docks. But if you're still learning this stuff, it might be hard. We're happy to help you out. For instance, we just evaluated Kia Sportage. It's not going to work. Sorry. Let's find out the cars in which this works on. Typically, the simpler the car, the cheaper, the better. Then improve and extend the existing designs. We're not electrical engineers. We had the circuit board designs contracted. We think they're pretty good. We think they could be way better. The software as well. Please get in there and tell us what for. The great thing about Open Source is that it's completely ruthless and has no pity for you. We've gotten some really critical comments that have dramatically improved the quality of the repo already. That's been awesome. Even without contributions. That's super valuable. We did three licenses on the framework. The hardware is all Creative Commons. That's all the circuit boards and pictures and diagrams and all that fun stuff. The firmware is GPL v3. We really think that that should not be a proprietary type of thing. If you're going to prove the firmware, then that would be great. We should definitely share that. The software side, we provide a little joystick controller app that doesn't require our framework or anything like that. Polysync. That's MIT. Extend it way. Then I would be negligent if I didn't say it. Look, please do not use this on public roads in any place. We have not guaranteed its safety. We're trying to make something better. But I can in no way condone you using this in non-controlled environments without a safety driver, all these things. If you do that, you're taking your fate in your own hands. But it's probably better than putting hobby servos on your car. That's it. I think we have some time for questions. In the front. The question was, is it legal what we are doing? Or rather, is it illegal? That's part of why we open source this. We're not using it for commercial purposes. It's free for everybody. Our lawyers have looked at that and we believe that we are okay on it because we are working on things that we have freely bought and we own. We are not publishing any proprietary information about the key of sole in the case of where we need wiring diagrams and things we manufacture those ourselves. So we believe that we're, that yes, it's legal. Yes. Sure. So the question was, this gentleman sees this as a low-level framework. Are we integrating with other sensors and frameworks like ROS? So in the other world of PolySync, yes, we provide lots of sensor drivers. We record and replay a facility. We bridge to ROS to provide a stable underlying sensor layer for that framework. This is just meant to be a, like a firmware, like low-level control system. So if you want to, if you want to extend it to, like build a ROS driver for it, please do. Yeah. I probably should pick someone in the back. Was there, how about you? The question was, do we plan on integrating or working with Comma.ai? I'm not sure that anybody really works with Comma.ai. We have talked about extending OSCC to be controlled by their, you know, DrivePilot and Comma Neo system, and we poked at it ourselves. That's another thing like ROS, you know, that'd be a great thing to see the community do. We're not an applications company, so they are. Yeah. So the question is, what's the business model behind OSCC? Is it a hobby or how do we get funding? OSCC, as I tried to get in the beginning, OSCC is unilaterally, like, good for our business as a platform company. And so we fund that side of the product freely. Like, it's good for our engineers to learn more about cars, to learn more about writing safety critical code. We think that it's great. Like, it's a great thing for us to give to the community and create good will. And then we do make a little bit of money off of it when we build cars for people. And we can do trainings and things like that. So we do that type of model around OSCC, but largely it's not meant to be a revenue generator for us. It's really meant to be an enabler of the community. And we think that everyone will eventually grow up and want to use Polysync, because they love us. Yeah. Good. Okay, the question was, do you have a plan to integrate a flight recorder near the CAN gateway? So that's functionality that we do in Polysync with much more fidelity than that. In terms of a flight recorder for CAN, there's stuff out there that you can log to like SD cards and things like that. So no plans to do that, but that would be a great project. Yeah. Okay. The question was, does the PID for steering or, I assume for other things, need to be tuned for every car? So far for Kia Souls, we haven't had to do any re-tuning of the PID. So those seem to be pretty consistent. Other cars certainly would have to, right? So you'd just have different ranges of sensors and things like that that would require re-tuning. So, yeah, I think that we had that stuff formally hard-coded and we're pulling it out into a configuration file, so we'll be able to do that easier. Yeah. Good. But yeah, okay. Yeah, so all these are great questions, but generally giving me a chance to plug Polysync, which is that we, when you get up to things like sensor layer and decision layer and things like that of the autonomous car, those are things that we enable through Polysync. We don't, but we're not an application company, so we don't build sensor fusion. We don't build audio recognition algorithms. This is meant to be a completely low level. Just give you an interface where if you say go 30 degrees left, the car does it. Yep. Yep. Thank you, though. Good. Where are they operating? Okay, so the question was we have, we've built four cars where they're currently operating. Two of those cars are our own, so they operate in Portland area and in our shop. Not under autonomous control and public roads. We have closed course control areas. And then the other two, one was built for a startup that I can't tell you who it is in a big area, and the other one was built for University of Michigan for the MCD track there. Cool. Yeah, thanks everybody.