My idea of a robot’s system is that it is to be based on an open architecture whereas the robot is divided into several functional blocks that interact together through a main Artificial Intelligence Processing Unit or AIPU.
The functional blocks are to communicated with the AIPU based on a predefined system-wide communication standard that enables complex functionality to be implemented in a functional block and only its results processed in the AIPU.
An example to illustrate the above is as follows. In order for the system to execute a voice command as this “Wave your hand”.
A functional block connected to a microphone system processes sound and converts it to a statement, this is communicated to an AIPU which in turn sends this statement “Wave your” to a grammar processing functional block which would categorize and comprehend what the user is trying to do. The AIPU at the same time, sends commands to the directional microphone functional block which gives returns the coordinates of the speaker, the AIPU then sends a command to a electromechanical system that will turn the robots head to face the speaker. The AIPU would figure out that the user is making an order for mechanical movement of waving a hand and as such the AIPU would communicate with an electromechanical functional block that controls the robotic arm.
This system architecture enables each functional block to be designed independently of the AIPU in terms of the hardware it runs on and in terms of the programming language used to implement the functional block. The only requirement is that all functional blocks adhere to a pre-defined communication API which is used to define communications with the AIPU and if necessary, other functional blocks.
This enables a core team to focus on the functionality and intelligence of the AIPU while leaving functional blocks to be developed by other teams or even a 3rd party. This also means that different teams can work on different functional blocks independently of each other.
- AIPU (central intelligence processing)
- Speech Recognition Block (provides information on a recognized sentence along with recognition accuracy)
- Directional Microphone Engine (provides DB levels and direction that identifies the most likely location of a speaker)
- Object Recognition Engine (gives information about the object in the field of view)
- Face Recognition Engine (identifies people)
- Lip/Speaker Recognition Engine (identifies if the speaker is moving his/her lips while speaking)
- Still Body Motor Engine (turns the bot in specific directions)
- Room Scanning Engine (Identifies how many people are in a room)
- Location Engine (identifies the current location/room of the bot)
- Navigation Engine (creates a walking path to reach a certain room, this would be similar to a google maps navigation)
- Navigation Motorization Engine (contains multiple subsystems that implement movement, obstacle avoidance…etc which gets the bot to the destination that the AIPU gave it based on the map the AIPU got from the Navigation Engine)
- Text to speech block (makes the bot speak)
- Encyclopedia Engine (fetches and stores facts)
- History Engine (stores information about previous conversations had with the user)
- Gesture Recognition Engine (not sure of this just yet)
- Automation Engine (can automatically identify and automate the home) I can implement this without requiring any pre-configuration or settings, I can get the bot to scan the house for a home automation controller, read al the devices and rooms listed in it (granted they are correct) and then it can automate them just like that. This would not require us to define in the bot that Light ID 15 is the living room light and when the user wants to control it then send a command to that ID.
- Internet Engine (looks things up online and gives feedback)
- Communications Engine (has the capability or making calls or sending SMS)