2002년 학부 졸업논문으로 완성했던 카트형 역진자 시스템입니다. 이걸 소개하는 것만 3번째네요. (네이버의 제 블로그-지금은 안쓰지만, 이전 pinkwink.kr) 데이터를 백업받을 수도 있었지만, 그래도 명색이 학부졸업논문인데, 너무 허덥하게 소개한듯해서 그냥 다시 작성할 각오로 백업받질 않았습니다. (지금 후회 中 ...)
 역진자 시스템은 로터리 형이나 요즘 유행하는 밸런싱 형태도 있지만, 이 카트형 펜들럼은 상대적으로 동역학이 쬐~금 쉽고 (정말 쪼금 쉽습니다.) 기구부의 구현을 생각할때 편합니다. 기구부에서는 바퀴와 지면의 마찰력을 적절히 유지시켜야하는 부분이 좀 걸리긴 하죠^^.
 역진자, 혹은 도립진자, (Inverted Pendulum) 시스템은 미사일이나 로켓트, 2족 보행로봇 등을 제어하기 위해 고안된 간단한 모델 시스템으로 카트(Cart)위의 폴(Pole)이 적당한 제어력이 없는 상황에서 중력에 의해 어느 한 쪽 방향으로 넘어지려고 할 때 외부에서 카트에 힘을 가하여 특정 위치와 폴의 각도를 유지시키는 시스템을 말합니다. 어릴때 빗자루 손가락 끝에 두고 중심잡던 놀이를 생각하시면 됩니다.
 2002년 당시 동역학을 유도하고, 선형화시켜서 LQR을 이용하여 제어기를 설계했습니다. 사용한 마이크로프로세서는 80c196이었고, 앱솔루트 타입의 엔코더 2개를 센서로 사용했습니다. 모터는 Maxon의 DC모터를 사용했지요.


위의 모습은 논문 발표회를 하던 모습입니다. 쿨러가 달린 부분이 당시 DC 모터의 구동회로를 H-Bridge로 꾸몄는데 뭐가 잘못되었는지 발열이 너무 심해서 달았던 겁니다. 바퀴가 있는 부분 바로 위가 엔코더입니다. 폴이 넘어지는 각도를 측정하지요. 사진에서는 안보이지만, 앞바퀴에 또 하나의 엔코더가 달려있어서 카트의 위치를 센싱합니다.

I. 동역학 방정식 유도


 카트형 펜들럼의 동역학을 유도하기 위해 간단히 카트부분을 도식화한겁니다. 폴이 누르는 힘을 P라고 하고 기울어진 폴이 카트를 미는 힘을 N이라고 합니다. 모터에 의해 움직이는 힘을 F로 두고, 카트의 위치와 가속도를 X와 X의 두번 미분치로 잡았습니다.


 위는 폴(Pole)을 도식화한 것입니다. 폴자체는 카트위에 고정되어있으니 중력방향으로 병진운동으로 낙하(중력에 의해 기울어지는 것과는 별개의 문제)하지는 않습니다. 그 힘을 P로 보고, 역시 카트를 밀려고하는 힘을 N으로 보고 있습니다.


위 의 두 그림을 수직으로 표현하면 저렇습니다. 첫 그림에서 왼쪽으로 카트가 움직일려고 하는 힘 F는 속도성분에 비례하는 마찰력과 폴의 기울어짐에 의해 방해받은 힘과 실제 F=Ma라는 유명한 법칙에 의해 움직인 전체 합과 같다는 것입니다. 두 번째 수직은 폴 입장에서 유도된 것인데, 폴의 기울어지는 각도를 theta라고 했을때, 그 가속도성분은 theta 자체가 가지는, 즉 폴의 기구적인 마찰력과 무게 중심을 폴의 정중앙에 있다고 가정했을때 N과 P의 삼각함수로 표현할 수 있습니다. 이를 다시 폴의 Y축 X축 방향으로 표현하면


이 될것입니다. 이를 최초의 식에 대입하여 정리하면


이 됩니다. 이제 제어입력을 힘으로 보고난 x와 theta의 식으로 표현된것입니다. 하지만, 위 식들은 비선형 운동방정식입니다. 이를 동작점 부근에서 선형화할 필요가 있습니다.


동작점을 theta = 0 로 생각하면, 사인과 코사인은 각각 위와 같이 바뀌게 될것입니다. 그리고 평형상태 (모든 상태가 0)에서 상태를 편차까지 고려하여 다시 정립하면,


이를 이용하여 원 동역학을


로 표현하겠습니다. 좀 복잡한듯하지만, 대부분 상수값이므로 그리 복잡한 것도 아닙니다.^^ 이제 고려해야할 것이 DC모터에 관련된 부분입니다. 위 수식은 제어입력(u)을 단지 힘으로 보고 있기 때문에 바퀴를 돌릴 DC모터도 동역학적 고찰이 필요합니다. 여기선 통상 두 가지 방법이 사용되는데, 첫 번째는 필요한 힘을 산출한다음 모터의 제어기를 별도로 설계해서, 그 모터 제어기에게 필요한 속도로 돌게 하는 겁니다. 그러나 여기서는 다른 방법으로 모터의 동역학을 저 위의 수식에 포함시켜서 하나의 시스템으로 표현할 겁니다. 이를 위해 모터의 전압에 관한 식을 보면,


Vb는 역기전력으로


이므로 다시 대입하여


로 표현합니다. 우리는 기어가 장착된 모터를 사용하니까 기어비도 고려해서 생각해야겠죠.


위 그림이 도식화된 모터 제어 구성도입니다. 바퀴의 회전을 생각한다면, 회전 각도에 대한 원의 둘레로 표현을 해야할 것입니다. 이것까지 모두 고려한 수식이


입니다. Rm, Km 은 모터의 Data Sheet에 있으니 큰 걱정은 없을 겁니다.


여기서 토크식


을 이용해서


힘을 전압으로 완전히 표현할 수 있게 되었습니다. 저 F를 원 동역학에 다시 대입하겠습니다.


예.. 이제 모터에 인가되는 전압을 제어입력으로 가진 동역학을 우리는 얻게 되었습니다. 여기서 p는


입니다.


위의 상태방정식에서도 다시 전압으로 표현하면


이렇게 될것입니다.


이 식에 각종 파라미터 값인


를 대입하여


상태방정식을 얻었습니다. 뭐 이제 제어기를 설계하면 되겠네요^^

그 전에 하드웨어의 구성을 잠시 보겠습니다.






II. 하드웨어의 구성



실제 제어 구동부의 개략도입니다. 펜들럼의 센싱값이 마이크로프로세서로 입력되고 제어게인에 의해서 각 모터에 인가될 전압이 결정되면 모터드라이버에 입력하면 됩니다.


그 모터 드라이버로 채택한 H-Bridge를 설명하는 그림입니다. 정역회전에 대해 설명하는 것이지요.

III. 제어기 설계



모든 선형시스템은 위와 같은 상태방정식으로 표현가능합니다. 즉, 아까 우리도 위의 형식으로 구했지요.


각 행렬들입니다.


특성근을 조사해보니, 모든 근이 좌반부에 있는것은 아니네요. 즉, 불안정한 시스템입니다.


