WEBVTT

00:00.000 --> 00:16.320
Diorium. You're amazing. Last talk of today in this room. And that's full. Great.

00:16.320 --> 00:25.320
I have been three guys, but check out an old VW Perlo.

00:25.320 --> 00:34.320
That's great. Mark, Loiq, Tibu, and converted that one to an EV.

00:34.320 --> 00:40.320
As I'm myself, EV driver, I'm much impressed what you did.

00:40.320 --> 00:46.320
Well, they haven't seen the slides yet, so maybe it's not that impressive. I don't know.

00:46.320 --> 00:47.320
Have fun. Thanks.

00:47.320 --> 00:54.320
All right. Thanks. Hello, everyone.

00:54.320 --> 01:01.320
So indeed, as mentioned, this is the team. We founded the company a while ago.

01:01.320 --> 01:06.320
We were lucky enough to found a startup that also got acquired a few years back.

01:06.320 --> 01:10.320
And when we left the company that acquired us, we wanted to try something completely different.

01:10.320 --> 01:14.320
We've been working in finance, building open banking aggregators.

01:14.320 --> 01:18.320
And so we really wanted to learn something completely new.

01:18.320 --> 01:28.320
And we took all of 2024 as a sabbatical to just play with cars, like what can three boys actually do, but play with cars.

01:29.320 --> 01:32.320
Why did we actually decide to tackle on that challenge?

01:32.320 --> 01:38.320
Because we saw that the transport industry, automotive, but also when you look at all the types of transportation,

01:38.320 --> 01:41.320
can be not a cool transportation, whatever.

01:41.320 --> 01:45.320
It's kind of siloed and also a bit closed.

01:45.320 --> 01:51.320
It's not like that much open source, big open source projects in the transport industry.

01:52.320 --> 01:59.320
And we also were seeing more and more scary stories about cars being hacked or EV charging stations being hacked.

01:59.320 --> 02:08.320
And all that stuff, and we were like, okay, but what is the actual lifespan of software in cars or any kind of other transportation?

02:08.320 --> 02:10.320
And what does it actually mean?

02:10.320 --> 02:19.320
Because we feel that maybe that just a feeling again, that the security and also the safety of all that software is a bit opaque,

02:19.320 --> 02:22.320
very specific to each manufacturer.

02:22.320 --> 02:27.320
It's not like what we have in the open source where everything is kind of transparent and open.

02:27.320 --> 02:31.320
And there's no real off-the-market software for cars, right?

02:31.320 --> 02:37.320
It's not like you can just buy a used EV and install the Linux of EVs on them.

02:37.320 --> 02:41.320
So what does it actually mean to replace the brains of a car?

02:41.320 --> 02:46.320
What does it actually mean to create that new brains software brains of a car?

02:46.320 --> 02:56.320
That's a little bit how we got into this hacking project, which is going to look a lot more like a hobby project than a real product, but anyway, come back to this.

02:56.320 --> 03:03.320
We also noticed that it's very difficult to make parts from different manufacturers to work together.

03:03.320 --> 03:09.320
It's not like you can take a breaking system from Mercedes, for instance, and put it in a VW.

03:09.320 --> 03:13.320
They don't talk the same language, so how do you tackle that?

03:13.320 --> 03:18.320
Because in the end, you have plenty of components that basically do the same primary function.

03:18.320 --> 03:19.320
It's just breaking, right?

03:19.320 --> 03:23.320
So how hard can it be to make them work together in the same way?

03:23.320 --> 03:28.320
So why do we have to have a completely different languages that these components speak?

03:28.320 --> 03:31.320
How can you make them work together?

03:32.320 --> 03:37.320
So we started thinking about, okay, we're basically talking about a grading vehicles.

03:37.320 --> 03:51.320
Like, it doesn't have to be just converting it or whatever to an EV, but it's also, how do you make sure that your car is upgradable or that you have an aftermarket solution for your car or any other vehicle?

03:51.320 --> 03:58.320
It's much like you have opportunities to install Linux on your old computers or post-market OS on your phone or what not.

03:58.320 --> 04:14.320
So this all sorts of open-source solutions for these types of hardware, but there's no option for the new smart phones and wheels, basically, because the cars are becoming more and more smart phones.

04:15.320 --> 04:22.320
So what we mean by upgrading is changing the engine to something that's more environmental-friendly, could be engine swap.

04:22.320 --> 04:31.320
It doesn't have to be electric, but it can just be something that's polluting less, I would say, or complete EV retrofit like what we did.

04:31.320 --> 04:37.320
But also adding some basic things to existing cars like an infotainment system.

04:37.320 --> 04:46.320
Why do you have to rely on some, again, proprietary infotainment system, why don't you build your own with open-source tools?

04:46.320 --> 04:52.320
Assisted driving, autonomous driving, also something that would be nice to add on cars.

04:52.320 --> 04:56.320
This open-source project is to do this, by the way, especially the autonomous part.

04:56.320 --> 05:01.320
We might have heard of, come out of AI, for instance, or even remote control.

05:01.320 --> 05:06.320
We dig into the topic just a real small disclaimer.

05:06.320 --> 05:09.320
None of this is road certified.

05:09.320 --> 05:11.320
We know it.

05:11.320 --> 05:14.320
It's not our goal today.

05:14.320 --> 05:17.320
So we did this on our own funds.

05:17.320 --> 05:20.320
So it means we use components we could easily find.

05:20.320 --> 05:25.320
Also with the second goal that we wanted everybody to be able to get started as well.

05:25.320 --> 05:32.320
So this is not running on automotive grade hardware and all that crap, because we simply don't have the money for it.

05:32.320 --> 05:38.320
But we could definitely adapt it if the need would be there.

05:38.320 --> 05:47.320
So now that this disclaimer is done, why don't we try to upgrade this to 2007 Polo using only open-source software?

05:47.320 --> 05:49.320
This is the donor car.

05:49.320 --> 05:53.320
It has kind of a history because it was my first car.

05:53.320 --> 05:56.320
So this is the first car that I drove.

05:56.320 --> 05:58.320
And I sold it to Luick.

05:58.320 --> 06:03.320
It was sitting right there. My associate a few years after that.

06:03.320 --> 06:05.320
And at some point you wanted to get rid of it.

06:05.320 --> 06:09.320
And it got really the good timing for us to work on that project.

06:09.320 --> 06:13.320
So we said, why don't we buy it back through the company and actually do something with it?

06:13.320 --> 06:15.320
So we worked on it.

06:15.320 --> 06:18.320
And just this is a pretty heavy slide.

06:18.320 --> 06:20.320
I'm not going to read everything.

06:20.320 --> 06:23.320
You can read so you can read by yourself.

06:23.320 --> 06:28.320
I just want to show you almost everything we've been doing on that car.

06:28.320 --> 06:38.320
Also showcase the mechanical work that unfortunately I won't have time to go to much into details in this presentation.

06:38.320 --> 06:40.320
And also the hardware and software part.

06:40.320 --> 06:42.320
I mean it's only 40 minutes.

06:42.320 --> 06:44.320
I cannot go in the details of everything.

06:44.320 --> 06:46.320
So we're going to fly over a few things.

06:46.320 --> 06:50.320
Explaining how we used opens our software with this.

06:50.320 --> 06:57.320
And in order to avoid you from falling asleep, I'm going to show you already now what it looks like.

06:57.320 --> 07:01.320
And so you can see we just unloaded the car from the trailer.

07:01.320 --> 07:04.320
It was about 10 days ago.

07:04.320 --> 07:07.320
We moved the car from the place we actually worked on.

07:07.320 --> 07:13.320
And we moved it to a storage facility that's closer to the testing track where we actually going to be driving it.

07:13.320 --> 07:16.320
Because again, not to what's certified.

07:16.320 --> 07:20.320
It's like you can just drive around with it in the streets.

07:20.320 --> 07:24.320
So the car is actually as you can see, driveable.

