Message based and shared memory control interface is mostly complete
The message based control path is complete. The network joystick implementation is completely in the joysender program and out of the robot proper. The "planner" concept is obsolete. There is now simply a motor planner that responds to commands. All planning and control is assumed to operate in a separate process on or off the robot system.
The original thinking was that different "planner" objects would be added in the robot to make it do different things. As I have used to robot to try different objectives, I was constantly writing "new" planners by cloning "old" ones and modifying them, Worse yet, I would have to re-compile the robot with the new planner, replacing the old planner, to test. If I waned the old functionality, I have to recompile a new robot program. It was frustrating. While I like the concept of the planner, I am forced to admit it was a mistake.
Worse than the previously mentioned problems, the "planner" concept was difficult to map into other projects. The Player/Stage project looks interesting, but difficult to interface. It should be possible to map player/stage concepts on to the LPCR more easily now.
The programming model, moving forward, is a message send/response system. A message is sent to enact an action and a response is returned to indicate success or failure and possibly status. Also available when a process is running on the same system as the robot, is a shared memory block that contains *all* the operational data from which the robot is operating. A control process may read and update these values as if it were part of the robot process.
The only problem I have seen with the message interface is a lag on a congested network. While bothersome, I don't think it affects "real" usability. A solid control process should be running on the robot system, in which case it would not suffer the lag. It is only a problem when the robot is streaming all its video camera and the user is trying to control the robot with an analog joystick.
There are some ways to improve the communications, but if reliability is in question, the robot just performs a hard stop.