Revision 22b85da1 devices/DiWheelDrive/main.cpp

View differences:

devices/DiWheelDrive/main.cpp
708 708
    int proxyL = 0;
709 709
    int proxyR = 0;
710 710
    int maxDelta = 0;
711
    int sensorL = 0;
712
    int sensorR = 0;
711 713
 
712 714
  if (argc == 1){
713 715
    chprintf(chp, "Test %i rounds \n", atoi(argv[0]));
......
739 741
      proxyL = vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_LEFT];
740 742
      proxyR = vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_RIGHT];
741 743
    }
744
    sensorL += global.vcnl4020[constants::DiWheelDrive::PROX_FRONT_LEFT].getProximityScaledWoOffset();
745
    sensorR += global.vcnl4020[constants::DiWheelDrive::PROX_FRONT_RIGHT].getProximityScaledWoOffset();
742 746

  
743 747
    // if (vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_RIGHT] > proxyR && vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_LEFT] > proxyL ){
744 748
    //   delta *= -1;
......
754 758
    // sleep(CAN::UPDATE_PERIOD);
755 759
    BaseThread::sleep(CAN::UPDATE_PERIOD);
756 760
  }
757
  chprintf(chp,"Sensors Calibrated: MaxDelta: %d, FL: %d, FR: %d\n", maxDelta, proxyL, proxyR);
761
  
758 762

  
759
  global.threshProxyL = proxyL;
760
  global.threshProxyR = proxyR;
763
  global.threshProxyL = sensorL / rounds;
764
  global.threshProxyR = sensorR / rounds;
765
  chprintf(chp,"Thresh FL: %d, FR: %d\n",  global.threshProxyL, global.threshProxyR);
761 766
  return;
762 767
}
763 768

  
......
770 775
  uint16_t proxyL = global.threshProxyL;
771 776
  uint16_t proxyR = global.threshProxyR;
772 777
  uint16_t maxDelta = 0;
773
 
778
  
779
  int sensorL = 0;
780
  int sensorR = 0;
774 781
  if (argc == 1){
775 782
    chprintf(chp, "Test %i rounds \n", atoi(argv[0]));
776 783
    rounds = atoi(argv[0]);
......
783 790
        vcnl4020AmbientLight[i] = global.vcnl4020[i].getAmbientLight();
784 791
        vcnl4020Proximity[i] = global.vcnl4020[i].getProximityScaledWoOffset();
785 792
    }
786

  
793
    
787 794
    uint16_t delta = (vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_LEFT]
788 795
                  - vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_RIGHT]);
789 796
    // // Update proximity thresh
......
810 817
  return;
