#사업전략 #트렌드
로봇 시뮬레이터는 실행 전 점검에서 로봇 동작의 무엇을 미리 계산하는가

커버

로봇 시뮬레이터가 실행 전 점검에서 미리 계산하는 것은 공구 끝이 지나가는 선이 아닙니다. 시뮬레이터는 그 선을 따라갈 때 관절 6개가 시각마다 어떤 값과 어떤 속도를 내는지를 계산합니다. 화면에서 공구 끝이 목표점에 닿는 것만 보고 실행하면, 관절이 교시한 값과 다른 자세로 끝나는 동작이나 한 관절이 속도 한계를 몇 배 넘는 동작이 그대로 현장으로 갑니다.

제조 AI 운영체제 VEXPLOR를 만드는 웨이스는 개발 중인 3D 공장 시뮬레이터에서 산업용 6관절 로봇 12종에 직선 이동을 20개씩, 모두 240건 계획해 보았습니다. 점검을 그대로 통과한 것은 절반에 못 미쳤습니다.

· 정상 — 건수: 114 · 비율: 47.5% · 재생 허용 여부: 허용

· 경고 — 건수: 60 · 비율: 25.0% · 재생 허용 여부: 허용

· 차단 — 건수: 66 · 비율: 27.5% · 재생 허용 여부: 차단

차단 66건의 다수는 「끝 관절 값 불일치」였습니다. 공구 끝은 목표에 도착했는데 관절 값이 교시한 것과 달랐다는 뜻입니다. 이 수치는 웨이스가 개발 브랜치에서 자체 시험으로 잰 값이고, 실물 로봇이나 실물 제어기와 대조한 결과가 아닙니다. 웨이스의 시뮬레이터가 실행 전에 보는 항목 가운데 이 글에서 다루는 것은 아래 5가지입니다. 이 밖에 관절 가속도와 특이점 근처 경고가 있습니다.

· 관절 한계 — 동작 중에 관절 값이 그 관절의 한계를 넘는지 봅니다.

· 관절 속도 — 관절마다 속도가 한계의 몇 배인지 봅니다.

· 풀이 실패 — 공구 끝이 그 점에 가도록 하는 관절 값을 찾지 못한 구간이 있는지 봅니다.

· 직선 이탈 — 공구 끝이 직선에서 얼마나 벗어나는지 봅니다.

· 끝 관절 값 불일치 — 동작이 끝난 관절 값이 교시한 값과 같은지 봅니다.

이 글은 그 가운데 기술자가 화면만 보아서는 알 수 없는 것을 4가지로 나누어 설명하고, 자동화 기술자가 사용하는 시뮬레이터에 물어볼 질문 6개를 적습니다.

공구 끝이 목표에 도착해도 관절 값은 교시한 값과 다를 수 있습니다

6관절 로봇에서는 같은 공구 끝 위치와 방향을 만드는 관절 값 조합이 여러 개입니다. 관절 이동은 관절 값 자체가 목표라서 교시한 값에서 끝납니다. 직선 이동은 다릅니다. 공구 끝이 직선을 벗어나지 않도록 시각마다 관절 값을 새로 풀어 가기 때문에, 마지막에 나온 풀이가 교시한 관절 값과 같다는 보장이 없습니다.

아래 표는 웨이스가 검수에서 재현한 사례입니다. 손목 끝 관절만 목표를 바꿔 직선 이동을 계획했습니다.

· 270도 — 계획이 끝난 값: −90도 · 공구 끝: 목표와 일치

· 360도 — 계획이 끝난 값: 출발 값 그대로 · 공구 끝: 움직이지 않음

공구 끝에서 보면 270도와 −90도는 같은 자세입니다. 360도는 출발 자세와 같은 자세라서, 직선 이동으로는 움직일 거리가 없습니다. 기술자는 손목을 한 바퀴 회전시키려고 교시했는데 계획에는 동작이 없습니다. 화면의 3D 그림만으로는 두 경우를 구별할 수 없습니다. 하지만 다음 단계는 −90도에서 출발합니다. 그 뒤의 관절 이동은 교시할 때 본 것과 다른 회전량으로 움직이고, 직선 이동만 계속되면 이 차이는 프로그램 끝까지 남습니다.