07:24.320 --> 07:29.320
Now the reason there's a very big cable is because there's only part of the battery in it.

07:29.320 --> 07:32.320
And also it was raining a lot that day.

07:32.320 --> 07:37.320
So we didn't want to fry in the car because we removed so much stuff that water leaks in a bit.

07:37.320 --> 07:40.320
But anyway, so the car looks like this.

07:40.320 --> 07:44.320
It's electric, there's a cable, right?

07:44.320 --> 07:47.320
So yeah.

07:47.320 --> 07:52.320
And there's actually a huge ACDC converter that Luis built as well.

07:52.320 --> 08:02.320
That is sitting on the passenger seats that converts basically just standard grid electricity to what we need for the car.

08:02.320 --> 08:07.320
And so we just plugged it on the walk plug and then we started driving it.

08:07.320 --> 08:10.320
So that's how we tested the car to begin with.

08:10.320 --> 08:13.320
So this is what it looks like now.

08:13.320 --> 08:14.320
Pretty cool, right?

08:14.320 --> 08:17.320
And all that thanks to open source projects.

08:17.320 --> 08:25.320
And for some of them probably unusual technologies, things you would not necessarily expect to see in a car.

08:25.320 --> 08:34.320
And that includes a mixer, which is a language working running on the early virtual machine, aka the beam.

08:35.320 --> 08:41.320
It's also using nerves, which also you probably may have heard of or not.

08:41.320 --> 08:50.320
But that is a tool that I'm going to talk a bit more into details afterwards, which allows you to package your firmware for the ECUs that we actually built.

08:50.320 --> 09:00.320
There's going to be some VUGS, some Flutter and some Phoenix, which is a way for us to build APIs and web interfaces for the components we have.

09:00.320 --> 09:06.320
So while you're mixer, it's a dynamic functional language running on the beam, already mentioned that.

09:06.320 --> 09:14.320
The beam was really made to run highly scalable and highly available systems.

09:14.320 --> 09:19.320
It was basically built by Ericsson for telephony purposes.

09:19.320 --> 09:25.320
So it's not like it's just going to fall on you anytime soon.

09:25.320 --> 09:30.320
So it works quite well, it has decent footprint for what we want to do.

09:30.320 --> 09:45.320
And what is really great also about the mixer itself is that it uses pattern matching as a parading, which is really good when you want to parse a series of bytes or bits or whatever.

09:45.320 --> 09:54.320
Or if you want to parse messages, which is exactly what almost 80% of this project is actually for.

09:54.320 --> 10:03.320
So if you see the example on the right, that's the only thing you need to actually parse meaningful information into a series of bytes.

10:03.320 --> 10:09.320
And it really shows you how powerful pattern matching can be in those types of use cases.

10:09.320 --> 10:14.320
Another tool we've been using is called nerfs, so this is also based on Elixir.

10:15.320 --> 10:19.320
And it allows us to create a firmware based on build route.

10:19.320 --> 10:27.320
So it leverages all the power of build route, meaning that if you're not happy with the basic systems that they provide, you can still bid your own customize your own.

10:27.320 --> 10:39.320
And what it does is that it packages your elixir code into something you can directly flash on an SD card and then you can use them on Raspberry Pi or any other boards.

10:39.320 --> 10:45.320
It also supports redundancy of route partition over the air update.

10:45.320 --> 10:51.320
So it really has all this flexibility that we can definitely use in a project like ours.

10:51.320 --> 11:01.320
All right, so now that I've settled the idea of what we've been doing, let's look into more details about what we did.

11:01.320 --> 11:04.320
First thing is understanding the cars language.

11:04.320 --> 11:08.320
Like I said, they speak something together all the components in a car.

11:08.320 --> 11:18.320
And I don't know how knowledgeable you are about, or somebody even all of that, so I'm just going to explain it to everyone, but they're all wires in your car.

11:18.320 --> 11:24.320
And some of them are used for components to communicate together through what we call a canvas.

11:24.320 --> 11:31.320
So it's basically a twisted pair of copper that is running through your car on which all components are connected.

11:31.320 --> 11:42.320
And they will emit messages at a specific frequency, and then we'll also listen to messages that come at a specific frequency and do something with this information.

11:42.320 --> 11:47.320
Right, so that's in a very high level nutshell what's happening.

11:47.320 --> 11:49.320
And it looks like this.

11:49.320 --> 11:59.320
So when you hook up a can sniffer, so it basically something you can plug over USB, and then you connect to the wires physically.

11:59.320 --> 12:03.320
You get that kind of stuff when you run the car.

12:03.320 --> 12:05.320
Or when you do something in the car.

12:05.320 --> 12:08.320
It can be that you pull the handbrake, and then you see something changing.

12:08.320 --> 12:10.320
Or that, you see something changing.

12:10.320 --> 12:18.320
And so you need to start reversing all these messages, because what you see there is you see the idea of the message.

12:18.320 --> 12:25.320
You see the frequency at which they're emitted, and then you see all the bytes that they basically contain.

12:25.320 --> 12:30.320
And you have to figure out which bytes are basically linked to what behavior.

12:30.320 --> 12:33.320
If you light the beam, something will happen.

12:33.320 --> 12:35.320
If you open a door, something will happen.

12:35.320 --> 12:37.320
And you have to figure out, figure this out.

12:37.320 --> 12:48.320
And funny enough, when you start doing that kind of work and that kind of cumbersome, but fun work, you start also realizing that there's very little conventions in the end.

12:48.320 --> 12:56.320
An open door on a VW car would be represented by a byte of, I don't know, FF, for instance.

12:56.320 --> 13:00.320
But it's going to be 43 for another component.

13:00.320 --> 13:05.320
So on and off, we'll have completely different values based on the component you look at.

13:05.320 --> 13:10.320
So standardization is not really what we can see at least from cars of that era.

13:10.320 --> 13:17.320
This is not that great, and the impression we have is that it's still not that great today, but we don't really know.

13:17.320 --> 13:21.320
We will see what we try.

13:21.320 --> 13:32.320
So yeah, doing this, you basically start figuring out what the car is saying, or what a specific component is saying.

13:32.320 --> 13:37.320
And then you have to put these information into some kind of files.

13:37.320 --> 13:46.320
The standard in the industry is DBC files, which you can find some requisitories off, because people have been doing this kind of stuff.

13:46.320 --> 13:55.320
For some time now, I'm just mentioning the open DBC repository from Commodore AI, because it's an interesting repository.

13:55.320 --> 14:03.320
And it gives you an idea of what DBC files look like, kind of a nuggly format to be on us, but that's the industry standard.

14:03.320 --> 14:14.320
And we decided to make our lives easier, and we built our own library to deal with all of that in a lecture in the language that we use for our firmware.

14:14.320 --> 14:30.320
And what we basically did was go for Yamul instead, instead of a cryptic format that DBC is, and what it allows us to do is to specify which frames are being received, which frames are being emitted, which frequency, which IDs and all of that.

14:30.320 --> 14:34.320
And then we can write a mixer code to deal with these messages.

14:34.320 --> 14:42.320
And so that's a complete library that we built specifically for this project, and that you can find on GitHub as of today.

14:42.320 --> 14:45.320
Let's look at what the whole system looks like now.

14:45.320 --> 14:54.320
And on top of it, you see all the components that are from the Nissan Leaf, so we have the actual motor, the inverted charter.

14:54.320 --> 15:03.320
On the left, you have kind of standalone components that we are using connected to a completely different can network.

15:03.320 --> 15:09.320
So you have the battery management system, steering pump and the brake booster.

15:09.320 --> 15:15.320
And on the far right in green, you have all the existing components from the Polo.

15:15.320 --> 15:29.320
So this is the ABS, the dashboard itself, the cluster, the ignition lock, the doors, all of that is actually being connected through specific networks that we created within the car.

15:29.320 --> 15:33.320
And then in the middle, it's everything we built ourselves.

