Some updates
  • Twitter: You can now also find us at Twitter for short but more frequent updates. http://twitter.com/PenemuNXT
  • Refreshed design: For the YouTube page (http://www.youtube.com/PenemuNXT) and this blog (http://penemunxt.blogspot.com/).
  • New short description: "A SLAM (Simultaneous Localization and Mapping) implementation using LEGO Mindstorms NXT and leJOS (Java)."
  • Reorganized Google Code Page: More info at http://code.google.com/p/penemunxt/.
  • Map orientation: Rotate the map. This is supposed to rotate the map automatically by using data from the Compass sensor. But we have not implemented this yet, for now you have to rotate it manually.
  • New map processors:
    • Visualize clear area: Area where there probably are no objects are now displayed as white.
    • Background grid: A grid with squares that represents 10x10 cm so that it is easier to calculate lengths.
  • Performance optimization
  • Export rendered map: You can export a rendered map as PNG or JPEG to share with your friends ;)
Some images

This is the environment that is visualized in the maps below.

Export as PNG or JPEG:


Map Preview

I have separated the visualization of the map to a separate control.
Because of this it's really easy to reuse it in different ways.
I've done this in three places for now.

Map processors preview
Preview what the map will look like if you activate the map processors that you select.

Map timeline preview
If you hover the mouse over the timeline you will see a thumbnail with a preview of the map at that frame.

Map preview
According to me this is the coolest thing. When you are about to open a map from a file you will see a preview of it as you select one.

The next thing to do is to separate the timeline as a separate control so that it is as easy to reuse as the map.


Map processors

The big news of today is map processors!!
That's a new way we implement how the map is painted/processed.
The idea is that you want to be able to add new ways to improve the map easily.
What I did was to setup the interface IMapProcessor and basically it has some properties for color, name and description and a method to process the data.
You can find the processors we have at the moment here.
They all implement the IMapProcessor interface.

There are two main types of processors, SimpleData and CalculatedData.
* SimpleData is processors that basically just paint dots. For example when the robot drive. It dosn't do any improvements to it.
* CalculatedData is processors that combines different data to calculate different stuff, for example where walls and objects are.

You add all the processors you want to an instance of MapProcessors and call this every time you want to paint the map.

This is how it might look when you configure it:
ArrayList defaultProcessors = new ArrayList();

mapProcessorCurrentPos = new MapCurrentPos(Color.GREEN, 10, true);
mapProcessorHotspots = new MapHotspots(15, false);
mapProcessorFindLines = new MapFindLines(true);


mapProcessors = new MapProcessors(defaultProcessors);

This is the new admin view for them.

You can easily change size..:

..and colors:

I also made a change so that when you select a row in the dataview the timeline will jump to that frame (and if you drag/play the timeline, the dataview will jump to that frame):

Hopefully we will release a compiled version of the apps soon so you easily can download them and test them by yourself!

/Peter F

Show at school

We showed the robot and what it can do at our school.
I think most people liked it though some might have been confused by all the dots :)
Here are some pictures from that day.