Design and implementation of industrial robot controllers

Gyoung H. Kim, Ph.D. (E-mail: gyounghkim@open-robotics.com)

저자는 국내외의 산업용 로봇, 수중 로봇, 의료 로봇, 반도체 로봇의 controller 및 software 개발에 참여한 바 있으며, 국내 산업용 로봇 개발의 초창기부터 현재에 이르기까지 다소 긴 기간 (30년)에 걸쳐 산업용 로봇에 대해 생각해 볼 기회가 많았던 engineer라 할 수 있다. 저자가 산업용 로봇 분야에 참여하면서 가졌던 기술적 의문점에 대한 해답이나 생각해 온 개발 방향에 대해, 시간이 날 때마다 memo 해 본 것들을 보고서의 형식으로 편집하여 보았다. 본 보고서를 통해 기존의 주요 연구 및 개발 결과와 저자의 관점에서 본 제어기의 개발 방향 및 방법을 소개함으로써, 실제 산업용 로봇 제어기의 개발 시 당면하는 많은 기술적 문제에 그 해답을 제시하고자 한다.

For over 30 years, I have been actively involved in the development of robot controllers for medical robots, underwater robot, and various industrial robots including  XYZ rectangular (Cartesian) robots, SCARA robots, LCD transfer robots, wafer transfer robots,and  sealing robots.

Believe it or not, I still design the hardware and write the software of industrial robot controllers as an engineer.  While working with other engineers,  I watched them “invent” their own robot controllers from scratch. I know why they should develop robot controllers in that way. I was in the same situation 30 years ago; I could not find any information on  “real” robot controllers, not the robot controllers that existed only on research papers.

To develop industrial robot controllers, I had to solve so many practical problems everyday. Recently I started to write down those problems and solutions in form of a technical report. My  report is not a textbook on robotics.  It is filled with all kind of  know-hows and  must-knows, which are needed for  designing  and implementing industrial robot controllers.

산업용 로봇의 trajectory generation 방법은 ?

여러 형태의 robot arms과 다양한 응응을 지원하기 위해 trajectory generator 에 새로운 routines이 추가되는 경우가 빈번하며, 이에 따라 trajectory generator의 source code가 점점 “스타게티 코드”로 변화되는 것을 경험할 수 있다.

robotics textbook의 trajectory generator chapter를 보면,  대부분 설명의 편의를 위해 수식의 유도 과정만을 설명하고 있다. 실제 trajectory generator를 개발하려면 많은 구현상의 문제를 해결해야 한다.

trajectory generator의 구현에 참고하기 위해 인터넷에서 trajectory generator의 source code를  검색해 보면, 많은 경우 textbooks의 수식을 단순히 C language로 작성해 놓았거나 robot package의 sub-module로서 작성되어 있기 때문에 실제  큰 도움이 되지 않는다.

trajectory generator의 구조는 오래 전에  정립이 되어 더 이상 연구 대상이 아니다. 따라서 관련 기술 자료를 찾기 어려울 뿐, trajectory generator의 구현에 대한 연구가 없었던 것은 아니다.

다음은 내 report에서 발췌한 trajectory generator의 구현 예이다.

Trajectory generator(TG)를 finite-state machine으로 정의하여 각 state에서 필요한 계산 과정을 Table 8.13에 보였다. Table 8.13의 TG를 실제 robot programming system에 적용하려면 data structure나 관련 function의 정의 및 coding이 필요하다. 이러한 작업은 많은 노력과 시간이 소요되기 때문에, TG의 실제 coding 결과를 보이고 기존 robot programming system과의 interface 방법을 설명하고자 한다.

RCCL v1.0에서 destination position은 position equation을 이용하여 기술되고, move() command에 의해 motion request가 queue에 넣어 진다. 주어진 motion request에 대해 28ms 마다 setpoint_n()을 실행하여, servo controller를 위한 setpoints를 계산한다. 따라서 RCCL의 setpoint_n() routine은 trajectory generator의 역할을 수행한다고 할 수 있다.

RFMS system의 TG는 Table 8.13을 기준으로 구현되었으며, 이에 대한 설명을 RFMS software manual과 source code listing에서 찾아 볼 수 있다. 그러나 RFMS system은 TG의 계산 기능을 supervisor processor와 joint processors로 나누어 수행하고 joint processor code의 일부는 assembly lanuguage로 작성되어 있기 때문에, RFMS의 TG를 RCCL에 그대로 적용할 수 없다.  RFMS의 TG의 구조를 참조하고,  RCCL library를 이용하여 GetEx(), ik_solve(), GetLDR()과 같은 routine()을 구현함으로써, RCCL의 TG를 새로이 작성하였다.