j.a.r.v.i.s.

Imagine being able to have a conversation with your 3D printer much in the same way that the Tony Stark character of Iron Man did with his butler-esque virtual companion J.A.R.V.I.S., as voiced by the very talented Paul Bettany.  How cool would that be?

jarvis

So I thought I’d work on an upgrade to my Robo C2 printer to add this capability.

Amazon Echo (Alexa)

Fortunately, Amazon has a product called Echo with an underlying personality & service named Alexa. Since they’ve made the source code and service available to developers, I’ll be using this to get started. For the commercial product, you’d say “Alexa…, what’s the local weather?”, perhaps and she might “read” a brief report for you. And by “read”, I mean:  “a text version of the weather report queried response would be rendered into sound using a female’s voice and played on a speaker”. (We love to anthropomorphize these things now that computers are getting so smart.)

Raspberry Pi

The Robo C2 printer has a Raspberry Pi 3 inside and I’ll be incorporating this into the project; I’m fairly familiar with how this computer works.

Since the price of the official Amazon Echo is about $100, this strikes me as being too expensive since all I really need is a single board computer, a microphone, a storage card and a battery. The Raspberry Pi Zero W fits that description and weighs in at a mere $10.  Technically, I’ll also need a speaker but since I’ve just upgraded the Robo C2 with sound events then I intend to push my generic Echo’s sounds over to the printer to play them there. This will help in the illusion that I’m talking to someone/something “over there”.

Wake Word

The Echo technology out-of-the-box recognizes the spoken word “Alexa” so that it might then attempt to turn your subsequent spoken commands into something recognizable, a “skill”. I’ll be updating it to recognize the spoken word “Jarvis” instead.

Custom Skills

Beyond the included skills, the service allows new user-defined skills to be created and then they’re part of Alexa’s talents, if you will. I shall be creating custom skills so that I might then do a number of tasks with the printer, hopefully to include sending a new job to print. It would also be good to know the status of an existing job without necessarily reading any of the available displays/consoles for this information.

From what I understand, these new skills are a collection of intents and utterances with optional slots as variables.

OctoPrint

The underlying printing software behind-the-scenes on this printer is called OctoPrint. It’s suggested that it’s already compatible with Alexa so we’ll see if that’s accurate.

Size

It should be rather small and handheld. The board itself is about the length of three quarters. I have two different microphones for this—I’ll try to use the smaller of the two. Initially, I’ll use a barrel type of USB charger but I’ll then knock that down to a smaller style when that’s working. I’ll likely solder the accessories if they seem to be happy. And then finally when I’ve settled on the accessories and such, I’ll design and print an enclosure for it. I may or may not include a wake-up button.

PiZero

Custom Voice

I would like to replace Alexa’s voice personality with sound events from the J.A.R.V.I.S. movie character. I’ll see what it will take to make this happen. By keeping his responses to a few generic ones, I might just replace the outbound render-to-text routines so that they just pull from the stock responses as recorded and stored.

Progress

  • The sound event upgrade is now on the printer (imagine a Robo C2 printer making R2D2-like sounds to let you know when something has occurred)
  • I have all the parts I need for Jarvis
  • I’ve created a developer’s account on Amazon and have created my Alexa service for Jarvis
  • I have the Raspberry Pi Zero W computer’s operating system installed
  • The AlexaPi source code is installed and the service is running
  • The microphone appears to be working as expected
  • I need to read through the various tweaks required since I’m running on a Raspi Zero instead of a different version
  • Re-purpose the onboard LED on the Pi to work for the voice recognition notification
  • I need to install the new wake word for “Jarvis” instead of “Alexa”
  • I need to create one or more skills for things I need the printer to do like report status, turn off/on the webcam or to start/stop a job
  • Record and store patterned responses from the Iron Man series of movies to be played on the Raspi 3

 

Advertisements

a robot which builds robots

I suppose the problem with buying a 3D plastic printer is that it makes the owner imagine all sorts of modifications to that very same printer, especially so when it’s largely open-sourced in the first place.

robo

I must admit that owning this Robo C2 printer has been a blast. I’m now past the let’s print some demos phase to the let’s print our own designs next step. And part of that design process is envisioning a better printer from this one. And what better way to modify it than printing some 3D parts, right?

So, here’s a list of some of the current things I’m doing with it.

Sound Events

It’s a wonderful printer and often, just because of the sounds you get from its collection of servo/stepper motors, it vaguely sounds a bit like R2D2, the cute robot of Star Wars fame. I’m working up a modification to add sound events from a variety of Star Wars WAV files related to R2D2.

As themes go, the movie Iron Man includes an AI character named J.A.R.V.I.S. (as voiced by Paul Bethany) who had some fun dialog with the Tony Stark character (as played by Robert Downing, Jr.) I’ve often thought that it would be sweet to add a sound event theme set based around Paul Bethany’s voicing of J.A.R.V.I.S. as well.

Video Feed and Time-Lapse Photography

I’ve just picked up a Pi NiOR camera which I’ll be adding to the printer. Next, I’ll need a longer ribbon cable, some suction cups and a designed/printed part to hold the camera itself inside the chassis.

Given the resolution of the camera, I’ll likely need to upgrade the microSD card inside to accommodate the files from the streaming activities.

Enhanced Spool Feeder

The out-of-box spool feeder seems a bit minimalistic to me. I’d like to upgrade that with a feeder which allows the spool to spin more freely. I imagine that the part needs to be more rounded at the top.

Heated Bed

The Robo C2 doesn’t include a heated bed in its design like some of its more-expensive Robo alternatives. So I’d like to machine an aluminum bed with a heating element and add this to the system.

Side-to-side Conveyor Bed

The maximum build size for the Robo C2 is a mere 5″x5″ square at the base so that’s a bit restrictive. There are techniques for joining a series of smaller parts (say, to make a sword) but I’m guessing that a possible approach is to remove the two blue side windows and rig up a conveyor system which is accurately positioned left/right as required. In this way, a very long part could be printed.

Remote Control via Joystick

I’ve purchased a Raspberry Pi Sense Hat which includes a small joystick control. I think I’d like to write something so that, using remote GPIO, I could then control the stepper motors of the printer indirectly via wi-fi.

OctoPrint Plugins

The underlying web server which runs on the printer is called OctoPrint and since it’s open-source, there are a variety of plugins for this already. I think I’d be interested in writing some plugins, especially so that someone may pause jobs in the middle so that internal components may then be assembled inside.

I’ll likely add some SMS notifications so that I can remotely know how a print job is going.

Voice Control

I also like the idea of adding voice control to the printer. How awesome would it be to just tell the printer to do something?

So basically, since the Amazon Alexa code is completely available and can be setup on a Raspberry Pi 3 computer, I can imagine then interacting with this piece (as installed on a Raspberry Pi) and having it direct activities on the printer itself.