top of page

blog

HOME   |   커뮤니티   |   blog   |  게시물

[민트로봇] 협동 로봇의 오해와 진실 - 협동 로봇과 산업용 로봇의 제어 방법의 차이

지난번 포스팅에서 일반적인 산업용 로봇과 협동로봇은 구조적으로 완전히 동일한 구조를 가지고 있으나 모션제어기가 서보모터를 제어를 하는 방법이 다르다고 설명을 하였습니다. 이번 포스팅에서는 해당 제어 방법의 차이점에 대하여 설명을 하고자 합니다. 모션제어기는 로봇이 적절하게 움직이게 하기 위하여 서보모터가 추종해야 하는 값을 실시간으로 계산한 뒤 해당 값을 서보모터에 전송하는 일종의 계산기라고 설명을 하였습니다. 일반적으로 로봇암의 모션제어기는 서보모터에 2가지 종류의 명령을 보냅니다. 첫번째는 위치 명령입니다. 모션제어기는 사용자의 의도에 따라 로봇이 적절하게 움직이도록 실시간으로 로봇의 각 관절이 어떠한 각도가 되어야 하는지를 계산할 수 있습니다. 여기서 실시간이란 로봇이 움직이기 시작한 시점, 움직이기 시작한 시점부터 0.001초가 지난 시점, 0.002초가 지난 시점 ••• 로봇이 멈추기 0.001초전 시점, 로봇이 멈춘 시점과 같이 로봇이 움직이는 매 순간순간을 의미합니다. 이렇게 특정 시점과 해당 시점에서의 각도(값)을 모으게 되면 아래와 같은 그래프로 표현을 할 수 있으며, 이를 로봇의 경로 (Trajectory) 라고 합니다. 그리고 이러한 값들을 계산하는 작업을 모션제어기의 경로생성 (Trajectory Generation) 이라고 합니다.


로봇 관절의 시간에 따른 각도 그래프 (경로/Trajectory) 출처 : 구글 이미지 검색


위 그림과 같이 매 순간순간 모션제어기가 로봇이 움직이기 위한 각도를 계산하고 서보모터가 해당 위치를 추종하도록 값들을 보내게 되면 서보모터의 구동기가 해당 값을 받아 모터의 각도가 해당 각도를 추종하도록 제어하게 되며, 결과적으로 해당 순간에 서보모터의 각도는 모션제어기가 전송한 각도에 위치하게 됩니다. 그리고 해당 각도대로 로봇이 움직이게 됩니다. 이것이 로봇암이 움직이게 되는 가장 기본적인 원리입니다. 이러한 제어 구조를Semi-closed loop 제어 구조라고 합니다. 이러한 방법은 로봇암 뿐만이 아니라 3D 프린터나 CNC 가공기, 각종 산업용 설비 등에서 매우 많이 사용하는 제어 구조입니다.


Semi-closed loop 제어 구조