811 818
}
812 819

  
820
// Either 0 to disable record or > 0 to enable it
821
void setRecord(BaseSequentialStream *chp, int argc, char *argv[]){
822
  if (argc == 1){
823
    chprintf(chp, "Set recording to %d\n", atoi(argv[0]));
824
    global.enableRecord = atoi(argv[0]);
825
  }
826
}
813 827

  
814 828

  
815 829
void zieglerMeth2(BaseSequentialStream *chp, int argc, char *argv[]) {
......
822 836
  int maxDelta = 0;
823 837
  float KCrit = 0.0f;
824 838
  global.sensSamples = 0;
839
  global.maxDist.error = 0;
825 840
  LineFollow lf(&global);
841
  int led = 0;
826 842
 
827 843
  if (argc == 2){
828 844
    chprintf(chp, "KCrti %f\n", atof(argv[0]));
829 845
    chprintf(chp, "Steps %i\n", atoi(argv[1]));
830 846
    KCrit = atof(argv[0]);
831 847
    steps = atoi(argv[1]);
832
  } else{
833
    chprintf(chp, "Usage: dev_ziegler2 <K_crit> <steps>");
848
  } else if (argc == 3){
849
    chprintf(chp, "KCrti %f\n", atof(argv[0]));
850
    chprintf(chp, "Steps %i\n", atoi(argv[1]));
851
    KCrit = atof(argv[0]);
852
    steps = atoi(argv[1]);
853
    global.forwardSpeed = atoi(argv[2]);
854
    
855
  }else{
856
    chprintf(chp, "Usage: dev_ziegler2 <K_crit> <steps> (<speed>)");
834 857
    return;
835 858
  }
859
  global.K_p = KCrit;
860
  for(led=0; led<8; led++){
861
        global.robot.setLightColor(led, Color(Color::BLACK));
862
  }
836 863
  chprintf((BaseSequentialStream*)&global.sercanmux1, "Recodring starts in five seconds...\n");
837 864
  BaseThread::sleep(MS2ST(5000));
838 865
  // global.motorcontrol.setTargetRPM(rpmSpeed[constants::DiWheelDrive::LEFT_WHEEL] * 1000000, rpmSpeed[constants::DiWheelDrive::RIGHT_WHEEL] * 1000000);
839
  
866
  int checkWhite = 0;
867
  int it_switch = steps / 2;
840 868
  for(int s=0; s < steps; s++){
841
    chprintf(chp,"S:%d,",s);
842
    lf.calibrateZiegler(KCrit, rpmSpeed);
869
    // chprintf(chp,"S:%d,",s);
870
    if(global.threshWhite)
871
    if(s < it_switch){
843 872

  
844
    global.motorcontrol.setTargetRPM(rpmSpeed[constants::DiWheelDrive::LEFT_WHEEL] * 1000000, rpmSpeed[constants::DiWheelDrive::RIGHT_WHEEL] * 1000000);
873
      checkWhite = lf.followRightEdge(rpmSpeed);
874
    }else{
875
      checkWhite = lf.followLeftEdge(rpmSpeed);
876
    }
877
    if(checkWhite){
878
      for(led=0; led<8; led++){
879
        global.robot.setLightColor(led, Color(Color::RED));
880
      }
881
      global.motorcontrol.setTargetRPM(0,0);
882
    }else{
883
      global.motorcontrol.setTargetRPM(rpmSpeed[constants::DiWheelDrive::LEFT_WHEEL] * 1000000, rpmSpeed[constants::DiWheelDrive::RIGHT_WHEEL] * 1000000);
884
    }
885
    
886
    
845 887
    BaseThread::sleep(CAN::UPDATE_PERIOD);
846 888
  }
889

  
847 890
  global.motorcontrol.setTargetRPM(0,0);
848 891
}
849 892

  
......
884 927

  
885 928
    global.senseRec[j].FL = FL;
886 929
    global.senseRec[j].FR = FR;
887
    global.senseRec[j].delta = delta;
888 930
    // chprintf(chp,"FL: 0x%x, FR: 0x%x, Delta: %d, ProxyL: %x, ProxyR: %x, MaxDelta: %d\n", 
889 931
    //               vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_LEFT],
890 932
    //               vcnl4020Proximity[constants::DiWheelDrive::PROX_FRONT_RIGHT],
......
905 947
void printMove(BaseSequentialStream *chp, int argc, char *argv[]){
906 948

  
907 949
  for (int j=0; j<global.sensSamples;j++){
908
    chprintf(chp,"FL:%d,FR:%d,Delta:%d\n",global.senseRec[j].FL, global.senseRec[j].FR, global.senseRec[j].delta);
950
    chprintf(chp,"FL:%d,FR:%d,Delta:%d,Error:%d\n",global.senseRec[j].FL, global.senseRec[j].FR, global.senseRec[j].delta, global.senseRec[j].error);
909 951
  }
952
  chprintf(chp,"MaxDist: FL:%d,FR:%d,Delta:%d,Error:%d\n",global.maxDist.FL, global.maxDist.FR, global.maxDist.delta, global.maxDist.error);
953

  
910 954

  
911 955
}
912 956

  
......
943 987
  {"calibrate_line", calibrateLineSensores}, 
944 988
  {"record_move_l", recordMove},
945 989
  {"print_record", printMove},
990
  {"setRecord", setRecord},
946 991
  {NULL, NULL}
947 992
};
948 993

  

Also available in: Unified diff