| ||||||
Robotic Docking StationI've been thinking about creating a docking charge station the robotic lawnmower. There are many ways to tackle this but I believe a simple solution should suffice. As far as I can see, there are three main obstacles to overcome:
An outdoor environment presents a few challenges but also gives leeway to do some things that are not practical inside such as laying guides on the ground. I don't want to be laying wires all over the place and also having the garden awash with beacons is not exactly ideal. However, a guide wire to lead the robot the last metre onto the doc is acceptable. I like the idea of having one homing beacon and the robot does the rest so that will the staring point. Using small magnets as the doc connectors appeals as having whiskers on a mower is not ideal as it often does battle with small shrubs. The magnets also allow for precise alignment and if they are strong enough, can make up for slight errors in wheel alignment. Neodium magnets shatter if crashed together so some thought and experimentation needs to be applied here Thoughts and AssumptionsWe have to start somewhere so here is where it begins. This is what I would like to build and we can experiment to see if it it actually possible without having to increase complexity. From a behavioural point of view, the mower will need to move from a 'mowing mode' to a 'seeking charge mode' when the battery voltage drops below a threshold value.
I only want one directional beacon on the charging station so the mower must go into a searching mode to try and detect the beacon. This may take a while so turning off the cutting blade can conserve power whist it (say) spirals in ever increasing circles. Once the mower finds the beacon, it can move into a 'homing mode' where it drives towards the beacon. When it gets to within 50cm of the charging station, it moves into 'docking mode' which needs to be slow and accurate. Once docked, the machine should shutdown and only monitor battery voltage (and perhaps light level). When charged, it needs to have an exit-plan so it can escape the charge station and ignore any beacons. We have to consider all the failure modes that occur during the search, home, docking, exit phases and cater for them appropriately. For example, if we lose the beacon while homing in on it, then we need to start searching again. Ideally the beacon will be a fairly narrow beam. Apart from dealing with noise and interference when aiming at the beacon, in an outdoor environment, the ground is far from level. This means the sensor on the robot will point over and below the beam as well as left and right of it. We need to either make the beam a vertical bar of light or ensure the sensor is directional left-right and more omi-direction in the vertical plane. (Or even both). The above sounds simple on paper but I suspect there is a lot of effort to achieve this but it does mean that I can map 'modes' to 'states' and should be able to implement the program as a finite state machine which should make the software very modular and easy to test. The BeaconAs there is only one beacon, there is no need to modulate it to provide extra data that the robot can use, just it's presence is enough. There are a few options here:
LightAn optical beacon, especially one focussed through a lens would be a good option in dark environment. Mowing the lawn a 2am is an option but not one that my neighbours would probably endorse. An optical light source outside on a sunny day is not really going to fly. Audible SoundHoming in a an audible beep may be difficult given the noise of the mower itself. I suspect it would become very irritating and the neighbours would probably prefer the 2am mower. Not an option Laser LightThis would be very directional and could be easily achieved using a whiteboard pointer. However, with children and small animals, the risk of looking directly into the beam are too high. Bin Radio FrequencyThis gives great range but in order to get a really directional beam, both the docking station and robot would need a yagi-type ariel. A lawnmower going under a bush supporting a yagi antenna would not bode well. It's a possible option but I see a lot of pitfalls on this road. Infra RedThis is an option worth consideration. It would be possible to make both transmitter and receiver directional without too much effort. My main concern is that the range may be insufficient and interference from daylight. Worth a look. UltrasonicsThis is also worth consideration. Standard ultrasonic transmitters have a wide beam pattern but there are pencil-bean devices although these can be expensive. With all the gears and motors churning, there is a possibility of interference from the mower itself but I think the chances of this are slight. Worth a look. I believe ultrasound or InfraRed is probably the best way to go and will start there. I need a test platform to move forward so will need to blow the dust off sandbot and put my localization experiments on hold for a while. Once I have something that works well indoors, lawna can be modified for outdoor tests. DesignThe BeaconI am going to start with infraRed. This may not have the range I need outdoors but the principles will be the same regardless of beacon type and once the problem is solved, it can always be modified. I could use raw IR diodes/transistors for the job and measure their analogue output. This involves building amplifiers, level detectors etc which is an added complication and source of noise pickup. I feel that is the road to frustration and instead will use one of the 38kHz 'smart' infraRed receivers that have a lot of the electronic goodies built in and push out a digital signal. Hopefully, it should be possible to test with a standard remote control which should speed up the development process. I can build a transmitter later. The beacon beam needs to be fairly directional for accurate homing. It also needs to be fairly broad for easy detection! I think that making it directional is the best option as the bean will disperse as we move away from the source. I am concerned that a single led will be insufficient in the garden and will probably need a vertical stack of about 5 to cater for bumps in the ground as the robot trundles around. Beacon Detection and HomingHaving thought about this for a while, I think this should be done by two separate sensors. One sensor is just looking to detect the IR pulse stream. It would be good if it could indicate the direction of the beacon but that is not totally necessary, just detecting it would be enough. Then we could use a directional sensor to start homing towards the beacon. How to move from detection to homing?. We could use a servo for this but I'd like to use the system on Lawna, my robotic mower and having a servo and moving parts on a machine that dives under bushes is asking for trouble. So to keep it simple, the robot will need to perform a little shuffle in a circle until it picks up the beacon with the directoral sensor. This does have the advantage in that the robot will point at the sensor so there is no servo angle to take into account.
The Detection SensorThis could just be one or more IR Receivers that point in various directions and will signal the microcontroller if an IR signal is detected. We may need need some error correction to cater for false triggering. The IR receiver modules have a TTL output that is active low. If several are used, we could OR the the outputs together if necessary so we only need one input pin on the microcontroller. To increase the range, it may be possible to use a parabolic collector that focusses IR onto the detector. Perhaps a torch reflector could be used. The Homing SensorI once built a sensor for tracking the sun that used two photodiodes with an opaque divider between them. The homing detector will need to be something similar although it must be much more accurate. This should be achievable by the use of a long funnel/divider so that only a small change in angle will result on one or the other of the sensors going active. I image this will give pretty violent zig-zags as it homes in and this is a great place to put a PID controller. Maybe not initially, I can always investigate this later to change sharp zig-zags to gentle curves. I suspect that for accurate docking, this may become a necessity. DockingDocking needs to be fairly accurate. By the time we are that close to the beacon, I suspect directional accuracy will be limited so the dock may need to be fairly forgiving of slight errors. A few thoughts on docking:
| ||||||
| ||||||