I have been yearning badly for a GPS based trolling motor for my boat. Unfortunately they're very expensive ($1200).
In essence, these motors can follow a predetermined route, and have a self-anchor feature, which engages and steers the motor to maintain boat position via GPS.
The thought came up that maybe you could program an Arduino to do the same thing, for a lot less money.
The trolling motor that I have only needs a 12v signal to steer left or right, and another to run the motor. I have already rigged it to run with a cheap wireless relay board, all it would have to do is energize the steer and run relays, when the boat drifted out of bounds.
That brings the next question, just how in-depth would this project be?
I have taken a programming class in the past (visual basic based), but other than that I have little experience as far as that goes.
For someone with programming experience (years), such a project is not only feasible, but relatively straightforward.
A couple of years ago I modified a toy RC boat (50 cm LOA) with twin screws to navigate between waypoints. The hardware was a Pololu Orangutan LV168 Arduino, with built in motor controller, a GPS module and a BNO055 absolute orientation sensor to determine the heading.
In the test below, the boat notes its initial location, projects two GPS waypoints forming an equilateral triangle 60 meters on a side and then navigates that course to return to the starting position. The BNO055 is required for steering the course and to compensate for wind, which as you can see in the movies below, severely affects this small boat.
This was all fit into 16K of flash memory on an ATmega168 (half that of the standard Arduino).
MP4 movies of the boat navigating a course (the second link was taken under fairly windy conditions):
The boat keeps a log file of GPS locations and other data, allowing a detailed course log to be plotted. The second run is shown below:
For a more elaborate DIY example, check out the Sea Rendering Project, a boat that autonomously maps lake depths.
For a person just starting out, I suggest to plan on a year or more of part time effort to get a similar project working, especially on a larger scale.