Machine learning, combustion engines and real-time control

What you’re about to watch in the video below is a magnificently physical example of machine learning. Adam Vaughan is controlling an engine with an adaptive Extreme Learning Machine algorithm on his Pi, which predicts homogeneous charge compression ignition (HCCI – if you’re  a petrolhead, you won’t have to look that up on Wikipedia like I did to discover that it’s a spark-free way of combusting fuel by putting it under pressure until it goes bang) in real time.


HCCI combustion is hard to predict – it’s near-chaotic – so the algorithm Adam designed has to take a huge number of samples (240,000 per second) to get enough data to learn how the engine behaves and to provide something so close to real-time control that you’d never know the difference. (It’s incredibly close to real time – there’s about 300 microseconds – that’s microseconds, or one millionth of a second; not milliseconds, which are a thousandth of a second – of latency here.)

The Pi is recording data about pressure in each of the engine’s cylinders, about the angle of the crank and about heat release – and on the back of that, it’s subsequently controlling the engine in real time over a controller area network (CAN).

This isn’t just a demonstration of how to do mind-bogglingly clever stuff. The research means that fuel efficiency can be improved, and CO2 can be reduced. If you’re interested in a more in-depth look, Adam and Stanislav Bohac have written a paper on the algorithm that’s being used in the video – go and read it if you want a maths and engineering workout!


jbeale avatar

The wikipedia article was interesting; previously I thought the IC engine design choices were just spark ignition or diesel.

Liz Upton avatar

You’re not the only one! This was a really interesting project to write about – I’ve learnt a lot today!

Joe Desbonnet avatar

The real time data display from the Pi in the web browser (1:46 in the video) is very impressive. I’d love to know more about how that.

Matt Richardson avatar

In the YouTube video description, he says he used WebSockets along with D3.js. The latter I had never heard of. From their site: “D3.js is a JavaScript library for manipulating documents based on data. D3 helps you bring data to life using HTML, SVG and CSS.” Good to know about for sure.

Ted avatar

d3.js is one of the most famous javascript for rendering data. There are some others :

Rowland Keable avatar

I agree with the comments about never having heard of this type of internal combustion engine before and I totally agree with Joe Desbonnet about the impressive real time display in a web browser on the PI. It would be very useful in other fields of work. Could the authors be encouraged to write more detail about this element of their project?

jbeale avatar

Note the real time display on the web browser shows data coming from the pi, but I believe the web browser itself is running on a Windows box.

John Tarbox avatar

Is it possible to get further details on the the custom board mounted on the PI?

Matt Richardson avatar

There’s so much good stuff going on here: Real-time Linux, machine learning, web data visualization, WebSockets, CAN, and a custom PCB. It was also really interesting to learn about HCCI and how it differs from a typical internal combustion engine.

aremvee avatar

i think it also deserves the tag , perhaps even

aremvee avatar

help! – mod you’ll see what’s happened

jeff avatar

Did I see Windows XP in there?

Tim avatar

Yes one of the machines is running windows xp and another windows 7 I think from the video.

Jessie avatar

Wow. I’m just amazed. I never thought this could be done without a microcontroller in the middle or something. Really nice.

Comments are closed