About Airic Lenz

Hej, my name is Airic Lenz. I'm a hobby / freelance photographer living in Stockholm. My specialities are landscapes, cityscapes and long exposures. I really like pictures with a Zen like feeling that show things invisible to the bare eye. I am also doing time-lapse photography and thus am developing this open-source system for motion-control of time-lapse equipment. This allows me to combine my hobby - photography - with my profession - IT. Beyond that I do street photography as well as shooting peoples moods and situations spontaneously.

Happy New Year 2014!

Happy new year to all of you! May the light and the conditions be with you in the next year for some great video and / or time-lapse shots!

I will continue further developing the system and as the hardware is done so far, the focus is now on the software. I’d like to implement the features gathered in the version 2 survey. One of the first steps will (hopefully) be receiving some feedback from the ones that already ordered a version 2 set and started playing with it. For those of you that did order already – thank you for supporting the project with your purchase!

As I now started using my YouTube channel, I also would like to create a playlist with videos made with the miniEngine. So please feel free to post your video in the forum or send me a mail if you want. I am looking forward to see what you were able to do with the little controller.

I wish all of you an awesome year 2014!
Airic

Shades – a time-lapse movie

Hello everyone,

I finally got enough clips for a 4min time-lapse video. I spent the last 1 ½ years on refining my equipment and shooting some clips when possible. Here is the result:

It was shot using the miniEngine – bot with motion control as well as simply on a tripod. All 3 existing version were used.

For those with some interest how my time-lapse workflow looks like – it includes the following tools:

  • Adobe Lightroom for the development of the single RAW pictures / video frames
  • LRTimelapse for de-flickering
  • Quicktime Pro for combining the frames to video-clips
  • Final Cut Pro for the video cut

Surely this is just one of many, many possible workflows but this is how I do it.

I hope you enjoy it!
Cheers,
Airic

miniE v2 release

Ladies and Gentlemen,

I worked hard the last couple of days to get everything together and write an initial documentation. Now I am done and just released the miniEngine v2 to the public, to you. It is now available in the shop:

shop.airiclenz.com

big set

..and all required files are committed to GitHub:

github.com/airiclenz/miniEngine2

The ones of you that have any questions, please post them in the forum. I am happy to answer them there.

Cheers,
Airic

Shop update(s)

Hello everyone,

Just as a short update to where we are regarding the miniEngine 2 shop release. I got everything stocked now – at least for a small number of sets (more will come mid January). While waiting for the parts to come in, I worked intensively on the software so that you’ll have something cool to play with (I’ll post another update on this later). Today I will start working on a small user-guide for “how to assemble” and another one for “how to use” the system. When this is ready, I can hopefully put the new system into the shop the coming weekend. I will not be able to ship during 23. Dec and 5. Jan but for the eager ones of you, there will be some days to order before that. Thank you all for waiting and for understanding that I am working on the system in my spare time and that it’s just me working on it.

I am also very proud to announce that the original miniE set can now also be bought at “kids-of-all-ages” in Germany. Check it out!

Cheers,
Airic

miniE2 boards are going online soon!

Hello everyone,

I just ordered the first batch of shield PCBs for the shop. They will be blue and available as soon as they arrived. I’ll also order some needed parts so that I can offer sets for those of you that want to start quicker.

In the meantime I will continue working on the software. The first version which will be released will have motor control for 2 motors with the new Bézier-based-algorithms. Manual motor placement, higher motor speeds, all measurements in seconds and cm (no more conversions from steps to cm out in the field) and the better user interface are just some of the benefits which will be available in the first software release.

This first version will not be finished but be the first step to the system which I designed to be as capable as possible incl. daisy-chaining, video moves, external inputs and so on.

I am looking forward to getting it into your hands!

Cheers,
Airic

miniE v2 update 4.1

Hello everyone,

