Implementation of a PC-based motion controller/robot controller with USB interface [4]

USB Comminication speed between a host computer/board and the motion-control FPGA.

1. Experiment setup.  

  • 1530-byte round-trip test.
  • Asynchronous FIFO mode of the FT2232H.

2. Experiment results.

  • PC running a plain Linux: about 50 Mbits/sec.
  • Raspberry Pi 2 running a realtime Linux:  at least 30 Mbits/sec.

Implementation of a PC-based motion controller/robot controller with USB interface [3]

Motion-control FPGA:  

  • Reads the  status of external sensors and servo drives and sends it  to the PC. 
  • Receives commands from  the PC and writes them to external devices and servo drives.

 

Internal structure of the motion-control FPGA:

motion-control-fpga-1

  1. command-pulse-generator module: generating command pulses for servo drives.
  2. quadrature-counter module: counting quadrature  pulses from servo drives.
  3. output-latch module: latching parallel output signals  to external devices and servo drives.
  4. input-latch module:  latching parallel  input signals from external sensors and servo drives.
  5. USB-interface module: reading/writing data from/to  USB bus. 
  6. Finite-state-machine module: controlling  the data flows among the above modules.

Implementation of a PC-based motion controller/robot controller with USB interface [2]

 

PC-based motion controller with USB interface:

motion-control-fpga-ft2232h

 

Examples of FPGA board with USB interface:

  • FlashLink module (Xilinx Spartan-3).
  • Saturn module (Xilinx Spartan-6).
  • Morph-IC-II FPGA Development Module (Altera Cyclone II).

 

FTDI FT2232H  for USB interace:

1. Interface A port of the FT2232H: asynchronous FIFO mode.
2. Interface B port of the FT2232H: UART mode.

Connecting FT2232H to FPGA module:

1. XFC-XC3S50AN FPGA module and FTDI FT2232H mini module:

VCCAUX of the FPGA = 3.3V

fpga-ft2232h-modules-setup-1

 

2. Open3S3500E board and the FTDI FT2232H mini module:

VCCAUX of the FPGA = 2.5V

fpga-ft2232h-modules-setup-2

I, too, do industrial robots.

“industrial-robot experts” are those who  have some experience of   “touching” industrial robots ?

experts

