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.
The client software is the java MIDlet used
on the cellphone in order to control Alessa, the robot.
The server software is the application
used on our handheld and also the software on the Lego
RCX (the mini-computer)
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
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 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
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,
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
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
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
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
communication was implemented, we had to use a real cellphone to test
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
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
managing into a cakewalk.
We had great help of volunteers such as Charlie Payne on Pacific Neotek
Sandova in Stevens Institute of Technology in USA (see the reference
their help and the open-source community, this project could not have
Throughout the months we’ve spent countless hours reading up
on official programming
language documentation, forums and developer sites from all over the
We found out that most of our hours spent on debugging could be solved
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
with Lego and technical expertise. Additionally, the electrician of the team
some serious modifications to the hardware that we’ve used which obviously
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
More information about each section can be found in the link section above the