본문 바로가기

Robot/Project

[밸런싱 로봇 만들기] 4. 기구적인 파라미터 찾기


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

밸런싱로봇 만들기 연재를 시작한지 꽤 되었는데 이제 네번째 글을 올립니다. 지난 두 세주가 너무 바빴네요. 게다가 지난주에는 제가 있는 학교에서 저의 블로그가 둥지를 틀고 있는 티스토리를 차단[관련글]해 버리는 바람에 꽤 애를 먹었습니다. 지금은 완벽히는 아니지만, 잘 해결[관련글]되어서 한 시름 놓았네요.

이번에는 파라미터 찾기에 대해 이야기를 할려고 합니다. 일단 지난번에 기구부[관련글]를 제작하였고, 그 후 동역학 방정식[관련글]을 나름대로(^^) 유도해 보았습니다. 그러나 당시 동역학을 유도할때 관성모멘트나 마찰계수등등을 수치로 제시하지 못했는데요. 이유는 몰라서이지요..ㅠㅠ. 그래서 이번에는 그와 같은 파라미터들을 추정하는 실험과정을 이야기할까 합니다. 
일단, 우리는 현재 정확하다고 믿는 동역학 모델을 가지고 있고, 또 실제 기구부도 완성이 된 상태로 이때 사용하기 참 편한것이 파라미터 추정 (Parameter Estimation)입니다. 이 때 조심해야할 것은 적절한 실험을 어떻게 수행하는가... 이죠. 일단 전체 파라미터를 다 추정하는 것은 약간 어렵습니다. 그래서 기구부를


저렇게 거꾸로 매달아 둡니다. 바뀌는 굴러가지 않도록 고정하구요. 그러면, 마치 진자 (pendulum) 처럼 됩니다. 이 상태에서, 로봇 바디의 관성모멘트(J_m)와 바디와 모터축(기어포함)과의 마찰계수 f_theta를 구할 수 있게 됩니다. 여기서 하나 더, 저 바디 부분을 완전한 음.. 그러니까.. 완전한 균일한 질량 밀도를 가진 막대로 볼 수 없습니다. 무게중심이 바디의 센터에 있다는 보장이 없는거죠.
그래서 제가 이번 실험에서 추정하고 싶은 것은, 로봇바디의 관성모멘트 J_m과 로봇바디와 모터축 사이의 마찰계수 f_theta, 회전중심축과 무게중심사이의 거리 l 입니다. 
이 실험을 위해서 


이런 진자의 동역학


을 이용합니다. 즉, 위 실험처럼 밸런싱로봇을 뒤집어서 일정한 높이에 놓고 자유운동을 시키면 위 동역학대로 움직인다는 거죠. 그럼 그 실험데이터를 가지고 질량 m과 중력가속도 g는 알고 있으니, J_m, f_theta, l을 찾을 수 있다는 겁니다.
실제 실험은 10회를 수행했습니다. 그리고 모터에 내장된 엔코더를 이용해서 회전각도를 시리얼통신으로 PC에 전송시켜 저장합니다. DSP 쪽 코드는 엔코더 해석에 시리얼 전송 기능 뿐이라 생략합니다.^^


그 데이터를 시리얼 통신으로 받았구요. 10개의 데이터를 하나하나 열어서 약간 편집을 해줍니다. 뭐 코드를 잘 짜고 실험환경을 잘 맞추면 원샷에 처리할 수 있지만, 그냥 10번만 할거라서 약간 노가다(^^)를 뜁니다...


저 데이터가 한번 실험한 건데요. 각도를 측정하는 엔코더가 인크리멘탈형이라서 첫 위치를 '0'으로 봅니다. 그래서 일단 0도에서 손으로 일정부분까지 들어올립니다. 그리고 놓는 거죠. (x축은 데이터 갯수를 의미합니다. 시간이 아니라요.) 그래서 저 빨강박스 부분은 실제 자유운동을 한 부분으로 보고 잘라냅니다. 이걸 다른 실험에도 똑같이 적용하는 거죠.
그리고, MATLAB이 제공하는 Parameter Estimation Toolbox를 사용합니다. 그에 관한 설명은
에서 자세히 다루었기 때문에 생략하겠습니다.
10번의 실험 결과를 이용해서 파라미터를 추정한 결과를 평균했을때


이런 결과를 얻었습니다.
무게중심까지의 거리는 0.2241이고, 마찰계수 f_theta는 0.2707, 관성모멘트 J_m은 0.1916이라고 하는 군요. 


위 그래프에서 파란선들은 10번의 실험 데이터들이구요. 그래서 추정한 파라미터를 동역학 모델로 Simulink로 시뮬레이션한 것이 빨간선입니다. 이쯤되면 만족스럽다고 할 수 있을 것 같습니다. 이제 이렇게 추정한 데이터는 확정을 짓고, 
의 결과식에 나와있는 나머지 파라미터들을 찾으로 가야지요^^


반응형