Monday, February 10, 2014

Concerning SDK selection

First thing to be done when starting working with NAO is selecting the SDK.
I have experienced the problem by wasting spending  the time on trying each of them. So, Aldebaran Robotics propose quite a variety of SDKs for different technologies and languages:
  • Python
  • C++ 
  • Java
  • and even .NET SDK which is not the last one, but I will concentrate on what I have tried. 
Having the most of my background in .NET area for sure I have started with .NET SDK.  Well, first it is Windows based. There is a reason for which you may actually  like Windows - is Visual Studio, nowadays it is incredible and very comfortable IDE (not at all advertising - just my personal opinion). Nevertheless nothing against Windows :) but it is not really suitable for working with NAO robot. 
Pluses Minuses
Variety of languages C#, F#, VB.NET .NET languages are not supported on the robot (just on computer to remotely access NAO)
Small size and easy integration with Visual Studio(included as dll and that's it) As a consequence of just remote access we cannot do fast access using remote module (direct memory access for example).

Java SDK promises support of Eclipse. Included as external naoqi.jar and compatible with any later version of the JVM except on Windows where only the 32-bit version of Java is supported.
Pluses Minuses
Easy integration Just 32 bits version of Java is supported on Windows
I consider Java language as a plus itself as it's wide used and rather easy Rather limited API (original API is C++ based and going deeply still requires knowledge of C++ SDK)

Python SDK - one of the easiest way to program for NAO.
Pluses Minuses
Python-small and powerful Being interpreted language, it might be slow
One of the most complete SDKs Compared to Java or C++ threading is not really well-performing
The most suitable SDK for beginners
Great code readability
Easy integrated with tools that Aldebaran proposes - Choregraphe

The most full framework and I would say one that NAO was born with is C++ SDK.
Pluses Minuses
Running in Linux provides both robot and computer compilation C++ is complicated - requires knowledge of C/C++ language
Linux + C++ SDK allow cross-compilation QtCreator - recommended by Aldebaran - I would say not the most comfortable IDE (again - just my personal opinion)
The most complete API

There are underlined some key points discovered by me by the moment and for sure this is far not a complete list of SDKs comparison, but this is what helped me to select C++ SDK in Linux system. I would recommend to use Linux for working with NAO as it allows easier integration of SDKs and also it is the only system with which it is possible to configure NAO robot through the wire(Local-Link an alternative to DHCP). These are some recommendations any different opinions and advices are appreciated ;)

No comments:

Post a Comment