Thursday, June 29, 2006

DO NOT UPDATE NXT FIRMWARE

When you receive the Lego Mindstorms NXT, it comes with firmware version 1.01. The NXT CD that comes with the set contains firmware version 1.03, which is also available online. During MDP, some people have installed the 1.03, which worked fine.

HOWEVER, for a lot of people who recently received the Lego Mindstorms NXT set, and have tried to upgrade their firmware, THE NXT BRICK DIED ON THEM. It seems that the NXT doesn't come back correctly from the firmware upgrade. It keeps producing the ticking sounds that indicates it is being updated, whereas it should end with a loud beep and be ready for work when the upgrade is complete.

Lego is aware of the problem, and is working on it. There is no fix available yet. Therefore, DO NOT UPGRADE YOUR FIRMWARE at this time. I'm sure that by the time Lego Mindstorms NXT lauches officially, Lego will have resolved this problem.

For an active forum on this problem, it is probably best to use this article on TheNXTStep blog, since they have the discussion going. I'm repeating the message here to make sure everyone is aware of this issue. I'll be happy to answer questions, off course, but I don't intend to install the firmware just yet myself...

Filip

Tuesday, June 27, 2006

More Answers from Tandy Trower, Microsoft Robotics

Updated on 28/6/2006.

I asked Tandy Trower the following question:

Filip: Targeting the autonomous software with C# is actually a really cool feature, that allows for load balancing between PC (high level functions) and the robot (“autonomous nervous system”). Lego Mindstorms NXT is also poised to be the best robotics platform to get started. Can I ask what is stopping your team from using .NET Embedded, and the tiny CLR of the SPOT initiative?

