Misty II Project Directory, Part 1: Community Skills

A collection of community-shared skills and applications for the Misty II platform

Johnathan Ortiz-Sonnen
MistyRobotics
10 min readFeb 6, 2020

--

Since Misty’s launch, the developer community has built and shared a vibrant collection of skills, controller applications, development tools, and other projects for the Misty II platform. Part of our work in promoting these efforts is to make sure these projects can easily be discovered by those who are new to the platform and looking for examples of what Misty can do.

That’s what this series is for. We’ve collected dozens of projects from around the web into lists that are easier to browse than, say, the Google results for a search on “cool Misty projects”. Whether you’re looking for examples to learn how to accomplish a specific task in your skill code, or just browsing to get inspired, this series has something for you.

Credit for the images in the banner collage belongs to developers from the Misty Community.

Part 1 spotlights skills and robot applications from the Misty community. Each entry comes with a brief description of what the project does and how to use it with your robot. Most entries link to public GitHub repositories you can clone or download to your own computer. (Some links open subdirectories of repositories, and when that’s the case, you can download the code by navigating to the top level of the repository and clicking the button to Clone or download its contents.)

The bulk of these projects were built with Misty’s JavaScript SDK. If you’re new to the process of installing JavaScript skills on Misty, you can find detailed instructions in the developer documentation.

The Misty Robotics organization doesn’t officially maintain any of these projects. When possible, we’ve shared links to threads in the Misty Community forums where you can chat with a project’s creator. Also, be aware that many of these projects are experiments that developers have shared as they learn about the platform, and you may find issues or bugs as you explore. But what decent adventure doesn’t require a bit of bug spray? We encourage you to reach out to the owner of a project if you have questions or comments, or just to say thanks for sharing!

Good for beginners

These skills and projects demonstrate some of Misty’s basic capabilities. You can upload and run most of the skills from the Skill Runner web page without editing the code at all, but some projects require customizations like training Misty to recognize your face and updating the skill code before you install it on your robot.

ChinaTimeToLeaveAlarmWhile working on Misty II, Ian and the Misty team needed a daily reminder of when it was time to leave the manufacturer in China so they wouldn’t keep the driver waiting. This skill uses the current time on Misty and plays a car honking sound at the correct time. See the code comments to adjust the skill for your time zone, and check out the blog post for the backstory.
Cute_Sounds — In this JavaScript skill, Misty moves her head to look around and plays some of her default system audio files.
driveObstacle — JavaScript skill that has Misty drive forward and use data from her time-of-flight sensors to navigate around an obstacle. Learn more about this project on the community forums.
Hello-World–-Happy-Holidays — JavaScript skill that you can run to hear a holiday greeting from Misty II. You’ll need to upload the audio assets along with the code and meta files for the skill. Chat about this project in the forums.
getExternalImage — JavaScript skill that gets an image file from a web URL and displays it on Misty’s screen. While basic, this skill is a good primer on using data from the web in your JavaScript skills.
HourlyChime — This JavaScript skill gets the current time on Misty and uses it to have the robot chime every hour. See the code comments to learn how to adjust the skill for your time zone.
lookAround — JavaScript skill that moves Misty’s neck motors to have the robot look around in a randomized pattern.
myMistyDance — More robot footwork. For this JavaScript skill, you can update the code to choose between a waltz or a mosh. Discuss this project in the community forums.
misty-dancing — Update the dance function in this JavaScript skill with your character of choice (check the code for examples) to see Misty do different dance moves.
Misty-Dance Skill — Misty shows off even more dance moves. This JavaScript skill won the latest round of the Misty Dance-off.
nodYesNo — Misty calls on an external API to get a random yes or no response, then shakes her head or nods in accordance. More details in the forums.
paceBackAndForth — A basic locomotion skill that implements the inertial measurement (IMU) drive commands in Misty’s JavaScript API. Run this skill to see Misty drive thoughtfully back and forth.
pretendCoinToss — JavaScript skill that runs commands to have Misty move her head and arms in the motion of flipping an imaginary coin. Learn more in the community forums.
skillManager — This JavaScript project shows how you can trigger skills to start and stop skill from a single “master” skill. The “master” skill runs when Misty boots up to automatically start other skills that you specify in the skill code.
WeatherEyes — Press a bump sensor to see Misty display the current weather in her eyes based on the location you set in the skill code. You’ll need to upload the custom weather image assets (included in the linked repository) when you install the skill.
whoForHalloween — JavaScript skill that gives Misty the ability to help you choose a costume for Halloween. You can add your own images and update the code to include additional costume options. Learn more in the community forums.

A little more advanced

These skills are a bit more complicated, and they may require a bit more work on your part to get everything set up. Some of these projects use Misty’s API to create nuanced interactions between Misty and the humans around her. Others require additional hardware, microcontroller attachments, or integrations with one or more third-party services.

