Machine Vision icon

Machine vision

Add intelligence to your machines

Embedded Systems Programming

Programming production machines and robots is hard. To successfully develop an embedded system, not only do you need excellent software development skills, but also in-depth knowledge about the real-time requirements, electronics and mechanics of your application.

This is where our multidisciplinary team really shines.

Kapernikov can help you to:

  • Add computer vision and machine learning to your machines
  • Develop and debug embedded software
  • Improve your embedded software development by implementing DevOps, including automated testing on real hardware

A very specific ecosystem

Embedded systems pose very specific challenges. In addition to the software development challenges that are available everywhere, you communicate with sensors and actuators using different field buses and communication protocols, depending on the requirements and the availability of off-the-shelf components. Since you’re dealing with a real environment, correct timing is tremendously important. Being fast is necessary but not enough – you have to react at precisely the right time.

Experienced in software, electrical and mechanical engineering, chemistry, material sciences… our team is perfectly suited to get the maximum out of your machines.

New developments bring new opportunities

New developments in machine learning bring new opportunities for production machines and robots. With specific hardware and optimized software, we can use deep learning for both computer vision and time series analysis on embedded systems while still meeting the real-time requirements of your application.

We closely follow the latest developments in computer vision and machine learning and the possibilities to implement these on embedded systems.

Modern software development

Although DevOps is still mainly used for web based and consumer software, it has huge advantages for embedded software development too. Automated software testing, ranging from unit tests over integration tests to system tests, is even more valuable in embedded systems, which are much more difficult to debug. The tight coupling with real hardware makes thorough testing difficult, but this can be solved by a combination of hardware emulation and (automated) testing on real hardware.

Although automatic deployment on production machines and robots is often not desirable, having a recent, thoroughly tested, release available at any time makes it possible to quickly roll out new features and bug fixes to clients when needed.

The automated creation of releases also guarantees that you can reconstruct your embedded application exactly as it is running on your or your customer’s hardware, which is often not the case if builds are made on your developer’s laptop.