15:33.320 --> 15:46.320
As you can see, so we were in the business of building banking aggregators, now we basically built a canvas aggregator, because you have the vehicle management system on top, which connects all of the different networks together.

15:46.320 --> 15:53.320
And deal with the translation between all of these components and canvases.

15:53.320 --> 16:02.320
And that's really what allows us to have this new brains for the car, and allows us also to use components from different brands inside the same vehicle.

16:02.320 --> 16:16.320
So the vehicle management system is a central piece of the platform that we built, then we have controllers that are running the same code, they didn't use to, but now they are, then the infotainment and all that.

16:16.320 --> 16:20.320
The first step we had to do was to get the leaf motor to spin.

16:20.320 --> 16:23.320
So when you open it up, that looks like that.

16:23.320 --> 16:29.320
So it's not really your usual PC, whatever, it's a bit more difficult to understand.

16:30.320 --> 16:36.320
But we needed to find the correct canvas messages we needed to send in order to make it spin.

16:36.320 --> 16:45.320
So you get the motor, it's pretty heavy, you get it from the delivery man or woman, I don't remember who delivered it.

16:45.320 --> 16:48.320
It's quite heavy, but you don't know if it works.

16:48.320 --> 16:51.320
Until you make it spin, basically.

16:51.320 --> 16:58.320
So fortunately for us, there were a lot of reverse engineering of these motors available online.

16:58.320 --> 17:03.320
And we managed to find the right-hand messages to send in order for it to spin.

17:03.320 --> 17:09.320
And then the next step was to use the gas pedal of the car.

17:09.320 --> 17:14.320
So we could have bought a completely new gas pedal, whatever, but we thought, hey, we already have a gas pedal.

17:14.320 --> 17:21.320
And it's basically just a potential meter, so we can just put an Arduino connected to an Arduino, read the values,

17:21.320 --> 17:24.320
and that will basically be the throttle that we expect.

17:24.320 --> 17:31.320
We expect 100% throttle when, you know, pedal to the metal and 0% throttle when it's completely released.

17:31.320 --> 17:36.320
And so that's basically what we did in first instance, the first iteration of it.

17:36.320 --> 17:42.320
We wired it on a plank and put the wires on an Arduino, we started looking at the values,

17:42.320 --> 17:49.320
and then we created the can messages that were going to be sent to the vehicle measurement system.

17:49.320 --> 17:51.320
And that's how we got started.

17:51.320 --> 17:56.320
You can also see that we have, yeah, I'm not going to try to use the point on this,

17:56.320 --> 18:01.320
but we also have something extra, a debt stage of the project,

18:01.320 --> 18:05.320
which is the gear selector, also on that controller, PR and D.

18:05.320 --> 18:09.320
Because at some point we need to decide in which direction the motor is going to spin.

18:09.320 --> 18:14.320
So we initially added it to that controller.

18:14.320 --> 18:21.320
We also had to build specific controllers for the relays, you know, the contactors,

18:21.320 --> 18:26.320
because for such a motor to actually spin and receive current,

18:26.320 --> 18:29.320
you need to activate relays in a certain order.

18:29.320 --> 18:34.320
So you need to activate some phases in certain orders in order for it to actually spin.

18:34.320 --> 18:40.320
And in order to control that order and to make sure we were not going to fry,

18:40.320 --> 18:43.320
we build those controllers to do this for us.

18:43.320 --> 18:47.320
And in the beginning we used the standard really hat from Arduino,

18:47.320 --> 18:50.320
but somehow they were conflicting.

18:50.320 --> 18:57.320
And then at some point we had the first epiphany, which was the engine spinning

18:57.320 --> 19:00.320
when we were pressing the gas pedal.

19:00.320 --> 19:06.320
And we call it the playing prototype, because everything was literally screwed on a wooden plank.

19:06.320 --> 19:14.320
And yeah, that was the very first time that we got to celebrate because we had something that was actually working.

19:14.320 --> 19:20.320
I should probably mention that none of this would be also possible for us without 3D printing.

19:20.320 --> 19:23.320
So there's been a lot of 3D printing involved in this project.

19:23.320 --> 19:27.320
You'll see it when we move to the more professional prototype.

19:28.320 --> 19:34.320
There's been countless hours also spent on making plans and printing and all of that.

19:34.320 --> 19:40.320
So yeah, kudos to these great printers that we've been using for this project.

19:40.320 --> 19:46.320
So we had to go with something a bit more professional and integrate on the playing prototype.

19:46.320 --> 19:49.320
And that's the version we have right now.

19:49.320 --> 19:56.320
All 3D printed cases, completely new plugs that we had to wire ourselves.

19:56.320 --> 20:03.320
You basically have the VMS on the left, which is Raspberry Pi 4, several canvas hats.

20:03.320 --> 20:08.320
You have also the January controller in the middle.

20:08.320 --> 20:13.320
And somehow that we built because we needed at some point to have multiple ways to connect devices.

20:13.320 --> 20:21.320
And we wanted it to be possible for us to connect new devices really easily to the whole platform.

20:21.320 --> 20:23.320
So we built those small can have.

20:24.320 --> 20:28.320
So the VMS is structured like this, we have build group running on top of that.

20:28.320 --> 20:30.320
We have nerves running year like VM.

20:30.320 --> 20:34.320
Then we have our back end core and API in a mixer in Phoenix.

20:34.320 --> 20:38.320
And on top of that, we also have a dynamic web front end in VUGS.

20:38.320 --> 20:41.320
Why am I mentioning that this is dynamic?

20:41.320 --> 20:50.320
Because the way we created our open vehicle control system is through what we call composers.

20:50.320 --> 20:56.320
And you can basically compose a vehicle from any available component you have in your repository.

20:56.320 --> 21:02.320
So in this case, for instance, we can see that on the left.

21:02.320 --> 21:05.320
This is the composition of the vehicle we have today.

21:05.320 --> 21:08.320
And you can see you have the Polo dashboard.

21:08.320 --> 21:12.320
It has a contact source because they need to know when we flip the key.

21:12.320 --> 21:16.320
The contact source is actually going to be the ignition lock of the Polo.

21:16.320 --> 21:21.320
And then the rotation per minute source, which is a parameter of that specific component,

21:21.320 --> 21:24.320
is provided by something that has nothing to do with the Polo.

21:24.320 --> 21:28.320
It's a leaf inverter that we get the messages from.

21:28.320 --> 21:35.320
So you can really mix and match all types of components in the same vehicle by doing this.

21:35.320 --> 21:38.320
And you just, of course, is still so more to do.

21:38.320 --> 21:44.320
But just have to work the code to write the code that fits to that specific component somewhere in the repository.

21:44.320 --> 21:48.320
And we will go and fetch it.

21:48.320 --> 21:51.320
For instance, in the inverter, the inverter also needs something specific.

21:51.320 --> 21:54.320
It needs the ignition lock, the front controller is a Noviceous component.

21:54.320 --> 21:57.320
So this is from the Noviceous one, of course.

21:57.320 --> 22:01.320
So it allows you really to compose a vehicle anywhere you want.

22:01.320 --> 22:05.320
And we wanted to push it further because we also wanted the dashboard itself,

22:05.320 --> 22:09.320
what we show the interface that we show to also be composable.

22:09.320 --> 22:12.320
So you can have blocks on the page.

22:12.320 --> 22:15.320
And you can show graphs, you can show tables of data.

22:15.320 --> 22:19.320
And you can go get it from any components that is running on your car.

22:19.320 --> 22:22.320
And that basically looks like this.

22:22.320 --> 22:25.320
So.

22:25.320 --> 22:28.320
Hang on, let me go back one.

22:28.320 --> 22:29.320
Okay.

22:29.320 --> 22:34.320
So this this composer dashboard composer interface that I showed you actually

22:34.320 --> 22:40.320
allows you to see all of that data without writing a single line of code.

22:40.320 --> 22:44.320
And you can just hook up to that Raspberry Pi with your laptop or whatever.

22:44.320 --> 22:48.320
The car is actually connected on the internet where we worked.

