$ telnet mqnc.dev

Mirko Kunze's Project Portfolio

   Welcome! Below you will find the finest selection of my personal engineering confections — a curated assortment of projects that are dearest to my heart. Some were built for work, some for fun. All were handcrafted with care and offer a rich taste of my interests, skills, and the joy I find in building things that matter — at least to me.


WoVi2
Dynamic Collision-Aware Workspace Visualization for Robotic Manipulators — 2026
https:/​/​github.com/​mqnc/​wovi2

   Aim of this project is to explore interactive workspace visualization as a tool for robot cell design as well as robot and tool design. It is the successor of my dissertation project (see below).


WoVi
On-the-fly Workspace Visualization for Redundant Manipulators — 2016
https:/​/​github.com/​mqnc/​wovi

   This is what my dissertation is about. It is a force-field-like visualization of different workspaces of a robotic arm:
•  Where can the TCP go in a straight line from its current position while maintaining its current orientation?
•  How far can the TCP twist while maintaining its current position without hitting a joint limit?
•  What points are reachable in general (not just in a straight line) in a configurable set of orientations? All this is computed on-the-fly on the GPU and changes as the robot moves. It can be used for designing robots, tools and the environment around robots. It does not consider collisions yet because that would have been too tough to implement on GPU but with today's CPU power it is probably feasible.
   UPDATE: See project above.


cheapwater
Cheap Interactive Water Using three.js — 2024
https:/​/​github.com/​mqnc/​cheapwater

   I needed computationally cheap and interactive water for a game, so I came up with this idea. It has become my most starred github repo!


trafo
Python Transformation Library — 2024
https:/​/​github.com/​mqnc/​trafo

   When working with Python on robotics projects, I often felt it lacked a good and lean tool for handling transformations. I had issues with all the tools out there, so I decided to create my own.
   I also wanted to demonstrate the advantages of open source to my employer and since we were not allowed to open source our work, I wrote it in my free time. As there were no deadlines, I took the opportunity to do everything properly: an idiomatic API, proper testing, proper documentation, proper code checks.
   It took a lot of work but I learned a ton and I hope it catches on. Tell your colleagues, friends and family about it ;)


Gestalt Planner
Collision-free Trajectory Planner for Robotic Manipulators — 2021-2025

   At Gestalt, we've quickly reached the limits of what MoveIt can do and I found it extremely difficult to extend it with new functionality. So instead I built a custom trajectory planner. It has some features which sets it apart from the competition, including a very efficient way to handle orientation constraints and an also very efficient way to verify the collision-freedom of large joint motions. Unless I am allowed to open source it, which I am trying, I can't disclose much more.
   UPDATE: I was allowed to open source it! https:/​/​github.com/​mqnc/​kite-motion-planner


RLSK Studio Plugin
Trajectory Generation for a Remote Laser Welding Robot — 2018
https:/​/​www.youtube.com/​watch?v=kYvSfckVm3A

   II-VI HIGHYAG wanted to mount their laser welding head which can cover a small volume with high speed via mirrors to a robot arm to increase the workspace. The robot should automatically sweep the welding head workspace over all seams while the laser welds them. This is essentially a TSP but with some exciting twists: Some seams are very long but need to be welded in one go, which kind of maps to a portal from one town to another in TSP space. Another is that the traveling salesman is not a point but has a large volume (laser head workspace) and can cover multiple towns at the same time. This was one of the most interesting challenges I've ever worked on.