실행 전 점검은 직선 이동이 끝난 관절 값을 교시한 관절 값과 비교해야 합니다. 웨이스의 시뮬레이터는 두 값이 0.01도 넘게 다르면 그 단계를 차단하고, 차단이 하나라도 있으면 프로그램을 재생하지 않습니다.

같은 공구 끝 자세를 만드는 관절 값은 여러 개여서, 직선 이동은 교시한 값과 다른 관절 값으로 끝날 수 있습니다
같은 공구 끝 자세를 만드는 관절 값은 여러 개여서, 직선 이동은 교시한 값과 다른 관절 값으로 끝날 수 있습니다

직선 이동이 특이점 근처에 있으면 공구 끝은 조금 움직이는데 한 관절의 속도가 한계를 넘습니다

특이점은 공구 끝을 조금 움직이는 데 관절이 아주 크게 회전해야 하는 자세입니다. 직선 이동은 공구 끝이 직선을 따라가도록 시각마다 관절 값을 풉니다. 그래서 직선이 특이점 근처에 있으면 공구 끝이 조금 움직이는 동안 특정 관절은 낼 수 없는 속도를 내야 합니다.

웨이스가 시험에서 재현한 두 직선에서 가장 빠른 관절의 속도는 약 45배 차이가 났습니다.

· 특이점에서 먼 직선 — 가장 빠른 관절: 한계의 0.26배 · 판정: 정상

· 특이 자세 위 짧은 직선 — 가장 빠른 관절: 한계의 11.9배 · 판정: 차단

차단된 쪽은 특이 자세 위에서 공구 끝을 0.63 mm 옮기는 짧은 직선 이동이었습니다. 공구 끝은 0.63 mm만 움직이는데 손목 관절 하나는 72 ms에 90도를 회전해야 했습니다. 공구 끝이 움직인 거리만 보아서는 이 동작이 한계를 넘는지 알 수 없고, 차이는 관절 쪽에서만 드러납니다. 그래서 점검은 계획한 동작 전체를 고정 간격으로 나누고, 이웃한 두 시각의 관절 값 차이를 그 간격으로 나누어 관절마다 속도를 구합니다. 웨이스의 시뮬레이터는 이 속도가 한계의 90%를 넘으면 경고하고, 100%를 넘으면 차단합니다.

경고와 차단을 나누는 까닭은 두 판정 뒤에 기술자가 할 일이 다르기 때문입니다. 차단은 한계를 넘어 그대로는 실행할 수 없는 동작이고, 경고는 한계 안이지만 여유가 적은 동작입니다. 경고가 붙은 단계는 재생되고, 기술자는 그 단계의 속도나 교시점을 조정할지 판단합니다.

속도가 한계를 넘는 구간에서 점검이 할 수 있는 일은 2가지입니다. 그 단계를 막고 사유를 보여 주거나, 그 구간의 공구 끝 속도를 스스로 낮춥니다. 웨이스는 막는 쪽을 골랐습니다. 속도를 스스로 낮추면 프로그램은 실행되지만, 기술자가 모르는 사이에 사이클 시간이 달라지기 때문입니다.

한 관절의 속도는 특이점 근처에서 한계를 넘습니다
한 관절의 속도는 특이점 근처에서 한계를 넘습니다

「도달 범위 밖」과 「풀이 실패」는 기술자가 고치는 방법이 서로 다른 판정입니다

직선 이동을 계획하지 못했을 때 화면에 「갈 수 없음」 한 가지만 나오면 기술자는 무엇을 고쳐야 할지 알 수 없습니다. 계획이 안 되는 이유는 2가지로 나뉩니다.

