What is a robot SDK? Should you use one? And how do you tell if one is good? Here are the 8 qualities of an excellent robot SDK.
It’s hard to choose a programming system. It’s a big decision. You know that you are going to spend hours, weeks, months, even years with the same programming interface. You don’t want to tie yourself into software which is going to make your life difficult, do you?
The first question you need to answer is: Do I want to program my robot online or offline?
Both options have their benefits. But, as we’ve explained before, offline programming has some huge advantages which blow online programming out of the water. Plus, a good offline programming system will allow you to program both offline and online, so it’s a win-win option.
Let’s say you’ve decided to look into offline programming. Now you run into a tricky question: Should you use an SDK? And, if so, which one?
In this article, we explain what a robot SDK is and we introduce the 8 qualities of an excellent robot SDK.
What is a Robot SDK?
What is an SDK? This is a common question. SDKs are often confused with related concepts, particularly API and IDE. In order to understand what a Robot SDK is, it’s necessary to be clear on the differences between these three concepts.
SDK: Software Development Kit
A Software Development Kit (SDK, also known as a Devkit) is a set of software tools which allows you to develop applications for a particular software environment or hardware device.
For example, the Android SDK allows developers to create apps for android phones. The Coszmo SDK allows developers to program the Cozmo toy robot. The Cognex Mobile Barcode SDK allows developers to create barcode reading applications for Cognex cameras.
As you can see from these examples, most SDKs are specifically targeted at one product or application. This creates a problem when it comes to robotics, which I’ll explain in a moment.
API: Application Programming Interface
An Application Programming Interface (API) is a single software library or set of libraries which contain the functions needed to perform a particular task. We often use them in robotics to interact with a specific hardware component.
IDE: Integrated Development Environment
An Integrated Development Environment (IDE) is a software application which helps you to write programs effectively. You could think of an IDE as a very helpful text editor. IDEs often include compilers, a text editor, debugging support, and tools to automate common tasks. Some IDEs support multiple programming languages whilst others are restricted to only one programming language.
SDK vs API vs IDE
Often, SDKs come packaged with both APIs and an IDE. This makes it easy to confuse the three concepts.
The basic difference is that SDKs are complete development environments. An API is just a single interface, and an IDE helps to write programs. Just remember this useful advice: “All SDKs contain APIs, but not all APIs are SDKs.”
The Problem With Most Robot SDKs
Robot SDKs are simply SDKs which can be used to program robots.
The problem is that most robot SDKs are only designed to interface with one specific robot or hardware component. Often they are also limited to specific applications. This makes them inflexible.
Here’s a typical (fictional) description of a robot SDK: Imaginary SDK 0.2 enables programmers to use Language 1 or Language 2 in Windows 8/10 to control the Imaginary Robot Controller v1 for X, Y, and Z applications.
That’s quite restrictive, isn’t it!?
What if you want to use a different programming language? What if you want to use your robot for a different type of application? Suddenly, you have to employ some time-consuming and complex programming techniques (e.g. writing extensive wrappers) to just program one robot to perform one task.
8 Qualities of an Excellent Robot SDK
Thankfully, not all robot SDKs suffer from this problem. It is possible to find a robot SDK which is very flexible and makes it easy to program a wide range of applications on any robot.
There are 8 signs that a robot SDK is a good one:
- Various programming language options — You should be able to choose which programming language you want to use, with inbuilt support for popular languages like Python, C++, Matlab, etc.
- Offline programming and robot simulation — The SDK should allow you to program the robot offline and test your program on a simulation of the robot, which reduces downtime.
- Allows you to test the SDK for free — Brand-specific robot SDKs often require you to pay upfront. This is risky because you could end up locked into a bad programming environment.
- Allows you to verify project feasibility before buying a robot — Most SDKs require the physical hardware to test your program. A good SDK should allow you to test your robot application before purchasing anything.
- Can be used on many different robot brands — The major problem with most robot SDKs is that they’re locked into one specific robot brand. You should be able to program any robot with the same SDK.
- Makes it easy to switch between robots — If you decide one robot isn’t suited for your task, you shouldn’t have to throw away all your existing code. The SDK should make it easy to transfer the program to a new robot.
- Can be used with other software — No software can do everything perfectly. It should be easy to integrate the SDK with your favorite CAM package or application-specific software, like Slicer for 3D printing.
- Is affordable — Some brand-specific SDKs are surprisingly expensive (I say surprisingly because usually, you’ve also invested a lot to buy the physical robot from the same brand). A robot SDK should be affordable.
Which Robot SDK Has All of These Qualities?
We didn’t like all of the restrictions imposed by most robot SDKs. So, we designed RoboDK to overcome the problem.
RoboDK is a flexible robot SDK which has all of the 8 top qualities and more. It allows you to program a huge range of robots from many different manufacturers. It supports the most popular programming languages and makes it easy to test your application on a simulation before purchasing anything.