My aim yesterday was to workout how to create a program in C++. load it onto the robot and run it. It should have been easy, I thought that I had set my goals too low, but it was what I was up to.
I am using a Visa laptop, this enables me to take my computer to the Uni where the robots are kept. It is also the newest computer that I have being approximately a year old, and should therefore be best placed to run the software that I need. I would have liked to have done this under Linux rather than windows, but I don't have a Linux box running at the moment, and don't have time. And a Linux laptop .... well that's for the future.
I had previously installed Visual Studio C++ 2008 Express Version, this being freely available on the Net. I had also installed the Aria source code etc., as well as NEAT source code. The Aria code was original written with Studio 2003 so needed converting to the 2008 version. I had spent some time getting at least a little familiar with the package. It was hard to find a starting point, and was heavy going, so I hadn't got as far as I would have liked! This is normal though for me trying to come to terms with someone else's code. I didn't get as far as compiling anything new.
Once I arrived at the Uni, Michael showed me how to set up an ad hoc network on the laptop they have there, and get a remote login to the robots. We were able to control the robot from the laptop easily. The aria software runs well, and is easy to use.
Next I wanted to know how to load a program that I had written and run it on the robot. This is where the problems started.
Fist working out how to use Studio 2008 was a bit of a problem. It would have been good if I had had enough foresight to do that before arriving at Uni. With Michael's patient assistance we worked out how to compile one of the examples. We loaded it onto the computer but it wouldn't run. We tried compiling a release version rather than a debug version. We tried copying all the DLLs into the same directory but it didn't help.
Eventually we decided that working with Studio 2003 which was used to create Aria in the first place may be the way to go. After spending an hour and a half loading the older version of Visual Studio it was approaching 7pm and with a 2 hour drive ahead of me I came home.
The next step was to install the service pack, but after 3 failed attempts I gave up. The program failed to start. Michael sent me some links showing that Microsoft is not supporting Studio 2003 on Vista.
I am currently uninstalling C++ 2003.
Its back to getting 2008 to work on the robot.
15 March 2008
Programming Robots and Compatibility Issues
09 March 2008
Neural Networks
Artificial Neural Networks are an attempt to mimic the human brain, they are usually used in an attempt to create a program that can do some of the thing that people do effortlessly. But most Neural Nets are fully connected networks of similar neurones, very regular in structure and fully explained by the programmer.
On the other hand the natural network connections found in any brain is much more random, multi-layered, containing different types of neurones and largely beyond our comprehension. I would like to investigate a method of creating a neural network that is closer to the structure of the human brain.
Stanley and Miikkulainen (2002) have presented a method of evolving both Network Architecture and Initial weights in a process they call Neuro Evolution of Augmenting Topologies (NEAT). Network Architecture (or Topology) is arrangement of neurones and their interconnections. This process has produced some interesting results.
NEAT starts with a small simple network, and over successive generation it develops a more complex and involved structure. The networks that develop are very unlike traditional artificial neural networks and more like those of nature.
The researchers have made various versions of NEAT code available under GPL, and given their success and the limitations of this project this seemed like a really good place to start development.
Stanley, K. O., and Miikkulainen, R. (2002). Evolving Neural Networks through Augmenting Topologies. In Evolutionary Computing. 10(2), pp 99-127.
06 March 2008
Software
The P3-DX robots come with some software packages which I will describe below. There are other packages for an additional cost, but of course the aim of this research is to develop my own software. One of the most important aspects of this software is that it works on both Windows and Linux.
ARIA stands for Advanced Robotics Interface Application and is the API for the robots. It provides Object Orientated Classes to control peripherals, poll sensors and avoid obstacles. Now I need my network to evolve its own obstacle avoidance, but the built in version may useful in the first generations of the controller.
This is the diagram from their website showing what I believe are the components of ARIA.
ARIA is written in C++ and can be either single or multi threaded, quite useful for a neural network.
Another very useful feature, which you can see at the bottom of the diagram. It can either control a robot, which it does through a serial connection, or it can control a simulator, which it does through TCP/IP. This will enable me to evolve earlier generations of the controller on the simulator, then run a certain number of individuals on the hardware, which makes this project achievable.MobileSim is the simulator. When it is running there we see the robot roaming within an environment which is created using Mapper Basic. Here you see the robot roaming around a building made of several rooms with various furniture. The area covered by laser sensors in shown in blue.
There is also Mobile Eyes which I have yet to get working, so I am not sure of its use or whether it would help or hinder in this project. (Perhaps I will have to read the manual). The website indicates it is a GUI, and a destination can be selected with the mouse, then user can watch the robot plot paths.
The other software that I will be using is some NEAT software. NEAT stands for NeuroEvolution of Augmenting Topologies. NEAT comes from a completely different source to the robots, so I will discuss it in the next post.