LTBot2 - A LapTop Robot v2

By Stephen W Nolen

Last Update 09/22/2012

LTBot2 Front Sensors

This is an off shoot of both the old LTBot project and the GB/GB2 project. The old LTBot project ground to a halt years go after not having much luck driving the motors and general loss of interest and sat dormant for the most of the last decade or so (wow, that long?). The renewed GB2 project stopped in September 2012 due to apparently very noisy motors that kept killing the servo control board when let loose on the world. I almost said the heck with it... again, BUT...

After moving the servo controller and the Netbook used on the GB/GB2 project to this old LTBot platform that was just collecting dust, LTBot2 was born... and it works. I've driven it around the house using the remote desktop control, moved the camera around and overall have a working platform to build from. First time in a long time to say that.

So the initial goal for LTBot2 is a basic Tele-Presence robot for around the house use via remote desktop control.

Once that goal is satisfied I may play with some code to give the robot more autonomy by adding more sensors and updating or replacing the main code but for now getting an independent tele-presence solution is the main goal.

Updates and Changes

09/22/2012 - Drive up Dock/Charging Base done, Bumpers Added, Motor Relay Board Added

The drive up dock/charging station is done, motor relay in and working, and bumpers / charging plates installed.

09/18/2012 - Updated code with "Assisted Driving"

Sounds fancy but all it does is read an average of the Left/Right IR sensors and if they blow over a threshold it over rides the user input by running the GoFineLeft / GoFineRight sub routines. This should help guide the bot around things that you can see from the narrow angle web cam view. It also will stop the bot if it sees obstructions in both Left/Right sensors. This can be turned on/off via a checkbox in the controls.

09/17/2012 - Added a cheap LED flashlight mounted to the front camera.

I noticed when driving the bot around outside and in some areas of the house that the camera does adjust for low light but isn't very good at it. A $2 LED flashlight was torn apart and the LED head mounted on the right side of the camera to resolve this.

09/8/2012 - Added the Front IR Sensors and Servos

I added the existing IR sensors I had tested to the platform. Also had some small $5 servos so I mounted the sensors on the servos to allow for scanning or fine tuning the direction and added keys to control them. Nothing big but is now there.

The PIR sensors do not work correctly anymore - anytime they are hooked up to the Maestro all the other analog inputs go astray so I am just leaving them off for now.

09/2/2012 - Setup and ran the platform

I have written the control code using JustBasic as the language. I may eventually port this over to VB Express or something but thought I'd try JB out for a while. Pretty easy to code in but different than what I'm used to.

The LapTop

The current laptop is actually a borrowed Acer Netbook but the platform can pretty much carry anything that will fit between it's wheels. The Netbook provides enough CPU power IMHO to run the JustBasic code I am using for the basic tele-presence needs the bot was initially built for. A stronger system may be needed if I move to VB or .NET or want to do more with the bot but for now this works.

If the expanded goal of more autonomy begins I will add more sensors, etc as needed.

Side Note: Although it's very old, I still like the work (and code) done by John Cutter and his Cybert Experiment. It hasn't been updated in a very, very long time but was a fun read back then.

Basic View

Just a front view of what is online so far. Two Sharp IR sensors and a servo based Pan/Tilt web cam.

Tele-Presence Access

To be able to remotely control the bot you have to be able to connect to it and in this case it's super simple. As long as the robot can get on a WiFi network to the world, OR via a MiFi or cell card, one can get to the robot. I use LogMeIn.com on the robot to allow remote desktop access and manage the controls.

This could be done via VNC or something as well but with LogMeIn I do not have to be on the same network to gain control of the bot. LogMeIn offers free for personal use accounts and the robot has it's own account of this purpose. Screen Shot of beta testing

The Controls

The main control the laptop has over the robot is by using a Pololu Servo Controller that is connected to the laptop via USB / virtual serial port. This is a very affordable way to not only drive servos BUT also get digital and analog Input/Output options as the controller ports can do any of those services.

I will be running several servo output ports (motor controllers, camera servos), a couple digital outputs (power relays to turn controllers on/off), some digital inputs (PIR sensors and bumpers if used), and analog inputs (motor battery voltage).

This makes it quite easy to implement the various basic needs for mobile robot platforms into a small, easy to use controller without having to learn how to program micro controllers. Just a thought at least.

Inputs / Outputs

The following inputs / outputs are currently planned or already implemented:

Servo Outputs

Digital Outputs

This drives a basic 5v relay that pulls in to turn on the ESC devices

When they power up they find the center point based on current servo signals

