A juggler, or conjurer, who arranges on a stand
[05.2009 - RoXI is currently in development]
RoXI is currently being developed and tested in parallel with Project Roland - Robot Oliver.
<| RoXI Basic Features
RoXI is a Windows-based GUI for robot control and monitoring. It is written in Visual C#, using the Microsoft .NET Framework, and the (free) Express development tools. This framework includes a nice object-oriented language and IDE, and provides zillions of pre-built software objects, ready to harvest for useful purposes. A working demo of RoXI is available for downloading, see below.
On good design.
<| Example Illustration
Below is shown an illustration of a sample RoXI screen. Individual windows are:
Command & Parameter Settings.
Specifically, various windows allow linking command buttons to command strings in different formats, plus setting parameters for the Robot Monitor screen Bargraph displays as well as the graphical Sonar displays. In addition, the specific command strings for each case can be formatted, and sent to the Terminal/SerialPort for interactive testing. The screen illustrates the effects of formatting and sending a Test command ("S4\r") for the fifth Sonar device; results show up on the Parameters screen, as well as the Terminal and Robot Monitor screens. (note that the Sonar display is still simulated here, but the command formatting/transmission is actual)
<| Command Formats
The current version of RoXI uses a simple command format, where all data are sent via RS232 as ASCII characters - first is a command header character, then the robot address, then a command string, then a "single" databyte with up to 3 ASCII characters, and terminated by a carriage return "\r".
The format is designed so that multiple robots can be controlled and communicated with simultaneously using a single RS232 serial port, and Zigbee RF network. The Zigbee transceivers have on-board buffering and use a CSMA-CA (carrier-sense, multiple access - collision avoidance) protocol to prevent data collisions when RoXI or various robots transmit simultaneously.
Later versions of RoXI will include more complex command formats, and hopefully will also include a hook to wifi.
<| Preliminary Results
[05.2009]. Initial results using RoXI are encouraging. It is fairly easy to steer a robot around, while also watching streaming video from the robot wireless camera in a window on the computer screen. Response time for command transmission after a 'steering puck' is moved has no noticeable delay. This is true even when the PC is simultaneously executing video capture and display while RoXI is running [Windows XP PC with 1.6-Ghz clock].
A Tale of Two Chips. RoXI has been tested so far in commanding 2 remote controller chips, one an OOPic-II, initially used to operate Robot Oliver, and the second a custom chip used for R/C servo control. Some additional commands were added to RoXI specifically to command the servo chip.
With the OOPic, steering control of Oliver is very sluggish. The OOPic cannot process commands fast enough, and especially when steered using the real-time "tracking" mode, commands are continually missed. Oliver will need a much faster processor for parsing and executing commands in real-time. In contrast, the servo controller chip is known from other circumstances to be able to respond in a few microseconds to servo move commands at baudrates to 115,200, and in this case, servo arm movements are essentially instantaneous with 'pan+tilt' puck movements on the steering grid. In these tests, the PC RS232 port was connected directly to the other chips, without the RF-link, and possible RF device delays, inline.
Response time is still being tested, but so far, RoXI steering response time looks fast, and indicates the Windows .NET SerialPort object has suitably fast access to the comm hardware.
Feedback is welcome.