그러나 가제어성을 조사해보니 Rank가 4가 되어서 선형제어기 설계가 가능하겠습니다. 그래서 우리는 LQR제어기법을 이용한 상태궤환 제어기를 설계하겠습니다. 최적 제어 문제는 다음의 성능지수 J를 최소화하는 제어 이득행렬 K를 구하는 것으로 정의 됩니다.


여기서 Q, R은 설계변수가 됩니다. 우리는


로 Q,R을 잡았습니다.


MATLAB의 LQR 툴박스를 이용해서 간단히 제어 이득을 구했습니다.


MATLAB/Simulink에서 사용한 제어블럭입니다. 상단은 선형화된 시스템이고 하단은 비선형시스템입니다. 제어기를 선형시스템에서 구했지만, 실제 적용은 당연히 비선형시스템이니 실제 구동전에 비선형시스템에서도 잘 동작하는 지 확인 해야지요...^^


비선형 시스템의 내부 블럭입니다.


시뮬레이션 결과이빈다. 제어입력이에요.


Cart와 Pole의 상태입니다. 제어성능이 괜찮다는 사실을 발견할 수 있습니다. 이를 실제로 테스트하는 환경을 보겠습니다. 동영상의 화면에 나오는 사람은 제가 아닙니다.^^ 당시 지도대학원생이던 현수선배지요....