Note this must be powered off a different supply than the servos or you'll kill it but never turn it back on. I used the +5 on the servo board via the USB interface.

Digital Inputs

Analog Inputs

These will measure distance to objects by either scanning by servo or hard mounted.

Anything beyond these needs and I will likely need to move up from the 12 port servo controller I have to an 18 or 24 port version.

GPS

I have an old Microsoft USB GPS unit (Pharos 360) that has been sitting around as well and already have the JustBasic code reading it and parsing out the current Lat/Lon via RS232. You can see that on the sample screen shot above. The sensor WILL have to be mounted up higher in the chassis and on a non-metallic mount from my experience to get a better signal. I mounted on the "tail" of the bot and it never picked up enough satellites to get good readings.

I will be playing with the GPS and see how accurate, or more likely how NOT accurate the readings are and how useful they may be. Could be useful for outside use to get a basic idea or where one is at but it appears it's only around 10-15 foot based on some reading / plotting I've done.

Playing with some lighting

These will be turned on/off via simple relay board hooked to the servo controller

Not required but handy in dark places that I can't turn on lights via the Home Automation system

Butt View

Here you can see the GPS unit and the four port USB hub that connects the controls to the laptop. That way there is only one data cable to the laptop. Once everything is stable I will likely shorten all the USB wiring to make it more managable.

The Chassis

This is all the same stuff from the original LTBot page:

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 rebuild the platform. This provides room for the motors, batteries and control boards and is stiff enough to avoid flexing during motion.

In fact there is a lot of extra room on the platform that could be loaded up with other features as needed in the future.

Mock up of Chassis from long ago. I've gone to a single 7.2v pack and ESC controllers at this time.

The "claw" may well come back and be used as a full little lifter

Just an old piece of re-enforced plastic that worked out well. Light, strong enough for a laptop/netbook and a good non-metalic mount for the GPS

The Drive Train

The drive train consist of two Globe gear motors (another eBay special long ago) that have encoders built into output shafts on the motors. The motors are 12-24V rated and but will be driven at 7.2v via a standard radio control car battery. I had initially thought about using dual 7.2v batteries in series but after testing with a single 7.2v unit the speed is good enough and power is fine. The motors are geared down quite and bit and have loads of torque at this voltage and should pull the bot along nicely.

Motor Controls / Electronic Speed Control

I had originally planned on an H-Bridge controller but thought of the option of using standard RC Electronic Speed Controllers (ESC) off the laptop via the servo controller board. The controllers are cheap version that were just over $13.58 each shipped on eBay so for under $30 I have a dual channel "320Amp" controller. They can handle any motor I use them on, have reverse and braking capability.

One additional benefit I found with the ESC's is how the controller brake works. It actually makes it better when controlling the robot remotely. If you jump from Forward to Backwards it just stops using the brakes instead of ripping into reverse. It also applies the brake on the slow side if you are moving forward and decide to turn making the process smoother.

Motor Relay Power Board (9/22/2012)

I used a Sain two relay board instead of building my own as it was under $13 on eBay and provided double throw, double pole relays at a higher amperage than I had on hand. I power the relay board off the regulated output of the Maestro controller so I can turn them on/off even if the motor/servo power is not there – which is isn’t when I power them down.

Relay board mounted in the left rear of the bot. This controls the motor ESC power and the LED headlight.

Sensors

Cameras

For a tele-presence solution the most obvious sensor need is a camera and LTBot2 has two of them for now.

The main netbook camera is facing up to see higher objects, people, up dresses, etc.... oh wait, I mean up to the real world.

The other camera is mounted on two servos to allow a basic pan/tilt option for some "look around" features without having to turn the bot left and right.

To monitor the cameras I am currently just using the preview option available in XP for the "USB Video Device". I understand that is no longer an option in Win7 - which is stupid IMHO - but it works here and works well without burning horsepower and battery running another app.

Other Camera Thoughts

Because most webcams have very narrow field widths, and these are no exception, it does make it a little more difficult to navigate the robot remotely as you do not have the peripherally vision like in person. One option I am looking at is using a very cheap vehicle "backup camera" that has a wide lens on it and a low end USB video capture device for the main front camera. It would be mounted on the leading edge of the platform.

Most of these cameras also have a grid in the display (or the clear cover) that would give some input as to how far something is away from the robot. This could free up the pan/tilt camera for other options for looking around sideways, etc. Pretty standard Sharp IR on a micro servo for distance measuring. These generally watch the outside angles for anything that can't be seen on the front camera.

LTBot2 - Bumpers

There are Inner and Outers because they also serve as charging connections on the dock and I need laptop and motor battery chargers.

