RSS Feeds


mod_vvisit_counterThis week115

Designed by:
SiteGround web hosting Joomla Templates
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:

  • Aquila could only run on Linux
  • Due to increasing number of modules and their dependencies, the compilation and installation process became rather long and quite challenging for non-technical users
  • Aquila modules could not be used individually and could not be used without their graphical user interfaces, this made the whole design non-modular and non-scalable
  • Some of Aquila's modules, e.g. Vision were quite unstable

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!!!

You need to a flashplayer enabled browser to view this YouTube video

The following are some of the main benefits of developing in Aquila software architecture:

  • Performance - distributed module running heterogeneous CPU-GPU code are able to take a great advantage of available resources.
  • Integrability - existing modules and GUIs can be easily integrated to form new modules of higher complexities.
  • Modularity - module GUIs and modules are completely independent. Modules are fully functional with or without GUIs.
  • Scalability - modules can run on Linux, OSX or Windows across any number of computers and using any number of GPU devices available. The Aquila architecture makes it easier to develop modules that use are able to scale-up with increasing computational demands. For example, ERA module is able to spawn multiple SOMs on multiple computers dynamically based on its needs.
  • Usability - intuitive, easy-to-use, dynamic graphical user interfaces loosely coupled with modules. Support - we are happy to provide free technical support to promote the research in cognitive robotics and heterogeneous CPU-GPU computing.
  • Support - we are happy to provide free technical support to promote the research in cognitive robotics and heterogeneous CPU-GPU computing.
Last Updated on Friday, 22 February 2013 21:16