 float steer_input = STEER_BASE;
 float throttle_input = THROTTLE_BASE;
 
-int throttle_pos;
-int steering_angle;
+float throttle_pos;
+float steering_angle;
 
 
 //make sure we have a transmitter so that we can safety stop the car


  //output rpms
  write_rpms();
 
}


volatile byte half_revolutions;
unsigned int rpm;
unsigned long timeold;
int rpm_decay;


//emergency breaking
bool emergency_breaking = false;

//sets the steering angle between -45, 45 for full left /right respectively. set to zero for straight ahead
void set_steer_angle(int angle) {
  steering_angle = angle;
  commander.sendBinCmd(cmd_steer,steering_angle);

  
  //apply bias which accounts for physical issues, not model issues
  //we dont want our intented steer angle (0 for straight) to
  //reflect any issue in physical bias of the car
  angle = angle + _STEER_BIAS;

  int map_angle_ms = int(map(angle, -45, 45, 1000, 2000));
  steering_servo.write(map_angle_ms);
}

//when using the transmitter, map the steering to the TX output
void set_steer_angle_manual(float sp) {
  float map_angle = map(sp, STEER_MIN, STEER_MAX, -45.0, 45.0);
  set_steer_angle(map_angle);
}

//controls the acceleration/deccelration of the robot. -100 is full break to 100 full gas

void set_throttle_position(float pos) {
  //dont allow input past the limits, note we only limit reverse if the 
  //standing throttle position is at zero. This allows for full breaking
  if (rpm < ROLLING_RPM){
