The good work goes on, and the objective of achieving a fully autonomous rover is closing in. In this article I present 3 hardware additions:
First I found that the 1300 mAh LiPo battery could not be enough for long endurance roving activities. So I decided to add a pack of 4 NiMh AA batteries (2500 mAh each) dedicated to the Fonera. With this extra power, control and communications autonomy is guaranteed even if the powertrain pack becomes depleted. Additionally the efficiency is improved, because considering the fonera input voltage (5 V), and the voltage of the main pack (11.1 V), a regulator would be necessary, to properly drop the voltage. A linear regulator would not be a very efficient solution, and a switching regulator, in spite of being more efficient, is more complex and expensive. So with this separate pack, which provides around 4.8 V when fully charged, is enough for the Fonera (in fact the Fonera can be powered to a minimum of 3.5 V thanks to its internal low dropout regulator).
As I already had more than one power source, and several distinct systems onboard, in order to avoid the clutter of connecting and disconnecting sockets every time I wanted to turn the components on or off, I decided to add a control panel with 4 different switches:
The function of each is:
* MAIN - cuts the power to all systems;
* CAM - turns the camera on or off;
* CTRL - turns the Fonera (the control computer) on or off;
* ESC - turns the ESC (Electronic Speed Controller - it controls the speed of the powertrain motor) on or off;
A LED under each switch indicates if there is current in each circuit, and if its turned on or off.
The switches provide a way of quickly turning the devices off in case of malfunction.
The last item is a turret for mounting a sonar ranging sensor (an SRF02). At the top, a microservo is mounted. It will provide azimuth variation for the sensor, allowing the area relevant for navigation to be swept continuously.
In order to minimize the computational load and I/O for the host machine (Fonera), the PIC 18F2520 had it's original firmware (which is opensource - see http://www.robot-italy.net/roboforum/showthread.php?t=1600) modified to accomodate the ability to automatically put the servo sweeping continuously. The host in the case only has to use a sonar command that will return both the range in cm, and the angle of the servo (in us of control pulse witdth - it ranges between 850 and 2350 us for approximately 110º of amplitude). The original sonar commands were modified to provide the position of the servo associated to the sonar. Another command was added, for reporting the position of all the 8 servos that can be connected to the MuIn.
The next step will be to mount the sonar on the turret, and once this is done we have the minimum hardware for implementing autonomous control of the vehicle.
On the Fonera the control software is written in C, and is programmed like any linux application. So far I have only implemented a small application used mostly for testing the MuIn functionality (servo control, ADC channels, I2C, EEPROM, etc):