'고도제어'에 해당되는 글 2건

  1. 2015.04.18 고도제어 영상 (13)
  2. 2014.07.15 쿼드콥터 고도제어 시뮬레이터 (5)
Quadrotor20152015. 4. 18. 16:41

초음파 센서를 이용해서 고도 PID제어기를 구현해서 실험한 영상입니다. 덤으로 자세제어기도 작동되고있습니다~


제원은.. 아두이노 Mega2560, 초음파센서 SRF08를 이용했네요.




왼손으로 잡고있긴 한데.. 저건 아두이노랑 PC랑 연결선을 잡고있는거지 기체를 잡고있는게 아니예요 ㅋㅋ






Posted by 너를위한노래

댓글을 달아 주세요

  1. 비밀댓글입니다

    2015.04.19 20:00 [ ADDR : EDIT/ DEL : REPLY ]
  2. 비밀댓글입니다

    2015.05.19 03:23 [ ADDR : EDIT/ DEL : REPLY ]
  3. 이승현

    저렇게 제작할려면 금액이 대강 얼마나 들죠??

    2015.05.22 17:01 [ ADDR : EDIT/ DEL : REPLY ]
    • 이 포스팅의 영상은 파이랑 파이캠 달기 전인데.. 저 부품들 다 고려하면 50~60은 되지 않을까 싶네요 ㅋㅋ

      2015.05.24 23:16 신고 [ ADDR : EDIT/ DEL ]
  4. 비밀댓글입니다

    2015.05.28 19:49 [ ADDR : EDIT/ DEL : REPLY ]
    • 남겨주신 글에 "아날로그 신호는 문자열로 들어오기 때문에" 부분이 이해가 안가네요. 사용하시는 자이로센서는 I2C방식으로, 아마 high byte와 low byte를 조합하여 원하는 16비트 데이터를 얻는 방식일텐데.. 왜 문자열로 들어온다는건지 잘 모르겠네요 ㅠ
      소스는.. 아직 오픈할 예정이 없습니다 ㅠㅠ

      2015.05.29 23:42 신고 [ ADDR : EDIT/ DEL ]
  5. 강민수

    많이 배웠어요
    mpu6050에서 디폴트설정으로 가속도는 정수값 -16383~16383 자이로는 정수값 -32768~32768이 출력되는게 맞나요?
    그리고 -2g~+2g -8g~+8g -250~+250 -500~+500 은 뭘의미하는건가요?
    그냥 mpu6050아무것도 안건드린 디폴트설정에서
    (가속도출력값/16383)*90
    (자이로출력값/32768)*(180/3.14)
    이렇게 구한 각도는 잘못된 각도인가요?

    2015.05.31 01:16 [ ADDR : EDIT/ DEL : REPLY ]
    • 가속도 자이로 모두 -32768~32768범위로 출력되지만 가속도를 16384로 나누는 이유는 mpu6050의 디폴트 측정 가속도가 -2g~2g이기 때문입니다~
      우리가 물리시간에 배우는 중력가속도(9.8㎨)가 1g에 해당하는 가속도가 되겠구요,
      자이로는 각속도[deg/s]가 되겠습니다~ 1초에 몇도를 움직이는가~
      각도를 구하는 방법은.. 가속도와 선속도, 각속도와 각도에 대해서 먼저 공부하셔야 되겠네요~

      2015.06.02 00:05 신고 [ ADDR : EDIT/ DEL ]
  6. hyeop

    안녕하세요 도움이절실하여 글을답니다.
    아두이노로 쿼드콥터 제작중인 대학생인데 비전공분야라 많이 어렵네요
    현재 자이로센서(mpu6050) 값추출까지만 되는상태이고 그이후에 해야하는작업이 상보필터값인지 pid제어인지도
    모르겟네요 초보자의애환.. pid제어는 프로그래밍작업인건지 아니면 무슨 따로 작업하는건지두 아예모르겟습니다ㅜ
    카톡아이디를 혹시 알려주실수있다면 도움좀 받고싶네요 제 아이디는 shyeop입니다

    2015.06.03 22:33 [ ADDR : EDIT/ DEL : REPLY ]
  7. birdpani

    안녕하세요 영상 잘봤습니다
    고도제어 알고리즘은 PID 만 쓰시나요?

    2015.10.10 21:26 [ ADDR : EDIT/ DEL : REPLY ]
  8. Moon

    안녕하세요... 초음파 센서 사용하는데... 지금 도움이 절실합니다.
    연락 할 수 있을까요?
    qnfroadl@naver.com로 이메일 주시면 정말 감사하겠습니다...

    2015.10.12 22:17 [ ADDR : EDIT/ DEL : REPLY ]
  9. 안녕하세요 블로그보다가 너무 좋아서 댓글남기게 되었습니다. 당신의 유지를 본받아 닉네임도 너를위한노래방으로 만들었어요. 먼발치에서 당신만을 응원할께요

    2016.01.22 05:24 신고 [ ADDR : EDIT/ DEL : REPLY ]

Quadrotor20152014. 7. 15. 23:55

요새 초음파센서를 이용한 고도제어를 구현하고 있는데.. 이것도 테스트하는게 제일 골치아프네요 ㅠㅠ


그래서 테스트에 앞서 제가 구현한 고도 PID결과가 맞는지 검증하기 위해 이론을 바탕으로한 시뮬레이터를 만들어 봤습니다


이론이라 그런지.. 결과는 대 만족이었지만 실제 쿼드에서 돌리려니 이런저런 문제가 또 발생하네요.. 이건 이 후 포스팅에서 다루기로 하고 여기선 시뮬레이터에 대한 내용만 다루겠습니다.