Infrared Distance Sensors

I will likely add a couple Sharp IR sensors I have at the front corners and/or mounted on servos to provide some distance feed back for the program. Using the servo board in analog input mode they can feed back relative distances which I will display on the main code/control screen for references.

Later some subsumption routines could be added to keep one from driving the robot into the wall. However, there may have to be some exceptions when driving up to the charger base.

PIR Sensors (future?)

I have a couple PIR sensors by Parallax I picked up at Radio Shack that provide simple on/off outputs based on motion / presence. It will likely not be a "people sensor" but may be used to wake up the bot or help let me know if someone/something is in front or back. I have them so figure I may as well integrate them for some current/future use.

Sonar Sensor

I also have a sonar sensor that hasn't been used. It provides either analog voltage output, pulse or rs232 output of distances measured. It is mounted to the front webcam so I can have some pan/tilt options and measure the distance to objects in view. Still have to get the code reading / displaying / doing something with the data however.

Bumpers / Charging Plate (9/22/2012)

I’m not a big fan of bumpers but realize the necessity of them at least for my projects. However, these bumpers provide a triple service: 1) they are normal bumpers during driving that stop and auto-correct the bot if I run into something I can’t see (or during future autonomous mode operation), 2) they are “charging plates” connecting the robot to the charging base when driven into it, and 3) provide feedback during “docking mode” to insure the charging plates are connected to the base. I have to have two separate sets of contacts to charge both the laptop and the motor battery thus the inner and out bumpers. This could come in handy, however, during autonomous mode to determine how bad the bump is (inner or outer) and take appropriate actions, i.e. big backup and turn if inner bump. Navigation

As a tele-presence solution navigation is rather simple with keyboard or mouse control for Forward, Left, Right, Stop and Backwards. The controls are laid out in the old i-j-k-l-, etc format to make it easy to use. The camera is similar with an r-d-f-g-c layout for moving it around. I will add some code that keeps track of how long a command has run in a particular mode (Forward, Left, Right, or Backwards) and turn off the navigation control if it's stuck to avoid "run-away" situations.

I/O Assignments

This is the general I/O assignments of the Maestro servo controller. I'm already planning on buying a 24 port version as I've dedicated everything I have available. Pin assignments are variables in the code so they can be moved as needed with just an assignment change in code and a config change in the Maestro. * These drive separately powered relay board as the motors power the main 5v for the servos and sensors. The relay is board powered directly from the Maestro allowing motor management.

Possible Future I/O Assignments

Actually pins 12-23 cannot be used as inputs, only servo outputs so I will re-shuffled the connections/assignments when I upgrade to a 24 port Maestro.

Charging Dock

As you may have guessed, a mobile tele-presence robot that you have to manually plug in to charge isn't going to be very useful so a drive-up charger is a must.

To make it more complicated there are two batteries that need charged; the Laptop battery that uses a 19v supply and the onboard motor battery which is a 7.2v unit.

Docking / Charging Bay: (09/22/2012) The dock is quite simple; a piece of wood with aluminum vertical plates connected to the chargers that intersect with the horizontal bumpers to make connections. I’ve spaced the plates to try to keep any cross connections from occurring although that still could happen due to the width of the inner bumpers. I put a center strip on the board to allow my camera to see the center line during approach (and possibly a line follower sensor if I try to make any autonomous docks). I had an old retro DC volt meter I mounted at the back so I can see the motor charger voltage on the camera so I know once I power the motors down the connection is really, really there as the charger loads down.

Docking Process: 09/22/2012) The process is pretty simple; Put the robot in “docking mode” that turns off driving assistance and makes the bumpers normal contact sensors. This also faces the IR sensors directly forward to read the distance to the center charging plate lips for help knowing where I’m at. Then it’s just line up with the dock from a few feet back, go forward with minor corrections keeping the center guidance line in the middle. Once I’m close enough I use the “Fine Forward” command that creeps the robot a few inches at time until I see the bumpers have switched on and the laptop battery icon changes from batter to AC charging. Then I power down the motor relay and check the voltage meter to see if it loads down charging.

Other Options

Gripper / Hand

I still have this cool little gripper / hand that uses two servos to twist / grip items under about 2 inches or so. It could be "handy" to have it mounted up front offset from the camera with a lifting "arm" to pick stuff up or move stuff around. Running out of servo ports to do this as it takes three to run it but would still be a fun addition. Not that any autonomous coding I can do would use it but the tele-presence could.

Final Status

LTBot2 as it was here was disassembled around 2013 to use the platform for other purposes.

Check out the TRIMMER BOT page for one of it's uses.