| HomeRobotics | HomeAutomation | Racing | 1/24 Models | Mustang | Family | PaPa |

A LapTop Robot
By Stephen W Nolen

Overview | Laptop | Chassis | Drivetrain | Controller | Servo/Stepper | Navigation | Sensors

This is an OLD Page - See the LTBot2 Page for the NEW Project

Original Version 1.00 Concept - Now obsolete


91888 bytes - Mock up of LTBotThe 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.

Turn off Background


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.

Close up of Mock up

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.


144931 bytes - View of Chassis mock up
Mock up of Chassis

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.

Gear Head Motors in the Junk Pile

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.


Pictures Soon 

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.
Switch-Servo-Stepper.JPG (26934 bytes)
Serial Switch
Servo Driver
Stepper Driver
  • 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 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.

 Pictures Soon


  • Bumpers

Athough not particularly thought out yet, I'm sure I will end up with some bumper sensors on the front of the robot to handle those things the other sensors miss. I am not sure if it will be a full plexiglass front plate, feeler type bumpers or a skirt at this point.


Pictures Soon
  • Infrared

A pair of simple digital IR sensor will be used to detect objects closer to the robot. Each sensor will be angled slightly out and will have a Left/Right controlled emitter which will be used to determine Left, Middle Left, Middle Right and Right objects for obstacle avoidance.

Pictures Soon
  • Sonar

A pair of SRF04 sonar sensors are planned directly under the laptop providing a somewhat stereo view of any longer range obstacles in the robots path. This data will be used for the robot to begin to avoid potential objects based on the distance they are and will be used for longer range object detection.

 Pictures Soon
  • PIR

Since the possible presence of humans is not really anything for the BX24 to worry about, these sensors are read by the Laptop using the LPT port pins. By using a pair of alarm grade sensors the robot has a general idea of which side the person or heat source it located and can then home in on that location if desired.


Pictures Soon 

Charging Base

I've played with the concept and experimented with a home charging base that uses an Infrared Beacon for the robot to home in on when it needs recharging. By using two IR sensors on the robot and independently driving the emitters I plan on use the onboard sensors to make the 'final approach' to the charging base.

Initially the robot will use it's dead reckoning data to get close to where the charging base is by setting an X/Y coordinate close to the base. The Laptop will then turn on an X10 module via the Firecracker interface that fires up the IR transmitter directly in the center of the charging base. The robot will then keep it's IR emitters off using the beacon to attempt to keep centered as it approaches the base similar to a photovoir activity but using the IR beacon instead.

To detect contact with the base the front bumpers will be used. Metal brushes hanging under the front of the robot will be used to connect to the power supply and allow charging of the onboard batteries including the laptop.

 Pictures Soon

More to come down here... never...