Saturday, May 31, 2008

Ferbar: Autonomous mobile robot control system

The main problem was to create an autonomous control system for a mobile robot in order for him to move from point A to point B avoiding obstacles and making all the decisions without the intervention of a human being.


To solve this problem we used an ultrasonic sensor on top of step-by-step engine in order to take samples from the area and the obstacles surrounding the robot. This information was sent to the motherboard on the robot with a DSL Linux distribution on a usb drive (to avoid using a delicate HDD on our rover robot).

Ferbar was running on that machine, its main requirement is a 1.4 JDK or higher and some libraries included on the zip file, there is a tricky configuration of the comm.jar that allows the software to sent the information of each movement using the serial port, but the details are explained on a txt install file.

The core of the brain is using a SOM neural network trained by JKam. The application includes a simulator with a 2D map on which you can set obstacles of different sizes and shapes and then you can set the point A and B on the map and test the performance of the robot with the current neural network. It's also possible to change the neural network being used.

The software includes two other control systems, one of them allows the user to preset the path that is going to be used by the robot, this is useful in case if you want to take the robot to a presentation and you already know the place and you know the moves you want him to do.

The third type of control allows the user to have live control of the robot, basically is a sort of remote control, this ones is pretty useful in case the scenario is too complex for the neural network and you want to take over the control of the robot.

Ferbar can save paths previously used in case you need to reuse them later, it is also possible to save and reuse training scenarios.

There is a panel not being used right now, it's the vision panel, it was supposed to show the view of a camera on the robot, but usb for java a couple wasn't so popular as it is right now.

Well one more time, if someone is interested on using it just let me know and I will gladly send you the files.

Saturday, May 17, 2008

Kohonen Neural Networks and JAVA

Well as you can see on the title of the post, I decided to talk a bit more about what I do 3/4 of my day: JAVA, hopefully to share the problems I have everyday will help somebody else and also I'm pretty sure they will also help me.

My whole Java career started 3 years ago just by coincidence, I was in charge of the development of the "brain" of a mobile robot and the best way to have an OS independent software is using Java, so I ended up buying a Java book and started messing around with my computer and Netbeans.

Anyway, to make a long story short I developed two softwares to create the robot's brain, the requirement was that the robot could be able to move from position A to position B making all the decisions by himself in order to avoid obstacles and reach its destination.

To accomplish this goal I decided to use Self Organizing Maps also called Kohonen Networks, a self-organizing artificial neural network that selects the winner neuron by using the euclidean distance.

The learning process for the SOM is to make that different areas of the network can be activated by similar input patterns, and this resembles a lot to the way our brains work when we receive auditory or visual information and different areas of our brain generate the response.

JKam is the name of the software I developed for this task, its goal is to make easier the training process for Kohonen Networks and it has the following features:
  • It allows you to define the structure of the map (Input Neurons, X Neurons and Y Neurons)
  • Bubble and Gaussian neighborhood functions
  • Exponential, Linear or Inverse Time learning factor functions
  • Training variables such as amount of steps, radius, training sets and initial learning factor rate.
  • It also allows you to save and re-use training sets and neural networks on an XML format.


I stopped working with this software a couple of years ago but I think it can be pretty useful on different fields so if anyone is interested on using it, just send me an email and I will gladly send you the files.

Well that's it, on the next post I'll talk about the software using a SOM trained with JKam, the brain of the robot: Ferbar.