Sunday, March 18, 2007

NiVek J.D.'s Maiden Voyage

Everything came together today for NiVek's J.D.'s official first journey. NiVek J.D. is a remote control tractor purchased from Target that was converted over to be controlled via a small on-board computer programmed in Java. The same basic board I used for NiVek I was used for this "robot".

This robot has two cool features not on NiVek I. The first is it has a GPS module purchased from Parallax. The second and which I think is really exciting is it using a Windows Mobile device as a "Repeater" that allows for communications from the NiVek embedded computer to a a PC. This design is based upon software components that are part of WiMo or Windows Mobile Robot, you really need to check out that site! This consists of some kewl software components that are made up of a Compact Framework 2.0 application that runs on Windows Mobile and a collection of services that run under Microsoft's Robotics Studio.

NiVek J.D.'s Hardware

Basically the radio was just ripped out of the existing remote control tractor and and the motors were connected to the NiVek embedded computer. As with the "original" WiMo, the Windows Mobile device was mounted on a servo with a CD-ROM. The original WiMo used a SmartPhone not a Pocket PC so that probably worked out a little better, it's nice to be able to pan the camera however with my driving skills (smacking into walls) one of these days, I'm pretty sure the CD-ROM is going to end up in pieces . I need to re-think that part of the design.

NiVeK J.D.'s Maiden Voyage (well at least one of the first few)

50,000ft System Overview

The actual robot itself is controlled by an embedded computer based upon a small PIC processor with some additional components that allow it to be programmed in Java with 32K RAM & ROM this was purchased from Parallax and is called a Javelin Stamp. (See this post for more information)

The embedded computer has a BlueTooth transceiver module that allows it to communicate with a Windows Mobile Device.

The Windows Mobile Device has a Compact Frameworks 2.0 application running code available from the WiMo Bot web site.

The Windows Mobile WiMo application communicates with the robot via BlueTooth. It also has the ability to listen on a socket for connections from a remote application. Since this is a Windows Mobile device (in my case a phone), it will not only work while it's connected via a local LAN via WiFi, but it can also communicate via the GPRS radio and be a sort of "repeater" that will allow it to communicate to a host controller program anywhere it has cellular reception, just think about this...this is very kewl! A nice feature is on the opening screen shot of WiMo it tells you the IP address of the device.

On the PC side you have a set of Microsoft Robotics Studio services. When these services first start you will be greeted by a dialog that will allow you to enter the IP address of the remote Windows Mobile device.

Once you press "Connect" (and the software gods are shining on you) you should establish a connection from your PC to the WiMo application.

At this point a couple of additional forms will show up from the MSRS services. The one in the upper left is displaying console messages from MSRS (Microsoft Robotics Studio). This is a great way to see what's actually going on with your services.

The one in the upper right is from a service that came with WiMo (with the addition of buttons to control the motors). Another really cool built in feature with WiMo is the ability to use the camera on your Windows Mobile device to send pictures back from your robot. This from also sends messages to the core WiMo communications MSRS service to pass those to the WiMo device application. These messages allow for control of the robot from the PC.

The dialog in the bottom is an additional MSRS service that was built that subscribes the the TextMessageReceived event from the core WiMo service.

The NiVek embedded computer spits out GPS readings every second (probably need to change this so it only sends when the location changes).

This gets sent from NiVek to the the WiMo software on the device with a simple <stx><etx> binary protocol. The WiMo software turns it into a simple text message.

This text message is sent over the wire from the Windows Mobile application to the WimoComm MSRS service.

The WiMo MSRS service picks up the text message and finds any services that subscribe to this type of incoming event.

The GPS Point plotter MSRS service subscribes to these messages so it takes those readings and plots the on the crude dialog you see below. The challenge here is that for a robot this size of NiVek J.D. if it moves 50ft that's a long distance, and the resolution on the GPS module I purchased just doesn't seem to be all that accurate.

Finally one last picture of you host at the controls!

Looks like my day job is going to be busy over the next few weeks with DevConnections and MEDC but I hope to sneak in a few hours every once in a while to push this effort forward!