22:48.320 --> 22:51.320
And then we could just diagnose the car like this.

22:51.320 --> 22:54.320
It was kind of easy to do.

22:54.320 --> 22:55.320
Generic controller.

22:55.320 --> 23:01.320
So in the beginning, as I mentioned, we had specific code running on each of the controllers.

23:01.320 --> 23:05.320
So those controllers are used to gather data from the gas pedal,

23:05.320 --> 23:08.320
for instance, irractivate relays.

23:08.320 --> 23:11.320
But each time we wanted to change something on those controllers,

23:11.320 --> 23:15.320
we had to find the way to update the firmware on them.

23:15.320 --> 23:22.320
So we decided to opt for a different strategy where it's actually the VMS that's going to adopt controllers

23:22.320 --> 23:27.320
and give them the configuration that they are expected to have.

23:27.320 --> 23:32.320
And so all of that happens in a specific adoption process that we created,

23:32.320 --> 23:38.320
allows us to have exactly the same code on every controller to adopt them once.

23:38.320 --> 23:42.320
And then they have the exact purpose that we want them to have.

23:42.320 --> 23:45.320
Now, since this is a pretty old car,

23:45.320 --> 23:49.320
it's not like you have a pretty cool infotainment system on it.

23:49.320 --> 23:55.320
So we thought it would be nice to actually build our own from scratch using nerves as well.

23:55.320 --> 24:02.320
And also we needed a way to select the actual gear, so PR and D in our case,

24:02.320 --> 24:06.320
because we didn't really want to have extra buttons in the car to do that.

24:06.320 --> 24:12.320
And yeah, that was really the idea for the infotainment system at first.

24:12.320 --> 24:17.320
And for this one, we actually went for Flutter to build the interface.

24:17.320 --> 24:24.320
And this is also where we will show later on information about different system statuses in the car.

24:25.320 --> 24:30.320
In the beginning, we had a complete VUGS front end running in a browser.

24:30.320 --> 24:36.320
So it was basically starting in Kiosk mode with cog and webkit,

24:36.320 --> 24:38.320
and it was showing a web page.

24:38.320 --> 24:44.320
And we had poor performance on real time graphs, so we decided to try something else.

24:44.320 --> 24:49.320
And so we went for a specific fork of Flutter by that worked some build route,

24:49.320 --> 24:52.320
which happened to work pretty well.

24:52.320 --> 24:54.320
And we haven't looked back since.

24:54.320 --> 24:57.320
Now Flutter might not be the perfect technology for this,

24:57.320 --> 25:01.320
but at least for what we've been doing on this case is pretty neat.

25:01.320 --> 25:04.320
What does it look like in the car?

25:04.320 --> 25:09.320
It looks like this a bit messy, but on the bottom left you have the VMS,

25:09.320 --> 25:15.320
you have relay boxes, you have the back controller in the middle,

25:15.320 --> 25:21.320
and you can already see the RC car that we've put there in the trunk.

25:21.320 --> 25:24.320
Because when we were testing the RC driving,

25:24.320 --> 25:28.320
the only component we had available was on the car,

25:28.320 --> 25:32.320
so we hooked up directly on the small car.

25:32.320 --> 25:36.320
So the small car was controlling the bigger car, which was kind of fun,

25:36.320 --> 25:37.320
but anyway.

25:37.320 --> 25:40.320
I'll show you a video of this afterwards.

25:40.320 --> 25:43.320
All right, small adaptations we had to do to the car,

25:43.320 --> 25:45.320
really quickly on this one.

25:45.320 --> 25:48.320
I don't know how much you want to know about mechanical stuff,

25:48.320 --> 25:54.320
but in a car of that age, the braking assistance is actually provided by the thermal engine.

25:54.320 --> 25:57.320
In the sense that there's depression that's being caused,

25:57.320 --> 26:00.320
and that depression provides you braking assistance.

26:00.320 --> 26:02.320
But guess what, we don't have a thermal engine anymore,

26:02.320 --> 26:05.320
so you have to find another way to provide braking assistance.

26:05.320 --> 26:08.320
And so it happens that Tesla is a pretty cool component,

26:08.320 --> 26:10.320
which they call the I booster,

26:10.320 --> 26:13.320
just provided 12 volts and it provides you braking assistance.

26:13.320 --> 26:16.320
So just write that and that's it.

26:16.320 --> 26:17.320
Hydroling pump.

26:17.320 --> 26:22.320
Remember that small box on the left in the small architecture diagram I showed you?

26:22.320 --> 26:27.320
This is the Hydroling pump for the steering wheel of the polo.

26:27.320 --> 26:35.320
And it so happens that this kind of device only starts when the engine is running.

26:35.320 --> 26:40.320
Meaning when the diesel engine is at idle RPM level.

26:40.320 --> 26:46.320
But right now we have a motor, an electric motor that has zero RPM when it's powered on.

26:46.320 --> 26:51.320
So we need to find a way to force it to actually start.

26:51.320 --> 26:55.320
And so we have to control it completely independently from what it used to be.

26:55.320 --> 27:01.320
So we had to reverse engineer the canmessages and send the canmessages at the right moment.

27:01.320 --> 27:04.320
Anyway, another thing is building the batteries.

27:04.320 --> 27:07.320
Yes, we didn't buy existing batteries.

27:07.320 --> 27:11.320
We took a use cells and wired it all together.

27:11.320 --> 27:13.320
A pretty dangerous work.

27:13.320 --> 27:18.320
Don't necessarily do this at work, but it took us a lot of time to make this right.

27:18.320 --> 27:23.320
A lot of 3D printed pieces like I said, this plenty of stuff there.

27:23.320 --> 27:26.320
So we have an electric car.

27:26.320 --> 27:30.320
Why don't we transform it into an RC?

27:30.320 --> 27:33.320
We already know we can accelerate, right?

27:33.320 --> 27:36.320
We can send canmessages to make the motor spin.

27:36.320 --> 27:38.320
That we know.

27:38.320 --> 27:39.320
How do we break?

27:39.320 --> 27:40.320
How do we steer?

27:40.320 --> 27:42.320
That's still a question for us.

27:42.320 --> 27:45.320
Breaking actually turned out to be easier than we thought.

27:45.320 --> 27:50.320
Because the Tesla I booster is basically what you have when you have auto pilot.

27:50.320 --> 27:59.320
So it also has canmessages that can control the rate of the fluid that goes through the pump.

27:59.320 --> 28:02.320
And so you can actually control that with canmessages.

28:02.320 --> 28:06.320
And we managed to reverse that as well and figure out what to send in order to do that.

28:06.320 --> 28:11.320
And at some point the breaking pedal started moving based on canmessages.

28:11.320 --> 28:17.320
So that was a second win for us and we were quite happy to see it move.

28:17.320 --> 28:19.320
So breaking that's done.

28:19.320 --> 28:22.320
The next step was to figure out how to steer.

28:23.320 --> 28:29.320
At first we tried to reverse engineer an existing steering column from a more recent polo.

28:29.320 --> 28:31.320
But we kind of failed doing that.

28:31.320 --> 28:33.320
So we decided to just trip away.

28:33.320 --> 28:39.320
It's ICU and serve a motor and just, you know, just put one of ours on it.

28:39.320 --> 28:48.320
So it means that the steering column is now controlled by an Arduino with a controller like a generic controller, like I explained before.

28:48.320 --> 28:53.320
And this allowed us full flexibility over how to actually control it.

28:53.320 --> 28:58.320
So we don't depend on the manufacturer's ICU anymore for this component.

28:58.320 --> 29:03.320
So it's kind of different from the approach we took for the break booster or from the motor.

29:03.320 --> 29:08.320
But at some point we needed to find a way to move forward with the project.

29:08.320 --> 29:15.320
And clearly at that point, reverse engineering the steering column was not working in order advantage.

29:15.320 --> 29:20.320
But the card that you saw driving before in the beginning of the talk has this.

