Wednesday, March 3, 2010

Intelligence on wheels

Robotic vehicles are not a novelty. Initial attempts to create autonomous roving machines date back to the 1970's, with examples such as Stanford cart in 1961 and Shakey, Moravec in 1979. These were simple machines. Digital computers were not yet miniaturized to the point of enabling interesting computing power onboard a vehicle, regardless of its practical size. Even so, the state of the art of the technology at that time proved sufficient to allow the mankind to explore new fronteers of a universe never before crossed by human artifacts. Two such examples were the NASA Voyager I and II missions. Having passed the 30 year mark in space, these prodigious machines still beam back health reports to earth, and should continue to be up and running until the energy generated by the plutonium based RTG (Radioisotope Thermovoltaic Generator)is insufficient to power the essential electronic systems onboard (of which one of the most important ones is the radio transmitter). This should occur anywhere in the next 10 years.

Today we have the result of tremendous technological improvements since the time the Voyager spacecrafts had been created. However, achieving the same degree of reliability is a milestone not always achieved in every case, regardless of how much extra knowledge the humanity have been gifted with.

While trustworthiness is not necessarily a consequence of innovation, it must be in the agenda, as long as the outcome is intended to be a dependable solution.

Anyway, the focus of this post is more on innovation itself rather than discussing trustworthiness and reliability. I am presenting a small part of what one day will be with us everywhere.

We are surrounded by automatic machines in our daily lifes. Even where it's less obvious. The small capsule called elevator, that takes us from one floor to another is one such example. While it doesn't look like a robot, it is a very autonomous machine. Equipped with clever microcontrollers, elevators are capable of making logical decisions, while multiple users request its attention. It's a simple example of a machine that in its current state of evolution is driven by an electronic computer, has sensors, and is capable of triggering actions (e.g.: activate a motor) based on a predefined plan, or in response to external input (e.g.: pressing a button). It can be enabled with useful optimizations such as having the ability to position itself automatically in different floors, depending on the selective demand at diferent times of the day, within a building.

Robots are intended to be useful for the human being, not to replace him. Through automatic machines we moved from one point to another in our ability to produce more and better artifacts, and to provide better services to people.

In this blog post I am presenting you with a machine that, while functional, is still the first step for achieving a helper robot, the hopefully will be the base platform for making very interesting household applications for machines this size.

I started from buying a cheap supermarket toy RC car. It called my attention the fact that besides its low cost, it was large (1:10 scale), had very nice looking wheels, and featured a 850 mAh 10 Volt lead acid battery (so most likely it also had a motor rated for 10 Volts or more):

Of course the lead acid battery would not be very interesting as my future power solution, but we'll return on that later on. I decided to buy this car for the features managed to discriminate.

After fully charging the lead acid battery, I tested the car, still in its original form. I noticed that it really had nice torque and plenty of raw power. However, it lacked the ability to harness the beast. Like with most toy R/C cars, it's circuitry only allows zero or full throttle to be applied, both in forward and reverse directions. This, of course besides being very limited, also translates to prematurely worn and damaged gears. On the other hand the steering was also very poor. It was also zero or full travel in both directions. Of course we cannot expect proportional controls for a 25 Euro car! Well, I tested the car for, say, 1.5 minutes, and the battery soon started to gradually drop the delivered power. I was admired, either the battery had very poor quality or the motor was an animal.

I decided to start the transformation. I had a few spare hobby R/C parts such as a few microservos, a Art-tech 41 MHz 6 ch. receiver used in model helicopters and planes and a 11.1 V 1300 mAh battery (the stock battery from my Falcon 3D heli).

I started by removing all the crap out of the car, until I got this:

Here is the circuit board with the receiver and motor control. Here I had already removed the two SPDT relays used for reverse. Take a look at the big resistor (feer):

The original steering motor:

It hardly had torque to turn the wheels, specially after 1 minute of battery use.

The transmission motor yes, had quite a punch. I measured it's current while connected to the fully charged battery, it draws 1.5 A free running, and 13 A under full load (zero RPM on the shaft). So it consumed 130 Watts of power. The output power should therefore be around 100 Watts, assuming it's a reasonably efficient brushed motor.

I still needed a brushed motor ESC and better servo for the steering. I searched the web for DIY ESC solutions, and found this, which seemed interesting:

It featured design variations for both cars and planes. It seemed exactly what I needed, and I calculated that it shouldn't be hard to build and expensive. I had the option of choosing the relay or the H-bridge reverse. As I still had the two SPDT relays from the original circuit, I decided to try this version, as it would be slightly cheaper. Already in an advanced stage of the assembly:

And the top view, with the two white relays:

After building the hardware it was time to program the PIC:

I had to build a small board with the ICSD socket for the PIC, as the ICD 3 is not provided with one:

Mounted the 41 MHz radio and the LIPO battery. Both fitted nicely into the original
battery compartment:

Mounted the 43 g standard servo (it has 6.5 kg of torque). Replaced the original links with ball links. Adapted the steering bar in order to attach the servo arm through a ball link:

After a few more assembly iterations, mounted a virgin pcd board to be used as a plate for scientific instruments, and attached a gymballed support for a 1.2 GHz wireless camera. The gymball was assembled manually with aluminium. It uses two microservos to provide pitch and yaw for the camera. This is the result:

A detail view of the camera, which is also powered from the LIPO battery, through a regulator board I have also assembled (located in the bottom of the virgin pcb). It provides +5 V and +9 V necessary for the camera (camera and transmitter respectively):

The car is then controlled by a standard PPM 6 ch transmitter (41 MHz):

After the assembly, it was time for a test drive! Turned on the camera, connected the 1.2 GHz analog video receiver to a home made patch antenna, and time to hit the road..errmm...the wooden pavement..

As the car moved away from the place where I was controlling it, signal weakening and multipath interference became apparent. Some servos glitch violently under signal interference...dumb radio... The ESC on the other hand doesn't react because it properly filters occasional glitches.

No comments: