Transducer system for trolling motor
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention relates generally to a method and system for controlling trolling motors used by fishermen, and more particularly to a microcontroller-based trolling motor system operating a plurality of transducers organized to transmit and receive sonar signals in order to set the direction and speed of the trolling motor and cause it to follow a user-specified depth contour of the underwater bottom terrain, or to maintain a user-specified distance from the shore, or to find the deepest area of the underwater bottom terrain. 
     2. Brief Description of the Prior Art 
     In fishing, once the angler runs the boat to the desired vicinity, the boat is operated by a smaller outboard motor, a &#34;trolling motor&#34;, powered by a battery to provide maneuverability and to minimize disturbance to the fishing environment. 
     The angler, knowing the temperature of the water, can determine the depth at which the object fish prefers to swim. The angler would then wish to maintain the boat over this depth and fish at this depth. In another scenario, the angler may simply wish to fish at the deepest part of a creek that may or may not be at the middle of the creek. Furthermore, in another scenario, the angler may wish to fish at a relatively fixed distance from the shore. 
     In two of the three scenarios mentioned above or variations thereof, the angler would have to manually activate the sonar to find the depth of the current boat location, steer the boat in one direction, read the sonar again to see if the boat is being steered in the correct direction for the desired depth, and adjust the steering again if necessary. This process is repeated continuously until the angler is content with the location of the boat. If there is a drift current or strong wind, the boat would be pushed downwind or downstream and the angler would have to account for the drift current and constantly readjust and operate the boat. In all three scenarios, between monitoring the sonar and operating the motor, the angler has very little time left for fishing. 
     Thus, it is desirable to have an automated system whereby the angler sets the desirable mode once, is free from operating the sonar and the motor, and is allowed to spend most of his or her time on fishing. 
     Transducer systems operating in conjunction with microcontroller have been used in fish finder systems and bottom detection systems. However, there are no known microcontroller based systems operating transducers and a motor similar to the invention disclosed herein. 
     SUMMARY OF THE INVENTION 
     The present invention utilizes a microcontroller, a plurality of transducers, a steering motor, and an outboard motor. The user is allowed to input commands via a keypad and the selected mode of operation is displayed via a LCD screen. The microcontroller operates the transducer to transmit sonar signals, and the return signals are received and processed accordingly. In the preferred embodiment, there are five transducers arranged in a manner such that the port (left side of the boat) and starboard (right side of the boat) sides, as well as the bottom of the boat, may be scanned continuously. 
     The microcontroller processes the signals according to the user-selected mode, determines the steering degree and the motor speed, and transmits these values to the Steering Motor and Position controller and the Power Drive and Motor controller. 
     In the preferred embodiment, there are three automatic modes of operation: creek-tracking mode, depth-tracking mode, and shore-tracking mode. In the creek-tracking mode, the microcontroller finds the deepest area in a creek or channel and maintains the boat on that course; in the depth-tracking mode, the microcontroller maintains the boat on a certain contour of the bottom terrain; and in the shore-tracking mode, the microcontroller maintains the boat at a desired distance from the shore. In each of these modes, the user may increase or decrease the speed of the boat and has the option to do an automatic U-turn of the boat. There is also a manual mode where the user controls the direction and speed of the boat. 
     Once one of the automatic modes is selected, the microcontroller operates the troller and the angler can concentrate on fishing and does not need to be concerned with operating the boat. 
     Accordingly, it is an object of the present invention to provide an improved method and apparatus for depth tracking using transducers. 
     It is another object of the present invention to provide an improved method and apparatus for shore tracking using transducers. 
     It is another object of the present invention to provide an improved method and apparatus for tracking deepest terrain of an underwater surface. 
     It is another object of the present invention to provide for an improved method and apparatus to provide an automated transducer troller system that frees anglers from constantly operating the boat. 
     It is another object of the present invention to provide for an improved method and apparatus to allow automatic U-turns. 
     These and other objects and advantages of the present invention will no doubt become apparent to those skilled in the art after having read the following detailed description of the preferred embodiment which is illustrated in the several figures of the drawing. 
    
    
     IN THE DRAWING 
     FIG. 1 is a side view of an embodiment of the present invention in the form a trolling motor, shaft, head unit, and foot pedal controller. 
     FIG. 2 is a perspective view of the head unit showing a display. 
     FIG. 3 is an enlarged view of the display having a keypad and a LCD screen. 
     FIG. 4 is a perspective view of the foot pedal controller of the preferred embodiment. 
     FIG. 5a is a side view of the trolling motor, detailing the transducers. 
     FIG. 5b is a bottom view of the nose cone of the trolling motor showing the layout of the transducers. 
     FIG. 6a is a side view of the nose cone showing the geometric relationship of the transducers&#39; placements. 
     FIG. 6b is a front view of the nose cone showing the geometric relationship of the transducers&#39; placements. 
     FIG. 7 is a functional block diagram showing the principal operative and detection and control components of an embodiment of the present invention. 
     FIGS. 8a, 8b, 8c, 8d, 8e, and 8f are flow chart diagrams illustrating the shore-tracking mode of the present invention. 
     FIGS. 9a, 9b, 9c, 9d, 9e, and 9f are flow chart diagrams illustrating the creek-tracking mode of the present invention. 
     FIGS. 10a, 10b, 10c, 10d, and 10e are flow chart diagrams illustrating the depth-tracking mode of the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Referring to FIG. 1, there is a head unit 10 with a handle 24 and the head unit is mounted on a shaft sleeve 12. The shaft 14 is rotatable within the shaft sleeve and is controlled and actuated by a mechanism within the head unit. A trolling motor unit 18 having a fin 26 and a propeller 28 is attached to the other end of the shaft. There is a user-controlled foot pedal unit 20 communicatively attached via an electrical cord 22 to the head unit. Through this foot pedal unit, the user can, in addition to other features, manually steer the trolling motor unit and control its speed. There is a mounting bracket 16 attached to the shaft sleeve via an attachment bracket 30. The entire trolling motor unit can be attached to a boat via the mounting bracket. The mounting bracket allows the trolling motor unit to be lifted out of the water or to be submerged in the water. 
     In FIG. 2, the head unit 10, having a display and keypad 32, is mounted on the shaft sleeve 12 and attached to the shaft 14. Referring to FIG. 3, the preferred display and keypad 32 has six buttons on the keypad and one screen. There is an ON/OFF button 34 to power the unit, a DISPLAY button 36 allowing toggling between display of temperature and depth on the screen, a MANUAL MODE button 38 allowing the user to manually control the steering and speed of the trolling motor, a DEPTH TRACK button 40 to activate the Depth-Tracking Mode, a SHORE TRACK button 42 to activate the Shore-Tracking Mode, and a CREEK TRACK button 44 to activate the Creek-Tracking Mode. The screen 46 displays a bar 48 for battery strength, numbers 50 to show temperature (or depth), and a short bar 52 to indicate the selected mode. 
     Referring to FIG. 4, the foot pedal unit 20 has a foot pedal 60, a speed control dial 62, and an option button 64. By pressing the pedal away from the user, the trolling motor is steered toward port side; and by pressing the pedal toward the user, the trolling motor is steered toward starboard side. By maneuvering the foot pedal while in one of the three automatic modes, the transducer trolling system is returned to the manual mode. By pressing on the option button while in the manual mode, the system is returned to the previously activated automatic mode. By pressing on the option button while in the automatic mode, the system is instructed to command a U-turn. 
     The trolling motor unit 18, referring to FIG. 5a, has a nose cone 70 housing five transducers. The port 72 and port-down 74 transducers are illustrated. Behind the nose cone 70 is the front casting 76 containing the Power Drive and Motor controller. The motor shell 78 houses the motor and the propeller 80 is after the rear casting 82. In FIG. 5b, the arrangement of the transducers on the nose cone is illustrated. There is the port transducer 72, starboard transducer 90, port-down transducer 74, starboard-down transducer 88, and the down transducer 86. 
     Referring to FIG. 6a, in the preferred arrangement of the transducers in the nose cone, the port-down 74 and starboard-down transducers are angled at 15 degrees from a horizontal axis 92 running along the cone 70. Referring to FIG. 6b, a front view of the nose cone 70 shows that the down transducer 86 is positioned straight down, the port 72 and starboard 90 transducers are positioned 85 degrees from the down transducer 86, and the port-down 74 and starboard-down 88 transducers are positioned 21 degrees from the down transducer 86. 
     Referring to FIG. 7, a functional block diagram illustrates the relationship between the processing blocks. In the head unit 10, the main microcontroller 100 receives user commands regarding mode selection and display options via the keypad 32 and displays the selection and other information on the display screen 32. Once the mode is selected, the microcontroller activates the Transducer Transmit and Receive Controller 106 to send and receive signals to and from the selected transducers 108. With the information obtained from the transducers, the microcontroller calculates the appropriate steering and speed values. The steering value is sent to the Steering Motor and Position controller 102, and this controller instructs the Steering Subsystem 104 to actuate the steering motor (not shown) to turn the shaft in the proper direction and in the right amount. The Shaft Position Feedback System 104, using infrared transmitters and receivers (not shown) to read off decals on the shaft and gears (not shown), determines the actual amount of the turn by the shaft. The speed value is transmitted to the Power Drive and Motor controller 110 to effectuate the proper amount of power to the motor 112 for the given speed value. In any of the modes, the user can control the speed and direction of the trolling motor via the foot pedal unit 20. 
     The present invention offers three automatic modes in which the steering and speed of the trolling motor is entirely managed by an embodiment of the present invention. The three automatic modes are the shore-tracking mode, creek-tracking mode, and depth-tracking mode. In each mode, the transducers are activated and the returned values are processed through a series of program logic and look-up tables to output steering and speed values for the trolling motor. 
     The look-up tables are particularly important. They are developed based upon observed relationships between the different variables and empirically refined. There are several look-up tables for each mode. The look-up tables are not history tables and their values do not change. 
     In the shore-tracking mode, the microcontroller will steer the boat to travel at a fixed distance from the shore. In this mode, in addition to the boat-to-shore distance reading by the port or starboard transducer, the depth of the bottom terrain is also used to assist the program logic in determining the steering value. Here, the depth of the bottom terrain at a constant distance along the shore is assumed to be relatively unvarying or slow in varying as the boat travels along the shore. 
     The program flow for the shore-tracking mode is as follows: 
     Step 1: Initiation and Set-Up 
     Step 2: Error Processing Step 
     Step 3: Terrain Trend Adjustment Routine 
     Step 4: Steering Feedback Routine 
     Step 5: Steering Processing Step 
     Step 6: Large Turn Compensation Routine 
     Step 7: Drift Mode Routine 
     Step 8: U-Turn Routine 
     Step 9: Output Speed and Steering values to each of the controllers 
     Step 10: Go to Step 2 if Mode is not Cancelled 
     Referring to FIG. 8a, when the user selects the shore-tracking mode 120, a number of initiation steps are taken and a number of variables are initialized 122. The port side distance from shore (&#34;P&#34;) and the starboard side distance from shore (&#34;S&#34;) are obtained by activating the port and starboard transducers 122. If the port distance value is greater than the starboard distance value 124, the shore (&#34;BANK&#34;) is on the port side and BANK is set to 1 to so indicate 126. Otherwise, shore is on the starboard side and BANK is set to 0 to so indicate 128. The user desired distance from shore (&#34;RANGE&#34;) is set accordingly as well 126 or 128. 
     After initialization, a number of variables 130 necessary for calculating the error index and ultimately used in calculating the steering correction value (&#34;STEERING&#34;) are obtained. First, the difference between the current distance from shore (P or S depending on BANK 132) and the desired distance from shore (RANGE) is determined (&#34;ERROR&#34;) 134 or 136. The system will produce STEERING and SPEED values to reduce ERROR to a minimum. At this point, the program flows to connector &#34;A&#34; 138. 
     Referring to FIG. 8b, from connector &#34;A&#34; 138, the difference between ERROR and error from the last program cycle (&#34;ERROR --  LAST&#34;) defines the change in ERROR (&#34;DELTA --  ERR&#34;) . The Position Error Index (&#34;POS --  ERR --  IND&#34;) is where the value for ERROR is quantified into an index by using the Position Error Index Look-Up table (&#34;LU --  POS --  ERR&#34;) 140. Using a Delta Error Index Look-Up Table (&#34;LU --  DELTA --  E --  I&#34;), the Delta Error Index (&#34;DELTA --  ERR --  IND&#34;) is where the value for DELTA --  ERR is quantified into an index value 140, and the DOWN value is used to reflect the fact that in deeper water the corresponding reading will be less accurate than in shallower water. Similarly, the Steering Index (&#34;STEERING --  IND&#34;) is where the Steering value (&#34;STEERING&#34;) from the last program cycle is quantified into an index value by looking up the Steering Index table (&#34;LU --  STEERING --  IND&#34;) 140. SLOPE is the difference between the distance values PD and SD read from the port-down transducer and the starboard-down transducer. SLOPE --  IND is an index obtain from the Slope Index Look-Up Table (&#34;LU --  SLOPE&#34;). 
     The next processing step is the beginning of the Terrain Trend Adjustment Routine. In the shore-tracking mode, the assumption was made that the terrain remains non-varying or slow varying at a fixed distance along the shore. Thus, by tracking depth, the distance from the shore is being tracked to certain extent. In order to account for the change in the terrain, this routine allows resetting of depth relative to the shore (&#34;DOWN --  TRACK&#34;). 
     The initial depth relative to shore (&#34;DOWN --  TRACK&#34;) value is set to the downward depth (&#34;DOWN&#34;) reading when the user activated this mode. As the boat travels along the shore, the depth reading (&#34;DOWN&#34;) will either increase and continue to increase, decrease and continue to decrease, or reverse depth direction from increase to decrease or decrease to increase. The change in depth (&#34;DELTA --  DEPTH&#34;) is defined as the difference between current depth reading (DOWN) and (&#34;DOWN --  TRACK&#34;). When DELTA --  DEPTH changes sign 142, there is a reverse in direction and the depth to shore value (DOWN --  TRACK) is reset to the current reading of DOWN 144. By reset DOWN --  TRACK, the program is recognizing the change in terrain in relation to the shore. 
     If DELTA --  DEPTH did not change sign, DOWN --  TRACK can also be reset if conditions checked by the Shore Look-Up Table permits reset 146. DOWN --  TRACK will be reset if the boat is being steered into deeper water as indicated by STEERING --  IND, the boat is getting further from the shore as indicated by DELTA --  ERR --  IND and DDEPTH --  IND, and the distance of the boat from shore as indicated by POS --  ERR --  IND is getting larger. If all four conditions are true, DOWN --  TRACK will be reset to the current reading of DOWN 148 and 144. In this case, where the terrain is getting shallower (or deeper), the system is mistakenly steering the boat further away from the shore. To correct this situation, the Shore Look-Up Table (&#34;LU --  SHORE&#34;) is designed to allow this change in terrain by resetting DOWN --  TRACK to allow the system to steer the boat back along the desired distance from the shore. In any case, DELTA --  DEPTH is reevaluated, and this ends the Terrain Trend Adjustment Routine. 
     Going on to connector B of FIG. 8c, this is the beginning of the Steering Feedback Routine. The goal of this routine is to avoid oscillation created by over-steering. Oscillation may occur when the boat is over steered in one direction and the microcontroller determines that the boat needs to be steered in the other extreme, resulting in the boat traveling in a zig zag, rocking manner. The routine will damp over steering to allow the boat to travel in a smooth, gradual manner. 
     First, the maximum change in depth previously detected (&#34;MAX --  DDEPTH&#34;) is compared with the absolute value of the current change in depth (DELTA --  DEPTH) 152. If the absolute value of DELTA --  DEPTH is greater than MAX --  DDEPTH, MAX --  DDEPTH is set to DELTA --  DEPTH 154 and thus recognizing maximum damping is necessary. 
     Otherwise, a reduction in damping is achieved by reducing MAX --  DDEPTH by Maximum Delta Depth Reduction (&#34;MAX --  RED&#34;). MAX --  RED is determined from the MAX --  RED Look-Up Table, quantifying the MAX --  DDEPTH into an index value which is affected by POS --  ERR --  IND that is larger than a pre-set error margin. A larger Position Error Index (keeping MAX --  DDEPTH constant), which indicates that a large steering adjustment is needed to return the boat back on course, will create a larger MAX --  RED and thereby allowing a smaller MAX --  DDEPTH 158 and subsequently a larger Error Index (&#34;ERR --  IND&#34;). A larger Error Index will result in a larger Steering value. On the other hand, keeping POS --  ERR --  IND constant, a larger MAX --  DDEPTH will result in a larger MAX --  RED. After MAX --  RED is determined, MAX --  DDEPTH is correspondingly reduced by that amount 158, and this is the end of the Steering Feedback Routine. 
     The next processing step calculates for steering correction (&#34;STEERING&#34;) 160. First, the Error Index (&#34;ERR --  IND&#34;) is determined from the Error Index Look-Up Table (&#34;LU --  ERRIND&#34;) by quantifying POS --  ERR --  IND into another index that is affected by MAX --  DDEPTH. A larger MAX --  DDEPTH will result in a smaller ERR --  IND. The Acceleration Index (&#34;ACC --  IND&#34;) is calculated from the difference between the current Change in Depth Index (DDEPTH --  IND) and the previous Change In Depth Index (&#34;DDEPTH --  IND --  LAST&#34;). Change In Depth Index (DDEPTH --  IND) is obtained from the Change In Depth Look Up Table (&#34;LU --  DDEPTH --  IND&#34;) by quantifying DELTA --  DEPTH that is influenced by ACC --  IND. A larger ACC --  IND will result in a larger DDEPTH --  IND, which tends to result in a larger steering correction. 
     Finally, Steering direction and magnitude (&#34;STEERING&#34;) is determined from a Steering Look-Up Table (&#34;LU --  STEERING&#34;) with five inputs. By keeping other variables constant and varying one input at a time, the relationships between the variables are explained. There is an inverse relationship between ERR --  IND and STEERING where a larger ERR --  IND will call for a larger steering correction to correct the distance of the boat to the shore. There is a direct relationship between DDEPTH --  IND and STEERING where a larger DDEPTH --  IND will call for a smaller steering correction to account for the rapid movement of the boat over the bottom contours line. STEERING --  IND has an inverse relationship with STEERING where a larger STEERING --  IND will call for a smaller steering correction in order to reduce the possibility of oscillation. DELTA --  ERR --  IND has a direct relationship with STEERING where a larger DELTA --  ERR --  IND value will show the need for a more severe steering correction to steer the boat along the shore. Lastly, there is an inverse relationship between SLOPE --  IND and STEERING where a large SLOPE would tend to indicate the need for a smaller steering correction to get the boat over to the correct contour. The STEERING value can be either a positive value demonstrating a port side steering correction or a negative value demonstrating a starboard side steering correction. Other numbering methods may be used as well. 
     Moving to connector C on FIG. 8d 162, this is the beginning of the Large Turn Compensation Routine, which is a routine to allow a more severe steering correction every three program cycle in order to provide a faster turn. If the absolute value of STEERING is larger than sixty degrees 164, this is considered as a large turn and COUNT --  LT is clear to initiate the count for compensation 166. For every three program cycles 168, STEERING is increased by a constant value (&#34;CNST --  CMPN&#34;) if STEERING is positive and decreased by CNST --  CMPN if STEERING is negative 170. CNST --  CMPN is about eight degrees in the preferred embodiment. 
     Next, the DRIFT ROUTINE calculates compensation of the given speed in order to account for drift current or wind. In any of the automatic modes, the user may set the desired speed of travel via the speed dial on the foot pedal unit. If there is a strong drift current, this speeding setting will need to be compensated in order to made headway in the water. First, the selected speed (&#34;SPEED&#34;) is quantified into an index (&#34;SPEED --  IND&#34;) via the Speed Index Look Up Table. Then, the Drift Index (&#34;DRIFT --  IND&#34;) is obtained from the Drift Index Look-Up Table (&#34;LU --  DRIFT --  IND&#34;) which has three input variables 174. The relationship between the variables and DRIFT --  IND is illustrated through the following examples. In a case where the user sets a low speed, the system commands a large steering correction, and the ERR --  IND is greater than some error margin, the DRIFT --  IND will be higher and will be ever higher as ERR --  IND increases. In another case where the user sets a high speed, the system commands a large steering correction, and the ERR --  IND value is low, moderate, or even none existent, the DRIFT --  IND will be low also. Finally, if the steering correction is low or nonexistent, DRIFT --  IND will always tend to be lower than SPEED, which indicates that the boat is on or approaching its course. If DRIFT --  IND is larger than SPEED 176, SPEED is set to DRIFT --  IND 178. 
     Referring to connector D 180 of FIG. 8e, this is the start of the U-Turn Routine. If the user enables automatic U-turn 182, STEERING is set to a constant value 184, here about 80 degrees. Note that the U-turn will always be executed away from the shore so STEERING is set to a positive or negative value depending on the shore. STEERING is set to (+ or -) CNST --  UTURN for a predetermined number (&#34;CNST --  UTCNT&#34;) of program cycles in order to come close to completing the U-turn. Here, CNST --  UTCNT is initialized to sixteen with the expectation that the U-turn will be close to completion in sixteen program cycles 186. When the U-turn constant count (CNST --  UTCNT) is reached, if the boat is still heading into deeper water (DELTA --  DEPTH&gt;0) 188 which indicates that the turn is not yet close to completion because is not yet going toward the shore, the program will continue to allow STEERING be set to CNST --  UTURN to complete the U-turn. If the boat is steering toward shallower water 188 which indicates that the boat is coming to completion of the U-turn, and if the U-Turn Steering (&#34;UT --  STEERING&#34;) is within the Straight Ahead Constant value (&#34;CNST --  SA&#34;) 190, which is twelve degrees in the preferred embodiment, the U-turn is completed and the mode is disabled 192. Otherwise, if the boat is steering toward shallower water but UT --  STEERING is greater than CNST --  SA, UT --  STEERING is reduced by CNST --  SA 194, and steering is set to UT --  STEERING. Over a few program cycles, the UT --  STEERING value will be reduced to within CNST --  SA value range and the U-turn mode will be disabled 192. 
     After the U-Turn Routine 196, the value of SPEED is transmitted to the Power Drive And Motor controller and the value of STEERING is transmitted to the Steering Motor and Position Controller to carry out the output values. 
     At this point, referring to FIG. 8f, certain variables are initialized 195 if the mode is not cancelled by the user, and program flow goes back to connector START 129 on FIG. 8a. Otherwise, the program ends 198. 
     The program logic for the creek-tracking mode is substantially the same as in the shore-tracking mode. In this mode, the microcontroller will find the deepest terrain for the given body of water. The program flow for the creek-tracking mode is as follows: 
     Step 1: Initiation and Set-Up 
     Step 2: Error Processing Step 
     Step 3: Terrain Trend Adjustment Routine 
     Step 4: Steering Feedback Routine 
     Step 5: Steering Processing Step 
     Step 6: Large Turn Compensation Routine 
     Step 7: Drift Mode Routine 
     Step 8: U-Turn Routine 
     Step 9: Output Values Speed and Steering to each respective controller 
     Step 10: Go to Step 2 if Mode is not Cancelled 
     Referring to FIG. 9a, when the user selects the creek-tracking mode 200, a number of initiation steps are taken and a number of variables are initialized 202. The port-down (&#34;PD&#34;) and starboard-down (&#34;SD&#34;) transducers are activated to find the distance from the bottom terrain on both sides 204. These distance values are used to determine the location of the shore (&#34;BANK&#34;) 206 or 208. 
     After Initialization, a number of variables necessary for calculating the error index 210 and ultimately used in calculating the steering correction value (&#34;STEERING&#34;) are obtained. First of all, the difference between the PD value and SD value defines the error (&#34;ERROR&#34;) 212 or 214. Because the program is searching for the deepest part of the terrain, ideally PD and SD should be about the same. The program now flows to connector A 216. 
     Referring to FIG. 9b, from connector A 216, the difference between ERROR and error from the last program cycle (&#34;ERROR --  LAST&#34;) defines the change in error (&#34;DELTA --  ERR&#34;) 218. The Position Error Index (&#34;POS --  ERR --  IND&#34;) is where the value for ERROR is quantified into an index by using the Position Error Index Look-Up table (&#34;LU --  POS --  ERR --  IND&#34;) 218; the Delta Error Index (&#34;DELTA --  ERR --  IND&#34;) is where the value for DELTA --  ERR is quantified into an index value 218; and similarly the Steering Index (&#34;STEERING --  IND&#34;) is where the Steering value (&#34;STEERING&#34;) from the last program cycle is quantified into an index value by looking up the Steering Index table (&#34;LU --  STEERING --  IND&#34;) 218. 
     From this point 220 on, with only two exceptions, program processing steps 6 through 10 as illustrated in FIGS. 9b, 9c, 9d, 9e, and 9f are the same as in the Shore-Tracking Mode. The first exception is that all the look-up tables in Creek-Tracking Mode are tailored to this mode and are therefore different from the look-up tables in the Shore-Tracking Mode. The second exception is that while Shore-Tracking Mode refers to SLOPE and SLOPE --  IND values, Creek-Tracking Mode does not refer to them. 
     Likewise, the programming logic of Depth-Tracking Mode is similar to that in Shore-Tracking Mode. In this mode, the microcontroller will maintain the boat on a certain contour of the bottom terrain. The program flow for the Depth-Tracking Mode as follows: 
     Step 1: Initiation and Set-Up 
     Step 2: Error Processing Step 
     Step 3: Steering Feedback Routine 
     Step 4: Steering Processing Step 
     Step 5: Large Turn Compensation Routine 
     Step 6: Drift Mode Routine 
     Step 7: U-Turn Routine 
     Step 8: Output Values Speed and Steering (steering correction) to each respective controllers 
     Step 9: Go to Step 2 if Mode is not Cancelled 
     Referring to FIG. 10a, when the user selects the depth-tracking mode 230, a number of initiation steps are taken and a number of variables are initialized 232. The port-down (&#34;PD&#34;) and starboard-down (&#34;SD&#34;) transducers are activated to find the distance from the bottom terrain on both sides 234. These distance values are used to determine the location of the shore (&#34;BANK&#34;) 236 or 238. Furthermore, the desired depth range (&#34;RANGE&#34;) is set to the distance value obtained from the Down transducer (DOWN) 240. 
     After initialization, a number of variables necessary for calculating the error index 242 and used in calculating the steering correction value (&#34;STEERING&#34;) are obtained. First of all, the difference between the desired range (RANGE) and current depth reading (DOWN) defines the error (&#34;ERROR&#34;) 244. Because the program is searching for a certain depth, ideally RANGE and DOWN should be about the same. The Position Error Index (&#34;POS --  ERR --  IND&#34;) is where the value for ERROR is quantified into an index by using the Position Error Index Look-Up table (&#34;LU --  POS --  ERR&#34;) 244; similarly the Steering Index (&#34;STEERING --  IND&#34;) is where the Steering value (&#34;STEERING&#34;) from the last program cycle is quantified into an index value by looking up the Steering Index table (&#34;LU --  STEERING --  IND&#34;) 244; and the Change in Depth (DELTA --  DEPTH) is defined as DOWN subtracting DOWN --  LAST 244, DOWN --  LAST being the DOWN distance value from the last program cycle. This now ends the Error Processing Step, and the program flows to connector A 246. 
     Referring to FIG. 10b, connector A 246, this is the beginning of the Steering Feedback Routine of the above modes. This routine is the same as the Steering Feedback Routine with the only difference being an additional decision box 250 that is added. If the absolute value of DELTA --  DEPTH is greater than MAX --  DDEPTH 248 and if DELTA --  DEPTH is favorable, meaning the boat is heading toward the desired depth, reduction of MAX --  DDEPTH is necessary and the program flows to the Steering Processing step 258. 
     In this step, the steering correction (&#34;STEERING&#34;) is calculated. First, the Error Index (&#34;ERR --  IND&#34;) is determined from the Error Index Look-Up Table (&#34;LU --  ERRIND&#34;) by quantifying POS --  ERR --  IND into another index that is affected by MAX --  DDEPTH. A larger MAX --  DDEPTH will result in a smaller ERR --  IND. Change In Depth Index (DDEPTH --  IND) is obtained from the Change In Depth Look Up Table (&#34;LU --  DDEPTH --  IND&#34;) by quantifying DELTA --  DEPTH that is influenced by MAX --  DDEPTH. A larger MAX --  DDEPTH will result in a smaller DDEPTH --  IND. MAX --  DDEPTH has an inverse relationship with DDEPTH --  IND and it damps DDEPTH --  IND by to normalizing DELTA --  DEPTH in the sense that DELTA --  DEPTH is taken as a percentage of MAX --  DDEPTH. The Acceleration Index (&#34;ACC --  IND&#34;) is calculated from the difference between the current Change In Depth Index (DDEPTH --  IND) and the previous Change In Depth Index (&#34;DDEPTH --  IND --  LAST&#34;). Finally, Steering direction and magnitude (&#34;STEERING&#34;) is determined from a Steering Look-Up Table (&#34;LU --  STEERING&#34;) with three inputs. Of the three variables, two of them, ERR --  IND and DDEPTH --  IND, have the same relationship as previously described in the shore-tracking mode. As with ACC --  IND, it has an inverse relationship with STEERING and it buffers large change in DDEPTH --  IND in order to prevent oscillation. 
     After calculating STEERING, the remaining steps 5 through 9 as illustrated in FIGS. 10c, 10d, and 10e are the same as previously described in the shore-tracking mode and the creek-tracking mode. 
     Although the present invention has been described above in terms of a specific embodiment, it is anticipated that alterations and modifications thereof will no doubt become apparent to those skilled in the art. It is therefore intended that the following claims be interpreted as covering all such alterations and modifications as fall within the true spirit and scope of the invention.