Log directory is not writable - please CHMOD e107_plugins/log/logs to 777
Robot internships still available (sticky item)
Both robot internships (see this post here) are still available. So, although they are downloaded over 80 times, don't be afraid that the position is already fulfilled. The internships will be out our company in the Netherlands, which means that international students in the Netherlands are most welcome, but that students from abroad have to think about housing, visas, daily expenses and recognition of the internship as a master project. The internship very likely involves travel within Europe, which becomes also more complicated if you need a visa.

Don't wait too long, and don't be afraid to apply. You will have ample time to become accustomed with the subject. This is why it is a master project, which on most universities does take minimally 6 months. Speak to your supervisor at the university and go for it.
Anne van Rossum on Friday 22 January 2010 - 09:10:18 | Read/Post Comment: 0
Boosting
You might think you know programming languages, from VHDL to Scheme to Java, however most of the times, knowledge of the language itself is just the beginning. This week I spent three days creating a subsumption architecture using the Boost Graph Library. The latter is part of the Boost libraries, that are such an entire source of additional knowledge on top of ordinary C++ know-how.

Over time several robot architectures have been implemented. I will leave out very interesting ones (see also the internship description and the Replicator deliverables, if you are interested in those). A comparison between three architectures is given by Georgas and Taylor. They compare the subsumption architecture with the three-layer 3L approach and the reactive-concentric architecture in An Architectural Style Perspective on Dynamic Robot Architectures. Most conspicuous in this article is by the way the ease with which layers are accepted as the way to organize a robot brain. It is without doubt that the brain is built up in a modular fashion. However, how this modularity is actually materialized needs to be handled very carefully.

Notwithstanding those concerns, Brooks' subsumption architecture is the prime example of a robot architecture. The movie at the top is an appetizer of Brooks' film "Rodney's Robot Revolution" in which he wants to create a robot physically playing the board game Go. But for now we will only focus on the subsumption architecture itself. This is in incredibly simple structure. Namely of tasks or controllers, in a layered structure. Each controller might give commands. For example there is a collision avoidance controller reading infrared sensors and sending commands to the wheels to avoid collisions. However, in certain circumstances, for example when a robot needs to dock to another robot, this controller needs to be overruled. In a subsumption architecture the output of the collision avoidance controller is subsumed by the output of the docking controller. In this way an entire hierarchy of controllers can be built.

The Boost Graph Library contains a lot of predefined classes. Because of the use of generics the vertex and edge entities (or descriptors) can be easily replaced by custom made versions. This was not needed for the purpose of presenting a subsumption hierarchy by a graph though. At our SVN server you can see (check also this corresponding test unit) how this becomes incredibly easy. For example, output to GraphViz in the form of a .dot file (a kind of XML for graphs, although there are more XML-like versions) is just one line of code! Like always, feel free to use the code, it is open-source.
Anne van Rossum on Friday 08 January 2010 - 22:28:03 | Read/Post Comment: 0
Internships
The Replicator robots
There are two internships in robotics available for 2010!

One internship is about artificial intelligence: cognitive robotics. Cognitive modeling using global workspace theory. A competing sets of modules that fight for a place on stage. The description of this internship can be found in the PDF file Internship - A Theater in the Mind of a Robot Organism.

The second internship is about artificial life: metamorphosis in robotics. Robot snakes changing in robot spiders and the other way around. The description of this internship can be found in the PDF file Internship - Robot Metamorphosis (gene regulatory networks to implement metamorphosis). Both internships are on a masters level (nothing more, nothing less).

This is of course self-advertisement, but our company is really a challenging place for internees, there is a lot of state-of-the-art research going on. We are a small company, 25 people, but because our products are commercialized within daughter companies, it is really possible to do pure research in our mother company. We have had several internees and PhDs before. From the University Utrecht, Hogeschool Rotterdam, Rijksuniversiteit Groningen, TU Eindhoven, TU Delft and the VU. In case you wonder - as almost always at Almende - all the code that you develop will be open-source. Feel free to contact me for any type of additional information. See my email address or telephone number at http://replicator.almende.com/contact.php

Some related information can be found in the very extensive Replicator Deliverable 3.3 in the Download section (you need to become a member of this blog for that).

To be selected for this internship, personal interest in the topic is considered most important. Don't be set back by the amount of prerequisite knowledge that seems to be expected of you. The final internship description will be written together with you and the supervisor at your university. It is definitely meant to fit an internship/thesis on a masters level (nothing more, nothing less).

See also http://sense.almende.com for an internship regarding pattern recognition in wireless sensor networks.
Anne van Rossum on Thursday 24 December 2009 - 16:46:17 | Read/Post Comment: 0
OpenAL for Simulations
Book about OpenAL
OpenAL is software that enables game developers to create an immersive sound experience. In OpenAL sources can be placed on 3D locations in a virtual world. Moreover, a so-called Listener can be placed in this same 3D world. This listener, in most cases, the game player, can move around. The OpenAL software then automatically makes sure that the listener hears all the sources in the right proportions. The sources nearby should be louder than the sources far away if they emit sound with the same strength. This is called sound attenuation. OpenAL also implements the Doppler effect and certain other effects. In the Delta3D simulator, upon which the Symbricator3D simulator is built, OpenAL is used too as underlying sound library.