만일 위와 같이 계획된 경로에 따라서 로봇이 움직이는 도중 무엇인가에 충돌한다면 어떤 일이 일어날까요? 모션제어기는 사실 충돌 발생 여부를 알 방법이 없습니다. 충돌을 알기 위해서는 모션제어기가 모터의 각도나 전류 등을 받아야 하지만, 이를 받지 않고 단순히 로봇이 경로대로 움직이기 위한 각도 값들 만을 계산하여 서보모터에 전송하기 때문입니다. 서보모터의 구동기는 모터에 연결된 엔코더나 전류 정보등을 통하여 충돌이 발생했는지 알 수도 있긴 하지만, 구동기의 주요 목적은 입력받은 값을 추종하도록 모터를 제어하는 것 이지 충돌을 감지하는 것은 아닙니다. 따라서, 모션제어기는 충돌과 관계없이 서보모터가 충돌 이후 시점에 유지해야 하는 각도를 계속 서보모터에 전송할 것이고 서보모터는 해당 값을 추종하기 위하여 계속 회전하려 할 것입니다. 만일, 로봇의 힘이 충분하다면 충돌한 물체를 밀고 로봇이 원래 움직여야 하는 경로대로 움직일 것이고, 로봇의 힘이 불충분하다면 충돌 이후 과부하 등이 걸리게 될 것입니다. 이러한 경우 충돌 대상의 파손 등의 위험 요소가 발생할 수 있기 때문에 원천적으로 로봇이 무엇인가에 충돌하지 못하도록 로봇을 움직이도록 하는 것이 중요합니다. 이는 로봇이 정지해 있는 상황에서 무엇인가가 로봇에 충돌했을 경우도 마찬가지입니다. 로봇의 경로가 변하지 않는 경우, 즉 로봇이 정지해 있는 경우에도 모션제어기는 해당 값들을 계속 서보모터에 전송하게 되며, 서보모터는 해당 값을 계속 추종하기 위한 제어를 수행합니다. 만일 로봇이 정지되어 있는 경우 사람이 로봇을 민다면 어떤 일이 일어날까요? 만일 사람이 로봇을 미는 힘이 로봇의 힘보다 셀 경우 로봇은 밀릴 것이며, 사람이 미는 행위를 중지할 경우 로봇은 원래의 위치로 돌아올 것입니다. 만일 사람의 미는 힘이 로봇의 힘보다 약할 경우 당연히 로봇은 꿈쩍도 하지 않고 움직이지 않을 것입니다. 일반적으로 로봇의 힘이 사람의 힘보다 더 세기 때문에 위와 같은 상황에서 보통은 사람은 로봇을 움직이게 할 수 없습니다. 위와 같은 상황이 일반적안 산업용 로봇이 움직이는 방식이며, 산업용 로봇이 무엇인과 충돌했을 때 일어날 수 있는 반응입니다. 따라서 만일 충돌 대상이 사람이라면 상해의 위험 등이 발생할 수 있기 때문에 일반적으로 로봇과 사람을 같은 공간에서 작업하도록 배치하지 않습니다. 즉, 로봇이 사람과 같은 공간에서 상호작용할 기능이 없는 것이 아니라, 로봇이 사람과 같은 공간에서 상호작용을 할 경우 사람에게 위협이 될 수 있는 요소가 있기 때문에 일부로 그렇게 사용을 하지 않는다는 표현이 옳은 표현입니다. 그렇다면 협동로봇은 어떻게 작동할까요? 협동로봇도 일반적인 산업용 로봇과 같이 모션제어기가 경로를 계산하는 것 까지는 같습니다. 다만, 협동로봇과 같은 경우 모션제어기가 해당 경로를 유지하기 위해서 서보모터에 위치(각도)값을 전송하는 것이 아니라 힘(토크) 값을 전송합니다. 즉, 해당 경로를 추종하기 위해서 힘을 얼마만큼 주고 있어야 하는지를 계산하게 되고, 해당 힘(토크) 값을 서보모터에 전송하게 됩니다. 그리고 서보모터의 구동기는 입력받은 힘(토크)를 추종하도록 모터를 제어하게 됩니다. 이러한 구조를 Full-closed loop 제어라고 합니다. 로봇이 특정 경로를 따라 움직이는 것은 동일하지만 모션제어기가 해당 경로대로 로봇이 움직이기 위한 위치(각도) 값을 계산하는 것이 아니라 힘(토크) 값을 계산하게 되는 것입니다.


Full-closed loop 제어 구조


만일 위와 같은 경우 로봇이 움직이는 동안 무엇인가에 충돌하거나, 로봇이 멈추어 있는 동안 무엇인가가 로봇을 밀 경우 모션제어기는 해당 상황을 감지할 수 있습니다. 왜냐하면 모션제어기가 서보모터로 부터 현재 모터의 각도 등의 정보를 받을 수 있기 때문입니다. 만일 충돌 등의 상황을 모션제어기가 감지하였을 경우 모션제어기는 두가지 선택을 할 수 있습니다. 첫번째 방법은 충돌의 감지 여부와 관계없이 기존에 모션제어기가 계산한 경로대로 로봇이 움직일 수 있도록 제어를 하는 것입니다. 즉, 충돌을 이겨내고 해당 경로를 유지하기 위한 힘을 계산해서 서보모터에 전송을 하는 것입니다. 이렇게 작동할 경우 로봇은 앞서 설명한 방식의 일반적 산업용 로봇이 충돌 등의 상황에 직면하였을 경우와 완전히 동일하게 작동할 것입니다. 실제로 일부 산업용 로봇은 앞서 설명한 Semi-closed loop 제어 구조를 사용하지 않고 Full-closed loop 제어 구조를 사용하면서 계산된 위치를 추종하도록 제어하기도 합니다. 이렇게 제어할 경우 보다 최적화된 로봇의 움직임을 구현할 수 있기 때문입니다. 두번째 방법은 충돌을 감지하였을 경우 경로를 따라가지 않고 멈추도록 힘을 계산하여 서보모터에 전송하는 것입니다. 이런 방법을 사용할 경우 로봇이 충돌을 할 경우 로봇을 멈추게 할 수 있게 됩니다. 이와 유사하게 로봇이 정지한 상태에서 사람이 로봇을 밀 경우 이를 감지한 뒤 로봇이 해당 위치를 유지하기 위한 힘을 계산하여 서보모터에 전송하는 것이 아니라, 사람에 밀리도록, 정확히는 사람의 힘에 의해 로봇이 밀려주는 것 과 같이 보이도록 힘을 계산하여 서모보터에 전송할 수도 있습니다. 이런 방법을 사람이 정지된 로봇을 밀 경우 로봇이 사람의 힘에 의해 밀려 나가는것과 같이 움직여 줄 수 있게 할 수 있게 됩니다. 이러한 제어 방법을 외력에 순응해 움직여 준다고 하여 순응제어(Compliant Control) 이라고 부르기도 하며, 마치 로봇이 특정 물리적 모델을 바탕으로 움직여 준다고 하여 임피던스 제어(Impedance Control) 이라고 부르기도 합니다. 현존하는 대부분의 협동로봇은 이러한 제어 원리를 사용하여 충돌 감지나 직접 교시 (핸드 티칭) 등의 구현을 구현하게 됩니다.


산업용 로봇과 협동 로봇의 제어 방법의 차이


정리하게 되면 산업용 로봇은 Semi-closed loop 구조에 의한 위치 추종 제어나 Full-closed loop 구조에 의한 위치 추종 제어를 사용하게 되며, 충돌 등의 상황이 발생하였을 경우 계획된 경로대로 움직이기 위한 움직임을 하게 됩니다. 따라서, 사람이 로봇에 충돌하였을 경우 안전 문제가 발생할 수 있으며, 이러한 이유로 일반적으로 사람과 격리된 공간에서 작동하도록 사용합니다. 하지만, 이는 전적으로 사용자의 선택일 뿐 로봇이 사람과 물리적 상호작용을 할 능력이 없다는 것을 의미하지는 않습니다. 협동로봇은 Full-closed loop 구조에 의한 순응제어를 사용하게 되며, 충돌 등의 상황 발생시 정지하거나, 사람이 로봇을 밀 경우 사람의 힘에 의하여 밀려주도록 움직일 수 있습니다. 즉, 물리적 상호 작용을 한다고 볼 수 있습니다. 그리고, 일반적 산업용 로봇과 비교하여 더 안전할 수 있기 때문에 사람과 같은 공간에서 작업을 하도록 사용합니다. 위 정리에서 매우 주의 깊게 생각해 볼 문제는 “협동로봇은 순응제어로 인하여 충돌 감지 시 정지를 할 수 있는 등의 기능이 있기 때문에 안전하다고 판단하며, 이로 인하여 사람과 같은 공간에서 작업을 하도록 사용한다”는 것입니다. “충돌 감지 시 정지를 한다”가 “안전하다”는 것과 같은 의미일까요? 협동로봇은 충돌 감지 시 정지를 하기 때문에 협동로봇일까요? 아니면 안전해서 협동로봇일까요? 만일 충돌 감지 시 정지를 해도 안전하다고 볼 수 없으면 협동로봇이 아닐까요? 아니면 반대로 충돌 감지기정지를 하지 않아도 충분히 안전하다고 볼 수 있으면 협동로봇이라고 봐야 할까요? 이러한 부분이 많은 오해를 일으키기 있는 부분입니다. 다음 번 포스팅에서는 과연 이렇게 정의된 협동로봇이 과연 안전하다고 볼 수 있는지? 현존하는 규격상 협동로봇의 기능에 대한 정의와 안전에 대한 정의는 어떻게 차이가 있는지에 대하여 알아보겠습니다. - 간단요약 - 협동로봇과 산업용 로봇은 소프트웨어(제어 방법)가 다르다


2019.11.05

조회수 1,016회댓글 0개

최근 게시물

전체 보기

Comments


bottom of page