Tandy: First, it’s great that LEGO selected a 32-bit processor for the NXT. This shows a lot of foresight on where things are headed in robotics. It opens up many possibilities and a lot of horsepower. However, with regards to Microsoft putting out a version of ones of its 32-bit OSes (e.g. Windows XP embedded, CE, or MicroFramework (SPOT/Tiny CLR), let me suggest that might not make sense for the following reasons:

1. LEGO already provides an operating kernel/firmware for the NXT. Since the product is just coming to market it is unclear the need or demand for an alternate kernel. We already support NXT from Microsoft Robotics Studio as-is. Before we talk about an alternative the market needs to assess what’s here.


2. We have not done an assessment about the practicality about trying to port a Microsoft OS to this platform in terms of its memory footprint or other requirements. Such assessments are generally best done by the hardware vendor. Further, that would involve a different group at Microsoft. My group is focused on application development available for a wide variety of platforms. While we believe NXT has the potential to be tremendously successful, it isn’t our mission to create a Microsoft OS for this or every other robot but create an architecture that can talk to what’s there. So some assessment would have to be made on what would be a good fit. TinyCLR (also known as MicroFramework or SPOT) might fit, but doesn’t have sufficient support for hosting our runtime, so this would require not only a port of the MF kernel, but also of our runtime. So it wouldn’t buy you much more than you would find on LEGO NXT already.

3. Microsoft typically doesn’t sell our OSes directly to end-users. We license to OEMs (hardware vendors) or distributors. Neither LEGO nor a distributor has come forward requesting this. Frankly it’s a tough business model to try to sell an OS for a platform that already has an operating kernel.



I believe this is a fairly clear answer. In my mind, this means that to develop NXT onboard software, the best solution is likely to be the solution delivered by Lego as part of the retail set. Powerful, adapted, simple.

For robots that need to give up their autonomy in order to have more computational power, the Microsoft Robotics Studio may be a good solution.

When it comes to the simulator, modelling the physical shape and properties of the Lego robots is a major obstacle at this time. So the simulator seems best suited for expensive robots, that also do not change their shape frequently.

Finally, the pricing of the Microsoft Robotics Studio is completely open ended, and solutions using it may well end up being too expensive for other users.

Filip.

Monday, June 26, 2006

Email Interview with Tandy Trower, Microsoft Robotics

UPDATED on 27/6/2006 on the conclussions to the first question

I had an email exchange with Tandy Trower, General Manager for the Microsoft Robotics Group.


Filip: Is Lego Mindstorms NXT supported out of the box? Will it be?

Tandy: “We have a couple of tutorials for NXT. More will be coming in next technical preview. Note that we currently only support NXT as a remote client. So we do not have support for deploying code on the robot to run autonomously.”

Right now, Microsoft only supports controlling the NXT over its Bluetooth connection. Microsoft does not have information on when (and if) C# will run autonomously on the NXT brick.

I believe this will leave space for initiatives such as NQC and RobotC, that target the NXT brick (as well as other robotics platforms) for autonomous operation.

Filip: How do you anticipate modeling Lego robots in your environment?

Tandy: “You will see in our simulation tool support for a simple NXT bot. We are talking with Lego about how to support their robots. Currently modeling a robot takes some work for the simulation. You have to build the graphic rendering and match it up with the physics modeling. For the real hardware, it is much easier. Our services model enables wrapping lightweight interfaces around any robot components. We will provide some in the SDK to help people get started. The sources for the sim pieces and services will be available for people to modify.”

On the actual hardware side, things sound really great. Unfortunately, I don’t have the NXT hardware to test it yet. But it is shipping, so let me get back to that once I can actually play with it.

Not having an straightforward way to model your Lego robot in the simulated world will likely be a major obstacle to testing Lego robots in simulation.

The ideal solution would be if someone mapped the physics of every Lego Technics brick (dimensions, weight, …), and provided a visual editor that allowed to stack bricks onto each other, much like real Lego works. I have no experience with the PhysX chips, but I assume calculations might be too intensive to represent every block separately. Probably, the editor would have to combine non-articulated stacked bricks into a single compound new brick.

That would be a great start, but there are other issues. How about a line following robot? Could you easily draw that line? Stuff like that will matter a lot in actual use.


Filip: How realistic are the simulations of the physical environment, where is that heading?

Tandy: We integrate the Ageia physics engine, so simulations can be very realistic. Currently we don't have support in the technical preview for articulated joints. That will be coming probably in the next tech preview which will be available very soon. You should try out the sim tutorials and you can see for yourself how realistic it can be.

I’m looking forward to what I can do with the articulated joints.

Thanks to Tandy Trower for answering my questions!

Meanwhile, since I haven’t got any NXT hardware yet, let’s take up that advice and build my own simulations. I’d like to build some basic Lego Mindstorms NXT swarm behavior in the Robotics Studio simulator. Coming up in one of the next articles…

NXT Shipping in U.S.

As Jim said last Saturday: shipping notices have been sent by Lego Retail Sets for people who ordered their set with a delivery point in the United States.

Those in Europe will have to wait a few months, but even there Lego will be well on time for the holiday season! Since I can't wait till October (offcial Belgian launch), I ordered mine to a friend in the U.S. So I hope to receive my sets in the next weeks.

People in the U.S. who ordered for Lego Education will have to wait one more month, I believe Lego Education starts shipping in August.

Wednesday, June 21, 2006

Video and more on Microsoft Robotics

Wow! All I can say after watching the new video Microsoft released yesterday on the Microsoft Robotics Group is WOW!

To put that "Wow" into context, it is important to realize that I used to run the company Robonetics, that built software for robots. Our projects were all about building better SDK's for robots. The "state" the video talked about, we had the same concept in our own RIDL and Agent# languages. But I am stunned. This is amazing stuff Microsoft is coming out with.

There is so much in this SDK. There is the runtime that runs on various computers. The scalable architecture. The concurrency library. The distributed services. The high performance simulator with graphics and physics. The code that can be reused from one robot to the next. The simple rewiring of software blocks. Fifteen tutorials online. And above all, the ability for third parties to leverage the platform, much like applications leverage Windows.

And the applications that go beyond robotics are just everywhere. There is so much that the same principles could achieve outside of robotics. I hope everyone in the Multi-Agent Systems community takes notice. People in the Ambient Intelligence community too.

It's just to much! I don't know where to start covering this. But this is a seminal product. I believe it will also make the Lego Mindstorms NXT a much more capable platform than I previously thought it would be. And that's saying something.

Video on Early Microsoft Robotics

A little less than a year ago, Microsoft published this video on their early robotics effort. Especially the first 5 minutes are interesting, where they talk about the Lego Mindstorms RCX, Fishertechnik and Microsoft .NET.

It seems they have come a long way since then in management visibility and support, with an official Robotics Group launched yesterday, and Bill Gates mentioning the robotics effort a few days ago at the announcement of his withdraw from daily Microsoft operations.

Microsoft .NET Interface for Lego Mindstorms RCX

Separate from their announcement of the Robotics Studio, Microsoft also posted an article called "Introduction to Programming LEGO MINDSTORMS" a few days ago. The article describes how to program the Lego Mindstorms RCX using Visual Studio .NET (e.g. Express Edition). It contains code samples in C#, Visual Basic, J# and C++.

Here's how it works in Microsoft's words:
It makes use of the LEGO assembly instruction set (LASM) to interpret and execute both onboard programs and PC-driven requests. LASM bytecode is sent to the RCX from a PC via infrared data transfer, usually from a tower connected to the PC via USB or RS-232 (serial) cable.

Developers planning to build RCX-based applications have two models to choose from:
  • Download LASM bytecode to the RCX and execute it as a complete application. In this model the entire program is sent to the RCX and it is run independently by the RCX's processor. This scenario is known as "autonomous" programming, since the RCX executes independent of the PC.
  • Send a series of requests from a driver (typically a PC) that instructs the RCX on which actions it must take. In this model the business logic occurs on the PC and only imperative commands are sent to the RCX for processing, such as requests to change motor speed. This scenario is known as "integrated" programming since the RCX can be integrated easily with other applications.
What this means is that you can program in C# or Visual Basic, and the program can still be downloaded to the RCX for execution without PC. I can imagine this may have an impact on the people working with Not Quite C (NQC). I'd be very interested to see an evaluation and response from the NQC community.

If you decide to run software on your PC that controls the RCX, then there are some limitations that Microsoft resolves for you:
Although the RCX itself does not provide event notifications to the driver PC, the Microsoft .NET Interface for LEGO MINDSTORMS library simulates this functionality by polling the RCX regularly on a separate thread [...]. The result is that developers are able to enjoy first class .NET support, including support for properties and events, without having to implement the low-level interoperability mechanisms or manage timing.
The features Microsoft could provide by exploiting the 32-bit processor of the NXT would be even better. Since Microsoft intends to provide a development environment for all kinds of robots, they will make robot platforms easier to compare. In my view, Lego Mindstorms NXT is one of the best platforms currently available, and it may well set the bar for other robot platforms.

Tuesday, June 20, 2006

NXT PhysX

I keep running into new questions when thinking about the Microsoft Robotics Studio. The offical statements by Microsoft have said that they will use Ageia Technologies PhysX engine. So if my robot drives around, and picks something up, the simulation will accurately simulate the stress on the part.

What if my robot picked up a Lego pin, and then pushed the pin into a Lego beam? Would the simulator accurately predict that the pin clicked in place? Is it possible to create a Lego Mindstorms NXT robot that is held together entirely by the laws of physics (as it is in real life), using pins and beams? Could I drive my robot into the wall and break it? Could I study how motors are stressing under particular setups, and how to improve my construction?

I imagine the answer to most of these questions is: not at this time. A robot simulator will really stress test the PhysX chips way beyond the level any videogame can.

NXT on Microsoft Robotics Studio

In a previous post, I introduced the Microsoft Robotics Studio.

While studying the tutorials for the Robotics Studio, I noticed that the Microsoft Robotics Studio does support the Lego Mindstorms NXT. In fact, they have provided an entity and detailed model for the Lego Mindstorms NXT with two attached motors and wheels. But theoretically, any Lego robot can be specified.

One of the nicer ways to specify a robot is by using an XML manuscript that specifies the shapes of the parts, and their positions, as seen here:


Click image to enlarge.


Now what would be really nice, is an visual drag-and-drop environment that allowed predefined parts to be positioned onto each other. That way, by first defining all Lego parts as XML, any NXT robot could be created easily in the simulator. Since Microsoft provides such code-generating visual environments for windows forms and web applications, it seems logical that Microsoft will indeed provide such a visual environment.

Off course, LDraw has provided robot drawing tools for some time now. But unlike LDraw, Microsoft Robotics Studio allows you to insert your robot into a non-lego simulated environment. You can program against your simulated robot, and make it come to live in the simulated environment using Microsoft's C#, Visual Basic.NET or one of its other languages. Especially on collaborative behavior and distributed intelligence, which are my personal favorite topics, a simulated environment might be a great testing environment for multi-robot interaction.

But in the end, nothing beats seeing a real robot taking real action. It is less clear to me right now how one can go easily from a simulated robot to a physical robot.

New: Microsoft Robotics Studio



Today, Microsoft announced its new "Robotics Studio". Here's a quote from their new website:
Microsoft has created a new software development kit for the robotics community with the goal of supplying a software platform that can be used across a wide variety of hardware, applicable to a wide audience of users, and development of a wide variety of applications.
While our development environment runs on Windows XP (and will also support Windows Vista), it can be used to support not only robots that support Windows, but also robots that can operate as clients to a PC running Windows.
The programming interface can be used to address robots using 8-bit or 16-bit processors as well as 32-bit systems with multi-core processors and devices from simple touch sensors to laser distance finding devices.
One of the more interesting things Microsoft might add, is the following:
A set of useful tools that make programming and debugging robot applications scenarios easier. These include a high quality visual simulation environment that uses for software physics supplied by the Ageia Technologies PhysX engine.
Modular robotics platforms like the LEGO MINDSTORMS and fischertechnik have made robotics affordable to a wide consumer audience. These platforms are an excellent starting point for the educational market and hobbyists but if you want to scale in terms of complexity of the robot or the number of individual robots, cost will prohibit most people from going further.
In that context, it is interesting to see that the new general manager for the Microsoft Robotics Group has previously been responsible for bringing Microsoft's Flight Simulator to the market. Still, there is a long road ahead before robots can be tested in realisticly simulated environments. Here's how the Microsoft Robotics Studio currently shows the robots:


Even so, Microsoft believes the time for robotics is now:
We think robotics is poised to take off rapidly, and there are solid indications that this is true! With component hardware costs coming down and computational capabilities increasing, the robotics industry appears to have the right conditions to really grow quickly.
Clearly, it's too early to tell just how important this announcement is. But my gut feeling is that this is really important. Microsoft is known to get into a market, and to keep improving until they get it right. Microsoft may dominate the PC market, but they also drove the growth of the PC market.

According to CNET.com, "Microsoft also has several academic and commercial partners that plan to support its software. Those include CMU, Lego, CoroWare, KUKA Robot Group, Robosoft and MobileRobots." (emphasis added by myself).

In the future, I will surely investigate how this impacts the NXT, and how you can connect the Microsoft Robotics Studio to the NXT. But like most of you, I'm waiting for the NXT to be delivered in the next couple of weeks. Meanwhile, you can actually download the Microsoft Robotics Studio Customer Technology Preview 1 for yourself.