밸런싱 로봇 (Balancing Robot) 만들기 연재
1. 동역학 구축 (1) [바로가기]
2. 동역학 구축 (2) [바로가기]
3. 동역학 구축 (3) [바로가기]
4. 기구부 구성 및 모터 파라미터 측정 [바로가기]
5. 제어기 설계 및 MATLAB을 이용한 시뮬레이션 [바로가기]
6. 밸런싱 로봇 만들기 [바로가기]


이제 기나긴 밸런싱 로봇 만들기 연재를 완결지어야겠습니다.^^. 성질 급하신 분들은 제일 아래 동영상을 먼저 보고 오셔도 됩니다.^^ 제가 만든 방식대로 따라하실려면 이 글에서 제가 링크를 건 모든 문서를 읽어보시길 권장합니다. 왜냐하면, 이번 연재는 실제로 로봇을 만들어가면서 작성된 글이기 때문에 제가 실수하거나 의문이 들었던 부분들도 모두 들어있고, 다시 그 실수나 의문을 해결해가는 과정도 있기 때문입니다. 또한, 단순한 기초지식은 다루지 않았습니다. 특히, DSP 혹은 이 글을 따라하시려고 준비한 마이크로프로세서 무엇이든 어느정도 기초는 알고 있다는 가정입니다. 즉, 엔코더나 ADC 정도, 시리얼 통신, 더 단순하게는 컴파일러의 사용법 정도는 알고 있다는 가정입니다.



그럼 이제 대단원의 최종회를 시작해볼까요???^^


먼저, 연재 중간에 기구부를 변경했었습니다. 위의 메인프레임과 모터 바퀴는 [관련글]에서 언급한대로 디바이스마트에서 구매했습니다.


그리고, 자이로센서와 가속도센서를 장착하고, 처음 세팅을 위해 수평계를 장착했습니다. 자이로센서는 InvenSense사의 IDG300이 장착된 모듈이고, 가속도센서는 Freescale사의 MMA7260QT가 장착된 모델로서 모두 디바이스마트에서 구매가능합니다. 혹은 
NT-ARSv1 : 관련페이지
을 장착하셔도 괜찮을 것입니다.


메인 프로세서는 DSP 2812를 장착한 Realsys사의 보드를 사용했고, DC모터 드라이버로는 LMD18200을 사용했습니다.


또한, 기본 컨셉은 [관련글]에서 밝혔듯이 레고의 마인드스톰의 동역학을 따라간 후, 차용했습니다.


로봇의 진행방향의 각도는 Psi이고, Theta는 각 모터의 회전각도의 평균입니다.


또한, 두 모터를 사용하기때문에 사실상 Yaw제어가 필요합니다. 그래서 Phi라는 상태를 또한 설정했습니다.

결국 우리의 제어목적은, 로봇이 똑바로 서있고(Psi = 0), 제자리에 가만히 있고(Theta = 0), 한 방향을 똑바로 바라보는(Phi = 0) 것입니다.

그래서, 레고마인드스톰의 동역학을 따라하긴 했지만, 저는 조금더 진행해서, 더블닷에 관한 식으로 변형합니다.[관련글]


그리고, 이를 선형화해서 LQR제어기를 설계하고, 또한 이를 MATLAB/Simulink를 통해 시뮬레이션을 했습니다.[관련글]



이제, DSP 측에 이식(보통 Embedded)해야죠. 먼저 LQR로 도출된 제어기를 사용하기 위해서는 각 상태를 알아야합니다. 저는 Psi, Theta, Phi, dot_Psi, dot_Theta, dot_Phi를 상태를 잡았습니다. 그러므로 이 여섯개의 수치를 측정해야합니다. 그 전에 미분-정확히는 차분-을 수행하기 위해 일정한 샘플링 타임을 유지할 필요가 있습니다. 그래서, 샘플링타임을 10ms로 설정하고, 10ms 마다 타임인터럽트를 걸어줍니다. 결국 메인 제어코드는 타임인터럽트 함수안에 있게 되는 것이지요.


