Here is one problem...
while (Serial.available() < 2);
leftSpeed = Serial.read();
rightSpeed = Serial.read();
crab_left = Serial.read();
crab_right = Serial.read();
You wait for two bytes to arrive and then read 4 bytes.
Here is one problem...
while (Serial.available() < 2);
leftSpeed = Serial.read();
rightSpeed = Serial.read();
crab_left = Serial.read();
crab_right = Serial.read();
You wait for two bytes to arrive and then read 4 bytes.