LTBot A LapTop Robot
By Stephen W Nolen
This is an OLD Page - See the LTBot2 Page for the NEW Project
Original Version 1.00 Concept - Now obsolete
Overview
The concept of LTBot came from a long time ago from building (or attempting to build) a robot of some (any?) sort. LTBot is not a LapTop in the means of setting on your lap but the point of using an old laptop PC for a controller and higher level programming portions of a semi-autonomous personal entertainment robot. I've worked or played with several other hobby robots using micro controllers and they work but they were a pain to program for me since my coding experience is in higher level languages with more math functions and features built in. The plan for this bot is for the laptop to provide the top level brains for obstacle mapping, and overall operational 'moods', video imaging, speech output and possible recognition, and other top level operations while the micro controller takes care of driving the motors, reading input sensors, avoiding basic obstacles, etc.
The LapTop
The current laptop is an 'eBay Special' Gateway Solo 9100. It is only a 166Mhz machine with 64Mb running Windows 98 so overall performance may not be great but should be workable. The machine will have speech output based on my simple SayIt program source code and possible speech recognition based on the same SDK. Ultimately I will add various "moods" based on the work (and code) done by
John Cutter and his Cybert Experiment.
Additionally the laptop will provide some interaction with my Automated House through a Firecracker X10 device on the serial port and the 802.11b wireless card in the machine. The laptop also has a cheap USB based web cam attached providing a robot eye view remotely through the web browser as desired. Currently this is driven by WebCam32 but a Visual Basic application may read this directly in the future.
Web Access
Since one of my favorite things is hooking up hardware to the web such as my Online House, the machine will be running Personal Web Server allowing remote access internally and most likely externally as well with direct control of the robot from any web browser if the user is authenticated. Additionally VNC is installed for remote management and screen shadowing.
The Chassis
The chassis is an approximate 12" x 12" aluminum plate that has been cut allowing motor and tail wheel mounting. It has a secondary platform to actually mount the laptop on. I had thought of integrating the actual laptop into the chassis but I want the ability to replace the laptop with a better machine without having to rebuilt the platform. This provides room for the motors, batteries and control boards and is stiff enough to avoid flexing during motion.
The DriveTrain
The drive train consist of two Globe gear motors (another Ebay special) that have encoders built into output shafts on the motors. The motors are 12-24V rated and will be driven at 14.4 volts from the dual 7.2v Radio Control car batteries that are wired in series. Motor control is provided by a home build H-Bridge that uses the 7404 inverter method to use only two control lines and two Pulse Width Modulated signals to drive the motors. Depending upon the current load, I may re-configure the H-Bridge to run in Locked Anti Phase to remove the need for the motor control lines and free up those pins as well as provide better locked control of the wheels.
Micro Controller - BX24
The primary sub brain of LTBot is the BX24 micro controller that is used to drive the H-Bridge, read all the sensors and provide the basic obstacle avoidance processes based on the sensor inputs. The BX24 will read the encoders, calculate the dead reckoning data since it has this ability, read all the sensors that are applicable and react at the lower levels using subsumption. In other words the BX24 will be responsible for handling any bump sensors, IR sensors, possible the Sonar data and X/Y position targeting while the PC will handle the overall goals and directional decisions as needed including the PIR sensors, camera, etc. This keeps the code to a workable level in the BX24 without running into RAM problems but still takes the high speed requirements such as sensors and driving the sonar off the laptop. The BX24 will be reporting data back to the laptop via the direct serial connection as polled by the laptop.
Other Control Board(s)
Serial Switch
This home built board houses all the www.FerretTronics.com chips including the serial switch that will be used to allow the laptop to talk various RS232 devices. i.e. the BX24, the Stepper controllers, the servo controller and one other possible serial device. All input back to the laptop will strictly come from the BX24 for now.
Stepper Control
Instead of trying to develop my own code to drive the stepper motors, I opted for the FT609 stepper driver chip. This chip takes a 2400 baud serial data stream and drives the steppers. You can single step, set a number of steps, set the coils to energize on idle or not and even setup ramp values when starting up the motors. No particular use has been established for stepper motors at this point but if I install the servo driven gripper I have the stepper would be a good way of raising and lowering the gripper arm.
Servo Controller
The servo controller is setup to drive up to five (5) RC servos for various functions as determined later. I have a small gripper that has rotation and gripping action that would be fun to ultimately use on the robot which would leave up to three other servos that could be used for camera pans, etc.
Navigation
Navigation is based on the work done by David P Anderson and his SR04 robot. His concepts helped me to finally understand what is needed to provide dead reckoning and target acquisition and tracking when developing micro controller code. I've done the best I can in the BX24 but it is nothing compared to SR04. Check out his two wheel balancing nBot as well.
The Encoder Task reads the encoders in a multi tasking subroutine and increments or decrements the tick counter for the particular wheel in question. This routine is code directly from Brian K Short's Mad Max robot code he so graciously posted online. I could not get the odometer part to run in a task by the time I added the Odometer and heading calculations so it is broken out individually.
The Odometer sub then calculates the current X and Y position and the heading based on this information. Additionally it calculates the X and Y distance and the straight line distance to an X/Y target if provided as well as the bearing and heading error based on the robots current position. This sub is called at least once for each main loop cycle and is also called from other subs such as SetHeading.
The goal is for the Laptop to be able to give the BX24 a target X/Y position and the BX24 to acquire that target while avoiding obstacles leaving the laptop to work through any other task or operations as desired.
More to come down here... never... See LTBot2 for the next step