fingerprintScanner — All the resources you need to build a “two-factor authentication” JavaScript skill for Misty. This project uses a custom-printed arm with an embedded fingerprint scanner that sends data to Misty through a microcontroller connected to the robot’s UART serial port. When you run the skill, Misty becomes a security bot who only grants access to those whose fingerprints she recognizes. This directory includes the JavaScript skill code, the .ino sketch code, and the CAD files for printing the custom arm and connecter. Requires the Misty Backpack for Arduino (or, if you have soldering skills, you can use a different Arduino microcontroller). For more information about this skill, check out our feature on the Misty blog.
followFace — JavaScript skill that has Misty move her head to keep detected faces in the center of her field of view. The result is that Misty appears to maintain eye contact with any person she looks at. This is a great example of how you can use data from the robot’s sensors to create engaging and lifelike interactions.
getHousePowerUse — A good example of how you can extend Misty’s capabilities by having her get data from other IoT-enabled devices. In this JavaScript skill, Misty gets the current power from a power meter and changes her eyes depending how much power is currently in use. You’ll need to set up your own power meter to use this skill.
getSerialSwitch — Once you’ve got this project up and running, you can activate a microcontroller-enabled switch to drive Misty backwards. Requires the Misty Backpack for Arduino (or another Arduino microcontroller) for serial communications with Misty, and a button or switch to send the drive signal. More details in the community forums.
googleTTS — Looking for an example that shows how to use Google’s text-to-speech (TTS) API with Misty’s JavaScript SDK? Look no further. You’ll need an Access Token for a Google Cloud Project with the text-to-speech API enabled to use this sample. Once you’ve got your credentials, you can re-use this bit of code in any skill that uses Google’s TTS service.
imgur_image_upload — Shows how Misty can take a picture and upload it to a private Imgur album. You must use your own Imgur album hash and get credentials to use with the Imgur API before you can use this JavaScript sample.
intruderAlert — JavaScript skill that has Misty drive forward and stop when she detects a face. If it’s someone she knows, she greets the person; if it’s not, she takes their picture, so you can get information about who’s hanging around where they shouldn’t be.
Misty-Azure — A JavaScript conversation skill that uses Azure Functions for text-to-speech and speech-to-intent conversion services. Check out the README to learn more about setting it up.
Misty-Concierge-Template — An open-source JavaScript skill template to help you quickly build and deploy skills that put Misty to work as a concierge in industries like hospitality, healthcare, education, eldercare, commercial real estate, retail, marketing, and even museums.
misty-conversation — A simple conversation skill for Misty II. Follow the instructions in the README to set up your own Dialogflow agent and get the credentials you need to run the skill. This project is a popular topic in the community forums.
Misty_CSharp_Skills — A small collection of skills built with Misty’s .NET SDK. Includes code for the TellingJokeSkill seen in the Robo-Comedian video on the community forums.
MistyFacialRec — Misty uses Azure’s text-to-speech service to greet people she recognizes by name. Check out the JavaScript skill code and Azure function code in the repo, and read through the accompanying blog post for the backstory.
MistyRemoteCommandAgent — The skill, server-side, and client-side code for running a remote application that can send commands to one or more Misty robots around the world. The application for sending multiple commands runs on an Azure server, and you use the client module to issue commands via the server. You’ll need to install the Remote Command Agent skill files on the robots you want to use with the service. Check out the post in the forums to learn more.
moveToSound — Another example of using sensor data (this time from Misty’s microphone array) to create lifelike interactions with the robot. This JavaScript skill has Misty use audio localization data to calculate arguments for a drive command that has Misty turn and face the direction of the person speaking.
pubNub — Shows how you can use a PubNub channel to stream data from external services in to (and out of) the robot while running a JavaScript skill. Misty’s API lets you easily send data out to an external service, but letting external services send data to Misty can be trickier. With a service like PubNub, your external service can publish data to a shared location that Misty can poll for updates. At a high level, using PubNub is like setting up a chatroom where machines can talk to each other, and it’s useful when you want an action from a cloud service — like when a user sends a text to a Twilio function — to be the trigger for a set of actions in your JavaScript skills. (Check out our post on Robot Skills and Messaging APIs for details.)
randomWander — JavaScript skill that has Misty roam around her environment, stopping to change directions when her bump sensors indicate an obstacle in her path.
roamInRegion — JavaScript skill that lets Misty roam within the confines of an imaginary bounded region. Update the code file to change the dimensions of the region. Be careful with this one — the robot only makes pivot turns and assumes no obstacles are in her way.
translate — JavaScript skill that integrates with Dialogflow to give Misty the ability to translate a phrase from one language to another. To run this skill, you’ll need to create a new Dialogflow project that uses one of Google’s prebuilt “Translate” agents. You’ll also need to enable text-to-speech and translate APIs for the Google Cloud Project associated with your Dialogflow agent. The skill calls out to a Google Cloud Function to generate access tokens for use with Google’s services. You can find simple setup instructions in the code comments, and there’s a video in the README to show how the skill works.
twilioMMS and twilioSMS — Examples of integrations with the Twilio API that let Misty send MMS and SMS messages to a specific phone number. You must have your own Twilio account credentials and enable MMS/SMS to use these JavaScript skill samples. (If you want Misty to get an update when someone sends a text to your Twilio-enabled service, try publishing the data from Twilio to a PubNub channel, and code Misty to poll that channel for updates. See an example of how to use PubNub in your JavaScript skills above.)
SimpleVoiceCommand — JavaScript skill that integrates with Dialogflow to let you activate Misty with her wake word and command her to change her LED to a new color. Update the skill code and the Dialogflow agent with new custom intents to implement other voice commands.
slamPoseStatus — JavaScript skill that has Misty print the status of her simultaneous localization and mapping system to SkillData debug listeners. Run this skill while using Misty’s Navigation Module to print messages about the status of Misty’s SLAM system in your Skill Runner web console.

We hope this list proves a valuable resource for accelerating your development with Misty II. If you think something should be included here — or if you own one of these projects and prefer to have a link removed — please send an email to let us know. And stay tuned for Part 2 of this series, where you’ll find a directory of skills and sample code maintained by the Misty Robotics organization!

--

--