The big problem is that OpenAL does not allow for multiple listeners. You will find many people asking for this functionality. First of all, it is necessary if the game actors that are not players need to hear something. If you are playing a game with intelligent computer-driven opponents, they might hear you coming closer! This is implemented in no game that I know off. It is quite complicated to implement artificial intelligence for such game actors, and probably game developers yet do not feel ready for it. Secondly, and most important in the Replicator project, it is important to have multiple listeners in a simulator with multiple robots. To have only one listener in the environment, means that you can only emulate one microphone. With a robot swarm or a robot organism this is of course not enough. There is no open-source software available that implements that however! Also Player/Stage/Gazebo or Webots do not implement sound for multiple robots. This is because all that robot simulation software is built on top of OpenAL which does not support it.

So, what to do? First I emailed Chris Robinson who created the openal-soft implementation. In the meanwhile I started to implemented openal-sim. First of all I played around with OpenAL in combination with PulseAudio. It is possible to have multiple listeners showing up in the PulseAudio console "pavucontrol". However, it is not possible to redirect individual capture streams to recording streams. So, what that means is that I can only mix together what multiple listeners hear in one big mix. But help is near! In the OpenAL implementation there is a so-called "Wave File Writer" device. This allows for writing to a file on the disk. Rewriting the openal-soft implementation so that multiple wave files can be written in parallel and we are halfway! Then it is only necessary to read the data back. For that I choose to use the already existing RingBuffers. This is a well-known programming solution that stores data in a circular construction in which when the user comes to the end of the RingBuffer the write pointer is automatically set to the beginning again. This all nicely encapsulated with proper mutexes, so that it is impossible to read when someone is just writing. Anyway, this also allows for retrieving the sound mix concocted by OpenAL with attenuation, Doppler and eventual other effects to be retrieved again by microphones in the simulator! Then Chris emails back that it is a nice problem and perhaps something he might implement in the future. Not needed anymore!

The result can be checked out from the Almende SVN Server. And a file to test it at dtJack. This is not the end of the story, the Delta3D simulator also needs to be adapted to use openal-sim. You will find this at dtAudio. All this is implemented within a week, so don't expect maturity!

With this software set up it is finally possible to have multiple robots in a simulator each hearing each other. Something never shown before! Now it becomes possible that robots are gonna behave like a bunch of birds, tjilping/twittering different tunes! Each of them attracted by sounds in its own way!
Anne van Rossum on Thursday 17 December 2009 - 20:55:37 | Read/Post Comment: 0
Synapses, memristors and robots
Nature inventing the wheel
There are so many new things to watch on the internet. Such as this spider that transforms itself into a wheel when it wants to escape its predator! Right click on the move to watch it on Youtube itself. But this post will not describe all kind of animals that seem to come close to the ideal of "back-and-forth" metamorphosis, of temporarily body changes. No it is about building brains.

Our crappy computer designs...
The future will be defined by our abilities to make living things (gene technology), fast things (information technology), small things (nano-technology) and smart things (artificial intelligence). This story is about a marriage between the last two. It all started with the Van Neumann computer architecture. Our computers are organized according to this design principle. Namely with a separate CPU, central processor unit, and memory. A famous problem is the so-called Van Neumann bottleneck. If those two parts, the processor and the memory is housed on two different places, there will be going a lot of data between them. This "gate" forms a bottleneck, potentially constraining bandwidth. However, this is not the biggest problem.
You might think that processing data costs energy, and that is true. However, what also costs energy is powering wires. The longer the wires are, the more power they consume. And then our biggest problem is our own head... We just don't have the wiring (the proper mindset) to build computers the same we are wired ourselves. In our brains there is not a part where the processing takes place, and another part where we store everything. In contrary, it is distributed all over the place. And certainly, some places are more dedicated to memory, like the place cells in the hippocampus, but it is seldom so black and white. For that reason I would like to refer you to the following talk:

Recently at HP Labs Stan Williams and his team discovered a physical representation on nano-scale of the fourth circuit element described by Chua long ago. Besides the resistor, capacitor and inductor, there is the memristor. Apply current or voltage on a memristor and it will get a new resistance value, even if you detract the source! This is awesome to create instant-on computers, which is mentioned as on of the possible killer apps on the web. However, what also can be done is solving the above mentioned crappy computer design problem. To come up with a design that integrates remembering (memory) with thinking (processing). One of the ways our brain stores events is by increasing the strength of connections (synapses) between neurons. The neurons that fire together, wire together. You can see the brain as some kind of large statistical machine that extracts a lot of information just out of the fact that things happen at the same time, or consistently slightly after each other. That is, it can do it with "images", but not with lottery tickets.

In the movie Gregory Snider (I only watched the first part) explains how the brain can be emulated using memristors to model synapses. Like as cell processors, or even more with field programmable gate arrays [FPGAs], there will have to change a lot in conventional computer programming, will computer scientists make use of the inherent reconfigurability that is possible with this hardware. VHDL (a hardware description language) is not the best horse to bet on, to win the race of reconfigurable programming. Artificial neural networks, and we have indeed better and better ones (they are not the old fashioned feed forward net with back-propagation anymore) are inherently mixing memory with processing.

The Killer App
Our robots need large-scale pattern recognition. We cannot afford to do without artificial neural networks anymore. The networks might be used in an abstract form, say as a liquid state machines or adaptive resonance theory model, but we nevertheless have them on our robots! And, in the end we will need to have hardware that can run those networks that are so like our own minds. And this is the promise of memristor-computers. Robots need memristors. And it is also the other way around. Memristors need robots. It might turn out to be virtually impossible to program "memristor-computers" without a "biological" mindset!
Anne van Rossum on Saturday 05 December 2009 - 23:22:52 | Read/Post Comment: 0
Go to page       >>  

Software

Goal Replicator/Symbrion

News for 2010

RSS Feeds

Welcome

Google Friend Connect

Opinions on the site do not have to be shared necessarily by all Replicator partners.