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.
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 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.
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
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.
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
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.
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.
Not required but handy in dark places that I can't turn on lights via the Home Automation system
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
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.
Relay board mounted in the left rear of the bot. This controls the motor ESC power and the LED headlight.
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.
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.
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.
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.
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.
Check out the TRIMMER BOT page for one of it's uses.