(from http://www.nature.com/ki/journal/v62/n5/fig_tab/4493262f1.html)

“touching” industrial robots is  the beginning of developing industrial robots, not the end. 

Some people  tear off industrial robots until they can find their familiar pieces such as  kinematics, dynamics, control, power electronics, operating system, programming language, and so on. And then, they claim “I  do industrial robots, too.”

R & D of industrial robots may start with  identifying the vital pieces of industrial robots. Simply taking good stuffs from other areas and combining them, results in a Chimera (in Greek myth, the Chimera is a fire-breathing creature that has the body of a goat, the head of a lion and the tail of a serpent ).   

Aristoteles said, “The whole is greater than the sum of its parts.” What turns the sum of individual parts or pieces into the whole ? 

Fortunately,  we do not need to  re-invent industrial robots. Industrial robots has been aound for more than 40 years.  “Industrial-robot experts” already know what are good or bad for industrial robots. 

Do I need a real-time OS for industrial robot controllers ?

Yes and no, depending the hardware structure of your controller.

“Soft real-time OS” is enough except for servo control tasks. If  servo control tasks are responsible for the position, velocity and current control of PMSMs (permanent-magnet synchronous motors), the servo control tasks  have no way of escaping from  “hard real-time OS”.    

 

Can I get the source code, electrical schematics and mechanical drawing of a commercial robot system ?

If you don’t care of some old robots,  my answer is “Yes.  you can get almost everything”.

Unimation provided the followings with their PUMA robots:

  • Complete electrical schematics of robot controllers.
  • Complete mechanical drawings of PUMA robots. 
  • Protocols to comminicate with joint servo processors (unofficial). 

Thanks to many researchers, the following work was done to understand Unimation controllers and PUMA robots: 

  • The firmware of the joint servo processor was disassembled and the puma servo system was analyzed.
  • The firmware of the teach pendant was disassembled.
  • Dynamic parameters of PUMA robots were identified and verified by experiments.
  • Unimation’s robot lanaguage, VAL,  was disassembled and analyzed by me.

The PUMA robot controllers are the first industrial robot controllers and they are survived by the robot controllers of Stäubli and Adept. 

Kawasaki had the license to produce and sell PUMA robot systems in Asia. Because Unimation did not patent their stuffs in Japan, Unimation’s knowhows were melted into Japanese robot industries.

 

산업용 로봇의 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를 새로이 작성하였다.

산업용 로봇 제어기 개발 입문서 ?

robot이란 용어의 정의를 살펴 보면 programmable machine의 의미를 포함하고  있다. 산업용 로봇이란 용어를  programmable manipulator의 의미로 사용하는 경우가 많은 듯 하다.

산업용 로봇 제어기 개발의  입문서로서 다음과 같은 textbooks을 추천한다.

1. John Craig, Introduction ro robotics: mechanisms and control,  1986. 

John Craig는 NASA의 JPL 연구소에 근무하였으며, Silma라는 회사를 설립하여 robot offline programming과 simulation을 위한 software를 개발, 판매하였다. Silma는Adept에 합병되었으며, John Craig는 현재 Adept에서 근무하고 있다.

John Craig는 1986년 Stanford University의 Department of Electrical Engineering에서 robot의 adaptive control에 관한 연구로 박사 학위를 받았으며 hybrid control에 대한 논문을 발표하였다. John Craig는 JPL에서 robot control 분야에  종사하였으나 Silma 설립 후에  robot programming으로 그의 관심 분야를 옯겼다고 할 수 있다.

John Craig의 textbook은 산업용 로봇의 전반적 분야를 개념 위주로 설명하고 있다. 문제점으로는,  (조금 과장해서 표현하면) “만화책” 수준으로 쉽게 설명하려다 보니 용어를 정확하게 정의하지 않고 넘어가는  경향이 있다. 2004년에 third edition이 출간되었다.  

2.  Richard P. Paul,  Robot manipulators: mathematics, programming, and control, 1981.

Richard Paul은 Standford University의 Computer Science Department에서 1972년 박사 학위를 받았으며 Purdue University의 석좌 교수를 거쳐 University of Pennsylvania의 공대 학장으로 근무하였다.

Richard Paul의  textbook은,  1981년까지 Richard Paul이 수행한  “산업용” 로봇에 대한 연구 결과를  집약해서 소개하고 있다.  Richard Paul의 textbook을 간략하게 평가하면, robotics 분야에서 최초의 textbook이며 당시 모든 로봇 연구자나 개발자가 한 권씩 소장했을 정도로 popular 했던 책이지만, 많은 분량을 함축해 놓았기 때문에 상세한 설명이 생략된 부분이 많으며  실제 산업용 로봇 개발에 종사하지 않은 사람은 그 필요성을 인식하기 어려운 부분도 일부 포함하고 있다.

대부분의 대학들이 John Criag의  textbook과 같이 강의에 적합한 textbooks을  선호함에 따라 Richard Paul의 textbook은 1992년 절판되었다.  1992년까지 Richard Paul의  textbook 개정판은 출간되지 않았다.  1981년부터 1992년까지의 산업용 로봇에 대한 연구, 개발의 결과가,  그 textbook의 내용을 수정하거나 새로운 chapter를 추가할 정도가 아니라는 해석도 가능하다.

이 textbook의 저작권은 MIT Press로부터 저자인 Richard Paul로 이전되었으며, 한동안  books.google.com에 이 textbook의 모든 pages가 공개된 적도 있었다. google의 정책이 바뀜에 따라 현재는 이 textbook의 일부만 books.google.com에 공개되어 있다.  인터넷 검색을 해보면, 그리 어렵지 않게 이 책의 PDF file을 찾을 수 있다.  

3. 김경환, 산업용 로봇 제어기의 설계 및 구현, 2014.

Richard Paul의 textbook은 산업용 로봇 개발의 출발점이라 할 수 있으나. 그 textbook의 내용을 모두 이해 하는 것은 쉽지 않다.  다행히 이 textbook에 소개된 내용을 충실하게 구현하여 실제 robot에 적용한 software package (RCCL 또는  MultiRCCL)가 존재한다. RCCL은  상당 기간 해외 주요 연구기관에서 robotics 연구 및 개발의 표준 software로서 널리 사용되었다. 

RCCL 그 자체도  많은 연구 및 개발의 결과물이기 때문에, 관련 이론이나 algorithm을 파악하고 있지 않으면,  RCCL의  source code를 follow 해 보는 것은 불가능하다.  또한  RCCL의 내부 동작을 파악하려면, RCCL이 사용하는 hardware  platforms에 대한 기술 자료를  수집하여 분석하는 과정이 필요하다.   

Richard Paul의 textbook과 RCCL은 산업용 로봇 개발자 또는 산업용 로봇 업계 종사자를 위해 매우 유용한 기술 자료이나 , 이해와 분석이 어렵다는 문제점이 있다.  따라서 Richard Paul의 textbook과 RCCL을 풀어서 쉽게 설명한 “해설판”과  Richard Paul의 textbook이 절판되고  RCCL이 개발 종료된 후에 진행된 연구 및 개발 결과를 추가한 “개정판” 이 필요하다고 생각하였다.  

미국에서 박사 과정 중 (1990년 쯤)  산업용 로봇에 대한 기술 자료를 엮어 책으로 출간하려는 생각이 있었으나, 이를 구체적으로 진행하지 않았다.  최근 몇 년 동안  국내 여러 회사의 로봇 개발을 지켜 보고 참여하면서, 기존의 연구, 개발 결과물을 접할 수 없어  scratch 부터 개발을 시작하거나 그런 방식으로 산업용 로봇을 개발하여 판매한 후 로봇 제어기의 보수와 기능 확장에 많은 어려움을 겪고 있는 것을 목격할 수 있었다.  

산업용 로봇 제어기 개발자에게 도움을 주고자, Richard Paul의 textbook, RCCL, 지금까지 개발된 산업용 로봇 개발 제어기의 분석 결과, 개발에 필요한 요소 기술,  내가 제안하는 산업용 로봇 제어기의 개발 및 구현 방법을 topic 별로 정리하여 report의 형태로 정리하였다. 이 report의 요약본 전부 (310 pages)와 전체본의 일부를 www.open-robotics.com에 공개되어 있다. 

2012년 report의 일부을 wordpress로 변환하여 open-robotics.com에 공개한 바 있으나,  많은 수식과 그림으로 인해 변환된 결과물의 quality가 만족스럽지  않았다. 또한 report 전체본의  분량이 작지 않으므로 (3400 pages 이상),   report 전체본을 web browser를 통해 page 단위로 읽는 방법은  바람직하지  않다고 판단되었다. report 전체본에 보다 용이하게 접근할 수 있는 방법을 찾아 보고 있다.  

이제 “입문편”이 어느 정도  마무리되었기 때문에,  보다 이론적인 문제와 실제 응용 예를 다룬 “심화본”이나 source code와 회로도를 구체적으로 설명하는 “부록본”을 만들어 볼까하는 생각도 가지고 있다. 물론 시간이 나야 하겠지만