먼저 구현한 시뮬레이터 구조도는 이렇습니다



시뮬레이터 전제는 이렇습니다


여기서 먼저 알아둬야할 것은 우리가 흔히 말하는 무게의 단위가 kg이 아니라는 겁니다. 무게는 F(힘)이고 F=ma에 의해 단위는 (=N)입니다. 따라서 저울로 측정한 제 쿼드의 무게는 800N이 된다는거죠. 바닥에 놓여있는 제 쿼드는 항상 지면을 800N으로 밀고있다고 할 수 있습니다. 


프롭을 돌리면 바람에 의한 추력(F=힘)이 발생될테고 점점 세게 돌린다면 어느순간 800N의 추력을 내게 됩니다. 그럼 이제 쿼드 기체는 힘의 평형 상태인거죠. 이상태에서 조금만 더 프롭을 세게 돌린다면 쿼드는 뜨기 시작합니다. 


이 때, (추력-800N)만큼의 힘을 받는 쿼드 기체는, F=ma에 의해 질량의 반비례한 가속도로 뜨기 시작합니다.


가속도는 속도를 낳고, 속도는 위치를 변화시키죠. 이 내용을 가지고 시뮬레이터를 구현해보았습니다.


그리고 제가가진 초음파센서도 심플하게 모델링해 넣고 측정값을 바탕으로 프롭의 속도를 조절하는 PID제어기를 시뮬레이션 해봤는데 결과는 다음과 같습니다.




황색이 쿼드의 높이고 파랑, 초록, 빨강 순으로 P, I, D 제어량 수치(y축과 관련x)입니다.


그래프는 아주 맘에 듭니다 뜨기 시작한 후 약 2초 안에 원하는 40cm에 수렴하니까요..


하지만 이렇게 되었다고 쿼드에 적용하고 프롭을 돌릴순 없는게 함정.. ㅠ 실제 센서의 노이즈와 여러 변수에 대한 대책도 있어야하니까요..


실제 쿼드에 적용한 이야기는 다음 포스팅에서 다루기로 하겠습니다.



-------------------------------------------------------------- 14년 7월 16일 추가 -------------------------


수렴할 때 왜 I제어량만 많느냐에 대한 설명을 빼먹었네요..


보통 모터의 속도제어같은 경우 P가 증가된 상태에서 I와 D가 0 근처에서 왔다갔다 거리는 결과가 나오는데 이건 그렇지가 않아서 고민을 많이 했습니다. 틀린거 아닌가?


처음 생각엔 가속도를 가지도 위치를 제어하려고 하니까 적분항이 이렇게 나오는구나~ 하고 넘어갔는데 지금은 다른 이유가 있는거 같아요


I가 정상 상태 오차를 커버해준다는 점을 생각해보면, p로 인한 제어량이 무게를 이기지 못하면 결국 위치는 0이니까.. 정상상태 오차가 40이 되어버리는거잖아요? 정상상태 오차가 100%니까 결국 I제어량만 남을것이다~ 라는 생각이 드네요


-------------------------------------------------------------- 14년 10월 14일 추가 -------------------------


PID제어를 모두 사용하지 않고 baseThrottle + P + D로도 가능할거 같다는 의견을 남깁니다. 여기서 baseThrottle은 기체의 무게(mg)와 같은 추력을 발생시키는 throttle값입니다.



-------------------------------------------------------------- 15년 8월 20일 추가 -------------------------

쿼드콥터 모델링 시 duty가 곧 추력이라고 해놨는데.. duty는 모터 회전 속도를 만들어 냅니다.


추력은 모터 회전 속도의 제곱에 비례한다는 사실을 덧붙여 추가합니다.









Posted by 너를위한노래

댓글을 달아 주세요

  1. 안녕하세요. 이번에 쿼드콥터를 공부중인 학생입니다. 저는 개발보드로 MSP430 F5529와 라즈베리 파이를 사용하는데요..I2C통신을 이용하여 MSP와 센서들의 값을 출력하는 것까지는 예제 코드를 통해 어찌어찌 했는데, 나온 센서 값이 맞는 값인지 모르겠고, 어떤 게 참조값인지, 설정값인지 모르겠습니다. PID제어기에 대한 이론은 여러번 봐서 이해를 하겠는데 막상 구현을 하려니 막막하네요.. PID 제어기 설계에 대한 조금 자세한 설명 부탁드리겠습니다.

    2014.07.17 21:35 [ ADDR : EDIT/ DEL : REPLY ]
  2. 박한솔

    헐!! 방학중 쿼드콥터 프로젝트를 진행하면서 여기 참고 많이하고 있었는데 이렇게 센서부분까지 넘어오시네요!! 저희는 아직 하드웨어적으로 구성이 덜끝났지만.... 앞으로 자주자주 들리겠습니다. 반갑네요:)

    2014.07.21 01:26 [ ADDR : EDIT/ DEL : REPLY ]
    • 반갑습니다! 저도 이번 방학 때 쿼드콥터 프로젝트를 진행 하려고 하는데요. 센서 값 추출하는 부분에서 일주일째 막혀서 헤메고 있습니다 ㅠㅠ 혹시 자이로 센서에서 나온 값을 어떻게 이용해야되는지 알고 계시면 설명 부탁드립니다.

      2014.07.21 20:50 [ ADDR : EDIT/ DEL ]
  3. 비밀댓글입니다

    2015.03.12 21:24 [ ADDR : EDIT/ DEL : REPLY ]