
조종기의 Mode가 0일 때는 수동 조작 모드, Mode가 1일 때는 자율주행 모드로 주행할 수 있도록 코드를 수정하려했지만 조종기 내에 reverse기능이 있어 Mode(Gear)을 담당하는 Ch5에만 reverse를 주었다.

오늘까지의 진전으로는 Ublox GPS모듈을 설치하여 신호를 잡아내는 것 까지 하였지만 ros통신으로 불러오는데까지는 문제가 보였던 것 같다.
-> 첫 번째 실행에서 보였던 문제점으로는 전륜에서 noise가 보이는 듯 하여 조향에 많은 흔들림이 나타났다.
-> 바닥 평면과 닿지 않았을 때는 p제어 상수를 0.2->0.1로 바꾸었을때 제어가 잘 된 듯 하였으나 막상 직접 바닥에 굴려보니 노이즈가 나타났다.
-> 기존의 제어의 문제점? PD제어인데 제어를 좀 조정해야겠다.
-> RosSerial과의 병합코드 점검하기.
float kp = 0.1;
float ki = 0.00000 ;
float kd = 2.00;
void SteerCon(float Q) { // 조향모터의 제어를 위한 함수, Q = 조향 목표값  
    val = Q;                           
    if(val>St_M+300){  // 조향 최대값 제한
      val=St_M+300;
    }
    else if(val<St_M-300){ // 조향 최소값 제한 
      val= St_M-300;
    }
    encoder_val =analogRead(encoder_pot);               // Read V_out from Feedback Pot
    t = millis();
    dt = (t - t_prev);                                  // Time step
    Theta = val;                                        // Theta= Actual Angular Position of the Motor
    Theta_d = encoder_val;                              // Theta_d= Desired Angular Position of the Motor
e = Theta_d - Theta;                                // Error
inte = inte_prev + (dt * (e + e_prev) / 2);         // Integration of Error
V = kp * e + ki * inte + (kd * (e - e_prev) / dt) ; // Controlling Function
    if (V > Vmax) {
        V = Vmax;
       inte = inte_prev;
     }
    if (V < Vmin) {
      V = Vmin;
      inte = inte_prev;
      val_prev= val;
     }
     int PWMval = int(255 * abs(V) / Vmax);
  if (PWMval > 200) {
     PWMval = 200;
  }
  if (V > 0.5) {
    digitalWrite(DirPin1, HIGH);
    analogWrite(PWMPin, PWMval);
  }
  else if (V < -0.5) {
    digitalWrite(DirPin1, LOW);
    analogWrite(PWMPin, PWMval);
  }
  else {
    digitalWrite(DirPin1, LOW);
    analogWrite(PWMPin, 0);
  }
    t_prev = t;
    inte_prev = inte;
    e_prev = e;
}
믿기지 않겠지만 내일이 중간고사인데 밤새서 대회 준비나 하고 있다ㅋㅋㅋ 셤공부 언제해??
'자율주행 > [2023] 1-fifth AA EV' 카테고리의 다른 글
| .... (0) | 2023.04.27 | 
|---|---|
| [D-Week] 현재로부터 해야 할 일 (0) | 2023.04.22 | 
| 깃에 옮기기 (0) | 2023.04.16 |