저작자 표시 비영리 변경 금지
http://pinkwink.kr/trackback/36 관련글 쓰기
  • [모델링] 리액션 휠을 이용한 펜듈럼 세우기 Trackback from designed by Moon 2010/05/14 00:23 [ DELETE ]

    현재 학부 졸업을 위한 졸업 작품과정으로 리액션 휠을 이용한 자세제어 시스템을 만들고 있습니다. pinkwink님에게 직접 질문을 위한 트랙백입니다~~;;ㅎㄷㄷ 현재 모델링을 하는데,,내가 만든 모델링 방정식에 대한 의심에 의해서,,이러케 질문글을 씁니다.  악필,,,ㅎㄷㄷ 위에 보시면 제~일 밑에 부분에 간단히 리액션 휠에 대한 원리가 있는데요~ 오른쪽으로 막대기(펜듈럼?)가 기울면 휠이 오른쪽으로 회전하면서 그 각가속도에 의한 반발력으로 다..

  • 외계인 마틴 2009/04/17 17:45

    호옷.. 이게 어느 행성의 언어인지 전혀 알수가 없네요.
    바벨피쉬라도 한마리 사야할듯...^^

    • PinkWink 2009/04/17 18:09

      응?...ㅎ
      해보면 재미있습니다...ㅋㅋㅋㅋ^^

  • 해보자 2009/04/24 01:11

    오호~이글을 끝까지 읽으면 잠이 잘올듯 싶네요...^^;;
    이걸 이해한다면 참 재밌을것 같은데 무슨기호인지 읽지도 못하겠네여..ㅋ

    • PinkWink 2009/04/24 03:27

      ㅎㅎ...해보자...자나요...닉네임이...ㅋㅋ
      해보셔야죠...ㅋㅋㅋ

  • 임동환 2009/08/23 20:15

    저도 이거도전하고싶습니다 도와주세요 ㅠㅠ
    지금 전자과인데요 제가아는거라고는 선형제어 과목들은 것 밖에없습니다 C언어하고 AVR이 마이크로컨트롤러이다 이정도 ㅠㅠ
    어디서 부터 손을 대야될까여??? PID 제어가 먼가라는것만들었지 이 이론을 어떻게 적용하는것도 전혀 감이 안오네요~ 동역학도 공부해야될까여? 요번 졸업작품에 꼭해보고싶은데요 ㅠㅠ

    하나하나 지시를 내려달라고 하는건 무리겟죠 ㅠㅠ

    • PinkWink 2009/08/24 01:13

      물론 찬찬히 이론부터 다져야하지만...
      펜들럼은 원체 유명한 시스템이니 바로 도전하셔도 될겁니다...
      일단 전체 시스템이 크게 3가지 파트가 있다고 치지지요

      (센싱) - (제어) - (구동)

      이중 제어는 제일 뒤로 미루고...

      (센싱)과 (구동)을 완성해보세요...

      즉, 기구부를 완성하라는 말입니다...
      차량의 이동거리와 폴이 넘어지는 각도를 무슨방법으로 센싱할것인지. (보통은 엔코더를 많이사용하지요^^) 그렇다면 센서는 어떻게 부착을 해야할것인지... 그리고 모터는 어디다 달건지... 등등입니다. 그래서 난 각 센서로 부터 각도와 거리를 잘 받을 수 있는지 하드웨어적인 테스트가 완료되어야하구요. 그 다음 PWM -DC모터에서 많이 사용하니까- 으로 DC모터를 잘 구동시킬수있는지... 등을 먼저 완료하셔야지요.

      (센싱)과 (구동) 파트가 다 되면 이제 (제어)를 해볼수 있는겁니다.^^.

  • 임동환 2009/08/25 01:49

    그럼 폴이 넘어지는 각도는 엔코더로 측정한다는 말씀이신가여?? 즉 엔코더 모터말씀하시는건가여??
    엔코더가 회전하는 각도에 따라 펄스가 다르게 나오는건가여?? ㅡㅜ

    기본적인것부터 막히네요 ㅠㅠ

    • PinkWink 2009/08/25 03:57

      엔코더모터라는게 있나요?^^ 모터에 엔코더가 달린거겠지요...^^
      바퀴가 굴러가는걸 측정하는거야 모터에 달린 엔코더를 읽어서 적절히 원둘레구하는공식으로 이동거리를 잡겠지만...
      폴은 자유자재로 넘어져야지요? 그걸 안정하게 세우는게 목표니까요^^
      폴의 넘어지는 각도야 엔코더만 있으면 될겁니다.
      제 경우는 예전에 포텐셔미터로도 했었는데요. 포텐셔미터가 가변저항이니까 사용은 편한데 엔코더에 비하면 좀 뻑뻑합니다.^^. 아무래도 엔코더가 좋겠지요. 일단...

      엔코더해석부터 도전하셔야지요.
      그리고 모터랑 바퀴 선정하시고...
      그래서
      폴이 넘어지는 각도가 정확히 계산되는지 (radian 이든 degree든)
      카트의 이동거리는 미터단위로 정확하게 나오는지...
      확인하는 것을 1차 목표로 잡으셔야지요...^^

  • 임동환 2009/08/28 00:19

    그렇군여~^^
    아무튼 요번에 사정상 휴학할 것 같아서 여유가 있네요 ㅋ 이왕이면 동력학도 공부해서 천천히해봐야 겠네요~
    스승님 많이 도와주세요~ㅋ

    • PinkWink 2009/08/28 11:08

      저런.. 제가 스승님이나 될까요...
      여하튼...
      블로그같은걸 하시면서..
      제작과정을 자세히 한번 기록해보시는것도 어떨지...^^

  • 임동환 2009/08/30 17:10

    네~ 그럼 시작 할때 다시 찾아뵙겠습니다^^

  • 마음은공학도 2009/09/14 16:29

    카트형 역진자를 만들어 보기로 결정했습니다.
    그런데 아뒤에서와 같이 문외한 입니다..마음만 공학도 입니다......ㅠㅠ

    어떤거 부터 해보면 될까요???
    제가 쉽게 생각해볼때 DC모터 부터 제어 해본 후 차츰 진도가 나가면 될꺼 같은데...맞나요??
    DC모터 제어하는데 어떤 부품을 사야 합니까???어디서 사면 종은 부품을 살 수 있는지요??
    총 비용은 얼마나 들지요???

    처음이라 팁도 좀 주세요...ㅠ.ㅠ
    결정은 했는데...도와주세요~~~~~~~~~~~~~~~~~~부탁드려요...좋은 하루 보네세요~

    • PinkWink 2009/09/14 18:59

      저런... 이렇게 말씀드리면 어떻게 받아드릴지 몰라도..

      DC모터 제어를 공부하실 필요는 없습니다.
      DC모터 구동 (PWM등을 이용한) 법만 익히시면 됩니다.
      왜냐면 위 글의 동역학을 보시면, 최종 동역학 식에 DC모터의 방정식이 포함되어있습니다. 그러니 최종 동역학에 표현된 시스템을 안정화하는 제어기를 구성하면 DC모터제어도 저절로 되었다고 생각해도 무방합니다.

      제가 권장하는 방법은 기구부를 구상하세요.. 아주 디테일하게... 치수하나하나까지... 그러다 보면 센서는 어떻게 달고 바퀴는 지름이 얼마짜리를 쓰고 등등이 구현될 것이고, 그 다음 딱딱한 종이나 아크릴을 이용해서 프로토타입을 만드십시오... 그러다 보면 설계단계의 문제점을 알 수 있습니다. 그리고 실 제작을 하시구요. 그와 동시에 센서와 모터를 다루기 위한 마이크로프로세서나 혹은 PC베이스라면 해당 프로그램 (MATLAB or LABVIEW)를 익히시면 시간상 효율은 최선이라고 생각 됩니다.^^. 그리고 댓글만으로는 한계가 있으니... 이글루스나 다음 혹은 티스토리 등에 블로그를 개설하셔서 진행과정을 업데이트하시고... 이상한점은 트랙백 남겨주시면 제가 답변하겠습니다....^^

  • 박지훈 2009/09/27 19:58

    제가 카트형 역진자를 만들려고 하는 공학도를 걷는 학생인데요

    DC 모터 : GM35BE-24VI-30 w/ENCODER (29000원)
    엔코더 : 앱솔루트형 (LS2766-R1, 19000*2만원)
    하드웨어 : 80C196 (5만원)
    아크릴판 및 폴 : 만~만오천
    타이어 및 기어 : 타이어 4개 만원, 기어 5천원

    이렇게 예산을 짰고 PC 프로그램은 Labview 로 할려고 했는데요 PC로 제어를 할려면
    모터 컨트롤러 와 PC 사이에 통신 매개체가 필요하다고 해서 알아봤는데 가격이 몇십만원대라서요...

    쉽게 쓰면서 싼 통신기가 없을까요... ㅡㅜ 10월 중순 안으로 다 완성 시킬려고 하는데 어떻게 해야 할지 모르겠어요 ...
    어떻게 만드셨는지 만드신 카트형 역진자 부품하고 가격쫌 알려주시면 안될까요??

    • PinkWink 2009/09/28 00:40

      음... 왜 앱솔루트형 엔코더가 두개 필요할까요?^^
      엔코더 내장 모터를 사용하시니
      폴의 각도만 측정하면 될듯하고 그렇다면 엔코더는 추가로 하나만 있으면 될 듯합니다.^^
      말씀하신데로 DC모터 드라이버가 빠졌네요...^^
      그런데 LabVIEW로 하시겠다면... 음...
      또 왜 80c196이라는 별도의 CPU가 필요할까요? 필요없을듯합니다. CPU의 역활을 LabVIEW한테 맞기시면 될듯한데요^^ 어차피 상태 모니터링도 LabVIEW가 하면 될테니....^^

      엔코더를 인크리먼트 타입으로 변경하시고, 모터 드라이버는 전압레벨을 인가하는 타입으로 선정하세요. 그러면 LabVIEW와 연동되는 DAQ보드(아마 10만원 안쪽일겁니다.)를 통해 제어가 가능할 겁니다. 제가 잘 모르고 하는 말일 수도 있지만, 아마 인크리멘트탑인 엔코더 해석이 가능할 겁니다. 그리고 모터에 인가하는 제어입력은 LabVIEW를 통해 전압레벨(0-5V사이)로 출력하고 모터 드라이버에서는 그 전압을 받아 모터구동에 필요하게끔 하는거지요.

      그렇다면, 필요한것은

      LabVIEW
      DC 모터,(엔코더내장)
      DC 모터 드라이버
      DAQ보드
      기구부를 구성할 부품(바디와 바퀴 등등)

      으로 구성할 수 있겠는데요^^

  • 박지훈 2009/10/05 13:59

    일딴 DC 모터를 제어 해볼까 하는데요...제품의 종류가 많더라고요...
    어떤 제품을 구매 하면 좋은 까요???팁 좀 주세용...
    그리고 제어하는데
    DC 모터
    DC 모터 드라이버
    DAQ보드
    이렇게 만 구매 하면 되나요????

    • PinkWink 2009/10/05 14:54

      DC모터든 어떻든 어떤 제품을 구매할때 데이터시트를 보시면 됩니다. 만약 데이터시트에 명시되어있다면 그 성능은 보장받는거고 아니면 오차가 커서 데이터시트에 명시하지 못했다(^^)는 뜻을 받아들이셔도 뭐... 괜찮습니다^^. 모터 데이터시트에는 토크가 명시되어있으니 모터가 감당해야할 무게 즉 모터가 출력해야할 토크를 가늠하셔야할 것입니다. 음... LabVIEW는 있나요? 그것도 구매하셔야할 텐데요^^

      ----------------------------------------------------------

      아참 그리고... 꼭... DAQ보드에서 엔코더 2개 해석 가능한지 확인하시구요. 아니면 좀 고생하실테니깐요^^

  • 천재성민 2009/11/09 00:35

    여기서 사용한 dc모터 스펙좀 알수있을까요?
    저희도 이번에 이것을 구현해야하는데,, 도무지 모터파라미터 값을 정하기가 어렵습니다
    매틀랩을 통해 구현하는데 Km값 t값 gain feed 백 값을 구하는 방법을 모르겠습니다.
    알려주시면 정말 감사하겠습니다

    • PinkWink 2009/11/09 03:25

      여기서 사용한 DC모터 스펙은 본문 중간의 표에 제시되어있습니다.^^. 기어비부터 전지자 저항까지...
      그리고 Matlab으로 구하는 것은 Control Gain 즉, K 이며
      km, kg, rm 등은 모터의 파라미터로 모터마다 달라지긴 해도 주어지는 것으로 구하는 것이 아닙니다. 마찬가지로 t는 시간을 의미하는 변수로 역시 구한다는 개념의 변수가 아닙니다. 혹시 본문 중간에 있는 대문자 T를 의미하시는 것이라면, 그건 카트의 구동 토크를 의미하는 것으로 Dc모터를 고려하면서 최종식으로 넘어가면서 없어집니다.

      다시말씀드리면...
      MATLAB으로 구하는 것은 제어게인 K말고는 없으며, K는 여러 방법이 있으나 저는 LQR이라는 방법으로 구했습니다. 그걸 구해놓고 시뮬레이션은 MATLAB/Simulink로 구현했습니다. 그리고 말씀하신 모터의 스펙은 본문에 제시되어있습니다.^^ 그 스펙은 (지금 구현하신다고 하셨으니...) 선정된 모터의 데이터시트를 확인하시면 거기에 제시되어있을겁니다.

  • 김민수 2009/12/01 19:46

    저 DAQ 보드 하나 골라주시면 안될까여? ㅠㅠ
    labview 정식사이트에서 찾아봤더니 몇백은 하더라고요 ㅠㅠ
    10만원 이하 짜리 있으실것같다고 하셔서 찾아봤는데 못찾겠더라구요~ (솔직히 멀어떻게 찾아야 될지도 모르겠더라구요...)
    부탁드립니다 꾸벅ㅠㅠ

    • PinkWink 2009/12/02 11:50

      한번확인해보시길 바랍니다.
      USB-6501이라는 모델은 NI 본사 제시가격으로 15만원이라고 제시되어있는데요. 그리고 NI9472, NI 9421, NI 9421 D-Sub 모두 15만원이라고 나타나네요.

      한단계높여서 NI USB 6008은 가격이 26만원이네요.
      8개의 아날로그 입력(12비트)
      2개의 아날로그 출력(12비트)
      12개의 디지털 I/O
      32비트카운터

      등을 가지고 있군요... NI USB 6008을 엔코더해석 기능을 DAQ가 가지고 있지 못하기 때문에 소프트웨어적으로 처리하시든가
      아니면 엔코더 대신 포텐셔미터를 사용하시든지 하셔야겠군요....^^

  • 크림연유 2010/03/05 23:40

    안녕하세요 역진자 한번만들어볼려고 인터넷 서핑중 들리게됬는데용
    센서를 엔코더 2개를 이용해서 만드셨는데
    자이로센서, 가속도 센서를 이용해서 만든것과 비교할때 특별히 뭐가다른지 알고싶어요~

    • PinkWink 2010/03/06 01:56

      실제로 아직 포스팅하지는 않았지만
      자이로센서와 가속도센서를 이용해서 각도를 측정해서
      역진자 제어를 테스트했습니다.
      실제로는 거의 동일한 상태를 보입니다.
      처음에는 저도 같은 조건이라면 엔코더가 더욱 좋은 성능을 보일거라고 생각했는데..
      그렇지 않더군요. 물론 그렇게 될려면 관성센서를 이용한 각도측정이 좋아야하겠지만 말이죠.... ^^

  • torima 2010/04/14 12:10

    안녕하세요^^ 열심히 공부중인 학생인데요. 핑크님 글 잘읽고 있는데
    내공이 부족하여 워낙 어려워서,,,ㅠㅠ
    궁금한게 있느데요,
    자이로센서,가속도센서로 해서 만든다고 한다면,
    알아야될게 기울어진 각 theta와 이동위치 y값인데,,
    엔코더센서 두개로 만들시 모터 엔코더에서 위치를 알수 있지만,
    자이로+가속도센서로 한다면, 어찌어찌해서 각은 알수있는데,,
    위치 y는 어떻게 알수 있을까요???
    혹시나 위에 내용에 있지만, 제가 이해를 못해서 그럴수도 있으나,
    너그러이 양해를 구하며 답변좀 부탁드릴게요^^

    • PinkWink 2010/04/15 01:41

      로봇의 움직인 거리는 바퀴의 회전각도와 바퀴의 지름, 그리고 관성센서에서 얻은 각도를 가지고 구할 수 있습니다.
      바퀴의 회전각도를 alpha, 반지름을 r이라고 하면 원주는 r * alpha가 되죠. 이때 조심해야할것은 몸체의 회전각도를 빼주어야합니다. 즉

      y = r * (alpha - theta)

      정도??? 일겁니다^^

  • torima 2010/04/16 11:32

    아^^ 답변감사드립니다..
    그런데 핑크님말씀대로라면 바퀴의 회전각도를 알려면 모터에 엔코더가 있어야 되는데,,
    저는 바퀴모터에 엔코더가 없을때에 질문을 드려본건데, 질문의도가 조금 빗나갔나봐요^^
    결국 바퀴의 센서가 필요한거군요...
    그럼 결국 쿼드 같은 비행체의 병진운동을 설명하려면, 관성센서이외에, Gps나 그런게 별도로 있어야 하는건가요?

    • PinkWink 2010/04/17 01:37

      바퀴의 센서를 말씀하신 거군요...
      일단 제일 쉬운 방법이 바퀴의 회전각도를 측정하는 센서를 장착하는 것입니다. 물론 여기도 문제점이 있을 수 있습니다. 바로... 바퀴가 헛돌때.. 실제로 X 변위는 바뀌질 않았는데, 바퀴쪽 센서는 회전했다고 판단하는 경우가 있을 수 있거든요^^

      예 말씀대로 쿼드의 경우처럼 비행체의 경우는 좀 문제가 됩니다. 저도 쿼드를 실내용으로 제작하다가 두가지 문제에 부딪혔는데.. 그 중하나가 실내에서의 이동거리(변위.. 좌표.. 하여간..등등등^^)의 측정문제 입니다. 말씀하신대로 외부 센서의 도움을 받아야합니다. GPS나 레이져센서 3개를 이용한 삼각측량법을 구현한 실내용 렌더링 센서모듈이라던지... 등등입니다^^

  • torima 2010/04/17 11:00

    하하 핑크님 덕분에 궁금증이 한방에 해결되었네요^^
    답변 너무 감사드리구요. 그리고 핑크님 블로그 내용 공부에 도움이 많이 되고 있어요~^^
    항상 감사하게 생각하고 있습니당^^

    • PinkWink 2010/04/18 09:51

      네.. 감사합니다.^^ 도움이 되었다면... 저도 즐겁습니다.^^

  • 왕초보 2010/05/18 09:20

    카트형 역진자 시스템 구현을 목표로 하고 있는 왕초보입니다.
    정말 기본적인 질문일것 같은데요..
    매트랩 시뮬레이션으로 한 것을 MCU로 구현하는 과정이 좀처럼 개념이 잡히질 않네요..
    개략적으로나마 설명해주시면 감사하겠습니다..

    • PinkWink 2010/05/18 11:00

      시뮬레이션은 단지 실제시스템 대신 하는 것이고...
      실제로 사용하는 것은 제어게인입니다. 위에서는 딱 숫자 4개로 되어있는 K값이죠. 그걸 측정한 상태와 곱해서 합하면 제어입력인 모터의 전압이 결정됩니다.

  • 왕초보 2010/05/19 00:13

    빠른 답변 감사합니다..
    측정한 상태라고 하는 것은 각도, 위치, 각도 미분값, 위치 미분값 이렇게 4개 맞는가요? 그렇다면 각도 미분값, 위치 미분값은 단순히 변화량을 계산하는 건가요??

    • PinkWink 2010/05/19 00:18

      미분값은 일반적으론 단순 차분을 이용하여 구합니다. 그러나 그 차분치를 측정하여 그래프를 보셔야합니다. 단순한 일차 차분을 사용하였을때 경우에 따라서는 결과가 않좋을 수 있습니다. 그럴때는 구간평균법이라든지 혹은 여러 필터를 사용해서 좀 다듬을 필요가 있을 수도 있습니다. 그러나 이것은 역시 디자이너의 선택의 몫입니다. 디자이너 입장에서 괜찮다 싶다면, 복잡한 여러 필터보다 그저 단순 차분을 그냥 사용하셔도 됩니다. 결론은 상태를 실제로 측정하여 눈으로 직접 확인하여야합니다.

  • HUN 2010/05/19 22:27

    진자의 팬들럼은 어떤 걸 쓰셨고 엔코더랑 붙일때는 어떻게 연결하셨는지 궁금합니다^^ 혹시 어디서 주문하셨으면 그 명칭도 알려주시면 감사하겠습니다^^

    • PinkWink 2010/05/20 15:34

      그냥 알루미늄봉을 사용했는데요^^ 연결부분을 자세히 보고싶으시다면 Quanser라는 회사의 제품을 따라했습니다.

  • avaa 2010/11/09 02:16

    저는 그냥 토크값을 그대로 두고 상태방정식을 만들었습니다. 지금 제가 하는 과정에서는 DC모터를 제어하는 방법을 배우지 않아서, 전압으로 두신 부분을 토크로 두고 상태 방정식을 만들었습니다. 그렇게 했는데 써있는대로 M행렬을 계산해 보았습니다. 그랬더니 모든 근이 좌반부에 나와있는 걸로 되었습니다. 그럼 제가 한 식대로라면, 저는 그냥 제가 세운 동역학식이 안정하다고 해도 될까요? 그리고, 저는 가속도 값을 주었을 때, theta의 변위에 대한 그래프를 그리고 싶습니다. 시뮬링크 말고, 상태방정식이나 다른 식으로 그래프를 그릴 수 있는 방법은 없을까요?

    • PinkWink 2010/11/09 17:26

      먼저 의문이 드는 부분이 있습니다.
      시스템이 안정한지 아닌지는 이 글에서 보면 A 행렬과 B 행렬을 가지고 만든 상태방정식의 근을 확인하게 됩니다. (M행렬??) 그리고, 역진자 시스템은 누가 봐도 불안정한 시스템입니다. 그래서 안정하게 나왔다는 것에 의문이 생깁니다. (그것은 입력을 전압으로 보는가 토크로 보는가와는 관계없습니다.) 말씀하신 동역학이라는게 이 글에서 다루는 역진자가 아닌가요??
      그리고, 가속도값이 아니라 토크를 인가하는 것이겠지요^^?
      시뮬링크를 사용하지 않겠다면, 임펄스응답이나 계단응답을 사용하시면 m-file 상에서 간단히 시간응답의 결과를 확인하실 수 있습니다.

  • avaa 2010/11/09 19:56

    답변 감사합니다!! 그럼 제가, 동역학 방정식을 잘못 만들었나 보네요 ㅠ
    그리고 저는, 동역학 방정식을 세울 때, 마찰력이 작다고 하고 그냥 무시 했습니다. 그렇다고 할 때, 상태방정식에서 그냥 임펄스응답을 주었다고 했을 때, x의 변위에 대한 그래프는 마찰력이 없다고 해주었으니까, 계속해서 무한대로 가는게 맞을까요?

    • PinkWink 2010/11/09 23:54

      그것은 진자의 무게와 이너셔, 카트의 무게와 이너셔와의 차이에따라 조금 다릅니다. 진자는 '0'도에서 시작해서 완전히 넘어진 다음 180도를 지나서 다시 360(=0)도를 넘어갈수도 있고, 아니면 반대로 넘어갈 수도 있습니다. 카트의 움직임도 그에 따라 계속 진행할 수도.. 왔다갔다 하는 움직임을 가질 수도 있습니다.

  • LabVIEW 2011/03/24 15:42

    랩뷰로 로터리 역진자를 할려고 하는데.

    엔코더 내장형 dc모터 쓸거인데.

    pole쪽에 포텐셜미터를 쓸려고 했는데 레줄루션이 안나와서 그러는데

    pole쪽에 엔코더를 뭐쓰셨는지 알수있을까요???

    • PinkWink 2011/03/25 07:55

      저희는 이 포스팅에서는 앱솔루트타입을 사용했지만,
      그냥 인크리멘탈형을 사용하시면 됩니다.
      AUTONICS사의 회전 엔코더를 사용했습니다.
      AUTONICS라고 검색하면 아마 나올겁니다.

  • 2011/05/31 21:30

    비밀댓글입니다

    • PinkWink 2011/06/01 07:50

      먼저 http://pinkwink.kr/notice/289를 참조하셔서 가급적 공개로 질문해주시길 바랍니다.

      일단 오래전에 (대략 10년전쯤??ㅠㅠ 제가 학부4학년때니까요..ㅠㅠ) 유도한 동역학이라 지금 그냥 대충봤는데, 틀리지는 않은 것 같습니다만. 사람이 한 일이니 혹시 실수가 있을 수도 있습니다. 흐름대로 따라가시면 (단순한 수식전개상의 오류가 없으시다면) 직접 하신것을 믿으시는게 좋을것입니다.^^

      어떤 제어기가 답이라는 것은 없으니, 어떤 형태로든 제어기를 꾸민다음에 수렴여부를 시뮬레이션이나 수식으로 확인해보실 필요가 있습니다. (당연히 제가 많은 제어기를 테스트해보지 않았으니..ㅠㅠ)

      저는 D제어기를 썼다기 보다는... LQR제어기를 사용했습니다. 통상 그 결과는 카트형 펜들럼의 경우 PD제어기 2개를 병렬로 연결한듯한 결과가 나옵니다.

    • 안영준 2011/06/10 23:31

      아 제가 공개글은 미쳐 확인하지 못했습니다 죄송합니다.

      답변 정말 감사합니다 ^^. 제어기 부분 설계가 아직까지

      발목을 잡네요..ㅠㅠ

    • PinkWink 2011/06/13 20:50

      네.. 쉬운듯하면서도 살짝 발목을 잡기도 합니다.
      제 경우는 기계적인 부분에서 해결책을 어떻게 찾을 것인가가.. 항상 발목을 잡더라구요...ㅠㅠ

  • 이광현 2011/07/18 15:59

    핑크윈크님 저도 카트형 도립진자 시스템제어에 도전하고 있는 학생입니다.
    수학적 모델링까지 끝냈는데...
    실제 하드웨어를 구성할때 진자부분과 지지대그런 부분은 어떻게 제작하셨나요? 궁금합니다 . 주문제작하는 것이라면 사이트좀 부탁드리겠습니다

    또... 궁금한게 모델링할때 제어입력을 볼트로 바꾸셨는데
    현재 제가 모션제어보드를 이용해서 하는데 여기서지원해주는 함수중에는
    전압으로 구동시키는것이 없고 속도랑 가속도를 이용하여 모터를 회전시켜주는데 제어입력을 속도로 구현할 수 있는지요 제 생각엔 가속도를 주면 거기에 전체 무게를 곱하면 가해지는 힘이 되지 않을까 생각되는데..
    제가 갓 입문한 초보라서 감이 안오네요.. 이 글 보시면 대답 부탁드립니다

    • PinkWink 2011/07/18 17:36

      가속도를 입력하여 모터를 구동시킬 수 있다면 가능할 것 같습니다. 동역학에서 모터 파라미터를 입력하는 힘을 고려하는 곳에서 힘을 J*ddot_theta로 보면 될 것 같습니다.

  • 이광현 2011/08/01 14:26

    저는... 돈이 부족해서 bounrs 10k 10턴 가변저항을 샀는데
    엔코더 대신해서 써도 될런지요...

    디바이스마트에서 샀는데 이용상점명이 엔티렉스도 되어 있네요..ㅋ
    지금휴가라던데 핑크님도 휴가인가요???
    이번주에 받고싶은데..ㅜ.ㅜ 힘들겠죠?

    • PinkWink 2011/08/01 14:59

      엔코더보다야.. 마찰이 좀 있겠지만, 괜찮을 것 같긴하네요..
      네.. 현재 저는 즐거운 휴가를 보내고 있답니다.
      그리고, 아마 택배업무자체가... 목요일부터 이뤄질거라..
      정말 잘해야.. 금요일에 받으실거고,
      아마 이번주는 넘길것 같은데요.. ^^

  • 2011/08/09 06:46

    비밀댓글입니다

    • PinkWink 2011/08/09 08:23

      이건 제가 학부때... 만든거라... 기억나지 않습니다.ㅠㅠ
      단...
      막대가 쓰러지는 각도를 측정하는 센서... (엔코더)
      카트가 이동한 거리를 측정하는 센서... (바퀴에 엔코더)
      당연히.. 모터...
      이 세개는 꼭 있어야겠죠...
      나머지는 설계과정에서 결정될 부분일겁니다.

  • 2011/08/14 17:16

    비밀댓글입니다

    • PinkWink 2011/08/14 19:13

      네.. 우리는 사실.. 어떤자료를 너무 가둬둘려는 경향을 가지고 있어 슬플때가 있습니다. 뭐 저도 한때는 그랬거든요. 외국의 자료를 보면서 감탄할때가 많았죠. 그래서 저도 제가 직접한 것은 오픈한다는 개념을 가지게 되었어요.. 뭐... 아름다운 자료는 아닙니다만^^

  • 2011/08/20 21:01

    비밀댓글입니다

    • PinkWink 2011/08/21 10:03

      이 포스팅에 사용된 MCU는 80c196입니다. 아주 오래된거죠.^^.
      MCU를 뭘 사용했는가는 별로 중요하지 않습니다.
      AVR, DSP, ARM 어떤 걸 사용하셔도 알고리즘의 문제라 상관없습니다.
      단지, 필요한것은 모터를 동작시켜야하고, 센서(이 포스팅의 경우는 엔코더)를 읽을 수 있기만 하면 됩니다.

  • 2011/08/23 09:13

    비밀댓글입니다

    • PinkWink 2011/08/23 09:25

      당연히 무리한 부탁입니다. 이 포스팅의 작품은 2001년으로 무려 10년전 작품입니다. 당시 하드웨어파트는 제가 담당하고 있었습니다. 제가 196을 대상으로 일일이 손으로 납땝했지만, 지금은 하나도 기억나는 것이 없습니다.ㅠㅠ.
      그리고, 질문의 내용에 대한 답변은 이전과 같이 드릴 수 밖에 없습니다.
      아직, MCU 선정단계라면, 이와 같은 카트형 역진자 시스템의 경우 제어보드가 가져야할 기능은

      -. 모터를 구동할 수 있는 PWM 출력
      -. 모터의 회전 각도와 폴의 기울어지는 각도를 측정할 센서 해석 기능
      ---. 만약 폴이 기울어지는 각도를 엔코더로 해석할 경우 모터 측 포함 엔코더 2개 해석
      ---. 막약 폴이 기울어지는 각도를 다른 센서로 해석한다면, 역시 그에 맞는 센서의 해석 기능
      -. 일정 제어주기를 인가하기 위한 타이머인터럽트 기능

      등입니다. 추가로 모터를 구동하는 모터 드라이버도 있어야할 것이구요.

      그냥 이렇습니다. 그 후 모든 것은 선정된 MCU, 설계된 기구부에 맞춰지는 부분들입니다.

      마지막으로, 10년전 가격을 기억해내는 것도 저는 어렵습니다.ㅠㅠ

  • 2011/08/24 17:26

    비밀댓글입니다

    • PinkWink 2011/08/24 17:35

      ㅎㅎ. 제가 밥을 좀 좋아하는 종족이긴 합니다만,
      말씀하신데로 마음이라도 고맙게 받겠습니다.^^
      큰 도움이 되어드리지 못할 상황이라 송구스럽네요.
      좋은 성과 있기를 바랍니다.

  • 하늘을달리는빵꾸 2011/10/14 22:10

    질문드립니다.
    제가 제어기를 만들려고 이 글을 참고하면서 공부중인데요~상태방정식 부분에 입력에 전압값을 대입하는부분에서 위의 전압식과 달리 1.5가 곱해져 있는데 이 1.5는 어디에서 나오는 건가요? 고민고민 하다가 질문드립니다~

    • PinkWink 2011/10/15 19:37

      그 부분은 모터파라미터들이 위치했던 자리로, 당시 사용했던 모터의 파라미터 수치를 대입하여 나온 결과일겁니다.

  • 2011/11/30 16:47

    비밀댓글입니다

    • PinkWink 2011/12/01 19:45

      Q와 R은 설계자가 선택하는 것으로 try-and-again이 좀 들어갑니다.^^
      그리고, 도출된 K값과 각 상태 x를 곱해 나온 값이 현재의 제어 입력이 됩니다.

  • 전자과 2011/12/02 00:27

    감사합니다. 지금보면 위치가 0으로 가는데 위치를 자기가 원하는곳으로 보낼려면 어떻게 해야 되는지 아시나요?

    • PinkWink 2011/12/02 07:12

      여러가지 방법이 있겠지만 tracking으로 한 번 검색해보셔도 괜찮을겁니다. 저도 관련글을 포스팅한 적이 있습니다

  • 카트형역진자! 2011/12/04 14:21

    PinkWink님의 카트형 역진자 시스템을 보고 저도 제작해 보았습니다.
    로터리형 가변저항을 이용해 ADC하여 폴의 각도를 구하고 엔코터달린 DC모터를 이용하여 카트의 위치를 구함니다.
    기구부는 완성되었고, 센싱값도 다 받았습니다.
    각 파라미터 값을들 측정하여 제어 게인도 받았는데 이 받은 제어게인값과 상태 변수를
    u=(-(k1*x+k2*theta+k3*v+k4*w)이렇게 곡하고 더해서 변수에 저장했습니다.
    그런데 이부분에서 모터의 출력으로 변환해 주어야 하는데 어떻게 해야할지 감이 안오네요...ㅠㅠ
    입력전압이 24V PWM값으로 u값을 환산해 주어야 할건데...ㅠㅠ
    PinkWink님의 조언 부탁드립니다.

    • PinkWink 2011/12/04 15:58

      모터의 특방을 고려했다면 제어입력은 전압이 됩니다. 그렇다면, 해당 전압에 맞는 PWM을 모터에 인가하면 됩니다. 아니.. 모터 드라이버에 입력해야하는 거지만요^^

  • 카트형역진자! 2011/12/04 16:12

    pinkwink님의 답변 잘 들었습니다^^
    제어입력값인 u값의 거의 모든 값이 기준전압인 25V을 넘어서 버림니다.
    거의 몇백배의 차이...
    제가 파라미터 값들은 잘못 정해줘서 이런일이 벌어진것일까요?>

    • PinkWink 2011/12/04 17:26

      글쎄요. 원인이 여러가지겠지만 일단 모터 방정식과 제어입력의 방향, 그리고 R값을 낮춰보시는 것도 한번 확인해보세요

  • ㅜㅜ 2011/12/20 03:09

    하루종일 봤는데 ㅠㅠ 상태방정식에서 꽉막히네요... 공부를 덜한건가 ㅠㅠ

    • PinkWink 2011/12/20 07:52

      http://pinkwink.kr/356 여기에 좀 더 쉽게 연재를 진행한 것이 있습니다. 혹시 안 읽어보셨다면 읽어보시는 것도 괜찮지 않을까합니다.

  • ㅜㅜ 2011/12/20 18:35

    기어비 1:30인데.. 여기서 kg 값은 어떻게 정해야하나요??..;;
    그리고 모터 토크가 0.002 N m 입니다. km 상수에 Nm/A 로 넣어주셨는데 어떤의미인가요

    • PinkWink 2011/12/20 20:15

      30:1이 아니라 1:30인가요? 아무튼 기어로 감속이 일어나는 거면 Kg는 30으로 잡으셔도 됩니다. 일반적으로 기어는 효율이 1이 아니기 때문에 70에서 80퍼센트의 효율로 보셔도 되고, 기어제조사에서 효율을 제시하기도 합니다. (물론 비싸고 좋은 기어에 한해서 입니다. 싸다는 것은 그런 스펙을 안 준다는 의미(^^)이기도 하죠...^^
      그리고, 토크는 Nm가 단위이고, 제가 쓴 Nm/A는 토크 상수입니다. 토크상수의 의미는 단위 전류가 낼 수 있는 토크입니다. 이 역시, 좋은 모터는 데이터시트에 나와있고, 그 다음으로 좋은 모터는 그래프를 줍니다. 그걸 보고 사용자가 찾아야하구요. 아주 나쁜 모터(음.. 자꾸 싼걸 이야기해서 이상하지만, 하여간...)는 그마저도 안줍니다. 그럼 사용자가 실험같은 방법을 통해 측정해야하는 경우도 발생할 수 있죠^^

  • ㅜㅜ 2011/12/21 20:15

    ㅎㅎ 답변 감사합니다 ^^
    그런데... 위에 것 보고 했는데;; 전 왜 RANK가 3이나오죠;;;;;

  • 광팔 2012/06/08 14:41

    안녕하세요~ 기계공학과 대학원생입니다. 현제 PIC을 활용해서 도립진자를 제어하려고 하는데요~
    여러가지 설명이 잘되있어서 많은 도움을 얻고 갑니다. 정말 훌륭하신것 같습니다.
    현재 핑크윙크님께서 올려주신 블로그를 보고 현재 과학상자와 포텐시오미터를 활용해서 만들었는데요. 자꾸 진자의 속도를 못쫒아가서 넘어집니다. 게인값을 올리면 바퀴가 미끄러져서 가속도를 못냅니다. 무겁게 하기 위해서 추를 달고 바닦에 사포를 깔고 했음에도 불구하고 미끄러지네요~ 혹시 안미끄러지는 방법 좀 알수있을까요?
    제가 만든 도립진자 동영상을 보여드리고 문제점을 알고 싶은데 부탁드려도 될까요??
    10턴짜리 포텐시오미터와 일반소형 dc모터로 pwm 2개를 가지고 제어를 하는데 이거 말고 센서가 더 필요한가요??

    • PinkWink 2012/06/08 17:50

      네 동영상을 다음이나 유투브에 올리시고 링크를 주세요.
      그전에 하나 확인하실게 있습니다.
      잘 제어되지 않을때일 수록 더더욱 확인해야할 데이터인데요
      바로 그래프입니다.
      제어가 잘 되지 않는 순간의 각도와 위치, 그리고 그때의 입력 전압값이지요.
      그리고 댓글만으로는 확인이 되지 않는데,
      카트를 움직이는 바퀴의 회전각도도 측정하고 있나요?
      그 회전각도가 계산하면 결국 움직인 거리인데요. 그 거리가 피드백되어서 거리값도 제어하지 않으면 안됩니다.
      일단, 폴의 각도, 카트의 위치, 그 순간의 입력 전압값을 그래프로 보고, 현상이 맞는지를 먼저 확인하셔야합니다.

  • 광팔 2012/06/08 23:16

    http://youtu.be/W3oBhPklm7A
    여기 유투브에 올렸습니다. 카트를 움직이는 바퀴의 회전각도는 측정하지 않습니다.
    오로지 모터와 포텐시오미터에 의해서 pwm정역제어가 되고 프로그램으로는 PID제어를 사용했습니다.
    입력전압값을 그래프로 보라고 하셨는데 오실로스코프로 보는건가요? 그래프로 보는방법은 무엇이 있는지 부탁드려요~~

    • PinkWink 2012/06/09 10:26

      만약 폴이 넘어가는 각도와 각속도만 가지고, 제어를 한다고 보죠.
      이런 상황이 있을 수 있습니다.
      폴의 각도와 각속도가 모두 0입니다.
      그럼 제어기는 자신이 일을 다 한줄 알고 끝나죠.
      그러나, 밑에서 움직이는 카트의 속도는 0이 아니었던 겁니다.
      그러니 한 방향으로 계속 갑니다.
      그러다가 폴의 각도가 어긋납니다.
      그러면 다시 제어기는 약간의 힘을 주라고 모터에 지령을 내립니다.
      그러면 다시 속도가 0이 아니던 카트는 자기 관성으로 움직이고 있다가 추가의 힘을 받습니다.

      이런 상황이 될 수도 있습니다.
      다시 말씀드립니다만, 카트의 위치와 속도도 제어가 되어야합니다.
      그래서 제 블로그 자료들 중 밸런싱로봇이나 펜들럼에 관련된건, 모두 제어해야할 대상이 되는 상태가 4개가 됩니다.
      폴의 각도와 각속도, 카트 혹은 암의 각도와 각속도
      이렇게 말입니다.

  • 광팔 2012/06/09 14:48

    바쁘신와중에도 답변달아주셔서 감사드려요~ 말씀해주신 부분 학습해보도록 하겠습니다

    • PinkWink 2012/06/09 19:01

      저 한가지만 보시지 마시고, 여러원인이 있을 수도 있습니다.
      바퀴의 슬림도 한 원인일거구요.
      사람이 탑승하는 세그웨이도 분해배보면 단지 속도측정용이라고 하기엔 너무도 분해능이 좋은 엔코더가 탑재되어있습니다.
      이동체의 위치(혹은 각도)와 속도를 고려하시는것은 필수입니다.

  • 광팔 2012/06/12 19:52

    PinkWink님 우선적으로 운동방정식부터 세울려고 합니다. 저같은 경우에는 로터리 역진자 시스템에서 나와있는 운동방정식을 사용해도 괜찮을 까요?? 아니면 카트형 역진자시스템으로 세워야 될까요??
    그리고 이동체의 위치와 속도를 고려해야 된다면 엔코터가 달려있는 모터로 제어를 해야 되나요??

    • PinkWink 2012/06/13 11:00

      동영상처럼 꾸미신다면 카트형으로 보셔도 무리는 없을겁니다.
      한 가운데 있는 축에서 각도측정을 하는 엔코더를 달고, 원주를 계산하면 이동거리가 나올것 같은데요^^

  • 2012/07/19 13:59

    안녕하세요..
    광팔이란 아이디로 하니깐 차단되어있다고 합니다 ㅜㅜ
    무슨 문제라도..ㅜㅜ

    • PinkWink 2012/07/19 14:06

      글쎄요. 방금확인해보니 '광팔'이라는 아이디에 문제는 없어보이는데요.
      각종 욕설로된 단어, 성인광고, 이상한 약물광고때문에 몇몇 키워드를 차단했습니다만, 그 속에 광팔은 없답니다.^^

  • 광팔 2012/07/19 18:05

    PinkWink님의 도움으로 도립진자를 제어해보았습니다. 엔코더가 달린 모터를 장착해서 구동하려고 했으나 엔코더를 어떻게 써야될지 몰라서 일반DC모터를 사용하였고 포텐시오미터로 AD변환 된 신호로 도립진자를 제어해보았습니다. 유튜브 영상입니다.
    http://youtu.be/O1m-8A0Eckg
    여기서 외란을 폴에 너무 많이 주면 폴을 제어하려고 모터에 많은 토크가 발생되어 미끄러지게 됩니다. 구조부 설계를 과학상자로 하다보니 진동도 많이 발생하고 가볍고 바퀴의 두께와 폭 등의 영향인것 같습니다. 그리고 엔코더를 장착을 안해서 그런지 폴을 밀면 넘어지지는 않으나 폴을 계속 따라가게 됩니다. 올린 동영상은 폴을 세운 모습을 보기 위해서 외란을 조금만 주었습니다. 그런데 교수님께서 지금 만든 제어기를 통해서 운동방정식을 다시 구하라고 합니다. 처음에 운동방정식을 구하여 매트랩으로 PID제어를 하여 시뮬링크를 하였는데, PID값이 현재 PIC으로 프로그래밍 한 값과 다릅니다. 정확한 운동방정식이 아니라며 다시 정확히 구하라고 하시는데, 혹시 운동방정식을 구할 수 없을때, 완성된 혹은 실험된 데이터들을 가지고 운동방정식을 구하는 방법에 대해서 아시면 조언을 구하고 싶습니다. 마이크로칩 PIC에 대한
    것도 운동방정식이 있는지도 궁금하구요~ 어느방향으로 공부를 해야될지 여쭈어 봅니다.

    • PinkWink 2012/07/20 13:13

      1. 카트에 엔코더든 뭐든 카트의 위치를 알 수 있는 센서를 부탁해서 위치값과 속도를 받아오지 않는한 카트는 제어할 수 없습니다.

      그리고, 구해진 제어기를 가지고 역으로 각종 파라미터를 역으로 추적하는 것은 불가능이라고 보셔야합니다. 제어기 게인 많아야 6개, 통상 4개, 카트쪽은 손을 안대셨으니, 어쩌면 2-3개일텐데, 그걸로 그 많은 파라미터를 다 알 순 없습니다. 미지수개수는 너무 많고, 알고있는 방정식은 너무 작습니다.

      결국 어느정도는 괜찮은 동역학을 구하거나 찾으셔야할 듯합니다. 어차피 선형제어기이기때문에, 동역학이 정확하지 않아도 어느정도만 맞으면, 그것에서 도출된 제어기는 잘 동작합니다.^^

      마지막으로, 마이크로칩에 대한 운동방정식이 뭐죠? 잘 모르겠습니다.

  • 광팔 2012/07/20 16:42

    알려주셔서 정말 감사합니다.

  • 2014/04/20 01:58

    현재 cart type inverted pendulum을 제작중인 대학생입니다~
    처음에는 외계어처럼 보이다가 계속 보고 쓰고를 반복하니깐 동역학부터 LQR제어기까지 어느정도 이해를 했습니다.
    현재 기구에 맞는 파라미터를 측정중에 있는데 질문이 있어서 게시글에 댓글을 달았습니다.
    1. theta가 라디안인지 일반 각도인지 궁금합니다.
    2.만약 theta가 라디안 단위라면 dot_theta도 라디안단위의 theta의 각속도를 의미하는지 궁금합니다.
    3. 그리고 u가 입력volt를 의미하는 건 알겠습니다.
    저또한 정격전압이 24v인 dc모터를 사용중인데요. Q,R을 이용해서 출력 volt를 노가다 식으로 맞추어야 하는건가요?
    혹시 출력이 volt가 아닌 단순히 모터의 속도가 출력으로 나오게 할려면 모터 동역학에 어떤 식이 필요한가요?

    • PinkWink 2014/04/20 16:44

      라디안입니다. 그리고 속도로 제어입력의 결과를 나타낼수있습니다만, 그러면 모터의 속도제어를 또 다시 해야합니다. 그냥 모터의 입력되는 전압으로 제어입력을 잡는 것이 더 편합니다.

  • 2014/04/20 23:38

    제가 DC모터는 PID제어기를 써서 속도제어는 됩니다.
    거기다가 이제 4가지 출력값을 이용해서 속도를 출력하려고 합니다.
    모 그렇게되면 제어기를 더많이 사용하게 되지만
    우선은 그렇게하고싶어서 그런데
    속도제어식을 알수있을까요?

    • PinkWink 2014/04/21 10:23

      네.. 속도식으로 뽑지는 않았습니다만...
      수식을 다시 봐야하니 지금은 제가 도와드리기 어려울 듯 합니다.
      그런데
      속도제어가 된다고 낙관적인건 아닙니다. 속도제어가 되어도 펜들럼처럼 불안정한 시스템이 속도 제어가 되는 새틀링타이밍까지 시스템의 안정성이 어떻게 될지는 모릅니다.
      뭐~ 해봐야 아는 일입니다만...
      제 의견으로는 모터의 전압입력을 사용하는 것이 분명 더 쉬운 일일거라고 생각됩니다.ㅠㅠ

  • 2014/04/30 03:20

    이 시스템에서
    마찰계수를 구하려면 어떤 실험을 이용하는지 궁금합니다 ....

    • PinkWink 2014/05/01 02:04

      카트를 뒤집어 놓고 폴을 잡아 당긴다음 놓았습니다.
      그리고 그 후 나타나는 자유운동을 측정했습니다. 폴 카트 둘다...
      그리고 그 일차계 결과를 보고 관성모멘트와 마찰계수를 잡았습니다.