Saturday, May 19, 2012

Sunday, May 13, 2012

Using SLAM algorithm to map surrounding environment and determine location of NXT Rover Explorer

Initially a robot have no idea where it is, how it is oriented in space and what an environment looks like. This means that a robot will have to explore its initial position, recognize useful landmarks and use them to get certainty about its localization.
Robot has no idea about its location, environment and position of  ultra sonic sensor
After initial localization step it will be possible to command a robot to got to a point in the unexplored space, defined relative of robot "home" location.

Robot got some data from radar that could be used as constraints to estimate possible location. Still, many locations  are possible, so robot isn't localized yet.
While moving to defined point a robot should detect and avoid any obstacle, build environment map and use it for localization purposes.

SLAM demo:


Some SLAM implementations

Further resources






Saturday, May 12, 2012

Rover Explorer Robot building instructions


All main robot components are from standard Lego Mindstorms NXT 2.0 kit. Few additional Lego bars (black) were used to make costruction more solid, but they can be replaced with lighter parts from NXT 2.0 set.

Complete robot view

Building instructions


Servo for left track (partially assembled)

 Complete servo for left track

Left track with servo, assembled

Both left and right tracks and servos assembled

Connecting robot base parts together (side view)

Connecting robot base parts together (back view) 

Turnable (servo) platform with ultrasonic sensor, parts 

Ultra sonic sensor platform, assembled

Front view of robot base just before sonic platform installed

Robot base with ultra sonic platform installed

Fixings for NXT Brain

Robot base with NXT Brain fixings, assembled


NXT Brain mounted on the robot platform

Installing contact and color sensor, front view

Contact sensor on the back


Complete NXT Rover Robot (no wires connected yet) 

NXT Rover Robot mechanical test using NXT Remote

Rover Explorer Robot (Mindstorms NXT 2.0, LeJOS)

Inspired by design of
and some code pieces from the "legointernational" project on Google Code I decided to build NXT Mindstorms 2.0 and LeJOS based rover explorer robot matching two main design goals:
  • maximum sensing capabilities available in standard NXT 2.0 kit: touch, ultrasonic and color sensors
  • durability and ruggedness: use tracks instead of wheels
  • simplicity: minimize the number of components
Step 1. Building Rover Explorer Robot platform
Step 2. Implement ultrasonic sensor based feature detection
Step 3. Implement Fast SLAM (Simultaneous Localization and Mapping)
Step 4. Implement environment exploration and motion planning
Step 5. Real-time data exchange with PC and graphical dashboard



Getting insight on Eclipse usage in your organization

Starting from version 3.4 (Ganymede) Eclipse includes Usage Data Collector (UDC) feature that installs listeners on the Eclipse workbench and gathers anonymous information about user actions - activation of views and perspectives, plug-in versions, etc.

While the UDC project raised some privacy concerns among world-wide community of Eclipse users and appeared to be not so useful as expected for Eclipse.org, it isn't really "an evil" thing and may be a valuable source of information for smaller domains like single organization, department or team or for getting automatic usage feedback for a RCP-based application.

By default UDC stores all usage data in CSV format in
.metadata/.plugins/org...epp.usagedata.recording/upload#.csv
and regularly sends all data to Eclipse.org, but this can be changed by using run-time property
-Dorg.epp.usagedata.recording.upload-url=http://your-internal-udc-server

To avoid tracking privacy-sensitive information like user name, computer name, etc. Eclipse UDC creates two neutral UUIDs to identify particular installation and workspace: 
  • $HOME/.org.eclipse.epp.usagedata.recording.userId
  • $WS/.metadata/.plugins/org.eclipse.epp.usagedata.recording/.org.eclipse.epp.usagedata.recording.workspaceId
There are several possibilities to collect usage data from Eclipse and RCP application instances:


Alternatively, you may decide to use org.eclipse.epp.usagedata.recording.uploader extension point and provide your own uploader.

Additional Resources

Wednesday, May 9, 2012

Maven and Tycho for Eclipse Plugin development

Tycho is a plugin for Apache Maven that adds support for "eclipse-plugin", "eclipse-feature" and "eclipse-repository" generation.

Apache Maven itself is an attempt to enforce standards on the Java builds, project directory layout and dependencies between different projects. Based on this infrastructure, Tycho is an attempt to extend this kind of standardization to the Eclipse and OSGi builds.

Here is a very nice presentation by Karsten Thoms about using Tycho for Eclipse development
http://www.slideshare.net/kthoms/maven-3-tycho

Wiki pages on Eclipse.org
http://wiki.eclipse.org/Category:Tycho


Tuesday, May 1, 2012

Java Technology Tutorials

Very useful places to check when you need to quickly get into a new Java technology or just refresh your memories about Java, Eclipse, Spring, Android or Web development.

"Java, Eclipse, Android and Web programming" by Lars Vogel

"Java web development tutorials"

Slow WiFi re-connection with Asus Transformer 101

After automatic update to Android 4 ICS my Asus Transformer 101 became very slow at re-connecting to WiFi hot spot, sometimes up to one minute delay before it gets connected. If you have similar problem, try to clean a list of registered WiFi networks and remove all unnecessary remembered connections.

Update: problem returned after device was updated to Android 4.0.3 (2.6.39.4)