29:20.320 --> 29:24.320
So if you have the remote control, flip a switch and then you can control it.

29:24.320 --> 29:29.320
Unfortunately we didn't have a Dolorion at hand for those that remember back to the future.

29:29.320 --> 29:33.320
I would have been way cooler to do this with a Dolorion.

29:33.320 --> 29:34.320
But yeah.

29:34.320 --> 29:43.320
Because it's pretty much the same experience that Doc is actually having when he drives it in the 2.0 mic.

29:44.320 --> 29:45.320
What now?

29:45.320 --> 29:46.320
Okay.

29:46.320 --> 29:47.320
So we're at this stage.

29:47.320 --> 29:48.320
The car is there.

29:48.320 --> 29:49.320
It's stored.

29:49.320 --> 29:53.320
We're going to test it somewhere in the next few months of the facility.

29:53.320 --> 29:55.320
We need to reserve the place and all that.

29:55.320 --> 29:57.320
Because we can't drive it in an open road.

29:57.320 --> 30:02.320
So we will drive it in a parking lot that's dedicated to testing vehicles.

30:02.320 --> 30:07.320
And also there's a track next to it that we can use as well at some point.

30:07.320 --> 30:08.320
What are we doing now?

30:08.320 --> 30:10.320
What are we still working on?

30:10.320 --> 30:19.320
The OVCS mini turns out that doing remote control stuff and autonomous driving on a wanted car is not necessarily super safe.

30:19.320 --> 30:24.320
So you probably have to test things on a smaller vehicle that will not kill you.

30:24.320 --> 30:33.320
And so everything you saw all of the stack, the hardware and software stack has been put into an RC car that's much, much smaller.

30:33.320 --> 30:36.320
But it's actually the same stack.

30:36.320 --> 30:41.320
And it's just that the composer for the vehicle is slightly different because there are some components that don't exist.

30:41.320 --> 30:43.320
There's no inverter and all that.

30:43.320 --> 30:46.320
But the platform allows you that flexibility.

30:46.320 --> 30:49.320
It also uses can bus to work.

30:49.320 --> 30:56.320
We are also working on a Ross 2 bridge for the car so that you can tell it or you can hook it up to any.

30:56.320 --> 30:59.320
Any stack that exists for for Ross 2.

30:59.320 --> 31:03.320
The cool thing about this bridge is that it's not going to run Ubuntu.

31:03.320 --> 31:10.320
There's an actual a lixir client for Ross 2, which runs on build route.

31:10.320 --> 31:12.320
So it's much simpler.

31:12.320 --> 31:14.320
We have something that's super efficient.

31:14.320 --> 31:18.320
And also working on a on a perception stack at the moment.

31:18.320 --> 31:21.320
We have a few things running right now.

31:21.320 --> 31:26.320
But again, all of these things at some point need to be put together and make sense.

31:26.320 --> 31:28.320
So right now we have.

31:28.320 --> 31:30.320
We detect objects.

31:30.320 --> 31:34.320
We send the objects to the bounding boxes in the classes to Ross 2 topic somewhere.

31:34.320 --> 31:40.320
So all of this is in progress and will at some point be put together into the same bridge.

31:40.320 --> 31:44.320
There's already rudimentary lane detection as well.

31:44.320 --> 31:46.320
That's it's not shown here.

31:46.320 --> 31:52.320
Another component because why not is an OVCS remote because instead of using a

31:53.320 --> 31:56.320
RF or a transmitter or a muffling remote.

31:56.320 --> 31:58.320
We would be nice to have a multi protocol.

31:58.320 --> 32:02.320
Something we can put data back into onto a screen.

32:02.320 --> 32:06.320
And it's also just cool to figure out how these things works as well.

32:06.320 --> 32:09.320
So again, all of this built with open source software.

32:09.320 --> 32:10.320
I didn't show much code.

32:10.320 --> 32:13.320
Sorry about that for those who wanted to see it.

32:13.320 --> 32:16.320
But everything is all the code is open source.

32:16.320 --> 32:19.320
For those asking, yeah, but what about the hardware?

32:19.320 --> 32:20.320
There will be as well.

32:20.320 --> 32:22.320
But you know that's documenting hardware is more.

32:22.320 --> 32:25.320
Takes more time than documenting software.

32:25.320 --> 32:28.320
Even if software is not well-documented at that moment.

32:28.320 --> 32:34.320
But we will definitely release all of this very soon in the next few months.

32:34.320 --> 32:37.320
So that everybody can see what we did, how we did it.

32:37.320 --> 32:42.320
And have an idea of how fun it is and what fun they can have.

32:42.320 --> 32:46.320
And again, small reminder, none of this is road certified.

32:46.320 --> 32:53.320
It might be one day, but you need to look at this as a massive hobby project that we've been working on.

32:53.320 --> 32:57.320
So if you want to find out more about this project than follow the progress.

32:57.320 --> 33:02.320
You can look it up on GitHub right now or just drop us an email.

33:02.320 --> 33:09.320
So thanks for attending this talk even though this part has been recorded afterwards.

33:09.320 --> 33:12.320
And thanks for your attention.

33:16.320 --> 33:45.320
And so on the RC car, somehow the picks started going crazy and it was basically spinning the motor out.

33:45.320 --> 33:51.320
So the RC car just went completely to the wall.

33:51.320 --> 33:55.320
If that would have happened on the big car, we would have been in trouble.

33:55.320 --> 34:00.320
So that's exactly why we won that small scale car.

34:00.320 --> 34:02.320
There's a question over there.

34:02.320 --> 34:05.320
I think you really want to ask it.

34:05.320 --> 34:08.320
Oh yeah, there's questions everywhere.

34:08.320 --> 34:09.320
Sorry.

34:09.320 --> 34:10.320
Okay.

34:10.320 --> 34:11.320
Two microphones.

34:11.320 --> 34:13.320
I only want speaker.

34:13.320 --> 34:17.320
I struggle to find time to play with an ESP32.

34:17.320 --> 34:20.320
Can you tell something about the human resource part?

34:20.320 --> 34:28.320
How much time of your life you put into this thing and how much budget you actually put into this project?

34:28.320 --> 34:31.320
So we didn't work full time last year.

34:31.320 --> 34:35.320
Again, we were supposed to also take a rest and all that.

34:35.320 --> 34:42.320
But we did work about three to four days a week for the whole year, three people.

34:42.320 --> 34:46.320
So I wouldn't say it were long days, by the way.

34:46.320 --> 34:49.320
It was not like a 9 to 19 or something like that.

34:49.320 --> 34:53.320
But you know, much order and sometimes with a beer.

34:53.320 --> 34:59.320
So yeah, I would say maybe one, one and a half full time over a year would be pretty.

34:59.320 --> 35:03.320
Well, one and a half full time over a year would be a pretty fair statement.

35:03.320 --> 35:09.320
In terms of money invested, there's about 20, 25k that we put in the car.

35:09.320 --> 35:13.320
Nobody would be crazy enough to put that kind of money on a 07 car.

35:13.320 --> 35:17.320
But that's pretty much where we are right now.

35:17.320 --> 35:24.320
Everything self-funded and that's why we also are going to take some contracting work this year.

35:24.320 --> 35:27.320
Because at some point we need to eat and pay rent.

35:27.320 --> 35:29.320
But yeah, all right.

35:29.320 --> 35:35.320
I have a question regarding something like this that was showed.

35:35.320 --> 35:39.320
Let's say that there is an out-to-performed.

35:39.320 --> 35:47.320
So how do you make sure that this kind of out-to-doesn't trigger something that would be reverse engineering

35:47.320 --> 35:51.320
for even something different, right?

35:51.320 --> 35:58.320
I mean, I think it opens a dialogue here because some stuff like those parts and everything

35:58.320 --> 36:02.320
needs to be connected out-to-check for whatever reason.

36:02.320 --> 36:07.320
And how to make sure that the process that's involved in there,

