Article section
These articles cover things more in-depth in every vital area of the project: client software, server software and vehicle design. During the development, we've been careful not to use device specific code.

Example: client <-> sever initiation
Instead of defining a connection URL of our handheld, (connection URLs for Bluetooth are unique and if we were to use one, the client would only connect to our handheld) we perform a search on all nearby Bluetooth devices and look for the mobileRobotics service.

This means that you can use our software on any cellphone which supports Bluetooth and Java, and not only the Sony Ericsson P910i that we used.

Use the links below for in-depth articles, scroll down for the introduction.

Client software
The client software is the java MIDlet used on the cellphone in order to control Alessa, the robot.

Server software
The server software is the application used on our handheld and also the software on the Lego RCX (the mini-computer)

Vehicle design
In this article we explain in detail how we built the robot in Lego.


Mobile Robotics is a project focused on wireless communication based on Bluetooth and infrared. The original idea was to create a Lego robot which could be operated from a regular cellphone, aiming at mobile communication and Lego as a visual help to demonstrate the results in a creative and interesting way.

Bluetooth and IR are two different methods of communicating wirelessly. IR stands for InfraRed - lightwaves transmitting data. Bluetooth is based on radio frequencies and has a range between 10 and 100 meters.

Unfortunately, the Lego Mindstorms system is using a proprietary IR protocol (not the ubiquitous irDA) and does not provide any kind of radio-based way of communication. Obviously, this doesn't bode well for mobility as infrared devices require line-of-sight to operate. We intend to bypass this limitation.

In short, the idea is to let a cellphone connect to a handheld device (widely known as PDA) which resides on the robot and, via Bluetooth, send commands to it. The PDA will then interpret these commands and forward them by IR to the Lego RCX (a proprietary Lego mini-computer). The RCX subsequently executes the commands and the robot moves, depending on the assigned action.

We chose this subject due to a vast interest in the evolving, new wireless technologies and because it would oppose a real challenge. It could also be a chance for us to provide documentation and code to open source programmers, we thought, since it’s quite difficult to find extensive applicable code examples using Java Micro Edition/Wireless Edition and the PalmOS C++ Bluetooth library.

We thought it would be a way to contribute to the communites of Java, C++ and Lego Mindstorms.

As aforementioned, there is not much information presently available on programming Bluetooth on the Java Micro Edition and the PalmOS platform - suffice to say the quality of the sources vary. Hence a great deal of time went into research and pure trial-and-error. In the Lego community, or perhaps more specifically the Mindstorms one, there is a great deal of good, high quality sources of info.

Questions we had to get answered regarded a variety of protocols, standards, cross-platform reliability, wireless capabilities and optimal mechanical solutions. To narrow these questions, we first discussed what standards we were interested in such as Bluetooth, IR and JSR-82, and how well these would co-operate when implemented in two different languages on two different platforms. We looked into all information we could find in forums, on websites and in books.

Most of all it is easy to get help and support in almost every open-source community. We had knowledge of both Java and C++ programming, but to program for - to us - completely different platforms than Win32 was a challenge.


When we first started this project in October 2004, we had limited knowledge in Java and C++ but rather extensive knowledge in advanced Lego construction. Both programmers knew Java/C++ basics from the start but had no real experiences in the area of software for mobile equipment. Over the time, we’ve gained the experience needed to achieve our goal even though it has been rather challenging from time to time.

In the beginning of the project, we used the Sony Ericsson Development Kit to write and simulate our software, but as the complexity of the software grew and wireless communication was implemented, we had to use a real cellphone to test our software after each compilation. This way the test results are more accurate, but it slows down the process since it takes time to transfer and install the application each time the code is altered. As with the server development, we were lucky to have access to a Palm handheld as well as a JSR-82 compatible cellphone for extensive testing. The PalmOS platform actually has some nice documentation and support for Bluetooth – you just have to find it. The PalmOS Developer Suite turns all knee-shaking PRC compilation and make file managing into a cakewalk.

We had great help of volunteers such as Charlie Payne on Pacific Neotek and Ronny Sandova in Stevens Institute of Technology in USA (see the reference section). Without their help and the open-source community, this project could not have been realized. Throughout the months we’ve spent countless hours reading up on official programming language documentation, forums and developer sites from all over the world.

We found out that most of our hours spent on debugging could be solved by simple answers and were caused by homely errors such as erroneously-sized variables and typos.

The process of creating a physical product was eased a lot by our engineer’s previous experiences with Lego and technical expertise. Additionally, the electrician of the team has made some serious modifications to the hardware that we’ve used which obviously saved us some time. We've had to purchase a lot of Lego Technic, in addition to the kilos we already owned, and some parts even had to be ordered internationally. Not to mention, the Mindstorms community on the web been has been a great source of inspiration.

Special thanks go out to Firepad for providing streaming video software. We’re also truly grateful to our financial sponsors Tandregleringen Kronan and Bivalds Målia.

More information about each section can be found in the link section above the introduction. Logo  
Page viewed times mobileRobotics is powered by Source Forge