새로운 카테고리가 생겼습니다. 개인적으로 느끼는 생각들을 글로써 정리하고자 Thinking이라는 카테고리를 만들었습니다. ^^
최근에 이런 질문을 받은 적이 있습니다. "왜 제어 공학(Control Engineering)을 좋아하세요?"
이 질문을 듣고 짧게 1초 정도 왜 제어를 하고 싶었지?라는 생각을 해보았고, 바로 대답을 했습니다.
로봇은 수 많은 센서와 구동계로 이루어지는데, 각각의 기능 수행은 아무런 의미를 갖지 않지만 제어는 어플리케이션으로써의 의미를 부여할 수 있기 때문에 좋아한다고..
아, 비슷한 시기에 제어를 쉽게 이야기하는 이야기도 들었는데 개인적으로 그런 말 너무 싫어합니다.. 지금도 linear system theory뿐만 아니라 최신 제어 기법들(MPC 제어나 QP를 이용한 WBC 등)에 대해 지속적으로 공부를 하려고 노력 중입니다. 보다 보면 제어가 일반화가 되지 않고 다양한 기법들이 존재합니다. 이렇게 수많은 방법론들이 존재하는 것은 모델링에 있지 않을까 생각이 듭니다.
음 모델링에는 여러가지가 있을 수 있는데, 현재 생각 나는건 크게 5가지네요... 혹시 더 있으면 알려주시면 감사하겠습니다.
1) robot dynamics
2) actuator dynamics
3) sensor dynamics
4) external disturbance
5) operation system's model(?)
모든 모델들을 투명하게 잘 안다면, 통제 가능해서 제어가 쉬웠을 텐데 현실은 그렇지 않습니다. 플랜트 마다 달라서 하나의 framework으로 해결이 되지 않아서 강인제어, 최적제어, Data driven 기반 제어, 강화학습 등 여러가지 기법들이 존재하는 것 같습니다.
실제로도 모델 기반 제어기를 설계하고, 실제 포팅을 했을 때 발산을 하면 저 5가지 경우 중 하나에 문제가 있었습니다. 모델링 되지 않은 성분들, 액츄에이터의 밴드위스, 센서의 밴드위스/분해능, 외란, multi task의 문제점이나 통신 지연 등.
옛날에는 Control Engineer란 단순히 제어 이론을 잘 아는 것이 중요하다고 생각을 했었는데, 요즘에는 위의 사항들을 종합적으로 판단 할 수 있는 능력이 결국은 Control Engineer에게 중요하다는 생각이 듭니다. 아 분석을 하기 위해서는 data 분석도 잘 해야겠죠.
물론 하나의 로봇은 혼자 개발하는 것이 아닌 각 분야의 전문가들이 있고, 그들의 협업을 통해 만들어집니다. 그래도 개발 도중 터진 문제들을 해결해 나가다보면 각 분야의 기반 지식이 쌓이는 것 같습니다. 그러다보면 결국은 메인 캐인 Control engineer 이외에도 Sensor analysis engineer, Data analysis engineer, System engineer 등의 여러 부캐가 만들어 지는 것 같습니다. (?ㅎㅎ) 아 그리고 sw구조에 대해서도 재미있게 공부하게 되는 것 같네요. 구현을 하다보면 좋은 코드, 협업하기 좋은 코드로 짜고 싶다는 욕심도 많이 생기네요.