285번행부터 303번행까지는 가속도센서와 자이로센서의 영점을 맞추기 위해 초기 10초를 대기하고, 그 평균을 오프셋으로 지정하는 작업을 합니다.


그리고, 수행되는 코드에서 308번행부터 310번행까지는 ADC를 수행하여 그 오프셋을 빼줍니다. 그리고, 313번부터 328번행은 구간평균(혹은 이동평균)법을 수행해서 5샘플의 평균을 현재의 수치로 사용하도록합니다. 그리고, 자이로센서에서 받은 값은 오프셋과 스케일팩터를 고려해서 바로 로봇이 기울어지는 각속도(dot_psi)로 사용합니다. 아.. 그런데, 기구적으로 장착할때 자이로센서를 반대로 설치하는 바람에 마이너스가 붙었네요.ㅠㅠ
 그리고, [관련글]에서 이야기했던 자이로센서와 가속도센서를 이용해서 각도를 추정하는 보정필를 C로 구현[관련글]했습니다. 만약 각도추정 필터의 제작에는 관심이 없이, 그저 각도 추정에만 관심이 있다면 
NT-ARSv1 : 관련페이지
을 참조하셔도 됩니다.

이렇게 해서 로봇이 기울어지는 각도(psi)와 그 각속도(dot_psi)는 측정했습니다.

이제


바퀴를 구동하는 모터에 내장된 엔코더를 이용해서 로봇이 이동한 거리를 의미하는 theta를 측정해야합니다. 그러나 같은 모터가 반대방향으로 달려있어서 하나는 부호를 바꿔줘야(345번행-346번행)합니다. 거기서 기어비(50)와 한 바퀴의 펄스수(13)와 DSP 내부의 체배수(4)를 곱한 2600으로 나눠주고, 라디안으로 생각하면 각도로 환산됩니다. 그리고, theta와 phi를 구하게 됩니다.

 
이제, theta와 phi의 속도성분을 구해야하는데, 이것 역시 문제가 있는게 엔코더 신호를 그냥 단순히 차분하면, 예상외로 이상하다는 것을 확인할 수 있습니다. 이는 엔코더의 분해능이 높지 않을때, 차분하면 순간적으로 높은 값이 나타나서 제어성능을 떨어트릴 수 있습니다. 보통 정교한 제어를 해야하는 경우 펄스와 펄스사이의 시간을 직접 측정해서 속도성분을 찾는데, 사실 펜들럼류의 로봇들은 그렇게까지 정교하지 않아도 제어 성능을 보장받을 수 있습니다. 그래서 위에 보이다시피 역시 구간평균법을 적용해서 theta와 phi의 속도 성분인 dot_theta, dot_phi를 구하게 됩니다.

이제 상태를 모두 측정할 수 있게 되었습니다. 





그럼, 제어기는 어떻게 구현할 까요.??


[관련글]에서 단지 이론적으로 구했던 제어 게인 K1, K2를 그대로 프로세서에 인가하겠습니다.

그래도 되냐구요?? 
튜닝하지 않아도 되냐구요?? 
어떻게 이론이 실제와 같냐구요??

시사, 정치, 사상, 경제 등의 인문사회 분야가 아니라 공학이라면, 저는 이론과 실제는 상당히 근접한다고 말하고 싶습니다. 인터넷을 서치하다가 동역학과 시뮬레이션까지는 정말 잘 해놓고, 실제로 적용할 때는 정작 튜닝을 너무 과도하게 하는 경우를 자주 보게 되는데, 그럴거면 왜 그 복잡한 이론적 접근을 수행했는지 묻고 싶습니다.

설계된 제어기가 제대로 동작하지 않는다면, 제어기 디자이너의 실력부족으로 현실을 충분히 반영하지 못했기 때문입니다.

훌륭한 제어기 디자이너는 요구되는 제어목적을 수행하기 위해 버리고 간략화할 것이 무엇인지 판단하고, 제어 목적에서 중요한 요소는 놓치지 않고 반영할 수 있어야합니다.

- 아직은 초보 제어기 디자이너 PinkWink 생각 -


