DIY : a DIY AI robot – Zeeger Lubsen – Medium

During the summer of 2018 I had the rare opportunity to take an hiatus from the typical life of an employed person. The plan was to safely land our new family member in a crib, keep the older one out of harms way, casually look for exiting professional opportunities, and as it turned out, enjoy some of the best weather in recorded history. Given this outlook, I figured I would have some spare time (really?) that could be spend on side projects. Lady luck in turn pointed me to a Kickstarter campaign for a ‘do-it-yourself artificial intelligence robot’, the Creoqode Nova.

A+ in the design department. (picture by Creoqode)

A couple of things were directly appealing: DIY, AI, robotics, and an ominous ‘Phantomesque’ design. I recently rekindled my liking for embedded systems, AI is all the rage nowadays, and I’m a sucker for cool looking humanoids. The campaign already closed, but was successfully funded and the unit was available for pre-order directly through Creoqode, expecting shipment in June. It seemed like the perfect gadget to tinker with in sparingly quite moments. Great, let’s go!

Also comes in ‘Opera Ghost White’, if you shop via Andrew Lloyd Webber.

As it turned out, I sunk plenty of hours in this thing. And what fun is it if you cannot share it with others. So I figured I turned my experiences in a set of articles, to learn, entertain, and have a decent excuse to document my work. As a starter, let’s look at what Nova is. Follow-ups articles will cover the actual work.

NOVA: hardware and assembly

Nova comes in a very nice looking package. Opening the box and having the mask peeking out gives that nice sensation of having something special in front of you. The unit consists of:

  • An Arduino-based Mini Mega2560 board (which is a smaller version of the regular Arduino Mega, can be picked up online)
  • A servo shield (custom by Creoqode), to drive the servos
  • Five servos, to move or rotate the body and head
  • An USB camera, makes that Nova can see
  • An ultrasonic sound sensor, makes that Nova can sense distance
  • Two joystick pokes, to control the unit
  • Acrylic laser-cut body parts and the signature mask
  • Nuts, bolts, jumper wires, etc to put it all together

The Creoqode website has some movies / GIFs that show the types of motion.

Peekaboo…!

There’s a simple yet effective booklet that guides you through the ‘mechanical’ assembly of the robot. Some of the steps regarding electrical parts are described in online tutorials, which makes some sense as you’ll only use the ultrasonic sound sensor later on, but then again it doesn’t.

Assembly itself is straightforward, and build quality is good. Putting it all together, the acrylic parts can feed a bit less premium than the rest of the parts. The weight of the unit is kind of light, the movement of the servos can make Nova wobble on it’s base. You might need to re-tighten the screws after some time of operation.

Tutorials

The real fun begins when you start programming and bring the critter alive. For this, Creoqode has a set of tutorials on their website. It consists of 20-something chapters, including the hardware specifications, how to approach design challenges, setting up Arduino and Processing development environments, intros into control theory and computer vision, etc. These give background on how and what you will be building. The real meat of course is in the actual coding. There are step-by-step tutorials that you can follow, reproduce the code, and have Nova do increasingly interesting tricks, namely:

  • Control the servos with the joysticks (including signal filtering);
  • Have Nova maintain a given distance between an object and its face (using the ultrasonic sound and a PID controller);
  • Have Nova detect a face via the camera (on a PC), highlight it on screen, and move the head to keep the face centered in the image;
  • Control Nova via keyboard/mouse input, track colors instead of a face, etc (these were planned at the time of launch, more on that later);
The chapters of the Educational Guide

Since ‘DIY’ can mean ‘you are on your own’, the first steps into the world of Nova are pretty well documented. It will get you started good enough, especially if you’re not entirely new to programming. To build on these concepts you’ll have to study the underlying concepts (PID controllers, signal processing, serial communication) a bit more. I found the material actually gives a good intro of all the things involved, and structure to programming robots like Nova.

The example code tends to be slightly complicated due to the lack of abstraction (many global variables, cram most code in situ in the loop-function) and simple naming (value1_x, value1_y, …). It has a highly procedural style (which might be more common in embedded development, but not a good excuse per se), and some parts are confusing or contain little errors. Which makes it a perfect learning experience, come to think of it. But I found it much easier to keep track of what I was doing rewriting it in my own style. And because that is what engineers like to do.

Today’s topic in our software engineering course: variable naming (picture by Creoqode)

In case you’re interested, see my Github for the tutorial code.

Community and support

The tutorials are part of Creoqode Qode Share, a place where users can share their co.., eh qode (and probably source code as well). It aims to be a place where a community is formed around Creoqode products, which all have a ‘hackable’ learning aspect. As of now, there are two products: Nova and 2048, a handheld game console for which you create your own games. There are a couple of games / apps available for 2048. Nova has to make do with just the ‘Education Guide’, aka the tutorials. Other than that there is no other way to interact with the ‘community’ via this channel.

A need to have some support after launch arose among the backers of the Kickstarter campaign, and an ‘unofficial’ Facebook group was created. This group now contains about 20 people, but after some initial enthusiasm activity has hit rock bottom. It’s been a mix of beginner and more advanced questions, and people showing sharing progress and experiences. Quite helpful all things considered. Based on the stats of the Kickstarter and my own pre-order, at least 264 Novas have been shipped. This means the ‘engagement rate’ for what is supposed to be the community is in the order of 7%.

Most interestingly, the need for this group was most apparent after some time the first units were shipped to backers (and pre-orders). After providing sufficient initial support on the Kickstarter page (regarding incomplete units, some errors in and clarifications on the manuals), Creoqode explained they are a very small team loaded with shipping out a lot of orders, and went on a several months long period of complete silence. So much for fostering a thriving community. Some digging on social media revealed that three people in this world state that they are employed by or owning Creoqode, and two of them got married together over summer. Can’t blame them.

The next sign of life was a new Kickstarter campaign for a hackable speaker (which sadly proved unsuccessful). During October the Educational Guide was updated to complete most of the chapters that were ‘coming soon’ (now you can learn to add voice recognition and wifi modules to Nova). Anecdotal evidence from posts on Kickstarter and the Facebook group shows that support in case of broken or fried hardware was adequate. And luckily most hardware components (except the body parts) are generic, so they can be replaced with cheap alternatives bought online might the need arise.

Nova’s sensors and input: camera, ultrasonic sound, joysticks. And a servo shield to boot (picture by Creoqode)

Conclusion and what’s next

Nova is a very nice product in my opinion. It is great fun to assemble and bring many different aspects of programming together. The documentation is adequate to get you going, and the unit is extendable both in hard- and software. And it just looks dawn cool, that is worth something. If you’ve been looking to learn more about robotics, computer vision, or programming, this is a very fun way to ease you into it.

Current pricing in the Creoqode shop is 329 GBP. That is quite a sum of money for something that is basically a sophisticated hobby project. The Kickstarter would have given you a Nova starting from 129 GBP, and the pre-orders were a bit more pleasant on your wallet as well. A price over 300 GBP and a lack of time next to a full time professional job and family would make me think again whether it is worth the investment. It’ll probably just gather dust after I finished the tutorials. Others might be swayed knowing that my code is available as a basis to give you an enhanced rolling start… And in current times, going from zero to hero in programming is worth every penny.

Since I didn’t spend all summer wading through a couple of tutorials, there will be followup bits on what I botched together. We just started peering into the ‘DIY AI’ rabbit hole at this point…

LEAVE A REPLY

Please enter your comment!
Please enter your name here