자작 드론 만들기(DIY Drone) PID 튜닝 (소스 제공)

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ก.พ. 2021
  • 자작 드론의 PID 튜닝 방법에 대해 알아 봅니다. 각도와 각속도 P-PID 튜닝에 대해 소개합니다. 관련 소스 코드는 다음 링크에 들어가 다운로드 받으세요.
    blog.naver.com/ilovealldiy/22...
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 38

  • @bds1092
    @bds1092 3 ปีที่แล้ว +1

    좋은 방송 고맙습니다. 새해 복 많아 받으십시오~

    • @ilovealldiy1584
      @ilovealldiy1584  3 ปีที่แล้ว +1

      좋은 말씀 감사하구요. BDS님도 복많이 받으세요.

  • @Goalpresident
    @Goalpresident 3 ปีที่แล้ว +1

    명절 전에도 좋은 영상 감사드립니다. 새해복 많아 받으세요~~

    • @ilovealldiy1584
      @ilovealldiy1584  3 ปีที่แล้ว

      Goal.님도 복 많이 받으시구요. 항상 좋은 댓글 감사합니다.

  • @cjl4776
    @cjl4776 ปีที่แล้ว +1

    각도 제어 하실때 일반적인 비례제어 쓰셨나요? 저도 드론을 만들고 있는데 각속도 제어는 잘되는데 각도제어가 안되서 질문드립니다.

    • @ilovealldiy1584
      @ilovealldiy1584  ปีที่แล้ว +1

      네 각도는 P만 이용했네요

    • @cjl4776
      @cjl4776 ปีที่แล้ว

      와.. 여기 소스코드 참고해서 필터를 추가하니까 꽤 안정적이게 되었네요. 짱입니다!!

  • @DonggeonLee-fh1cr
    @DonggeonLee-fh1cr 3 ปีที่แล้ว

    이전에 드론 제작 경험이 있는데 이중 PID를 P PID로 하는 이유가 있을까요?
    저는 6축 모두 PID 각각을 다 사용했는데 조금 불안정하기는 했습니다.
    아무래도 각가속도를 제어하는 것이 안정화측면에서는 좋다는 것으오 느껴지긴합니다만 조언을 듣고 싶네요

    • @ilovealldiy1584
      @ilovealldiy1584  3 ปีที่แล้ว +1

      각도만 사용해서 PID제어해도 호버링이 가능하겠지만 각도와 각속도를 이용하면 센서로 부터 각속도값을 바로 받아 처리하니 반응속도가 빨라집니다. 각도 추출이 각속도의 샘플링레이트 속도만큼 빠르다면 반응속도가 빠르겠지요. 각속도로만 PID 제어를 하게될때 오차 누적이 되는 문제가 있으니 먼저 각도를 통해 얼추 목표 각도로 이동하고 그 다음 빠른 반응을 위해 각속도로 제어합니다. 비슷한 개념으로 고도 제어시 기압계와 가속도 센서를 혼합해서 고도제어의 빠른 반응을 하도록 구현하기도 합니다. 이때 가속도 센서가 빠른 반응을 처리합니다.

    • @ilovealldiy1584
      @ilovealldiy1584  3 ปีที่แล้ว +1

      추가로 PID 제어를 변형한 슬라이딩 모드 컨트롤 제어 방식이 있습니다. 이외도 제어 관련 논문 등을 찾아보시면 많은 방식이 있으니 참고하세요.

    • @DonggeonLee-fh1cr
      @DonggeonLee-fh1cr 3 ปีที่แล้ว +1

      아하 그렇군요.. 호버링이 큰 난제였는데 도움이 되었습니다 감사합니다

  • @user-vq2me4yu4v
    @user-vq2me4yu4v ปีที่แล้ว

    안녕하세요 드론 프로젝트를 진행중인 학생입니다. 다름이 아니라 모터 제어를 할때 조종기 스틱위치를 옮겨서 스타팅을 하는데 제 조종기는 모델2라서 왼쪽 스틱은 고정이 아니라서 어려움을 겪고 있습니다. 혹시 수신기 3채널값을 받는대로 출력을 하게 코드를 바꾸려면 어디를 바꿔야하는지 알려주실수 있으실까요?

    • @ilovealldiy1584
      @ilovealldiy1584  ปีที่แล้ว

      스틱이 중앙에 위치한다면 받는값을 그대로 쓰로틀 값으로 이용한다면 스틱을 놓쳤을 경우 1500값이 들어가 프롭 회전이 갑자기 빨라져 위험할수 있습니다. 스틱이 중앙에 위치하지 않게 하려면 수신기 내부에서 해당 스틱에 연결된 스프링을 제거하면 되고 모드 변경은 설정에서 변경하면됩니다. 수신기 받는값을 모터 출력값에 바로 들어가게 하면됩니다. 테스트는 프롭없이 하시고 프롭 연결시는 드론 프레임을 줄로 묶고 테스트 하기 바랍니다

    • @user-vq2me4yu4v
      @user-vq2me4yu4v ปีที่แล้ว

      @@ilovealldiy1584 감사합니다

    • @user-vq2me4yu4v
      @user-vq2me4yu4v ปีที่แล้ว

      @@ilovealldiy1584 코드 수정중인데 변수 해석에서 어려움이 있네요.. 혹시 스로틀값 받아오는 변수와 모터 제어하는 변수가 뭔지 알수있을까요?

    • @user-vq2me4yu4v
      @user-vq2me4yu4v ปีที่แล้ว

      @@ilovealldiy1584 제 조종기 스로틀은 스틱이 중앙이 기본이 아니라 3채널은 프리스탑이네요

  • @thankyou1996
    @thankyou1996 8 หลายเดือนก่อน +1

    드론조립을 완료했습니다.
    캘리브레이션 코드(모터전용코드-무따만보 제공)는 실행이 되었는데
    PID튜닝코드로 실행을 해보니 모터가 아예 돌지 않았습니다. 혹시 집작가는 해결방법 알 수 있을까요? 감사합니다!

    • @ilovealldiy1584
      @ilovealldiy1584  8 หลายเดือนก่อน

      Esc 캘 진행 후 쓰로틀 올렸을 때 동작을 하지 않나요? 송수신기 방식이 pwm 방식인지 체크해 보시기 바래요. 만약 esc캘 이후 모터 속도 제어 가능하면 소스 다운로드 후 디버깅 로그로 각 채널별 값이 1000 ~ 2000 사이 값이 출력되는지 확인해 주세요.

    • @thankyou1996
      @thankyou1996 8 หลายเดือนก่อน

      @@ilovealldiy1584 답변감사합니다! 아무래도
      파워모듈에서 전원으로 빠지는게 문제인거 같습니다. XT60파워모듈을 샀는데 혹시 방향이 중요한가요? 배터리에서 입력되는 부분과 아두이노로 빠지는 레귤레이텨(+)단자 (-)단자가 같이 쌍으로 있고 납땜하는 부분만 따로 출력부분으로 있습니다. 제가 파워모듈을 방향을 잘못 골라 샀나요?!

    • @ilovealldiy1584
      @ilovealldiy1584  8 หลายเดือนก่อน

      @thankyou1996 파워모듈 xt60 배터리와 연결되는 소켓이 맞는 위치고 5볼트는 작은 가는 전선에서 빨간색과 여러 가는 검정색 선들 중 그라운드 선이 있습니다. 검정색 가는선에서 그라운드 선은 테스터기 이용해 찾거나 led연결해 불켜지면 찾을 수 있어요.

    • @thankyou1996
      @thankyou1996 8 หลายเดือนก่อน

      @@ilovealldiy1584 5v작은 가는선의 위치는 배터리쪽을 향해야합니까? 아니면 남땜방향으로 향해야합니까?!

    • @thankyou1996
      @thankyou1996 8 หลายเดือนก่อน

      이말의 뜻은 어느 방향으로 가는선이 붙어있는가를 말합니다! 인터넷에 보니 방향이 다르더라고요!

  • @user-kr4lk8sj2m
    @user-kr4lk8sj2m 3 ปีที่แล้ว +1

    재료들 구입처를 알 수 일을까요?

    • @ilovealldiy1584
      @ilovealldiy1584  3 ปีที่แล้ว

      제가 앞서 올린 동영상과 정리한 pdf문서를 찾고 하시면 됩니다.
      th-cam.com/video/MtpXKeLzgUU/w-d-xo.html

  • @user-iw1us3yj7y
    @user-iw1us3yj7y 3 ปีที่แล้ว

    float P_Gain = 3; //2.35;
    float I_Gain = 0.0;
    float D_Gain = 0.0;
    float P_Gain_Rate = 2; //1.05;
    float PID_I_Gain_Roll = 0; //0.001;
    float PID_I_Gain_Pitch = 0; ////0.001;
    float D_Gain_Rate = 5; //14.0;
    float PID_Max_Roll = 5;
    float PID_Max_Pitch = 5;
    float PID_P_Gain_Yaw = 25; //12.0;
    float PID_I_Gain_Yaw = 0.0001;
    float PID_D_Gain_Yaw = 0.03;
    float PID_I_Max_Yaw = 150;
    float PID_Max_Yaw = 150;
    이 변수들중 뭐가 각도관련이고 뭐가 가속도 관련인지 알 수 있을까요?

  • @user-qf8ud3qw2q
    @user-qf8ud3qw2q ปีที่แล้ว

    이해가 안가는게 각도에 대한 p값을 줘도 각속도에 대한 pid 값을 0으로 하면 제어가 0 아닌가요? 이거 각도에 대한 pid를 모조리 각속도에 집어넣는 형태인데요?

    • @ilovealldiy1584
      @ilovealldiy1584  ปีที่แล้ว

      자이로에서 나오는 각속도값으로 바로 제어에 사용할 수도 있겠지만 이중 pid개념은 먼저 일정단위 시간에 각속도 값을 적분하면 각도가 나오고 이를 가지고 얼추 제어하고 그 다음 미세 조정을 각속도 값으로 제어하는 개념으로 제어 성능이 괜찮아 이렇게 제어합니다. 더 나은 제어 방식이 나와있는 논문이 있으면 그걸 이용하는것 한 방법이겠죠. 각속도는 작은 단위 시간으로 각도를 나눈 개념으로 이해하시면 됩니다. 마치 거리를 시간으로 나눠 속도라 하듯이.

    • @user-qf8ud3qw2q
      @user-qf8ud3qw2q ปีที่แล้ว

      @@ilovealldiy1584 그걸 물어보는게 아니라 영상에서 각도 p를 변경하면서 각속도 pid를 0으로 두니까 의아해서요. 각속도 pid를 0으로 두면 각도p를 아무리 변경해도 제어가 0 아닙니까? 코드 뜯어보니까 그런구조던데요? 각도p 게인을 찾는 의미가 없는것 같습니다.

    • @ilovealldiy1584
      @ilovealldiy1584  ปีที่แล้ว +1

      코드를 보시면 각도 P 게인을 다음과 같이 주었고 // PID Gain 변수
      float P_Gain = 3; 각도 I, D 는 사용하지 않고 각속도는 I는 사용하지 않고 P와 D 게인만 주어 제어 했네요. float P_Gain_Rate = 2; //1.05;
      float PID_I_Gain_Roll = 0; //0.001;
      float PID_I_Gain_Pitch = 0; ////0.001;
      float D_Gain_Rate = 5;
      P-PD 제어 하는 구조입니다. 각속도 I게인 조금 주고 제어보단 I 없이 제어가 본인이 판단하기에 더 안전적이 판단해서 그렇게 주었습니다. 게인값의 최적값은 테스트하면서 찾길 바랍니다. 각각 모터, 프레임 무게 등 기체 조건이 다르니 튜닝하셔야 합니다.

    • @ilovealldiy1584
      @ilovealldiy1584  ปีที่แล้ว

      아 그리고 각도 제어없이 각속도로 제어하는것이 경험상 쉽지 않을거 같네요. 참고하세요

    • @user-qf8ud3qw2q
      @user-qf8ud3qw2q ปีที่แล้ว

      @@ilovealldiy1584 그러니까 다 아는데 영상속에서는 각도p만 게인조절하고 왜 각속도p는 0으로 두고 튜닝을 했는지 물어보는 겁니다. 의미없는 것 아닌가 싶어서요.