@pert thanks again for responding
(not totally sure how to do the reply section by section, but I'll just try to put things in the same order)
So what I've done is hooked up two 12V batteries to a motor module, from which I take a reverse-polarity protector and plug that into pin A12 on the sensor shield. The things drawing current off of the board would include 2 sets of encoders and 3 ultrasonic (HC-SR04) distance sensors.
So with those same 12V batteries: the wires coming off were to short/thick to hook up properly, so I soldered on new wires that are slightly thinner on the red end and even thinner on the black/GND end. I'm starting to think this might be the problem/reason things aren't working?
I'm using https://www.amazon.com/SainSmart-Sensor-Arduino-MEGA1280-MEGA2560/dp/B007PABRNM (or similar, since it was passed on to me).
--
I actually made a (sort of messy) schematic diagram! I'll attach the png of it below. Please let me know if anything's unclear.
--
Update: so I was having the issue where everything was working just plugged into the Arduino MEGA itself, but not on the sensor shield. I've learned that there is a tiny jumper that goes on the sensor shield that does this:
"Jumper on: +5 comes from the Arduino. Should be limited to about 300 ma
Jumper off: +5 comes from the blue terminal strip and an external supply."
(http://www.yourduino.com/sunshop/index.php?l=product_detail&p=195)
It's when I unknowingly/accidentally had/took the jumper off that none of the sensors were working (makes sense because no power to anything on the board). Now that I have it back on, I'm back to the original problem where my robot just spins in circles the second it's disconnected from the USB cable.
I decided to test whether the robot was just like weirding-out because of lack of power, so I connected an XBEE to it to display the results of the navigating-code in real time. It continuously displays 'L' for 'left'. (I'll include this section of the code below).
byte rx_byte = 0; // stores received byte
void adjust(){
Serial.println(bm.dist()); //so middle sensor
Serial.println(bl.dist()); //so left sensor
Serial.println(br.dist()); //so right sensor
int tooclose = 20;
int justright = 27;
int goaway = 10;
//since one of the front sensors is broken, I'm going to code this with the back
if(bm.dist() > tooclose && bl.dist() > goaway && br.dist() > goaway)
{
Serial.println("FRONT");
rx_byte = 'F';
setSpeeds(70);
}
else if (bm.dist() < tooclose)
{
if(bl.dist() < br.dist() && bl.dist() < tooclose)
{
Serial.println("RIGHT");
 rx_byte = 'R';
turn(-90);
delay(250);
}
else if(br.dist() < tooclose)
{
Serial.println("LEFT");
 rx_byte = 'L';
turn(90);
delay(250);
}
else if(bl.dist() < tooclose && br.dist() < tooclose)
{
Serial.println("BACK");
 rx_byte = 'B';
setSpeeds(-70);
delay(400);
}
}
}
void setup() {
Serial.begin(9600);
Serial.println("Starting up...");
 Serial3.begin(9600); // serial port 3
//digitalWrite(40, LOW); //interruptPin
 //setSpeeds(100);
}
void loop() {
adjust();
if (Serial3.available()) {
Serial3.write(rx_byte);
}
}
So I guess my question is how you might suggest adjusting the power so I have enough current for the robot to work?
Thanks again for your time.