We chose to try to build a truck-like robot that could reverse with a trailer whilst following a thick black line on a white surface. A reversing truck with a trailer is an unstable system as the trailer can jack-knife at any moment. The problem is also interesting because the appropriate response at any one moment is changing and dependent on the angle between the trailer and the line and the angle between the trailer and the truck. We decided to try to build several controllers for our robot and compare them with each other.
|Reversing with a trailer is a task that humans find difficult. We built a remote steering device with microswitches so that we could directly drive our robot. This helped us to understand the problem in detail.|
Our robot had to follow a thick black line on a white surface. We made use of a number of standard line-following techniques. On the underside of the trailer, we had a row of three light-sensors. We covered these sensors and fixed a bulb next to them in order to reduce the influence of the ambient light. If a light-sensor was above the white surface, it would return one value; if it was above the thick black line, it would return another. We used these values to determine whether the trailer was above the line or to the left or right of it. However, in different lighting conditions, the light sensor returned different values. This caused the robot to get lost. We wrote several programs to help us calibrate the light sensors quickly if the light changed.
|Whilst perfecting our line following code, we put a servomotor between the truck and the trailer. This stopped the trailer jack-knifing and gave us direct control over the direction that the trailer pointed.|
|However, the main objective of the project was to build a robot that could reverse with a free trailer. We designed our own algorithm for this task, which performed very successfully.|
On top of designing our own algorithms for reversing, we attempted to train a neural network controller. We collected data from the light sensors and the motors as we drove the robot along the lines. We used this data to train a back-propagation network in SNNS. We then encoded this network as a static network in IC as an alternative controller.
The idea behind the servomotor between the truck and the trailer was to gain greater control of the robot. The servo allowed us to move the trailer to wherever we wished, which was useful while we were working on the line-following techniques. However, the control strategies that we developed for driving the robot with the servo were totally different to those used to drive the robot with the free trailer.
Our neural network controllers did not perform well. The networks that SNNS produced were well trained and produced a very low error. However, the network that we wrote in IC based on this SNNS network produced very different outputs to those of the original network. This error occured because the actual architecture of the networks produced by SNNS is obscure.
We had planned to use Q-learning to produce a controller for our robot. However, the inaccuracy of the sensors made it impossible for us to find a meaningful reward function.
Trailer reversing is a good choice for a project because a lot of work has already been carried out on the topic. The conclusions that other scientists have reached helped us when designing our own robot.
Neural networks have been trained to control reversing truck-trailers. The seminal work on the subject is (Nguyen & Widrow 1990). Also worth note is (Hougen et al. 1996).
(Koza 1992) used genetic programming to generate a controller to reverse a simulated truck and trailer. Although it is possible in principle to evolve a controller for a real robot using genetic programming, the size of the evolutionary timescale and population make this approach infeasible for this sort of project.
All of our controllers were pure reflex controllers: the decision about what action to take next was based entirely on the robot's current state. These controllers worked successfully. It is not obvious that anything else need be considered when reversing. However, the robot's performance might be improved if some sort of temporal processing were added to the controllers.
We chose to use differential steering for our robot. This method gives tighter control. However, it is possible that Ackerman's steering (like a car's steering) would give smoother turning.
We tried to build a controller using neural networks. Almost any form of supervised machine learning could be attempted with this problem.
D. Nguyen and B. Widrow, 'The Truck Backer-Upper: An example of self-learning in neural networks', in 'Neural Networks for Control', The MIT press, Cambridge, MA, 1990.
D. F. Hougen, J. Fischer, Maria Gini and James Slagle, 'Fast Connectionist Learning for Trailer Backing using a Real Robot.' in Proceedings of the IEEE International Conference on Robotics and Automation, pages 1917-1922, April 1996.
J. R. Koza, 'A Genetic Approach to Finding a Controller to Back Up a Tractor-Trailer Truck' , Proceedings of the 1992 American Control Conference, 1992.