Wednesday, September 15, 2010

HLL Robotics Demo Video

I've decided to release a 2007 video of the robot demonstration (which will be available for download with the new version sometime relatively soon). Let me orient you first so you know the relationship between this old video and the current project software downloads.

I created the HLL prototype during the summer of 2007 as part of a much larger robotics software project. HLL was not originally conceived as part of a robotics system, but robotics fits well within the much broader scope of potential applications. As mentioned in more than one blog post already, I originally used Multicasting to the browser, which only worked within a LAN when machines had their security adjusted to allow it. I worked in a completely different city than the rest of the project participants, so a video demonstration - just to bring people up to date and show that something was working - made sense.

The idea behind building HLL during the project was that it would be connected to the robotics software being built on the project; as the upper three layers in what would then be a six layer learning / adaptive software system for robotics. Another package became available at the time of project start that offered somewhat more mature SOA kinds of processing that HLL intended to offer (Microsoft Robotics Studio), which was subsequently used with the other robotics software. The tech. team chose to work with the other software, which had the advantage of already existing, and HLL did not get past the prototype stage.

HLL is still very interesting for robotics, imo; but also a much broader range of potential applications. Nonetheless, there's been a time skip between the 2007 prototype work, which was used to flush out design details, and where we are now. The commitment to open source happened just two months ago, and I've written in an earlier post here about the technical work that's been done since then (browser stuff has been a time killer). So there is actually, pretty good correspondence between what's shown in the video and the state of the software right now - except that the source code is now emerging well from from somewhat chaotic exploratory prototype work and taking shape as real software. (And see "Current Issues" blog post to see where it's going now.)

The robot simulator used during prototype work was very simple. It knows about the "two rooms" displayed in the browser. When a command reaches the robot simulator, it merely calculates a new position in response to the command, and sends it back. When the new position data reaches the browser, the circle (representing the robot) "jumps" to the new position. RE: "jumps", I've written about the graphics issue in an earlier blog post: "Why a Browser-Based GUI? - The Time Bandit". Microsoft is now reportedly supporting SVG and the next release of the robot demonstration should have smooth movements.

Interest in the robot application during prototyping went beyond the fact that prototyping was done in the context of a robotics software project. Two copies of HLL are used that communicate with one another. One copy operates as part of the robotics Command Center. The other is for the robot itself. Each associated HLL "application" suite is different. Each can be physically located in a different place. And there's the potential for a single Command Center to communicate with more than one robot - and for the robots to communicate (intelligently) with one another through HLL.

To get to the point of creating the first demonstration of a "smart" operation of multiple HLL, the (see Current Issues) configuration processing and XML plans needs to be completed (and although not necessary, it would be nice to have the rule-processor). I have been imagining this: The Command Center is the central facility for a many mobile robots at a logistics center. One of the mobile robots is called to join a team to unload a truck. This particular robot is either new or has been working on filling orders or some other task, and has never been involved in unloading trucks. It doesn't even know where "pier 6" is; so it doesn't know where to go to join the team. It doesn't recognize location "pier 6." All the information needed is available at the command center (or could actually be on another robot).

The Command Center issues the command to the robot; to go to pier 6 and help unload the truck. The robot recognizes that it does not know how to get to unload a truck and returns that message to the Command Center's HLL. Knowing whether or not a command is supported is one of the generic jobs of the HLL Executive. The Command Center is designed to help bring new robots into the operation and to support multiple use of robots. It fetches the software needed and returns it to the robot. (We were working on learning / adaptive robotics software, so in that context, this would even work if the only software available was not specifically designed for the type of robot being called into action.)

The robot knows how to go somewhere, but in implementation the manager finds it has insufficient information for the navigation expert to find pier 6. That information is also passed back to the Command Center, which returns an extension to the robot's map. The robot is then able to go to pier 6 and help unload the truck. {Note: This scenario is also a step toward real-time teamwork.)

OK, but that's not what you're going to see in the video. The video just provides a simple report given within the development group that gives evidence that the prototype software is running. It gives some trace information to the browser and the circle "jumps" around in the two rooms. Oh, and BTW - I did figure out why I was getting socket related error messages.

This is an asf video. It does work with Microsoft Media Player, but you might need to coax it to get it started - i.e. select Windows Media Player or open the file from within Windows Media Player. But you can try just clicking on the link and waiting for it to load. Here it is: 2007 robot and command center early prototype demonstration.