Page 1 of 1

Great Navel Orange Race Jet Boat

Posted: Thu Apr 07, 2016 9:22 pm
by Josh Hess
The Great Navel Orange Race (GNOR) is an annual competition held at UCF every year for the second intro to engineering course. The project involves students building a boat, submarine, or other watercraft that autonomously carries an orange around the reflection pond. The TI Innovation lab that I work in is providing students with TI microcontroller boards (MSP430f5529) and sensors for use in their watercrafts. These components empower students to control servos, provide signals for high power relays and ESCs, measure angle change relative to starting angle, look at accelerometer data, and more. I decided to build my own boat for the competition to test these components, to provide an example to future students, and also of course, for fun and the educational value.

I designed, built and tested a wooden boat hull and a 28mm water jet drive. You can see the details on these assemblies and download the templates/files in the following topics:

22" Deep V Mono Hull: ... ?f=11&t=13

3D Printed 28mm Boat Jet Drive Unit: ... 3&p=49#p49

The Innovation Lab has also provided a github repository with all the code needed to get started. I have typed up a readme file providing step by step instructions to help students get started. This can be found here:

GitHub Repo:

In this topic, I will be posting updates as I develop and refine both the electrical system and the controlling code.

Re: Great Navel Orange Race Jet Boat

Posted: Fri Apr 08, 2016 1:04 am
by Josh Hess
So the first thing I did was interface the TI microcontoller with the battery packs I had. The packs ran at 7.2v each and I had them in series. The ti board requires a regulated 5v supply so I put a 5v regulator on a perforated board along with some pins to interface with the bottom of the board. I tied into one of the batteries to get 7.2v for the regulator. Once that was done, I configured everything in the hull for testing like so:

Once the hardware was done, the next thing to do was some programming. I downloaded the repo on code composer (TI's editing software) and added the following to the main loop to add an auto correcting function.

Code: Select all

int target = 0;
int error;
double P = .50;
int servo;
int turn_delay = 10;
   heading_rate = heading - old_heading;
   old_heading = heading;
   if (timestamp < (turn_delay * 1000))
       target = 0;
   if ((timestamp > (turn_delay * 1000)) && (timestamp < (turn_delay * 2000)))
       target = 270;
   if ((timestamp > (turn_delay * 2000)))
       target = 180;
   error = calculateDifferenceBetweenAngles(heading, target);
   servo = (P*error);
   if (servo < -29) servo = -29;
   if (servo > 29) servo = 29;
   servo1_move_to_angle(servo + 85);

This code allowed the boat to maintain a given target heading. The commented section gave the ability to change headings after a given time for turning. The if statements at the bottom set upper and lower limits to the servo range. Here are some videos of the above code running on my boat:

Next I will be interfacing a RC receiver with the microcontroller for more advanced testing and will also wire up the relay to a PWM pin.