36:07.320 --> 36:10.320
I mean, we don't deserve existing things.

36:10.320 --> 36:14.320
That's the one to bring or trigger some kind of weird,

36:14.320 --> 36:19.320
another issue or maybe, you know, reverse engineering even,

36:19.320 --> 36:22.320
and fucking sell out to Diedon China.

36:22.320 --> 36:24.320
Yeah, you don't.

36:24.320 --> 36:26.320
It can happen.

36:27.320 --> 36:32.320
Fortunately, it's not like we have the only issue we have stripped from a component

36:32.320 --> 36:34.320
is on the steering column we used.

36:34.320 --> 36:39.320
The system was bound to both the vehicle management system and the Nissan leaf can,

36:39.320 --> 36:42.320
is that the problem with the diagram is on its own can.

36:42.320 --> 36:44.320
It's on its own can network.

36:44.320 --> 36:48.320
Yeah, sorry, the arrow is a bit weird, but it is completely separate.

36:48.320 --> 36:50.320
It's not linked to any other.

36:50.320 --> 36:55.320
And the reason we have all these can networks is because manufacturers may have chosen the same

36:55.320 --> 36:58.320
ID for messages, but to do different things.

36:58.320 --> 37:01.320
So you don't want them to clash together on the same network.

37:01.320 --> 37:04.320
So you have to keep them separate.

37:04.320 --> 37:06.320
All right.

37:10.320 --> 37:12.320
Yeah, okay, cool.

37:12.320 --> 37:15.320
I was wondering, you mentioned, like, safety is the first priority.

37:15.320 --> 37:17.320
And you're going to do, you know, testing.

37:17.320 --> 37:21.320
What fill save do you have in place, like, for when you do this test,

37:21.320 --> 37:27.320
that if something goes wrong, you have a means of stopping the car or, you know.

37:27.320 --> 37:36.320
So you don't see it that much on the last picture, but anyway, it, it crashed.

37:36.320 --> 37:41.320
Anyway, there is a big red switch inside the car.

37:41.320 --> 37:48.320
If you trigger it, so if you just trigger it, it shuts down all of our platform.

37:48.320 --> 37:52.320
And you're left with two things, two mechanical things that are still existing.

37:52.320 --> 37:56.320
You're left with the steering wheel, that still works.

37:56.320 --> 37:58.320
And the brakes, that still works.

37:58.320 --> 38:03.320
You don't have any throttle anymore, and you don't have any component of hours that still runs.

38:03.320 --> 38:05.320
It just shuts down everything.

38:05.320 --> 38:07.320
And cuts, of course, the high voltage.

38:07.320 --> 38:10.320
So it really cuts everything that can go wrong.

38:10.320 --> 38:14.320
And you just have to find the way to steer the car and break.

38:15.320 --> 38:18.320
That's just safe as we can be while testing.

38:18.320 --> 38:27.320
And also, you don't notice it, but there's a small thing you can pull at the side of the car.

38:27.320 --> 38:29.320
Sorry?

38:31.320 --> 38:36.320
Meaning that when we, when we will test it for autonomous driving at very low speed,

38:36.320 --> 38:41.320
we will be next to it, and if anything goes wrong, we just pull it off.

38:41.320 --> 38:47.320
But it's likely we're going to have somebody in the car in the first steps for these ones.

38:47.320 --> 38:52.320
I know that's a pie because it's a shape, and you can easily do that.

38:52.320 --> 38:59.320
But what if it's really hot or cold, and you know, by will not act and run in the same way,

38:59.320 --> 39:07.320
when it's X now, when you go up and down and for the car, you need something that can stand like a plus for 40 or in, you know,

39:07.320 --> 39:09.320
or minus something.

39:09.320 --> 39:17.320
So did you think about to use some other board that's also free there to, and that can stand that?

39:17.320 --> 39:19.320
Well, yeah.

39:19.320 --> 39:24.320
We looked into other alternatives, but it felt like the easiest to find was Raspberry Pi's an Arduino.

39:24.320 --> 39:28.320
So we went for this, the cheapest as well for what we were doing.

39:28.320 --> 39:31.320
But yeah, there are other boards that are probably better.

39:31.320 --> 39:34.320
We just haven't done a complete analysis of it.

39:34.320 --> 39:37.320
So yeah, it might break if it's too hot or too cold.

39:37.320 --> 39:38.320
Yeah.

39:38.320 --> 39:41.320
We won't drive it at minus 40.

39:46.320 --> 39:47.320
Hello.

39:47.320 --> 39:49.320
Thanks for the presentation.

39:49.320 --> 39:51.320
I got a question about it.

39:51.320 --> 39:57.320
Again, it's something that's literally a lab on wheels, a more than something that's meant to be driveable,

39:57.320 --> 40:02.320
but a different platform, different car, would have made a different, of course.

40:02.320 --> 40:07.320
But with the car that we had, which is a city size car, this is how we built it.

40:07.320 --> 40:10.320
We could also have put the batteries somewhere else, whatever.

40:10.320 --> 40:14.320
But anyway, there's always, you know, something you could have done differently.

40:14.320 --> 40:19.320
But yeah, a lot of this, Louis also welded all the welding job.

40:19.320 --> 40:27.320
We had to weld for the batteries to be slid into something that is closed, I would say.

40:27.320 --> 40:33.320
We have aluminum boxes that were welded so that we can put the battery back.

40:33.320 --> 40:37.320
It's there are other people who can't cause it a similar.

40:37.320 --> 40:42.320
Well, yeah, first we need to test it, see how fast it drives.

40:42.320 --> 40:47.320
And then, well, first we need to make sure it's safe and then see how fast it drives.

40:47.320 --> 40:52.320
So yeah, that's definitely one way this could go.

40:53.320 --> 40:58.320
We will see, honestly, it depends on what the testing says.

40:58.320 --> 41:01.320
Okay.

41:01.320 --> 41:08.320
Hey, working with Alex here, you often hear letters crash for a handling.

41:08.320 --> 41:10.320
Does it work with Sierra?

41:10.320 --> 41:17.320
No, we don't want the car to crash, so it doesn't give a different meaning to the saying.

41:17.320 --> 41:19.320
No, of course.

41:22.320 --> 41:25.320
Hi, so one more harder aside.

41:25.320 --> 41:27.320
Yes, a harder aside.

41:27.320 --> 41:33.320
Have you, like, you said that maybe someday when road legal have you given it any, like, research,

41:33.320 --> 41:39.320
how much would it take to actually make just a software, you know, road legal.

41:39.320 --> 41:41.320
So we haven't.

41:41.320 --> 41:44.320
Hey, thanks for your presentation.

41:44.320 --> 41:48.320
And I have a bit of a matter of question, which is, you mentioned that,

41:48.320 --> 41:50.320
we could have tried this, we could have tried that.

41:50.320 --> 41:54.320
And that really interests me because this is a very open end and project.

41:54.320 --> 41:59.320
And since you're doing it, like, kind of on your own, on your own schedules, you could have gone in any direction.

41:59.320 --> 42:00.320
Yeah.

42:00.320 --> 42:04.320
So how, but yet you still got a lot done in a very short amount of time.

42:04.320 --> 42:08.320
So how did you kind of keep your eyes on the ball and not get focused on, like,

42:08.320 --> 42:12.320
let's do something else completely different and abandon this project?

42:12.320 --> 42:16.320
I think we were always focused on the goal of making the wheel spin.

42:16.320 --> 42:19.320
So there's a few milestones that we wanted to reach.

42:19.320 --> 42:22.320
First was make the wheel spin.

42:22.320 --> 42:26.320
And so the first step to make the wheel spin was make the motor spin with the pedal.

42:26.320 --> 42:27.320
So something like that.

42:27.320 --> 42:32.320
So at some, we got lost also in many directions all the time.

42:32.320 --> 42:36.320
But we always came back to, okay, what's the next goal?

42:36.320 --> 42:40.320
So when we felt we were going a stray, each in or on direction,

