Introduction to the Drone Journey
This post is the seventh post in documenting the steps I went through on my journey to build an autonomous, voice-controlled, face recognizing drone. There are 6 other posts building up to this one which you can find at the end of this post.
Focus of this post
In this post I am going to pick-up where we left off and look at :
- How to use the Microsoft Cognitive Services Face API to recognize a specific face. Specifically we will explore the face.identify approach.
- How to build the identify approach into your DroneWebServer.js file such that the drone will land when it sees a named person.
I have to admit to facing quite some challenges getting face.identify to work. Using the face.identify capability requires a large number of things to be completed, in a very specific order, before it will work.
Node.js does not make doing things in a specific order easy without nested functions, callbacks and other things. The truth is that I wasted a large number of hours before I realized that the asynchronous nature of node.js was a major source of many of the issues I was running into rather than me misusing the Cognitive Services APIs o any issue with the APIs themselves.
I also found that the online examples sometimes do not really give you the step by step help you might need. this looked to mostly be the case in the Node.JS world as other programming languages seemed much more comprehensive. In the node.js world you essentially get the code to look at and try to understand which does not help with “ordering” issues.
When you add to that it is entirely possible to create things, people for example, with the same name multiple times (without realizing it) you can see where my issues came from.
I did speak with Lukas again at this stage. He told me that he set up his target faces using the SDK console rather than through code so I hit a dead end there as I was determined to try avoid that (I must admit I thought about it ;)..).
This is where my first outreach to someone at Microsoft came. I contacted Chris Thrasher who very kindly sent me some code samples he had worked on. He too found the challenge of things not being called in order which he solved using the “bluebird” package.
Thanks to his pointer and his sample code I identified a spot I was not doing something right which allowed me to move forwards. I want to be sure to say thanks to Chris because without his help I would have stopped at face.similar.
A warning: This is a monster blog post. I decided to put it all in one rather than break it up. Grab a coffee, give yourself sometime and enjoy the ride!
Continue reading The Voice-Controlled, Face Recognizing, Drone Journey – Part 6