· 도달 범위 밖 — 로봇 팔 길이로는 그 점에 닿지 않습니다. 로봇의 설치 위치를 옮기거나 목표점을 당겨야 합니다.

· 풀이 실패 — 그 점은 범위 안에 있는데 수치 해법이 관절 값을 찾지 못했습니다. 출발 자세를 바꾸거나, 중간에 교시점을 하나 더 두거나, 그 구간을 관절 이동으로 바꿉니다.

첫째는 설비 배치를 고치는 일이고 둘째는 프로그램을 고치는 일입니다. 두 판정이 한 이름으로 나오면 프로그램만 고치면 되는 구간에서 설비 배치를 다시 검토하게 됩니다. 웨이스의 240건 가운데 계획이 풀리지 않은 것은 13건이었고, 로봇 기종에 따라 0건에서 6건까지 달랐습니다. 이 13건은 모두 풀이 실패였습니다. 직선을 똑같이 20개씩 계획해도 기종마다 풀리지 않는 직선의 수가 다르다는 뜻입니다.

프레임 시간에 맞춰 자세를 전진시키는 시뮬레이터는 실행할 때마다 다른 궤적을 낼 수 있습니다

시뮬레이터가 동작을 재생하는 방식은 2가지입니다. 하나는 화면을 한 장 그릴 때마다 지난 시간만큼 자세를 조금씩 전진시키는 방식입니다. 화면을 그리는 시간은 컴퓨터와 그때의 부하에 따라 달라지므로, 같은 프로그램이 실행할 때마다 다른 궤적을 낼 수 있습니다. 다른 하나는 재생하기 전에 동작 전체를 고정 간격으로 미리 계산해 두고, 재생할 때는 그 결과를 시각으로 찾아 읽는 방식입니다.

· 계산하는 때 — 프레임마다 전진: 재생하는 동안 · 고정 간격으로 미리 계산: 재생하기 전 한 번

· 다시 실행하면 — 프레임마다 전진: 궤적이 달라질 수 있음 · 고정 간격으로 미리 계산: 같은 궤적

· 점검이 보는 것 — 프레임마다 전진: 그때그때의 궤적 · 고정 간격으로 미리 계산: 저장한 궤적 그대로

점검에는 둘째 방식이 필요합니다. 점검이 통과시킨 궤적과 화면에서 재생되는 궤적이 다르면 점검 결과는 그 재생을 설명하지 못합니다. 미리 계산해 두면 저장과 재생, 점검이 모두 같은 궤적을 봅니다. 웨이스의 시뮬레이터는 4 ms 간격으로 계획합니다. 로봇 한 기종의 10단계 프로그램을 두 번 계획했을 때 결과는 같았고, 직선 구간 623 · 921 · 1,085 mm에서 공구 끝이 직선에서 벗어난 최대값은 0.00006 mm였습니다. 이 값은 계산한 표본 기준이고 실물 로봇의 정밀도가 아닙니다.

점검이 직선 이탈을 따로 보는 까닭도 이 계산 방식에 있습니다. 관절 값은 고정 간격의 시각마다 풀고, 풀이마다 허용 오차가 있습니다. 그래서 공구 끝이 실제로 지나간 선은 이상적인 직선과 조금씩 다릅니다. 점검은 이 차이의 최대값을 직선 구간마다 계산해, 화면의 곧은 선이 계산에서도 직선인지를 보여 줍니다.

동작 프로그램은 고정 간격으로 미리 계산되고, 그 계산 결과는 점검을 통과한 뒤에만 재생됩니다
동작 프로그램은 고정 간격으로 미리 계산되고, 그 계산 결과는 점검을 통과한 뒤에만 재생됩니다

시뮬레이터는 교시점과 순서, 실행 전 점검 결과까지만 약속할 수 있습니다