응?? 쓸데없는 이야기를 갑자기 해버렸네요. 그래서, 위와 같이 각 모터에 인가할 전압을 생성합니다. 그렇게 동역학을 유도하고, 선형화해서, LQR제어기를 꾸몄는데, 겨우 370번행과 371번행, 딱 두줄에 제어기는 구현되었네요.^^

이제, 마무리네요. 동영상입니다.



대략 10초대에서 화면이 위로 올라가는데, 저 로봇이 아직 배터리를 장착하지 않아서 전원선입니다. 줄로 매달아서 사기치는게 아니냐는 의문을 가지실까바 화면을 위쪽까지 올려봤습니다. 중반부터는 자로 툭툭 때리는 장면도 역시 확인하실수 있습니다.

휴~~ 길고 긴 연재를 마쳤네요. MATLAB 기초 연재할때는 진도가 잘 나가길래 아무생각없이 이번연재를 수행했다가 생각보다 진도가 나가지 않아 죄송스럽습니다. 다음 부터는 연재할때 좀 생각하면서 해야겠어요...^^ 

아 그리고, 동영상을 하나더 추가합니다. 클. 유투브에 올린건데요. 뭔가 다른 모습도 있어요^^


http://pinkwink.kr/trackback/344 관련글 쓰기
  • 건뚱이 2010/07/18 15:55

    드뎌 졸업을 할수 있겟습니다. ^^

    • PinkWink 2010/07/18 17:55

      그래 졸업할 수 있다는 것을 축하한다.. ㅋㅋㅋㅋ

  • 탐진강 2010/07/18 16:47

    정말 대단합니다.
    로봇을 만들다니 축하드립니다.

  • 구차니 2010/07/18 18:57

    우와 정말 동영상을 보니 멋집니다! ㅠ.ㅠ
    전 언제 저런거 해볼수 있을까요 ㅠ.ㅠ

    • PinkWink 2010/07/18 19:08

      지금부터 하시면 되죠^^
      작은 로봇이지만, 다 만들고 나면... 즐거움이 아주 크답니다.^^

  • White Rain 2010/07/18 21:04

    저는 그저 어렵게만 느껴지지만 동영상은 놀랍군요. 참, 영상본 후에 그 아래 글을 읽었는데 전 전혀 그런 '사기'라는 생각을 안햇답니다. 그래서 갑자기 카메라가 왜 위를 비추나 했었지요.

    • PinkWink 2010/07/18 22:49

      히히.. 소심해서 그렇지요... 뭐 사실 줄이 늘어져 있어서 그 줄이 지탱하는게 아니라는 것은 딱 봐도 알 수 있지만, 그래도 혹시나 하고 말이죠^^

  • 핑구야 날자 2010/07/19 08:07

    드디어 완성을 했군요,, 박수를 보냅니다. 수자로 문자로만 보다가
    이렇게 보니 제가 만든 착각에...ㅋㅋ

    • PinkWink 2010/07/19 08:21

      네.. 감사합니다. 어찌어찌 하다가 만들어졌네요^^
      이번엔 미리 만들어놓은걸 연재한게 아니라 만들면서 연재를 하니... 문제가 좀 생기더군요.. 너무 산만하다고 할까요???^^
      다음엔 연재를 할지 말지를 좀 신중하게 결정해야겠어요... ㅠㅠ

  • 하늘엔별 2010/07/19 17:01

    햐~~ 움직이는 진짜 로봇이네요.
    어릴 적 로봇 만화를 보면서 로봇을 만드는 상상을 하곤 했었지요. ^^

    • PinkWink 2010/07/19 17:49

      저도 로봇태권V를 만드는 상상을 하곤 했었습니다. ㅋㅋ

  • 이길호 2010/07/22 16:33

    안녕하세요, 전산학과 석사과정 공부하고 있는 학생입니다.
    이번에 로봇 관련해서 뭔가를 해보려고 하는데요, 4wheel skid steering 로봇을 기반으로 해서 공부를 해보려고 해요. 해당 로봇을 제어하고 싶어서 관련 논문을 찾아보았습니다만, 제가 가진 기반지식이 SW나 기본적인 컴퓨터 구조가 전부인지라 너무 어렵고 무슨말인지 하나도 모르겠더라구요.
    그래서 막막한 마음에 검색하다가 블로그에 들어오게 되었습니다. 제가 논문에서 봤던 흐름이랑 거의 같은 흐름으로 문제를 푸신걸 보고 감탄했어요.
    제가 가진 기반지식은 앞서 말씀드렸다시피 컴퓨터 SW/ 구조 정도인데 핑크윙크님이 하신것 같이 로봇을 실제로 구현하려면 무엇을 공부해야 하나요?
    뭔가 새로운걸 만들고 싶은것은 아니구요, 논문에 나와있는 dynamics와 controller를 구현해보고 싶은 것인데요.. dynamics와 control parameter들이 coupling 되는 부분부터 막히더라구요.. 제가 무엇을 공부해야 하는지 조언해주신다면 정말 큰 도움이 될 것 같습니다!!
    제가 구현하고 싶은 논문은 이거에요.

    Trajectory tracking control of a four wheel differentially driven mobile robot - L. Caracciolo, 1999 IEEE IC on robotics & automation

    http://www.dis.uniroma1.it/~labrob/pub/papers/ICRA99_SkidSteer.pdf

    • PinkWink 2010/07/20 18:40

      4wheel skid steering 로봇의 정확한 의미는 잘 모르겠습니다만, 4개의 바퀴로 구동되는 일종의 이동로봇이라고 하면, 관련된 동역학을 이해하는 것이 먼저입니다. 동역학을 이해하는 과정은 찾으신자료를 따라가는 방법뿐입니다. 물론 찾은 자료가 제어기설계까지 가지고 간다면, 그것도 따라가는 것이 좋아보이지만, 단순 구현에 목적을 두고 계시다면, (자동제어 라는 이름의 어떤 책이든 참고하셔서) 먼저, 동역학을 동작구간에서 선형화를 수행하시고, 상태방정식을 구하신 다음, 가제어성을 만족하는지 확인하시면 됩니다. 만약 가제어성을 만족한다면, 일단, 아주 간단한 제어기 설계가 가능해집니다. 제가 소개한 LQR 같은 걸로 말이죠.
      그럼 왜 논문의 제어방법을 따라가는 것은 어렵냐면, 대체로, 제어기법을 소개하는 논문들은 성능향상을 위해 기존의 방법보다 나은 점을 부각시키고자 하기 때문입니다. 즉, 어렵다는...ㅠㅠ

    • 이길호 2010/07/21 13:11

      친절한 코멘트 감사드립니다.
      제가 궁금했던 것은 바로 그런 용어들, partially, fully linearizing 이라거나 linear controller / nonlinear controller 이런 용어들을 이해하려면, 어떤 교재를 참고해야 할까 하는 점이었어요. 제 기반은 SW라서 이런 기계적인 부분들을 전혀 몰라서요.. 일단 그 자동제어 관련 책을 참고해보도록 하겠습니다. 또 추천해주실만한 게 있나요?

      그러니까 말씀하셨듯이 동역학을 이해하고, 선형화를 수행하고, 상태방정식을 구하고, 제어성을 만족하는지를 확인하기 위해서요. 제 기반지식은 저를 기계과 학생이라고 보신다면 아마 학부 1-2학년 수준정도 일거같아요.

    • PinkWink 2010/07/22 02:18

      네.. 일단.. 흐름은 용어로 알려드렸으니...^^
      책이나, 인터넷을 참고하셔서 찾아보셔야하는데요.
      먼저, DORF의 자동제어책을 권해드립니다. 그런데 이 책이 좀 분량이 많고 어렵게 설명되어있습니다.
      조금 더 쉽게 접근하실려면, "제어시스템공학 임동진 저"를 추천해드립니다.

      제 블로그에서는

      동역학 유도에 대해 설명이 그나자 자세히 되어있는 글은 http://www.pinkwink.kr/212 입니다. 그리고, MATLAB을 이용한 시뮬레이션은 http://pinkwink.kr/283 에서 다루었고, 선형제어기법 중 LQR을 이용한 방법은 http://pinkwink.kr/286 에서 소개를 하고 있습니다.

  • 김현진 2010/07/30 21:40

    와우 핑크윙크님 이거 벌써 만드셨군요 ㅋㅋ
    축하드립니다!
    2812를 사용하셨군여 혹시 2812에서 PC로의 데이터 로깅은 어떤 방법을 사용했는지 알 수 있을까요?

    • PinkWink 2010/07/31 04:05

      감사합니다.^^.. JTAG이 연결되어 있는데, 거기서 시리얼 통신으로 데이터를 받고있습니다.^^

  • lunefey 2010/08/06 10:05

    질문이 있는데요. 로봇 이론 중에 텐서가 많이 쓰이나요? 지금 텐서 공부중인데 쓸모가 있을까 해서요. 스트레스나 이너셔텐서 빼곤 그다지 안보이네요 ㅋ

    • PinkWink 2010/08/06 11:55

      응? 텐서가 뭔가요?? 크헉.. 사실.. 뭐 저라고 다를것 없이 제가 사용하고 있는 것만 알고 있답니다. 뭐.. 아직까지는 불편함이 없으니 말이죠...^^

  • 엘리 2010/08/06 18:38

    오랜만에 들어 왓는데 정말 멎지시네요...
    전 급하게 하다가 체하고 잠시 미뤄두었습니다(단순히 결과만 추구하다가 ;;;..)
    핑크님 자료를 토대로 공부좀 더하고 도전해야겠습니다 ㅡㅜ

    전자과이지만 제어에대한 욕심은 정말 버릴수 없네요 !!!
    더운데 건강하세요~

    • PinkWink 2010/08/07 09:23

      전자과에도 제어전공이 있는 걸로 아는데 아닌가요???
      약간은 재미있게 공부하는 것도 좋은 것같습니다.
      급하면 재미를 잃어버릴 수도 있잖아요... ^^

  • 빡구 2010/08/25 22:08

    궁금한게 있습니다.

    저기 위에서요 가속도센서 각도 구하는 부분에서요

    제가 알고있기로는요 각도를 구할려면

    (adc현재값 - offset)*스케일팩터;
    각도 = atan(y/z)*180/3.14 ;
    로 알고있거든요 근데 핑크님은 위에 스케일펙터를 안해주신거같아서요..
    그래도 값이 나오나요?? 안해준 이유가있나요??

    • PinkWink 2010/08/26 00:43

      스케일펙터를 곱해줄 필요가 없어서 입니다. y/z를 할때, 같은 값을 가지는 스케일펙터는 약분될 것이니까요.

  • 빡구 2010/08/27 04:44

    핑크님~

    엔코더 값받아서요~ 각도로 어떻게 바꾸어주죠??

    1/51감속비에 26펄스인데 26*51=1326, 4채배하면 1326*4=5304 펄스가 한바퀴 펄스가 되는건가요?? ㅠㅠ 이해력이 부족해서 자꾸 질문하게 되네요...

    • PinkWink 2010/08/27 06:01

      말씀하신 것이 맞다면..
      한펄스 = 360/5304 도... 혹은
      한펄스 = 2*pi/5304 라디안 이 되는 것이지요.
      누구나 이해력은 조금씩 아쉬운것이 있습니다. 저두요.
      그래서 우리는 집중이라는 고난을 질문과 학습이라는 도구로 이겨가나봅니다.

  • 빡구 2010/08/27 09:13

    핑크님 답변 정말 감사합니다~ ^^ 좋은 하루되세요~

    • PinkWink 2010/08/27 15:03

      네.. 저에게 정말 필요합니다... 좋은 하루...^^

  • 2010/09/03 11:45

    비밀댓글입니다

  • 다질문 2010/09/30 22:10

    그저....어렵기만 하네요 ㅎㅎ

    • PinkWink 2010/10/01 14:11

      저는 예전엔 이와같은 것에 관심을 가질줄도 모르는 학생이었습니다. 그에 비하면 '다질문'님은 당시의 저보다 훨씬 앞서가고 계십니다. 제 블로그에 오셔서 질문을 남기는 모든 분들께 저는 문득문득 부러운 감정을 가지기도 한답니다. 우리모두 화이팅입니다.^^

  • 다질문 2010/10/04 21:22

    위의 소스코드에서 ays, azs, gxs배열들이 무슨값인지, 무슨 의미인지 궁금합니다.... 위의 소스코드로만 봐서는 저 각 배열요소들의 초기값도 알 수 없어서 무슨 의미인지 잘......모르겠습니다ㅎㅎ

    • PinkWink 2010/10/05 05:55

      그것은 구간평균법을 적용하기 위해 현재의 측정된 수치와 이전에 측정된 4개의 샘플을 저장하는 배열입니다.

  • 2010/10/24 14:44

    비밀댓글입니다

    • PinkWink 2010/10/24 20:19

      우와.. 아주 큰걸로 만드셨네요^^ 잘보았습니다.^^
      멋지신데요^^

  • 2010/11/02 02:16

    비밀댓글입니다

    • PinkWink 2010/11/02 12:46

      정확하게 답변드리긴 어렵지만, 저기서 사용한 마이크로프로세서의 기능은

      10ms마다 타임인터럽트,
      ADC 3개
      PWM 2개
      그리고, 소숫점 연산

      이 기능뿐입니다.

  • fragrance 2010/12/14 23:24

    멋지네요... 이렇게 잘 정리하시고, 공유도 해주셔서, 눈팅만 하고 가려다가 감사인사를 남깁니다. 건승하십시오...^^

  • 김현진 2010/12/21 13:46

    오랜만에 찾아뵙네여^^;
    ICROS 논문지에서 핑크윙크님을 만나게 될줄이야 ㅋ
    논문 잘 봤습니다.^^

    • PinkWink 2010/12/21 18:34

      정말 부족한 논문인데... 오히려 민망합니다...ㅠㅠ

    • 이호진 2011/04/13 16:47

      저는 졸업논문으로 밸런싱로봇을 만들려고 찾아보던중에 PinkWink님의 블로그를 보고 기초자료를 삼아서 만들려고 합니다.
      저도 논문을 보고 싶은데 어떻게 찾아보면 될까요?

    • PinkWink 2011/04/13 17:36

      http://pinkwink.kr/389 에 소개했습니다. 그러나 블로그에서의 논문 배포는 학회지와의 저작권문제가 있어서 전문을 소개하고 있지는 않습니다. 그러나, 보통 일반적으로 대학교에서는 학회지 수록 논문들이 다운로드가 가능하니, http://pinkwink.kr/389에 소개한 제목대로 검색하시면 될것같습니다.

  • mijing 2011/07/13 16:53

    ㅎㅎ오랜만에 눈팅만 하다가 글을 남깁니다. ㅋ
    저 밸런싱로봇을 허접하게 만들엇어요 물론 서지는 않아요 ㅋ 죄송한데 질문이 하나 있는데요..
    그런데 제가 모터를 스텝모터를 사용햇어요여기 혹시 스텝모터보다 dc 모터를 사용하는게 낳은가요?? 그리고 동역학 모델을 세우지 않고 한다면 윙크님이 하신 것처럼 안정적인 밸런싱은 얻을 수없겟죠?ㅋ

    • PinkWink 2011/07/13 16:59

      오랜만입니다.^^. 저도 그간의 소식이 궁금했습니다.
      동역학 모델을 기반으로 하지 않고서 제어기(PID제어기의 경우 두개)를 설계해도 됩니다. 그렇게 해도 잘 동작하는 것을 많이 봤습니다. 또한, 밸런싱로봇에 국한 시킨다면, 가속도 센서를 이용한 각도검출만 해도 충분히 동작을 보장받을 수 있습니다.
      단지, 저의 경우는 각도추정에 목을 메고 한것이고, 그 각도추정이 잘 된다는 증거로 밸런싱로봇을 했습니다.^^
      그리고, 저는 습관적으로 동역학유도후 시뮬레이션, 그 후 제어기 설계를 좋아합니다.^^
      인터넷의 많은 동영상을 보면, 밸런싱로봇을 그냥 감으로 동작시키시는 분들도 무지 많으며, 그 분들이 잘못된것이라는 이야기를 한 적은 없습니다. 하여간 각자의 입장에서 쉬운 방법으로 접근하는 거니까요^^

  • mijong 2011/07/13 17:09

    ㅎㅎ 다리는 다낳으셧는지모르겟네요 ㅋ 파라미터 추정에 문제 가 있엇는지 윙크님이 주신 kikp 값을 기준으로 시뮬링크상에서 스코프와 먹스 를 사용해서 비교하면서 계수를 맞췃어요 ㅠㅠ그런데 수정할게 넘많네요 휴
    제발 쓰레기통으로 들어가지 만않앗으면 좋겟네요 그리고 전 요새 윙크님이 추천하신 matlab을 사용한 칼만필터의 이해라는 책 을 이해하기위해 부단히 노력중입니다. 보상필터 함해보고나니까 칼만필터도 해볼까?? 라는 근거없는 자신김이 생기네요 ㅋ

    • PinkWink 2011/07/14 08:20

      항상 뭔가를 이룩하고나면 다음 과정에 욕심이 생기지요^^
      똑같은 과정을 따라서 수행해도 잘 되지 않을때가 있습니다.
      그러다 어느순간 갑자기 또 본궤도에 오르기도 하구요.
      저도 제가 블로그에 올린 한 편의 글 만큼을 하기 위해 오랜기간 실험하고 만들어낸것이니까요^^

  • Teresa 2011/10/24 23:16

    안녕하세요 저는 제어쪽을 공부하는 학생입니다.
    핑크윙크님께 질문이 있습니다.
    모터엔코더에서 수집한 펄스를 샘 하려면, 펄스 카운터가 있어야 한다고 알고 있는데, 위의 밸런싱 로봇에서는 어떤 소자(카운터)를 사용하고 있는지 여쭙니다.

    • PinkWink 2011/10/25 00:08

      이 로봇은 DSP2812를 메인 MCU로 사용하는데요. 그 아이가 엔코터 카운터를 가지고 있습니다. 그래서 별도의 소자를 사용할 필요가 없었습니다.

  • Teresa 2011/10/28 15:08

    아 그렇군요. DSP는 AVR MCU보다 훨씬 좋은 친구군요.
    집필하신 논문도 보고 갑니다.
    정말 훌륭하시네요. 존경합니다.

    • PinkWink 2011/10/30 09:50

      그런 기능하나로 좋다고 하긴 그렇지만,
      저희가 요즘 사용하는 Cortex-M3나 DSP들이 엔코더 해석기능 2개에, 여러 다양한 통신 방법을 지원하는데다.
      가격도 아주 저렴하더라구요^^

  • 진스맥 2011/11/21 11:13

    늦게나마 잘 보고 갑니다..
    저두 막연한 공상만을 해봤는데 이렇게 자세히 설명해주시니 감사할 따름이네요..
    어찌보면 아무것도 아닌것처럼 보이지만 이런 복잡함과 치밀함이 필요하다는것에 놀랄따름입니다..

    • PinkWink 2011/11/21 12:50

      아닙니다. 실제 인터넷의 여러 동영상을 보면 저처럼 이런 과정을 거치지 않아도 잘 만드시는 분들이 많습니다.
      단지 전 저한테 익숙한 방법으로 시도했을 뿐입니다.
      그래도.. 이렇게 좋다고 해 주셔서 감사합니다.
      아 근데... 답방을 갔더니..
      로긴한 사용자만 댓글을 달게 되어있더군요..
      그래서 인사를 못드렸습니다.^^

  • jue 2011/12/08 11:28

    죄송하지만...만드신 저 밸런싱 로봇에 들어가는
    소프트웨어가 nxt mindstorm 로봇에도 적용이 되나요?
    빠른답변 좀 부탁드립니다...ㅠ

    • PinkWink 2011/12/08 17:33

      제가 마인드스톰의 동역학과 제어기설계에 대한 문서는 참조했습니다만, 실제 마인드스톰을 만져본건 아니라, 답변드리기 곤란합니다.