this is just a quick update on the Bezier-motor-control engine. I worked the last days pretty much all of my free time on the new “core” system and can say that it is more or less done. I now can define moves based one Bézier curves – or in other words by defining 4 points (2-dimensional: time; position) per curve. The engine is then processing the data to a list of linear segments (based on linear functions). So every curve becomes 200 linear segments. To get a smooth move, I developed an algorithm, that uses a finer granularity where the curve bends the most. In the picture below you can see the segmentation (in this case 100 segments):

intelligent_BezierSegmentation

Every motor-movement in the next version will be based on this new methodology as it allows detailed planning of the motors position in time. I even allows to get information about the speed of the motors at any time. On top of that is the motor movement much smoother as it was with the old delay-based engine. It also allows much greater speeds. I was able to move my dolly along my 100 cm (4 foot) track (this one) in 6 seconds with nice speed-ramping on both sides.

Because the DUE is fast enough and the motor position calculation is based on an easy linear function, there should be plenty of processing power for doing all this for 2 motors simultaneously. Right now there are approx. 0.05 motors steps done per processing loop. This means that the DUE only needs to step the motor every 20 processing loops. [Edit: Running 2 different curves with 2 motors simultaneously is tested and working perfectly.]

The only drawback is that this new control-methodology is making extensive use of the 96kb RAM that that the Arduino DUE has to offer. One of the curves with its 200 linear sub-segments is taking 2400 bytes of RAM. That means that in theory 40 of these curves can be stored in the DUE’s memory. Because the systems itself needs some of the memory too, lets say that 20-25 curves can be stored. I think that this is a good amount to design some pretty complex video-moves. Here is another example of how such a move can look like:

move_graph

It consists of 3 curves and here is the actual source-code to define such a move by hand:

// x coordinate = time in ms
// y coordinate = motor position in cm
curve[0].p0 = Point( 0, 0);
curve[0].p1 = Point( 6000, 0);
curve[0].p2 = Point( 10000, 50);
curve[0].p3 = Point( 20000, 50);

curve[1].p0 = Point( 20000, 50);
curve[1].p1 = Point( 30000, 50);
curve[1].p2 = Point( 31000, 35);
curve[1].p3 = Point( 40000, 35);

curve[2].p0 = Point( 40000, 35);
curve[2].p1 = Point( 51000, 35);
curve[2].p2 = Point( 51000, 100);
curve[2].p3 = Point( 70000, 100);

The cool thing is that I can read the motor position for any time I want. This will end up in a feature to kind of fast preview the programmed move – for example with 16x speed.

I guess I need a good user interface for editing these curves on the system now!

Cheers,
Airic

miniE v2 update 4

Hello everyone,

after some weeks of vacation and some more weeks of coming back to work it is time for another update. This time it will be focused less on the hardware or the user interface but on the core functionalities of the engine. This means that I am currently working on the keyframes engine which will then be used to control the motor movement.

But first let me explain what I am aiming for and why. The motor control-engine of the older miniEngine version don’t allow precise planning of the moves. This means for example that I can precisely define how far the motor should move but I have no real power over its timing. There are possibilities to tweak the speed with which the motor moves but this is far from intuitive and precise. To overcome this issue, I am currently working on ways to have a better control.

The basic idea is to base this new motor-move-management in curves as in the following picture:

Bildschirmfoto 2013-09-12 um 19.39.26

This is a screenshot of a small test-application I wrote in Processing 2. It shows a cubic Bézier-curve which would be the perfect solution for defining motor moves. Out of many of these curves side by side, one could create highly complex moves. Here is an example for 2 motors:

rect3787

Unfortunately are these Bézier-curves pretty processor intensive which is bad because I am using an Arduino. Have a short look at the Wikipedia page of Bézier-curves and you will understand why. For being able to control a stepper-motor with such a curve (or something similar but function-based), I need to calculate the curves y-position (= motor position at this time) based on the time that has elapsed since the program started. The Casteljau’s algorithm can solve this. After I have the y- and thus the motor-position, I can move the motor to that spot. Then I do another calculation based on the new time and so on… All this needs to be done for the two motors + the handling of the cameras, triggers, communication, …

