|Aquila 2.0 - Software Architecture for Cognitive Robotics|
I am extremely excited to announce that the new Aquila 2.0 has been released. This release is by far the most significant one in the history of Aquila project.
Let me rewind the clock three years ago when the very first Aquila was born. At this time, Aquila was merely my own little GUI (Graphical User Interface) application that was helping me with my PhD research. Aquila was made to simplify the work with the iCub humanoid robot, back then, the latest addition in our laboratory. At this time, I have just finished collaborating with European Space Agency (ESA) and one of my friends, who knew about the work with ESA, sent me a paper about accelerating neural networks with Graphics Processing Units (GPU) showing impressive speedups over CPU implementation. This was mainly because neural networks are inherently parallel and thus better suited for parallel GPU processors. The whole idea of using GPUs in all my future research was very exciting and I started looking into it more and more, which resulted in Aquila adopting NVIDIA CUDA parallel computing architecture. From this point on, everything that was implemented in Aquila could use CPUs as well as GPUs. If a user did not have an NVIDIA GPU device installed on his/her system then a CPU mode would still work although usually significantly slower.
Over the time, I developed new modules such as Self-organising maps (SOM), Multiple time-scales recurrent neural networks (MTRNN), Sequence Recorder, Vision, Simulator and others. My colleague Anthony Morse have later joined Aquila project and started developing new modules too, for example, Echo state networks (ESN), Modi and Epigenetic robotic architecture (ERA). Not to forget Chris Larcombe, who developed the Abstraction-reaction-accumulator (ARA) module inspired by early cybernetics research.
Aquila was growing in size and was becoming increasingly used by our team, students as well as other researchers in different countries, e.g. USA, Italy, Germany, Turkey. Aquila made things easier, however, not everything was as good as it sounds. There were major problems on the horizon such as:
I am deliberately skipping a lot of design changes in the previous Aquila 1.x versions, however, it is worth to note that we attempted to address the above issues the easier way but never really succeeded until now. We realised that if we want to keep the Aquila project alive and growing, we need to make fundamental design changes, which we proposed almost exactly a year ago in this post and in this webminar, which Tony and myself presented while I worked at NVIDIA research in Santa Clara, California. The new design needed to address all of the above issues and I am glad to say that it did. The new design is very simply and I believe that it is very elegant too!
Aquila 2.0 is now able to run on Linux, OSX and Windows and its dependencies are only Qt (graphical user interfaces), YARP (communication over network) and CUDA (GPU-accelerated code). Aquila modules are compiled separately from Aquila. These so-called Aquila modules can run anywhere on the network in any number of instances and on any available NVIDIA GPU devices. All these modules can be easily managed and visualised via Aquila, which apart from many other features also provides graphical user interfaces for the modules. Aquila modules can be used either from the terminal (just as any other module from iCub repository) or via Aquila with an additional advantage of module management and visualisation features, which were very desired. Aquila modules can spawn other modules and use their functionalists.
Aquila 2.0 was designed to be not just very easy to use but also easy to develop for. Aquila 2.0 provides many different visualisation tools, modules and libraries that can be simply reused. For example, Module Generator tool lets a user to generate his/her own heterogeneous CPU-GPU module together with its graphical user interface. This is all done by one click of a button. After this, the only thing that a developer needs to do is to write his/her functions and add connections between them to their interfaces. Have a look at the video below, which is not very exciting on its own but it shows that it literary takes less than a minute to download, compile, install and Aquila and also to create a new module. All done within a minute!!!
The following are some of the main benefits of developing in Aquila software architecture:
|Last Updated on Friday, 22 February 2013 21:16|