TAYLOR WADDELLJake Rymsza
Created January 16, 2020 © MIT

Badger BOAT( Buoyancy Operated Autonomous Vehicle)

A completely autonomous dual motor solar powered electric boat for extreme distance travel and environmental monitoring.

IntermediateFull instructions providedOver 1 day34
Badger BOAT( Buoyancy Operated Autonomous Vehicle)

Things used in this project

Hardware components

NVIDIA Jetson Nano Developer Kit
NVIDIA Jetson Nano Developer Kit
×1
Arduino Nano R3
Arduino Nano R3
×1
Netgear nighthawk router
×1
Victor SPX Motor Controller
×2
12V 36lb Newport Trolling Motor
×2
Garmin GPS 18x OEM
×1
SICK Lidar TiM781
×1
ExpandaCraft Hulls
×1
12V Valence Batteries
×1
KNACRO DC 12V to 5V 3A
×1

Software apps and online services

MOOS IVP
NVIDIA Jetpack

Story

Read more

Custom parts and enclosures

Prototype BOAT frame

A prototype frame for the BOAT hull design.

Schematics

Basic circuit diagram layout.

This is the general layout of power routing throughout the system.

Main PDF of research and project

This was a required document required for the class in which we made it. This contains a lot of unneeded information to this competition but may still be useful.

Code

Motor Controller Arduino Software

Arduino
Takes data from the autonomous section and then creates a PWM signal for the motor controllers
#define INPUT_SIZE 30
int leftMot = 3;
int rightMot = 9;

int fRange = 63;
int bRange = 85;

int neutralVal = 187;
int leftSerialIn = 0; //val from AI
int rightSerialIn = 0; //val from AI as int

char * leftChar;
char * rightChar;
String incomingStr;
//char * incomingCharArray;


char leftDelimiter = '_';
char rightDelimiter = '&';

void setup() {
  pinMode(leftMot, OUTPUT);
  pinMode(rightMot, OUTPUT);
  Serial.begin(115200);
}

void loop() {
  if (!Serial.available() > 0) {
    incomingStr = Serial.readStringUntil('&');
    //Serial.print(incomingStr);
    int str_len = incomingStr.length() + 1; 
    char incomingCharArray[str_len];
    incomingStr.toCharArray(incomingCharArray,str_len);
    leftChar = strtok(incomingCharArray, &leftDelimiter);
    rightChar = strtok(NULL, &rightDelimiter);
    leftSerialIn = atoi(rightChar);
    //Serial.println(leftSerialIn);
    //Serial.println(rightSerialIn);
    rightSerialIn = atoi(leftChar);

  }


  //LeftSide
  if (leftSerialIn == 0) {
    analogWrite(leftMot, neutralVal);
  } else if (leftSerialIn > 0) {
    //forward left
    analogWrite(leftMot, int((fRange * (abs(leftSerialIn / (double)100))) + 191));
  } else if (leftSerialIn < 0) {
    analogWrite(leftMot, int((bRange * (1 - abs(leftSerialIn / (double)100))) + 100));
  }else{
    analogWrite(leftMot, neutralVal);
  }
  //rightSide
  if (rightSerialIn == 0) {
    analogWrite(rightMot, neutralVal);
  } else if (rightSerialIn > 0) {
    //forward left
    analogWrite(rightMot, int((fRange * (abs(rightSerialIn / (double)100))) + 191));
  } else if (rightSerialIn < 0) {
    analogWrite(rightMot, int((bRange * (1 - abs(rightSerialIn / (double)100))) + 100));
  }else{
    analogWrite(rightMot, neutralVal);
  }
}

Moos IVP Control software

Credits

TAYLOR WADDELL

TAYLOR WADDELL

1 project • 0 followers
Jake Rymsza

Jake Rymsza

0 projects • 0 followers
Thanks to Manasi Srirangarajan, Allison Conrad, and Thomas Kelly.

Comments