This article is a high level discussion on where you might use various Microsoft Technologies in the field of robotics. I will begin with a side pet project I’m kicking off to get more familiar with some cool tools and tech I’ve lately discovered so I can hopefully get assigned to some really cool projects at work, including drones.
Advanced Robotics Requirements
Lets start by defining “Advanced Robotics”. I view advanced robotics as autonomous robots which are able to perform value-able tasks on their own. Advanced robots typically include computer vision along side other sensory hardware as part of their ability to interact with the world autonomously. There are some key high level requirements around building advanced robots.
- The Robot itself
- Sensory Systems
- Actuator Systems
- Intelligence Systems
- Connectivity Systems
- Power Systems
- Mechanical Systems
- The Management System
- Registering Robots
- Keeping track of robots
- Collecting data for improvement
- Maintaining Robot Security
- Live Diagnostics and management
- The Development Ecosystem
- Intelligence Algorithm Development
- Piping Code Development
- Management System Development
- Testing Systems
The above is not a complete list, but you should generally get the idea from this.
So where does Microsoft technology come in?
The management system is easily developed in Azure with the IoT and Cortana Analytics Suite. The amount of boiler plate code you can roll quickly with these tools makes it ideal for covering the cloud aspect of the problems. But what about the robot itself? The robot is likely owned primarily by custom built hardware, intelligence hardware by NVidia, and communications from Verizon or similar. The software deployed to the robot is likely built on an Linux box using C++ in development environments built by NVidia. Not entirely a whole lot of Microsoft tech in there…or is there?
Building Intelligence Algorithms – GPUs
Lets dive at this closer. To build advanced robotics, you are including sensory data likely along side imagery data. That data is typically a ton of data, especially when arranged for machine learning purposes. This is a perfect workload for distributed compute or GPU compute (probably distributed GPU compute is best). Well you have a few options here…
- Azure GPUs – Private preview
- Rent NVidia server grade GPUs only when you need them. Use Docker to deploy a Tensor Flow dev environment on top of it and remote desktop in.
- Most economical option
- Amazon GPUs – Generally Available
- These are virtualized. Read this article on those detriments.
- On Prem – Expensive Sunk Cost
- You have to purchase and build this yourself. Can be pricey. I’m building a consumer grade one for myself, and will be spending ~$1,600 and only get 2 pascal cards. I will still need to use Azure’s GPUs for some of my day job workloads.
Building Intelligence Algorithms – Hadoop
So I’m not promoting this, I’ve just seen it done. In fact you could theoretically roll a hadoop cluster with GPU, but I don’t know, I haven’t tried it. The actual infrastructure behind Hadoop is a bit complicated to set-up, but thats where again Azure plays a really good strong role in 1 button click deploy Spark Clusters with R and python enabled out of the box which can be configured in a single connection string box to any HDFS compliant storage. By the way, Azure Data Lake and Blob storage are both HDFS compliant. Once you are done building your algorithms, shut the cluster down and you are done!
Storing your Training and Audit Data
Training and audit data for these scenarios is going to be huge. Azure offers cheap geographically distributed reliable data. I don’t even both storing anything on premise anymore. I have 12 TB in RAID next to me right now, but its difficult to share and secure with my colleagues who work all over the world. Not to mention I’m limited by my bandwidth and not Azure’s. Since I am going to store training and audit data in the Cloud, It makes the most sense to do my model development where my data is.
This is often something that needs to happen. We have some raw data, need to do some manipulation on it to get it prepped for training. If you create a Data Factory Pipe and an Azure Batch job, you can automatically provision hadoop clusters, munge your data in hadoop or Batch, and then drop it into a different blob for usage. You can even have it send your data scientists a text message using Azure Triggers when its ready for them.
Advanced Robotics is just that, advanced. Often it is easy to forget about all of the other aspects that goes into building robotics of this nature. So next time when somebody asks “Well what does Microsoft have to do with Robotics?” Pretty much everything except the physical robot itself, and even then, many of the algorithms that drive the actual intelligence of the robot are more economically developed in Azure.