There has been always a strive for some project.

In a life of a Software Engineer, doing side projects is sometimes a breath of fresh air. It often happens when in the middle of working day, there is a great need to stop everything and continue working on that "special" thing you spend weekends and days after routine weekday.

When I just started my career, in order to accelerate in particular technology/programming language I always tried to make some small project. Let's imagine, I suddenly decided to learn Front-End Development (VueJS for this example). I start to think about the problem which can be solved with a simple web interface: calculator (yup, so creative)! By doing a simple calculator in VueJS, it enables to learn more about technology as well as train essential development skills.

But sometimes you are getting obsessed with an idea which can shape your career or future start-up. Don't want to lie - I do everything I can to build a start-up with close, like-minded people. It can occupy all weekends, free after-working-hours time and much more. But it is such a good feeling!

Let me introduce you to one of these endeavours: we call it "project KALIE".

What makes my job really unbelievable is a surrounding by really talented and open-minded people. Always new ideas, solutions and innovations. With my friend and colleague Ilya, we love to take tea breaks. There is nothing better to get a cup of hot green tea and switch a context. Taking a tea is a habit which we formed after a couple of months spent working in the office with a really strong aircon ❄️ (Even though now we are fine, habit is till there). And one day we decided to think about a product to build.

We compared our preferences, interests and evaluated which problem it can solve. Ilya was unbelievably fond of skateboard tricks, while I was more about casual cruising on a coastline. Both of us love IoT and custom hardware. There were many ideas, and after some time with another sip of tea, Ilya proposed: "Skating is hard, so what if we try to create a stunt assistant for those who want to try new skate tricks?" This sounded really cool: something both we like and helps skateboarding newcomers... Let's try it out!

During the next five months we spent numerous hours after work and weekends to build a prototype. Our solution consisted from:

A sensor powered by Arduino and a set of gyroscope + magnetometer + accelerometer and bluetooth module.

Android application which would connect to a sensor and display information about trick.

Let's talk a little bit more about each of them...

Sensor

We spent a long time engineering our sensor: starting from a bulky, huge breadboard with USB power, to a fully-soldiered battery-powered module attachable to a skateboard. There were three main versions: 0.1, Tornado, and Cerber. 0.1 version wasn't powered by battery, had a giant breadboard and was too big. Tornado version looked much better, used a plastic case which I made from vitamin bottle and could be powered with battery + much smaller. Cerber version was soldiered by Ilya and used much more robust enclosure which could withstand hard tricks.

Mobile application

We named it Kalie Studio, since it was a truly fully-powered studio for skateboarding trick recording and playback. We were also able to use Android Core AR to create a 3D scene and place a model of skateboard. Main idea was to be able to press "Record" button, which would save a batch of real-time data from sensor and play it in 3D scene on Kalie Studio with ability to play every single frame. But there was a problem: we were able to track a rotation, but what about movement on X/Y/Z?

To recreate a movement in space, we made a very extensive research which involved a development of Machine Learning + OpenCV software to be able to process stereo images and approximate X/Y/Z coordinates from there. We had to study a concept of camera, focal length logic and space/dimension relativity.

Craaaazy! However, in the end it wasn't very precise, so we put our approximation platform on hold. Ilya managed to calculate position of skate on Y coordinate using acceleration, and it looks really amazing.

We are still working on a rest of coordinates as well as to confirm a business use-case for a project. Meanwhile watch our video we made to explain our idea!