42:40.320 --> 42:43.320
we would sit back and say, okay, but what's the next goal?

42:43.320 --> 42:47.320
And said, okay, we want to, we want to show this at this conference.

42:47.320 --> 42:48.320
We want to show that at this cup.

42:48.320 --> 42:53.320
So also, again, conferences like this or talks are a good way to, you know,

42:53.320 --> 42:58.320
kick you in the right direction, because you want to show something at that specific moment.

42:58.320 --> 43:01.320
Sometimes you make it, sometimes you don't, but at least it gives you a goal.

43:01.320 --> 43:06.320
So you can go astray, but then if you come back to something tangible,

43:06.320 --> 43:12.320
and you have a reason to then it's easier and easier.

43:12.320 --> 43:15.320
Okay, thanks for the presentation.

43:15.320 --> 43:20.320
I was wondering how long it takes until the system reacts to import,

43:20.320 --> 43:24.320
as you're booting Linux and then the virtual machine.

43:24.320 --> 43:26.320
So.

43:26.320 --> 43:30.320
Well, we haven't noticed any significant latency, honestly.

43:30.320 --> 43:34.320
So, but we haven't driven it at 120 kilometers on the highway.

43:34.320 --> 43:40.320
So we don't know yet.

43:40.320 --> 43:47.320
But what we can see is that the frames are being emitted or received at a pretty decent frequency.

43:47.320 --> 43:50.320
So it's not like the footprint is making it completely insane.

43:50.320 --> 43:56.320
So it's not like messages we're expecting every 100 milliseconds or suddenly coming every 200 or 300.

43:56.320 --> 44:01.320
So.

44:01.320 --> 44:04.320
At the boot time, okay.

44:04.320 --> 44:08.320
The boot time that we have with this, so the the infotainment you saw,

44:08.320 --> 44:12.320
we're about six or seven seconds to boot the screen.

44:12.320 --> 44:14.320
The VMS is like is running on the right.

44:14.320 --> 44:17.320
So it's running on the Raspberry Pi 5, the infotainment system.

44:17.320 --> 44:19.320
So it's a bit faster.

44:19.320 --> 44:21.320
And then the VMS is pretty much the same.

44:21.320 --> 44:25.320
I would say 10 seconds to boot everything up.

44:25.320 --> 44:30.320
But the idea is that it would be always on just like on a on a on a on a

44:30.320 --> 44:33.320
V, you know, most of the system they stay always on.

44:33.320 --> 44:36.320
And when you get into the car, then it lights up.

44:36.320 --> 44:40.320
But there's a lot of things that stay up in the car.

44:40.320 --> 44:42.320
And that would be the idea.

44:42.320 --> 44:45.320
Since we have this huge massive battery, we can just, you know,

44:45.320 --> 44:49.320
take a bit of juice out of it to keep our platform always on.

44:49.320 --> 44:54.320
And what turns it off is actually the big red switch itself.

44:54.320 --> 44:58.320
And if you keep it always on, then you don't need to care about boot time.

44:58.320 --> 45:00.320
It's only when you switch it on again.

45:00.320 --> 45:02.320
That's that you have that problem.

45:02.320 --> 45:06.320
But we want to stay below the 10 second boot time for everything.

45:06.320 --> 45:08.320
That's what we aim for.

45:08.320 --> 45:12.320
And for now we've managed to do it.

45:12.320 --> 45:14.320
Hi.

45:14.320 --> 45:15.320
Okay.

45:15.320 --> 45:18.320
What did you do with the entire instrument cluster stack?

45:18.320 --> 45:22.320
As I noticed, it wasn't, it didn't seem to be there anyway.

45:22.320 --> 45:23.320
Oh, yes.

45:23.320 --> 45:24.320
It's still there.

45:24.320 --> 45:27.320
And you can watch the both talk from yesterday.

45:27.320 --> 45:32.320
Because we also wanted to make it as seamless as possible.

45:32.320 --> 45:35.320
The changes that we made to the car.

45:35.320 --> 45:38.320
So that it's actually the RPM needle.

45:38.320 --> 45:41.320
Shows the RPMs of the leaf engine.

45:41.320 --> 45:43.320
So we basically went there.

45:43.320 --> 45:48.320
And the next step when we have everything right with the battery is also to use the fuel gauge

45:48.320 --> 45:53.320
to show the percentage of battery left on the existing fuel tank gauge.

45:53.320 --> 45:57.320
We've already figured out how to use a digital potential meter to do that.

45:57.320 --> 45:58.320
A lot of curiosity.

45:58.320 --> 46:01.320
That's the RPM range bits.

46:01.320 --> 46:05.320
Because it's a little a lot about the electric engine now.

46:05.320 --> 46:10.320
But in most retrofit work, you will see people changing it.

46:10.320 --> 46:14.320
Basically, which we find a bit stupid because it's already there.

46:14.320 --> 46:16.320
And it's kind of interesting.

46:16.320 --> 46:18.320
If you go to that level of integration.

46:18.320 --> 46:19.320
So it's really digging.

46:19.320 --> 46:22.320
You don't have a separate button to start the electric motor.

46:22.320 --> 46:25.320
It's really the polo ignition log.

46:25.320 --> 46:28.320
So you do it like you would do on a diesel engine.

46:28.320 --> 46:31.320
And it starts the motor, which is pretty sweet.

46:31.320 --> 46:35.320
Because then it means you don't have an external system to start everything.

46:35.320 --> 46:37.320
If you have the can messages for all of that,

46:37.320 --> 46:40.320
we can trigger whatever you want on your own platform like this.

46:40.320 --> 46:42.320
And it makes the integration as seamless as possible.

46:42.320 --> 46:45.320
And it's almost like the car was electric to begin with.

46:45.320 --> 46:48.320
Which is really nice when you're inside the car.

46:53.320 --> 46:54.320
Is it?

46:54.320 --> 46:55.320
Yeah.

46:55.320 --> 46:57.320
Thank you very inspiring talk.

46:57.320 --> 47:00.320
Is there any practicality like of your project?

47:00.320 --> 47:02.320
What is the goal?

47:02.320 --> 47:03.320
Because it's open-ended.

47:03.320 --> 47:06.320
You said it's never going to be road safe.

47:06.320 --> 47:09.320
Software is pretty customized.

47:09.320 --> 47:10.320
Never.

47:10.320 --> 47:11.320
Just never say never.

47:11.320 --> 47:13.320
For now it's not.

47:13.320 --> 47:14.320
But what's the goal?

47:14.320 --> 47:16.320
That's quite interesting.

47:16.320 --> 47:17.320
Question.

47:17.320 --> 47:21.320
I wouldn't say we have a definitive answer to this one yet.

47:21.320 --> 47:23.320
We don't know yet.

47:23.320 --> 47:25.320
We know what milestones we want to reach.

47:25.320 --> 47:29.320
What we want eventually is to see a drive alone around the track.

47:29.320 --> 47:31.320
That's what we want.

47:31.320 --> 47:35.320
And we will put the work into making it happen.

47:35.320 --> 47:39.320
What's interesting, however, is everything we've learned along the way.

47:39.320 --> 47:47.320
And give us ideas of things we could be doing either with the platform or completely different things we could be doing in products we could be building.

47:47.320 --> 47:55.320
So the goal there was really learning new stuff, figuring out what we want to do in the next years.

47:55.320 --> 47:58.320
We haven't answered all the questions yet.

47:58.320 --> 48:05.320
But we have accumulated quite a lot of knowledge and interest in different topics that we didn't have before.

48:05.320 --> 48:06.320
So it was really the opportunity.

48:06.320 --> 48:10.320
It's something you never have an opportunity to work for on a production environment.

48:11.320 --> 48:19.320
Even research projects that universities don't necessarily go that far in these in that direction.

48:19.320 --> 48:21.320
We're using existing forests and all of that.

48:21.320 --> 48:24.320
So it's completely, yeah, a bit crazy I would say.

