Cpac Systems: Rapid prototyping

Rapid prototyping is a great way of researching concepts for new products. Recently I got the task of making a proof-of-concept for a Bluetooth device that needed to communicate with smart phones. In a matter of weeks I could present a interface hardware written in C++ and Arduino, together with a rather simple but fully functional mobile app.

Cpac Systems: Inventor in patent applications

When developing new features for marine applications now and then I have the opportunity to work with solving complex problems. Sometimes the solution to those problems are sufficiently good to be patented. I have written numerous internal innovation declarations and a few of them have made it further than others. Right now I am the sole inventor of one patent which is pending in Sweden, and also co-inventor of two patents being filed by one of our company partners (patents also pending).

Cpac Systems: Automated build environment

I have been responsible for automating a large portion of the software build environment for Cpac Systems marine products. Basically new software is built by an automated build server every time someone commits new code to the software repository, but also on request when a software release needs to be done. I have automated the build and release processes piece by piece and now (with a few exceptions) we can release a new software for a large batch of products in a matter of minutes, compared to before when a software release could take a day. The reason for this is Python scripts that handle the complete build and documentation process of every software, which is done in parallell for a multitude of products. Before this process would be done by individuall software programmers for "their product" on build day.

Cpac Systems: Automatic Hardware-in-the-loop (HIL) tests

I like automating boring tasks, and one of them sometimes is integration testing. At Cpac Systems I have been writing scripts and configuring hardware for automatic testing of Electronic Control Units (ECUs). Basically connecting the essential control units for running a boat to the same system, and writing automatic test cases that perform hardware-in-the-loop (HIL) tests. All of it connected to Jenkins Continous Integration server.

ODE solver in Python using custom Forward-Euler


For realtime simulation it is important to have an ODE solver that is simple enough. I did not find any plug-and-play kind of ODE solvers for realtime applications so I wrote one myself. The greatest benefit of this approach is that you have full control of every time step. Good for realtime simulations.


It is very simple but show the basics of how to write an ODE solver. It could be extended to use more sophisticated solvers like Runge-Kutta or Crank-Nicolson.

Tagged with: