i’ll see you back in September
* Real photo ( no photoshop retouching )
According to Wikipedia, “in mathematics, a singularity is in general a point at which a given mathematical object is not defined, or a point of an exceptional set where it fails to be well-behaved in some particular way, such as differentiability”.
If we take that definition and apply it to robotics and more specifically to Artificial Intelligence, we could say that singularity will arrive when technology is able to create machines which are much more “intelligent” than a human being and able to find solutions for problems that are still unsolved, both at a mathematical (algorithms and theorems) and medical level. As that artificial intelligence is able to learn and grow exponentially so will society, getting to a point in which human beings will not be the only major figures writing the future of humanity.
An easy way to understand singularity would be to compare the evolution of the different civilizations that have inhabited the Earth. An inhabitant from Ancient Greece (3000 years b.C) would be surprised at the changes in the Roman Empire society (from 30 years b.C until 476 a.C) the same way one of our great-grandfathers would be surprised at the changes in our present society. In the first example there is a time gap of hundreds of years while in the second one the gap is only of 100 years or less, to a large extent thanks to technology’s progress. The same will happen with us, technology will shortly offer such a great change that at this moment we cannot imagine the society in 50 years time.
Therefore, we could say there is singularity when a society changes so much that previous generations would fail to understand the changes in that new society.
In March 1993, Vernor Vinge presented at a NASA’s Symposium a thesis called “The Coming Technological Singularity” where he predicted that within thirty years, we would have the technological means to create superhuman intelligence. Raymond Kurzweil also believes that in a short time we will have the medical advances needed to reverse the aging process which would mean, in my humble opinion, a radical change in the society we know nowadays.
But to have machines like the ones predicted by Vinge and Kurzweil some important changes must be done at a computing level. Regarding Artificial Intelligence a lot of progress has been made in neural network systems but we are still using computers based in systems from the 50s. No matter how fast our current computers are they still carry out “serial” operations instead of “parallel” ones like human beings do. To get an idea of what we are talking about a human brain has approximately 10 billion neurons and 60 trillion connections while a “typical” artificial neural network, operating in a CPU, does not have more than 1000 neurons.
Following these outlines, we are trying to develop a neural network based on GPU (Graphics Processing Unit) chips which have a high degree of parallelism since their calculation units are vertex. In some cases the computing power of GPUs is over one hundred times a CPU’s.
We are carrying out tests in a Multi-GPU machine formed by 4 Nvidia GTX295 graphics cards (8 GPUs) with a mathematical processing power of 7153,92 Gflops.
Some of Qbo prototypes have a Mini-ITX ASUS board, model AT3IONT-I, installed which graphic chip integrates a GPU. So, if our attempts are successful the neural network will be transferred to each one of these prototypes to be used with some API modules leaving the CPU free for other tasks.
Francisco Paz
We have decided to write this post because we are receiving many emails interested in knowing the current development status of the robot .
We still have to develop and improve some things, and even though our resources are limited, mainly due to the lack of external subsidies and support, we are very close to the final stage. So here you have a little summary about the status of the works we are doing on the robot.
GUI Control Panel: 90% developed.
Conceived and designed for users with little programming knowledge it lets you interact with the robot in a graphic and easy way thanks to direct access via keyboard-mouse-screen or via Server.
During the changing process to the ROS platform it was necessary to touch up some parts of the GUI to make it suitable for new “node” communications of Willow Garage’s platform.
The system has a complete APACHE server installed which allows to access it from a remote location and gives it telepresence characteristics among other things.
Some of the functions you can graphically access to are:
And many more things we will be adding soon…

Partial control panel
API: 85% Developed
Like we said in some other POST we decided to convert all our API developed in JAVA into Willow Garage’s ROS platform. This took us a while but we can confirm that 99.9% is already converted.
For us and we guess for many other people this is the most fun, entertaining and interesting part of the robot and we can add new NODES while we install hardware inside the robot. The easy way in which the ROS platform handles these NODES let us create different robots which are more and more powerful and have new functions that nowadays we cannot even imagine.
We have added Python to programming languages JAVA and C++ because its implementation simplicity makes it perfect to handle some tasks of the robot.
Our aim is to create with your help all the necessary nodes (drivers) of standard hardware to implement them in the API and then in the Control Panel in order to let each user configure their robot with the hardware they want and when they download the software it is already developed by the community and completely installed with the robot’s functions.
Hardware controllers: 90% developed
The controllers development process has been long and laborious mainly due to the continuous tests they had to pass depending on the hardware we wanted to test. Different types of objects have gone through them such as DC engines, more than 10 types of servos from different brands, sizes and torque, ultrasound sensors, temperature sensors, digital compasses, gyroscopes, batteries, accelerometers, etc…

First controller ( 2008, February )
With the aim of making the programming and access to hardware components (servos, engines, sensors…) easy, we have chosen to use the protocole I2C which allows us to directly connect the hardware we want to add and send the requests to the address previously assigned to that component through commands.

Body controller ( 2010, July )

Head controller ( 2010, July )
We will shortly talk in depth about controllers. We are keeping a great surprise for that moment so watch out!
Injection moulds: ( in making process )
This has been the hardest and most difficult step for us. As we also said in some other POST it was very important for us that the robot was attractive and that it had the best possible quality. More than 30 plastic pieces in Polycarbonate + ABS with a polished mirror finish will fully cover Qbo giving him an incredible look.
Next you can see a “fast prototype” piece and the same one made in an injection mould with polished mirror finish. What a difference, right?

Fast prototype

Injection mould ( professional )
Linux Distribution: “GURU MEDITATION PHASE”
Although we have always trusted Ubuntu as Linux distribution for software and hardware development and media we think that it has too many unnecessary packages for the tasks that the robot is going to carry out. In some of our tests, and being faithful to our philosophy: “put whatever you like in the robot”, we have used 2.5” hard drives, pen drives, SSD drives and even Compact Flash cards as storage media. As you can imagine a complete Ubuntu system boots in just a few seconds on a SSD drive but in a few minutes on a Compact Flash.
For all these reasons we are trying to create our own Linux mini distribution for Qbo but we have not made much progress yet because we have very little free time left.
A fast and “realistic” alternative would be to use Ubuntu as a basis (without unnecessary software packages) and start adding only those packages which are necessary for the robot, including repositories in our servers which would gather all the updates made by us or by the community such as “nodes” for new ROS hardware, more developed acoustic models for the recognition engine or new databases for the chatterbox.

Linux Distribution ???
Note: graphics, images or hardware are subject to changes withour prior notice.
From the beginning of the project our Qbo real prototypes, pieces and renders have been blue and white.

White & Blue
But now that we are at the end of the project we would like to choose a second set of colours for Qbo so nobody better than you for this choice.
Here you have some medium quality renders so that you can see the final colour results on Qbo (click on the image to enlarge)
ATENTION: This poll will only be available until the 15th of July. You can find it in the right column of this post.
Thank you so much. Qbo’s team.
AND THE WINNER IS: APPLE GREEN. Many Thanks to ALL

