The third time is a charm, they say. And apparently this also holds for software projects. I assure you that a fresh start with a clear vision is often so much more productive than trying to fit an old project into a new shape, which would have absolutely been what I needed to do. This latest software iteration uses a completely new approach to motion, and was designed for vector graphics from the ground up. Both earlier iterations of the control software were designed around the principle of painting single pixels or “dots”, hence the name “DOT-BOT”.

The 3 Big Iterations
Version 1
The first control software was where it all started. We launched the project in 2021, by now already 5 years ago. It was a more convoluted setup where the control software was split up in two parts. The frontend was displaying its interface to the user in the browser and the backend was doing calculations and sending commands to the bot via a websocket server. Back then, my experience in web development was quite outdated and the main developer , who was the co creator of the project, was Falko Krause. When he started shifting his focus to other projects, the control software development slowed and I continued only on the hardware development for quite some time.


Version 2
The second control software iteration started when the need for new functionality outgrew my will to fiddle with my friends’ codebase. Back then, I was a full time C# developer and spend most of my time in the Unity universe. Therefore, Unity was my first choice for a feature complete C# rewrite, which worked so surprisingly well that I also developed all of my new features within this setup.

Version 3
The third iteration became necessary when I was asked to upgrade the bot to actually paint with spray cans. A new approach to motion was needed, since spray cans work best when used at a constant speed. However, the Unity codebase was already quite big and slow to compile and therefore not well suited to quickly test and iterate on. To gain speed, I started prototyping another minimal control software in JavaScript, since prototyping is just so much quicker if your results immediately appear in front of you. When I saw how effortless the porting of the most relevant parts was, and how well the implementation of the new control approach came along, I opted for a complete rewrite.


The biggest highlights in the new software are
- The gondola motion is generated by sampling the paths and generating motor commands, not created by sending moveTo and lineTo instructions to the stations
- The last project is auto loaded when the software restarts
- Every setting, every position of every window and every state is cached
- The entire workflow for the end user is polished and simplified
- Paths can be split up into smaller paths on big directional changes
- Fillets can be introduced to smooth out remaining corners
- Acceleration and deceleration tracks can be added to paths
- Every component has several security layers with e.g. heartbeats to verify the DOT-BOT works as expected
- Comprehensive information messages are presented to the user
- Paths can be sorted and drawn in reverse to save on travel time

Overall, this software iteration is a major leap forward. It allows for quick and easy conversion and optimisation of minimally preprocessed vector graphics and has already proved as a reliable tool a few times on our 5 meters by 3 meters big test canvas.






But since this is only our testing wall, we painted it over to create more stunning art!

With an upcoming commission and all of the new possibilities, we also decided to iterate one more time on the hardware side and switch from normal, open loop stepper motors to servos or closed loop stepper motors. They can automatically compensate for lost steps and can alert the controller when a big failure has occurred. This meant that the PCB had to be redesigned, and is now able to drive closed or open loop stepper motors depending on which components are soldered on. The spray images in this post have all been drawn with this new hardware iteration!


If you have an idea for a machine or a custom control software, do not hesitate to contact me via my email address!