Date: Wed, 7 Jun 2006 01:12:04 -0500 (CDT) Subject: steering strategy X-UID: 176 Content-Type: APPLICATION/octet-stream; name="design20060606.png" Adding in robot control support for the remote control is pretty easy. There are only three new commands. These are in addition to the existing manual driving through the gamepad. Manual override is full-time even in autonomous mode. That's kind of a principle I've learned from having things go wrong before. (applies to speed strategy only) SPEED - set the upper and lower motor duty cycle limits (applies to speed and steering strategies) PARK - set speed to zero and try to center front wheels DRIVE - heartbeat that allows the robot to drive, without this, it not go It's disappointing to see all of the bang-bang control and conditional logic for steering. The speed strategy will be similar. It does not feel sophisticated in that I have math guilt (should be using more). But many abstract ideas disappear when faced with coding something real and making it work on limited hardware. The speed strategy and road segmentation must be coded next. For this pass, I'm not going to do anything sophisticated. I'll just use histogram intensity thresholding with a very simple road model. This works when the light is right. I want to at least see the robot drive by itself on a path once and validate the basic approach. Last week, I realized that I've been making this problem more complicated than it must be. All the robot needs to know is: 1. Do I turn left, right, or go straight? 2. Do I speed up or slow down? (Note, I'm completely ignoring reverse - the robot only drives forwards.) The goal is to answer these two questions in any way possible. There is no necessary requirement for any particular internal world representation or solution. It may be that tricky algorithm X works well. But it may also be that something much simpler exhibits equivalent performance in realistic conditions. So instead of presuming a complex solution, I'm starting from the assumption that something simple is adequate. I know that I've bounced around from extremes of philosophy on this project. Right now, I'm back to a very practical, hands on, let's see it work mode of thinking. As best as I can discern, without practical experience or formal training, there is a tendency to wild preconceived assumptions based on very little evidence. Then once there is more progress and experimental results, reality takes hold and shatters the preconceptions. That's experience.