During the initial stage of Qbo’s software selection I could check the amount of tools and “individual” projects on artificial vision, chatterbots and speech recognition and synthesis available on the Internet. Some of these developments were even used by important research centres in their robots.
Every development contributed with something different from others but they all had something in common: they required previous training in order to work optimally.
Speech recognition engines require two types of files: a grammar file and an acoustic model previously trained with different voices and text transcriptions.
Every word in the grammar file must be previously trained in the acoustic model, a very difficult job for a small group of people considering there was not an open-source acoustic model in English available for the community which was big enough to contain the grammar our platform required.
So that you can get an idea we would need hundreds of hours of speech transcriptions from different users in order to create an acceptable acoustic model.
The same happened with chatterbots: many developments but only a few had conversational data bases big enough to have an acceptable conversation and most of them worked by searching for an answer stored in their data base.
In 1950 Alan Turing proposed a test to prove the existence of intelligence in a machine but 60 years later nobody has ever succeeded. In 1990 they created the Loebner Prize provided with 100.000 dollars for the computer programme able to deceive a human jury which has not been achieved yet. Ray Kurzweil foretells this will be done in 2029.
Therefore, at the moment the community has the suitable tools but they do not have enough external support to make them really powerful. Maybe it is because nobody sits in front of a computer with a microphone to read out some sentences and upload them on the Internet without knowing exactly the result of this work. Or, perhaps, these tools do not sufficiently encourage the community to help with their growth.
We can see a very clear example of all this with the language translator of all-powerful Google. Nobody doubts that in this project Google has engineers and mathematicians generating and trying all kind of approximation algorithms, neural networks, natural language and semantics systems. But, despite getting some successful results they are still far from offering a “natural” and comprehensible translation. So, what was Google’s last step to improve its translation system? Asking users for help. Google proposes a translation and the user tries to improve it, that is the sense of this POST: “sharing is necessary to improve and grow”.
What would happen if we integrated and related all these “open-source” developments, a speech synthesizer, a speech recognition engine, a chatterbot and an artificial vision system with a platform able to interact with the outside and at the same time, each platform would share those data with the rest?
Imagine for example that an individual’s platform creates and stores a complete map of the Louvre Museum with artificial vision (SLAM) sharing this map with other platforms through a centralized system. From that moment any new platform placed in that environment would have a previously made map and it could move in that environment.
Now imagine thousands of platforms sharing all kind of data from the conversations stored by the chatterbot, speech transcriptions, objects, maps, images, gestures…and all this being updated on real time thanks to neural networks or learning algorithms.
Would all that amount of information let us create enough patterns so that the platform could learn and interact by itself?
My first intention when I started this project was to learn about robotics as much as possible so I did not pay much attention to other API’s or development platforms on the Internet assuming that the development of communications between hardware and software devices would begin from the start.
Currently, since we have our own API developed by TheCorpora, we are starting to have the time to play with other platforms and we are paying special attention to the one developed by Willow Garage.
Our first impressions on the integration of the ROS with our robot Qbo are very positive (maybe too much).
The first step was the installation under Linux of the ROS platform’s modules on the PC board of the robot following the “wonderful” tutorials on the project’s site. After that we developed a module which communicates our hardware controllers with the ROS. Finally, we just had to read the data of the robot’s components (sensors, motors, servos, battery…) from the ROS, which was really easy.
ROS & QBO: Testing servos with Qbo’s head & Wiimote
Will Qbo be controlled by the ROS system? Time will tell, but our current API modules are converted into ROS easily and quickly every day.
Congratulations to Willow Garage for such wonderful work. If our robot Qbo is finally executed with ROS we hope we will be able to do our small part for this powerful and amazing platform.
ROS & QBO: Testing motors with wiimote
ROS & QBO: Testing ultrasonic sensors
You can watch some other videos on our channel on YouTube.
Note: We will be very soon answering all the questions and doubts you have sent to us via e-mail. We are very excited about the reception this project has had so far, mainly thanks to hundreds of web pages, blogs and other means (twitter or facebook) which have publicized us. From our little company we would like to say THANK YOU to all of them for their interest and support. We hope not to disappoint you!!
( Click on image for HIGH-RES Picture )
Qbo Specifications
HEAD
BODY
SOME OF QBO’s SKILLS:
AND MUCH MORE COMING SOON…
During the last days and in great part because of the launching of the Blog, I have spent the little free time I had answering emails and preparing some lectures I will be attending shortly as a guest.
This is the reason why I have not been able to update the Blog but I promise you that we will be presenting Qbo in society very soon.
Meanwhile, we are working in some videos where we will be showing the “great potential” of the robot at a software level and as you all know it will be an open-source robot. It will recognize faces and objects, it will detect their depth and track faces and objects in real time depending on their degree of proximity and “weight”; other of its functions are object and face compilation and real-time loading, colour detection, gesture detection and analysis according to previously assigned patterns (we are currently developing a detection programme for the deaf-mute alphabet which will be dictated by the robot thanks to a speech synthesizer). We will also show how to create grammars with the robot, how to change its voice and add new sentences as well as how the chatterbot works according to Markov’s fourth law (still under development but very advanced). And this has just begun, Qbo has many other surprises which will be soon revealed in this Blog.
Thanks to everyone for your support in this difficult project.
When I started I was sure that this robot had to be “realistic”. I did not want to develop a biped robot or a robot with arms because I knew I would fail due to the lack of resources. Once I had that point clear, I focused my efforts on thinking what I would like to have in my own house. Some of my first ideas were that it should be small, something similar to a cat or a dog, it would move quickly in order to interact with me in a logical way and it would look nice to fit in my environment. However, the most important thing was being able to experiment in my own robot with all the information about artificial vision, speech recognition and synthesis which was under an open source license on the Internet and was used in research robots. It was also important that as the hardware improved, my robot would improve along with it and that every component was as much standard as possible (aim nearly achieved), that is to say components which were easily found in shops for two obvious reasons: first one because they were already made so I did not have to make them and second one because their price is generally low.
My other goal was being able to sell the robot in the market at a reasonably low price in order to be affordable for as many users as possible and thus create a powerful community around it. On the other hand, as the software, diagrams and firmware of the boards which control the components of the robot would be distributed under an open source license (not determined yet) any user could decide to create his own.
Considering all the information above, it seemed easy to start but that was not the case. How would the design be? How would I turn that design into a 3D software? What about the hardware components? Where would I find people to help me? I started to realize that finishing the project would not be easy at all because I would have to deal with significant expenses to do research, create prototypes, develop software, design and make controller boards in order to release it into the market at a price as much reduced as possible. Many designs went through my head but none was convincing enough. However, one day, while I was in a shopping centre, I laid my eyes on a vacuum cleaner (yes, that is right!) which was displayed horizontally with all its accessories and it caught my attention. I opened it and I realized it was perfect to fit all the components I had in my mind (motors, PC board, sensors, performers and even a battery). Then I thought that if it was in a vertical position with the wheels behind and if I added an idler wheel in front it would have a really attractive body and I would only have to think about the head. “Before I go on and to avoid misunderstandings, after 5 years and hundreds of changes in the 3D design, the current look of the robot is far away from that vacuum cleaner I saw in the shopping centre, actually that vacuum cleaner did not have more than 6 plastic parts and Qbo is esthetically made up of more than 30 plastic parts”.
Thanks to this unexpected discovery I could picture the body of the robot but I still had to think about the head. I was sure about two things: it would be big because with no arms or hands it would be the only element which would interact and it had to be attractive but completely different from a real human face. Personally, I do not like creating robots which look like humans (I will talk about this in future posts). Considering those aspects I had to decide what components would be part of the head since they would affect its design. It was obvious that the robot had to be able to interact with a human being so it was necessary to set microphones and web cams to receive data from the outside, some speakers to transfer information and some elements which could show some kind of emotion (the most difficult part).
Some of Qbo’s “current” skills:
Stereoscopic vision: webcam calibration (2), depth, face, objects and colours recognition, face and object tracking, map generating (under development)
Speech Recognition System
Speech Synthesis System: it offers a general framework for building speech synthesis systems. Only available in English at the moment.
Thecorpora’s API: Developed to interact with the hardware components of the robot and third parties’ software.
WEB control panel: the robot is accessible through web explorer.
Internet connection through a WIFI controller placed in the head. Real-time software and firmware update.
Obstacles: the robot avoids crashes and falls thanks to ultrasound sensors.
Autocharging: auto-charge battery (testing and developing phase)