json5cpp
C++ Library for Parsing JSON5 — 2024
https:/​/​github.com/​mqnc/​json5cpp

   JSON is a very elegant and intuitive file format for representing data. However, it does not support NaN, ±infinity, or comments. I've been trying to work around these limitations (using "//":"my comment" for comments, null for NaN, and 1.79769E+308 for inf) but all of that is very inconvenient and feels wrong. The desire for these features is strong, several parsers support some of them. Python's json optionally supports NaN, Infinity, -Infinity. nlohmann/json optionally supports comments. But there is no interoperability.
   I've looked at other file formats. XML is overly verbose and does not really match the object structure in programming. YAML is not an option because of these points https:/​/​en.wikipedia.org/​wiki/​YAML#Criticism and because it very annoyingly has significant indentation. The situation with TOML is almost the same: https:/​/​dev.to/​siddharthshyniben/​why-not-toml-1fj9.
   Then I came across Hjson and JSON5, they both solve everything. I like JSON5 more because of its compatibility to JavaScript and because it has an official spec. However, there was no C++ implementation for it, so I created one. I directly translated the reference JS implementation and all the tests.


Cinnamon
Usable Programming Language that Wraps C++ — 2019
https:/​/​gitlab.com/​mqnc/​cinnamon

   I have a constant love-hate relationship with C++. It's designed in a way that the compiler has to read everything only once, so I have to write everything twice. Its strong focus on backwards compatibility means that every new feature must have been a syntax error before and that's what C++ looks like today. Lzz3 brought some relief but is outdated now.
   I went through several insufficient iterations to make my life "easier", from tons of preprocessor macros to a custom regex-based preprocessor to proper languages that transpile to C++, of which Cinnamon is the latest iteration.
   Then I learned that Herb Sutter went down the same road and created Cpp2. I was expecting that his project will probably be more popular than mine and got both discouraged and excited because I'm also happy if he solves all my issues. However, it doesn't look like Cpp2 will be production-ready anytime soon so I might go back to Cinnamon.


ometa-cpp
Compiler compiler for C++, inspired by OMeta — 2022
https:/​/​github.com/​mqnc/​ometa-cpp

   While working on Cinnamon (see above), at some point I got unhappy with the transpiler being based on Lua and decided that I need to write an appropriate transpiler tool first. I stumbled upon Ometa and was very pleased with it. However, there is no C++ implementation, so I decided to create one.
   I was also intrigued by the idea that the to-be-transpiled source could configure the transpiler to understand custom syntax, something I only know from Felix (https:/​/​felix-lang.github.io/​felix/​) (apart from the somewhat inconvenient C preprocessor macros). This would also allow for custom infix operators with custom precedence and custom associativity. So I built Ometa-C++ in a way that facilitates that idea.
   It is in a state where it is almost feature-complete and usable, however I lost interest in it as I lost interest in Cinnamon with Cpp2 on the horizon.


   For my little daughter I wanted to have an animal poster that contains ALL 240 different animals there are, so like any good father I searched the whole wide world wide web for animal photos and created a custom kind-of-physics engine in order to puzzle all these concave shapes together into a nice poster (the link above is just a debugging screenshot, not the poster).
   I was very pleased with the result and several friends and our kindergarten also wanted one. I wanted to turn animal posters into a business before AI can create something like that in 10 seconds but I got discouraged by how much bureaucracy it is to do a business tax declaration in Germany. One day I will still give this a shot.
   UPDATE: I am now giving this a shot! https:/​/​www.kidposter.de


AceChase
Massive Multiplayer Couch Vehicular Combat Game — 2003?-Now
https:/​/​www.youtube.com/​watch?v=JUjWb0njmTI

   Let's be honest! We all started programming because we wanted to make video games when we were kids!
   I've been working on this game together with my cousin since we've both been going to school. We both love the shopping-cart-like vehicle control from Asteroids, so we wanted to build a multiplayer game around that. We went from C++ to Blitz3D back to C++ to Java to JavaScript to TypeScript. I've learned about all these languages, a ton about computer graphics, physics engines and software architecture in general from that. It's not done yet — but one day, it will be!


propwash
FPV drone simulator for the web — 2026
https:/​/​github.com/​mqnc/​propwash

   My latest procrastiject! :) What I want to try out here:
•  realistic-feeling drone control
•  3d physics in the browser
•  dedicated worker for physics
•  fisheye camera
•  motion blur
•  shadows
•  light baking


Let’s create the next entry together!

$