Date: Tue, 28 Feb 2006 02:20:50 -0600 (CST) Subject: this robot is unconventional X-UID: 139 Content-Type: APPLICATION/OCTET-STREAM; NAME="brainofstanley.png" Content-Type: APPLICATION/octet-stream; name="softarch.ver2a.png" I'm still very shaky when it comes to even basic linear control systems theory. It will be several more weeks before even the basics of proportional, integral, and differential control make sense let alone transfer function versus state variable representations of a plant and controller. What I'm trying to do right now is sidestep GCEs (Gross Conceptual Errors). I don't understand the technologies involved in building an autonomous field robot. So there's a high probability I will try to do something impossible and fail. I wish to avoid this if I can. Probably most valuable so far is the cultural viewpoint of control systems design. It's helped put the DARPA Grand Challenge vehicles in better perspective. I think I have a better feel for how they work. The first time I attended the DPRG (Dallas Personal Robotics Group) RBNO (Robot Builder's Night Out), David Anderson gave a demonstration of JBot, his very impressive autonomous field robot. It drove around the warehouse, weaving in between cars and avoiding obstacles. JBot relies on two sensor systems. 1. A high quality 3 axis IMU with gyros, accelerometers and magnetometers 2. A forward facing sonar array JBot was designed as a DARPA Grand Challenge vehicle in miniature. It's not immediately obvious how well it has succeeded in this goal. JBot is a completely "tactical" machine (term used by vision system team leader on Stanford's robot). It is like a bat and ninja gymnast all in one. The sonar allows it to feel the immediate environment with high accuracy. So it solves the obstacle avoidance problem. The IMU allows it to never lose track of its current position and orientation. This solves the localization problem. If you look at the diagram "brainofstanley.png" (redrawn so I don't just include the GIF from the PARC presentation), two things are obvious. 1. The localization sensors: GPS, GPS compass, wheel odometry, IMU, are critical. Every major subsystem depends on them. 2. There is no feedback in the rolling worldmap. The robot does not rely on an internal world model for perception of the immediate environment. These two qualities are captured in JBot. My robot is significantly different. This does concern me. It could mean that the entire approach is misguided. I do believe that my approach is far more complex (which is not a good thing). I just don't have the option of a tactical machine. For that, I need reliable localization and obstacle avoidance. The former requires an IMU and differential GPS. The latter requires laser rangefinders. At the speeds the robot will be moving, sonar doesn't have enough range. I have neither of these. My robot design relies on an internal world model. Without this, it is lost and blind. It is also reliant on optical cameras with a rate gyro and GPS. So it's more like a cruise missile that requires a detailed mission solution to follow. In reality, I have no choice. Too many aspects of the design are fixed at this point. The only way it can work at the desired performance level is to trade space for time. It needs a pre-computed world model, sort of like a first-person-shooter game engine? If you combine the low camera frame rate with the relatively fast gyro and slow GPS, the analgous situation for manual control might be something like a bobsled down a track at high speed. Everything is happening so fast that the driver must work very much from memory, from an internal model of the track. So there is a lot of anticipation involved in the control system. This robot, if it works, will tend to be at the outer edge of its stable control envelope. One more thing that became clear today. Full time manual control with autonomous operation doesn't mean full time manual override. It's more like a higher-grade lens on a SLR camera. The autofocus system is always on. But you can always tweak the focus ring too. So manual driving must allow correcting the robot while allowing it to still drive itself. This isn't that crazy. Honda has a prototype with autonomous cruise control. So the car drives itself - follows the road, avoids other cars, etc. However, if you release the wheel or the onboard computer otherwise believes the driver is not paying attention, it will sound an audible alarm and disengage the autonomous mode. I feel guilty as I haven't been coding like crazy the last few days. But I feel that I need to think about what I'm doing lest I waste more time in the long run by following dead-ends. At this point, I believe that I've reached out about as far as I can without coding. I will continue to study the control systems material I have, however. I'm not sure how directly applicable it will be as it is readily apparent that the feedback loops are quite complex (the 6 arrows pointing at the box labeled Localization are a dead giveaway that lots of complicated stuff is hidden inside).