Today's aim was to consider some of the physical effects that may be seen in attempting to track the robot's position.
Firstly, there are a number of improvements which could be made to the current wheels. The wheels are made from quite smooth, hard plastic, which doesn't provide a very good grip on some surfaces. Ideally, a hard, incompressible, high-friction coating would be applied just to the central band of the wheel.
The coating must be incompressible so that the effective wheel diameter is constant. It must be high-friction to actually add some grip, and it must be confined to a thin band to keep the effective distance between the wheels constant.
In any case, some slippage will always be present.
To allow a degree of simplification to be achieved, I needed to test the assumption that the robot's centre of gravity lies approximately at the centre of the platform. To test this, I raised the robot's driving wheels on a piece of wooden board, and found the balance point. At this point, the robot is nearly level, so the centre of gravity is just about on the line between the wheel axles.
Picking the robot up with a single finger at the front and back (using the castor mounts as a reference point) shows that the centre of gravity lies pretty much directly on the centreline. Hence, the assumption holds.
Considering the normal force applied to each wheel surface (the force pushing it towards the ground) made me realise that simulation might be a bit more difficult than first thought - the proportion of the weight at each wheel and castor changes the amount of slippage that will occur in a given scenario. To get the best friction between the wheels and ground, the wheels need to bear most of the weight force. Ideally, the castors would both be mounted on soft, preloaded springs, so that the force from each was known. Unfortunately, this would tend to make the platform oscillate quite a lot during transients like stopping and starting. To consider the problem properly, 3D rigid body dynamics will probably have to be employed.
To attempt to measure typical wheel slip, I wired the robot up to a supply, so that both motors would drive forwards. If the mass of the robot is measured, and the initial acceleration is observed, the maximum useful force at the wheels can be calculated.
Acceleration Measurement Setup |
My initial measurement technique involved a wire trailing on a threaded bar, with a voltage applied through a load resistor, monitoring the current using audio software. I was hoping (blind optimism, anyone?) that the bar would produce a good oscillatory signal which would indicate the robot's velocity. Unfortunately, this didn't turn out too well - only noise was produced.
Threaded bar with insulating tape |
To improve upon this, I attempted the same setup, but wrapped strips of insulating tape around the bar. By measuring the time that the noise stops and starts, the velocity in each region could be measured. The acceleration could then be calculated. While the measurement seemed to work well, the calculations returned a very poor result, which I have no confidence in.
A better result would probably be achieved using a printed pattern laid on the floor, using a microcontroller to monitor the pattern and record the precise transition times, and then supply the data via an RS-232 link.
In other news, the components I ordered have arrived! I need to find the appropriate settings for AVRdude before I can program the AVR, and I'll need to build an ISP header unit so I can program the chip while it's on breadboard.
I built a motor control circuit, using the L298. To get it in the breadboard, which is designed for 0.3in ICs, I needed to skew the front pins to sit inline with the back ones, and then bend the back pins out a bit further to give the 0.3in pitch. This operation will need to be undone before the IC can be used in a PCB.
Close-up Showing Rear Pin Bending |
Close-up Showing Front Pin Skewing |
Here are a couple of pictures of the circuit, plus a picture of the prototyping surface so far:
Prototyping Surface |
Motor Controller (top) |
Motor Controller |
I tested the motor controller using some signals into the inputs, with pull-down resistors to make it a bit simpler. I'll test the PWM functions tomorrow using a pulse generator.
No comments:
Post a Comment
Comments are moderated. Sometimes it might take me a long time to get round to it, so please be patient.