How to build AI bricks?
by Jaro
... I will talk about cloud robotics and AI (artificial intelligence) bricks concept, suitable for modular programming in the field of cloud robotics.
It is mentioned in the blog description on the right side of this site, that research in the Center of intelligent technologies (CIT) is split into the two major streams. First of them is robotic emotions. Basically, it isn't the field, which I am involved in. The second one is cloud robotics. This is my favorite subfield in the artificial intelligence and robotics. Therefore, it is not surprise, that in this blog post, I will talk about cloud robotics and AI (artificial intelligence) bricks concept, suitable for modular programming in the field of cloud robotics.
The influence of cloud technology in robotics
Rapid expansion of cloud technologies along with increasing speed of the Internet and spreading relatively cheap smart devices and sensors have created an environment for developing modern cloud-based applications. These applications are usable not only by humans, but also by smart agents like a robots, smartphones, smart vehicles, sensors etc. The idea of harnessing cloud technologies and its benefits for smart devices (agents/robots) has arose in 2010, when James Kuffner named it - CLOUD ROBOTICS and formulated a definition.
Cloud robotics is a new developing approach in robotics, which massively use cloud services, cloud data storages and other internet technologies. These internet technologies allows massively usage of parallel computation and sharing huge amount of data. Main goal of cloud robotics is development of infrastructure for robots, which allows communication between robots, recording, uploading, sharing and downloading knowledge and also solving particular task in the cloud environment.
Using cloud technologies in robotics allows migrate computational difficult tasks from the robot’s on-board computing to the cloud environment. So the entire computation is performed on the cloud site. The only one requirement for secure that, is the fully function Internet connection for robots.
By connecting robots to cloud environment and allowing use them cloud services, is possible extend their capabilities. From that point of view, smart agent is not more limited by own computational performance or by memory capacity. However, there are still task, which cannot be migrate to the cloud. These critical task must be executed in real time. For instance obstacle avoidance, robot’s movement, stability etc.
Although cloud robotics is relatively young field, till now was finished various successful projects, which could be found on the Internet. We can mention project DAvinCi, cloud-based project for robot navigation in the unknown environment and object grasping using Google object recognition engine or project RoboEarth.
AI bricks concept
In my research I am focusing on cloud robotics. Mainly I am working on so called AI bricks. In my research each AI brick is considered as a software module (library) deployed in the cloud environment. Each AI brick should be responsible for solving one particular specific task. For instance AI brick, which implements backpropagation learning for feed-forward neural networks, or AI brick for clustering, image processing etc. Since we want use advantages of cloud computing in robotics, many of AI bricks implements methods suitably for robots.
If the AI bricks should be programmed in conformity of cloud computing principles, must fulfill following requirements:
1. Each AI brick has to be implemented either as a software library attached to cloud service or as stand-alone worker role. Note: In Microsoft Azure cloud is worker role equivalent to back office.
2. Each AI brick has to completely solve its task. Task can solve itself or can collaborate with other AI bricks.
3. Each AI brick should have capability to communicate with others AI bricks or programs. It means that AI brick should be able receive inputs from others AI bricks/programs and send them outputs.
4. Each AI brick must have exactly defined desired inputs and outputs.
5. Each AI brick must be scalable. This requirement means that program should be implemented the way to run multiple instances on different virtual machines or use multiple threads running on various CPU cores.
6. Data stored in cloud storages must be synchronized between instances of the same AI brick deployed on different virtual servers.
It is necessary emphasize that AI brick concept creates a structure of software libraries or cloud worker roles deployed in cloud environment. If AI brick is implement as a software library, should be attached to every new cloud service, which uses function of AI brick. (See Fig. 1)
Fig. 1. AI bricks implemented like a set of software libraries with an example of attaching to new program.
In the case of AI brick is implemented like a cloud worker role, must be referenced in every cloud service, which uses functions of AI brick. (See Fig. 2)
Fig. 2. AI bricks implemented like a set worker roles (wr) in the cloud service. Figure shows example of communication between agents and cloud services, between cloud services and AI bricks implemented as a worker roles and between AI bricks.
New cloud service usually implements more complex program, which uses functions and task’s solutions provided by referenced AI bricks. New cloud service tends to support communication between implemented AI bricks and connected smart agents. (See “PROGRAM” block in Fig. 1 or “Cloud service program” blocks in Fig. 2)
Implementation of AI bricks
In last few days we tested both mentioned methods for implementing AI bricks. Very straightforward approach is implementation as a software library and attach them into the every new cloud service which will use the library's functions. We see disadvantage in the case that our new cloud service use the only one function from the library, the entire library must be attached. Moreover, this way we are creating many copies of the same library in the cloud environment, used every time only by one cloud service.
The second method seems to be more convenient. However, implementation of cloud services as a library is much difficult. The biggest problem is securing proper communication cloud services, proper addressing of function in the cloud library and also parameter passing to the function in another cloud service.
Communication can be secured using Simple Object Access Protocol (SOAP) protocol, REST API, Windows Communication Foundation (WCF), Service Bus or simply by using cloud data storage – queue storage and cloud tables. We tested two communication means. In our experiments we proved that building communication between cloud services using queue storage and cloud tables is possible, but is not very comfortable for programming and maintaining. More suitable is harnessing service bus technology, which is easier for implementation and more straight for maintaining. In contrast to the first mentioned method, we are able to deploy every library only once as a cloud service. Also these deployed services could be harnessing by many other services and applications.
Jaroslav Ondo