48:24.320 --> 48:27.320
But what's, yeah.

48:29.320 --> 48:31.320
Hey, yeah, amazing talk.

48:31.320 --> 48:32.320
Thanks.

48:32.320 --> 48:35.320
I wanted why you used sales for the battery.

48:35.320 --> 48:38.320
Was all the did you buy them with the motor?

48:38.320 --> 48:39.320
Was the motor used as well?

48:39.320 --> 48:44.320
Or did you buy like a new motor and for some reason have used battery sales?

48:44.320 --> 48:53.320
So one of the things we did and that we would have done differently is that we kind of went to an EV shop online.

48:53.320 --> 48:56.320
We said we want to buy a kit to convert a car.

48:56.320 --> 49:02.320
And it turned out that we didn't really receive a working kit.

49:03.320 --> 49:08.320
So the BMS or the battery management system was not the right dimension.

49:08.320 --> 49:11.320
They gave us also an ECU that was not compatible with.

49:11.320 --> 49:12.320
So it was a mess.

49:12.320 --> 49:15.320
And we fortunately we got some money back there.

49:15.320 --> 49:20.320
And for the battery, we were supposed to get an existing Nissan EV battery.

49:20.320 --> 49:25.320
And it was not coming in and somebody said, okay, you need to find an alternative.

49:25.320 --> 49:29.320
And they sent us a battery sales from a Nissan NV200.

49:29.320 --> 49:31.320
So that's what you see there.

49:31.320 --> 49:35.320
And we're much the same battery sales but configured differently.

49:35.320 --> 49:39.320
And so what we noticed is that we just got the sales.

49:39.320 --> 49:42.320
There's no bus bar, no wires, nothing.

49:42.320 --> 49:46.320
So you have to, you just see this when you start working on it, right?

49:46.320 --> 49:48.320
Say yeah, where are the bus bars?

49:48.320 --> 49:51.320
And so you have to figure out all of this by yourself.

49:51.320 --> 49:56.320
It would have been much easier to have a battery pack already done to cable.

49:56.320 --> 49:57.320
Let's go.

49:57.320 --> 50:00.320
But we didn't get that.

50:00.320 --> 50:07.320
So I wouldn't say we were scam because we got something for a fair price.

50:07.320 --> 50:11.320
But that was definitely not a ready-made kit that you can just put in a car.

50:11.320 --> 50:16.320
And I think that's also something when you start converting cars or if you want to do converting cars,

50:16.320 --> 50:17.320
EV cars is a hobby.

50:17.320 --> 50:20.320
Be very careful with what you can find online and all that.

50:20.320 --> 50:26.320
You will receive stuff but maybe not everything will work together as it's meant to.

50:26.320 --> 50:28.320
And so we had to figure this out.

50:28.320 --> 50:34.320
We still have to figure out quite a few things also with the BMS and all that.

50:34.320 --> 50:39.320
So yeah, it's, it happens.

50:39.320 --> 50:41.320
Hello.

50:41.320 --> 50:43.320
Very, very lovely.

50:43.320 --> 50:44.320
Thank you.

50:44.320 --> 50:50.320
I was also reverse engineering campus on Volvo V50.

50:50.320 --> 50:53.320
And I wonder, like you did much more.

50:53.320 --> 50:57.320
So like I published the IDs on GitHub.

50:57.320 --> 51:04.320
So do you know maybe if the same model of the same year, like do they reuse the IDs?

51:04.320 --> 51:09.320
Does it make sense to publish the IDs you found?

51:09.320 --> 51:17.320
VW has had different platforms, platform meaning electrical and communication platform.

51:18.320 --> 51:21.320
The one from that poll, I think is PQ24.

51:21.320 --> 51:23.320
I don't think it anyway.

51:23.320 --> 51:25.320
So I think they had 2425, 26.

51:25.320 --> 51:30.320
And the PQ platforms were just evolution on the same one.

51:30.320 --> 51:38.320
And then they went for MQB or something like that, which changed completely because they went for a platform that was a five in number correctly.

51:38.320 --> 51:46.320
Maybe I'm saying stupid things but which was supposed to be the same for all of their brands like Scoda and a VW and all that.

51:46.320 --> 51:49.320
That was the MQB platform.

51:49.320 --> 51:55.320
So there is already some documentation available for this platform, but not everything is there by the way.

51:55.320 --> 52:00.320
But what you will find is people that recorded a canvas trace along the way.

52:00.320 --> 52:07.320
So they just drove the car, got a canvas trace, all the messages for, I don't know, five minutes ten minutes and then they dumped it online.

52:07.320 --> 52:09.320
So a lot of that you can find.

52:09.320 --> 52:20.320
By the way, if you if you plan on reversing can on a car you're working on, don't remove the diesel engine first because when we started the project we're like, yeah, let's just remove the engine.

52:20.320 --> 52:27.320
And then okay, now we need to reverse engineer the can but we don't have probably what is the central piece of the car.

52:27.320 --> 52:35.320
So yeah, anyway, so you can find some documentation online, but it's not perfectly structured in a way that you can easily find it.

52:36.320 --> 52:46.320
Sometimes you find information in forum tracks, sometimes you find information on get up, sometimes you find information by just talking to people on a random channel somewhere.

52:46.320 --> 52:51.320
So it's it's a bit of a rabbit hole.

52:51.320 --> 53:04.320
Just like I mean, if if you reverse engineer for example one component of this car, maybe you know like from your like community feedback that the same component.

53:04.320 --> 53:16.320
And in the other car does it use the same IDs or it might be a completely different, do you need to read their engineer like in every car the same component.

53:16.320 --> 53:31.320
I we don't know all components of all brands it might be that sometimes they use a standard configuration for the component we don't know what we have seen however is that the I booster from Tesla so the server break system.

53:31.320 --> 53:44.320
It's also using other cars so it's a Bosch component basically it's a Bosch component that is used in several cars but it seems like the ideas of the messages are different so they probably program them.

53:44.320 --> 53:48.320
Somewhere at the manufacturer or even maybe.

53:48.320 --> 54:05.320
But they program them at Bosch we don't know maybe they send what needs to be on there without the IDs and all that to Bosch and then Bosch can figure it so not always but in some cases it might be the same messages we don't know there's so many components there that we.

54:05.320 --> 54:06.320
Last question.

54:06.320 --> 54:17.320
So are there any elements that you're looking for contributors for and are you looking for contributors to the project at all and if yes.

54:17.320 --> 54:21.320
Or what what could people do to help.

54:21.320 --> 54:26.320
Okay, I was not expecting that question.

54:26.320 --> 54:34.320
Why if you want to get started send an email we would happily help you get started and figure out what's missing or how to.

54:34.320 --> 54:40.320
Right now what we've done is mostly limited to the components we had access to.

54:40.320 --> 54:49.320
If someone could just build you know components from other cars just by connected to the canvas and creating all the things that would be quite amazing.

54:49.320 --> 54:55.320
To add new components to the platform because it would make it much more open.

54:55.320 --> 55:03.320
There's also ongoing work we said the Ross to bridge and all that is still stuff to figure out.

55:03.320 --> 55:10.320
So there's plenty of things to do but it's not like we have a list of things that contributors could jump into.

55:10.320 --> 55:23.320
We would love to keep working on that project as well even do paid work based on that project but for now it's just again we're just showcasing it to see if anybody would be interested in working with us.

55:23.320 --> 55:34.320
Or a company that maybe willing to pay us to keep some of that work going and use it in their own products or use it on their own use cases but so far it's not the case.

55:34.320 --> 55:37.320
So we're taking on some other contracting work this year.

55:37.320 --> 55:43.320
But yeah anything that can help us keep you know keeping this alive and keep working on it would be great.

55:43.320 --> 55:49.320
And if you want to help just send us an email and we will happily see what can be done.

55:49.320 --> 55:53.320
I'm over time so thanks everyone. I'm still around so if you have any more questions.

55:53.320 --> 55:55.320
Many, many, thanks.