My current main-task is to find a way to do this whole loop that way so that the motor movement is still smooth. To do this I need to find a performant way to do the calculations, pre-calculate as much as possible or use timer-interrupts and time-fragments of constant speeds. I am following different approaches for this and hope to find a good and solid solution.

When this basic technology is developed, I can go ahead and implement a first ready-to-use version which will be based on this new core… This will then be made public to all of you. It will just contain a basic set of features but I know you are waiting to start playing with the new version!

On the hardware side I can tell that the main-PCB is final. I received Revison C and tested it. On the picture below you can see an updated version (Revision D) which just has a nicer silkscreen:

mE2_shield_REV_D_gimp-render

Cheers,
Airic

miniE v2 update 3

Hello everyone,

it’s time for the promised update! The last weeks I was working on the system quite a lot. This is what was done…

I received the revision B prototype-boards but had the great “luck” that my order had some production failures and 2 of the 3 boards had random shorts between the different signal and buses (this is the reason for the wires you can see on the pictures). The (free) 2nd run is finally produced and will arrive here within the next couple of days.

I already can tell though, that there will be a 3rd revision of the boards as I want them to be perfect and also received some last-minute ideas which I just have to include! One of them is to add DIP-switches to the motors-driver-board so that one can set the motor-mode easily from 1/8 step to all the way up to full-step.

The other big part of my development work was the implementation of core parts of the software. The basic UI-engine is implemented and running to my satisfaction. I guess I found a good way to realize a smooth user-input-system with just 2 buttons and a rotary encoder. I really like the encoder input and still can use on more button and then there is the touch-input which will be implemented for later versions greater than 2.0.

Here is a picture of the settings menu with 4 of the 5 so far existing menu points fully implemented (the ones that show data on the right side):

EE-20130802-8868.1280px

when pressing the “edit” button one will see a new screen, dedicated to the selected setting. This screen will contain some basic explanations about what the setting is all about. This way a basic help will be included.

Here is how the main screen will look like (sort of) – this screen will show all the data that is relevant to the actual shoot. The data is still missing but I hope you get a feeling for how it will look like:

EE-20130802-8869.1280px

As you can see, I added a functionality to read the input voltage and thus display some battery information. This is self-calibrating and will show perfect values after one full battery-cycle (After the system knows the values for fully charged and fully empty). Another feature which I always wanted was the support for color schemes. Here is a picture with the “night-vision” scheme activated.

EE-20130802-8867.1280px

I hope you like it!

Cheers,
Airic

miniE v2 update 2

Hello everyone,

it is time for another update (you can find a full spec-list of version 2 and the possibility to add your comments here: forum.airiclenz.com). Last Friday I received the first set of prototype PCBs – finally. Shipping from China takes too long – I guess I need a faster PCB service for the next ones… Anyway here they are:

miniE 2 shield revA

I assembled them during the weekend and fixed the bugs I found. My first impression was very good – It seems I did a decent job and had just one wrong footprint and one missing trace (the red wire in the next picture). Apart from that everything is working as expected. since the last lose prototype I also stepped the display connection up from 8bit to 16 bit – this will allow faster screen updates and thus a smoother system. The touch input and the SD-card are working too. Here is the (almost) fully assembled shield plus the BigEasy driver board with just one BED sitting on it.

EE-20130710-8539.1280px

Here is another picture with the display attached. It is just showing my test-menu which is not yet functional.

EE-20130710-8541.1280px

The next steps will be the further Implantation of the software. I did a lot of work on the modularization of the original code and also added new features. One example is the daisy chaining. My next big task is to develop the user interface routines. When this is done, the miniE 2 will actually be functional and almost be where the original system is now in terms of functionality.

In the meantime is Anderl working on the enclosure for the system and maybe we will see some nice 3D pictures of it when the next update is coming out – which will be end of July.

I already ordered the next iteration of the prototype PCBs. I fixed the bugs, added a second external trigger and also added a possibility to read the input voltage for being able to display the battery level. Now all pins out of the analog inputs are used. Here is a picture how the main PCB’s revB prototype will look like. Yes, it will have this color – it’s the color of OSH park.

i

Cheers,
Airic