Wednesday, September 27, 2006

NXTMover

Having the library NXTRemoteControl, we can now build another library using that.

The idea behind seperating these two levels, is that you can make countless configurations of a NXT. The NXTRemoteControl should be, and is, able to control each one of them. All you need, is to develop a library on top of it.

Our robot needs to be able to drive around and lift/move objects. Hence the name NXTMover. The library (NXTMover) will be action based, with each action running in a seperate thread. You will then be able to tell the NXTMover, to "move the robot along a line", "pick up object" or "go to this place".

Above this, we will implement some intelligence and multi agent abilities such that several NXTMovers can coorporate about moving object. More about this later. The figure below illustrates these concepts.

NXTRemoteControl

So, what have wee been up to lately.

Most of our time has been put into developing a .NET library, that we have called NXTRemoteControl. This library uses the Direct Commands published by LEGO. This allows us to remotely control every component of the NXT. That is, all sensors, motors and the Bluetooth communication device can be controlled from a computer connected to the NXT via Bluetooth. This is much similar to what iCommand does.

It has been quite a challenge to deciffer the Direct Commands and figure out exactly what the different parameters actually does. Our effort has been rewarded. We now have a lib supporting both the sonar and synchronized motors among all the other stuff.

I.e, so far our lib support motors and sensors.

We have been programming in C#.

Public Relations (PR)

More and more people are becoming interested in our project. Different people from down the hall have asked what we have achieved and what the robots can do so far. Because most of the time has been used to produce the library NXTRemoteControl, it is limited what the actual robot can do.
Today a photographer came by and took some pictures to a magazine advertising for DTU and IMM. The magazine will come out in the beginning of January.
We have been hired by Lego to give a demonstration in Bilka (shopping mall) of what the NXT Robots can do. Parents with their children can get a short introduction to how the Lego NXT works and how easy it is to build and control. This will have nothing to do with our project because the demonstrations should natural be in NXT-G.

Our supervisors created at poster for a seminar called "IT overalt" (IT everywhere) describing the Multi Agent problem and how we tackle the different challenges. This was the picture they used:

NXTRemoteControl

NXTRemoteContol 0.1 is ready. Will be available for download soon.

Friday, September 15, 2006

NXTRemoteConrol

After studying the source code in iCommand we have now made the structure for our NXTRemoteControl library. It's very similar to iCommand with the biggest difference being, that it is writtin in C#. The plan is to reuse most of the code from iCommand but make a little more flexibility for the user and of course fix the bugs :)

We are hoping the library will be done next week, so we can start programming some NXT's..

Five working NXTs

We found out that it was in fact possible to control five NXTs via Bluetooth from one computer.



It is straight forward in the .NET framework. All you need to do is to open a serialport (COM) to each NXT.

Once a serialport is opened, it is possible to send "Direct Commands" to the NXT. That is, you can remote control everything on the NXT. LEGO has published the protocol used for doing this. What you do is to send a number of bytes to the NXT, and it can reply (if wanted).

This is the approach iCommand uses.

Using this approach, some of the autonomous idea behing our project is undermined, while the NXTs will not run any code, but just be "dumb" remote controlled robots. However, given our situation and having time as a factor as well, this looks like it could be our choice of approach.

Friday, September 08, 2006

.NET tutorials and stable Bluetooth software

Today we've gone through several of the tutorials related to the Microsoft Robotics Studio. It seems to be the best way to get more acquainted with this .NET approach to controlling NXT robots. It is our impression, so far, that this just might be the framework we will choose for out project. The possibilities are countless and other users have had positive experiences with it.

Finally it seems like we've found some more stable software for using bluetooth in windows. It's called Widcomm software stack, and we're currently using version 5.0.1.802, which can be found here (If you are patient.. very slow).

Wednesday, September 06, 2006

Computer, Bluetooth and .NET

A new computer arrived today. Supposedly a beast. This is the computer we will use to program the NXTs.

About the Bluetooth, it is still killing us. Sometimes it works, sometimes it does not. The problem might be, might be, that we in fact do not know what is going on under the hood. Which protocols and how many protocol layers is used? Communication between NXTs works seamlessly, but as soon as Windows is drawn in the picture, something goes wrong.

Despite the Bluetooth problems, we had a breakthrough with .NET. Microsoft Robotics Studio together with Visual Studio might do the job for us. Hopefully it has a full API such that we can program and control every bit of the NXTs. We have not yet created a program ourselves that can be downloaded or can control the NXTs, but we have tested a .NET application that did.