실행 전 점검을 통과했다고 해서 실물이 화면과 똑같이 움직이는 것은 아닙니다. 실물 로봇의 궤적은 제조사 제어기가 계산하고, 그 계산 방식은 공개돼 있지 않습니다. 그래서 시뮬레이터는 「화면에서 본 궤적 그대로 실물이 움직인다」고 약속할 수 없습니다. 약속할 수 있는 것은 교시점과 그 순서, 그리고 실행 전 점검 결과입니다.

웨이스의 시뮬레이터에는 지금 아래 한계가 있습니다.

· 실물 대조 — 시뮬레이션 결과이고, 실물 로봇이나 실물 제어기와 대조한 결과는 없습니다.

· 재생 범위 — 화면 안에서 재생하는 것까지만 됩니다. 외부와 값을 주고받는 연결 기능은 만들지 않았습니다.

· 기구 치수 — 로봇 12종의 기구 치수를 제조사 공칭값과 대조하지 않았습니다.

· 모서리 처리 — 교시점 모서리를 둥글게 지나가는 설정은 값만 저장하고 계획에는 반영하지 않습니다. 로봇은 교시점마다 정지합니다.

자동화 기술자는 사용하는 로봇 시뮬레이터에 아래 6가지를 물어봅니다

자동화 기술자가 사용하는 시뮬레이터의 「이상 없음」이 무엇을 본 결과인지는 아래 질문으로 확인합니다.

· 끝 관절 값 — 직선 이동이 끝난 관절 값을 교시한 관절 값과 비교합니까. 허용하는 차이는 몇 도입니까.

· 관절 속도 — 직선 구간에서 관절마다 속도가 한계의 몇 배인지 보여 줍니까. 한계를 넘으면 막습니까, 속도를 스스로 낮춥니까.

· 실패 사유 — 「도달 범위 밖」과 「풀이 실패」를 나누어 알려 줍니까.

· 재현 — 같은 프로그램을 두 번 계획하면 같은 궤적이 나옵니까.

· 사유 표시 — 차단된 단계 바로 옆에 어느 항목에서 왜 막혔는지 나옵니까.

· 경계 값 — 관절이 한계의 정확히 100%로 움직이는 동작을 통과시킵니까.

마지막 질문은 반올림 때문에 필요합니다. 관절 속도를 한계에 딱 맞춰 계획한 동작 가운데 이동 시간이 4 ms의 정수배인 것은 계산하면 한계의 최대 1.0000000000001563배가 나옵니다. 비교에 여유가 없는 점검은 이 동작을 차단합니다. 웨이스의 시뮬레이터는 비교에 여유를 두어 이 동작을 통과시킵니다. 점검은 잡아야 할 것을 놓쳐도 틀리지만 정상인 동작을 막아도 틀립니다. 웨이스의 시뮬레이터는 차단된 단계 바로 아래에 사유를 적습니다.

이 글을 한 장으로 요약하면 이렇습니다 — 로봇 시뮬레이터의 실행 전 점검은 끝 관절 값, 관절 속도, 실패 사유, 재현을 미리 계산해 보여 줍니다
이 글을 한 장으로 요약하면 이렇습니다 — 로봇 시뮬레이터의 실행 전 점검은 끝 관절 값, 관절 속도, 실패 사유, 재현을 미리 계산해 보여 줍니다

끝 관절 값과 관절 속도에 답이 없는 시뮬레이터의 「이상 없음」은 공구 끝만 본 결과이고, 로봇 동작의 실행 전 점검은 관절 6개의 값과 속도를 시각마다 계산한 뒤에야 성립합니다.

WACE(웨이스)는 공장이 스스로 판단하고 멈추지 않게 하는 제조 AI 운영체제 VEXPLOR를 만드는 회사다.

(이 글은 웨이스 기술블로그에 먼저 실린 글입니다. 원문: https://blog.vexplor.com/post/what-a-robot-simulator-computes-before-running?utm_source=eo&utm_medium=social&utm_campaign=2026-10-02)

링크 복사

댓글 0
댓글이 없습니다.
추천 아티클
0