Issue with sending a packet containing "too much information"?

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.