I have experienced the problem by
- Python
- C++
- Java
- and even .NET SDK which is not the last one, but I will concentrate on what I have tried.
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 ;)