산업용로봇은반복성은높지만정확하지는않으므로로봇보정을통해산업용로봇의정확도를향상시킬수있습니다. 로봇의공칭정확도는로봇브랜드와모델에따라다릅니다. 로봇교정을사용하면로봇정확도를2~10 배향상시킬수있습니다.
선택적으로볼바테스트(원형테스트) 또는 ISO9283 위치정확도테스트를수행하여로봇의정확도를빠르게검증할수있습니다.
로봇을보정하려면측정시스템이필요합니다. RoboDK를사용하여로봇을보정하고정확한로봇프로그램을생성할수있습니다(프로그램필터링및 RoboDK의오프라인프로그래밍엔진사용포함). RoboDK는또한볼바테스트또는로봇밀링을통해보정전후로봇의정확도를테스트하는데사용될수있습니다.
로봇보정은오프라인프로그래밍(OLP)이라고도하는오프라인으로프로그래밍이된로봇의정확도를크게향상시킬수있습니다. 보정된로봇은보정되지않은로봇보다절대위치및상대위치정확도가더높습니다.
RoboDK를설치하고로봇교정을올바르게수행하려면다음항목이필요합니다.
1.하나이상의산업용로봇팔
2.측정시스템: Leica, API 또는 Faro와같은레이저트래커및 Creaform의 C-Track 스테레오카메라와같은광학 CMM이작동해야합니다.
3.RoboDK 소프트웨어가설치되어있어야하며로봇보정테스트를위한적절한라이선스가필요합니다. 네트워크라이선스를확인하려면인터넷연결이필요합니다. 로봇보정을위해 RoboDK를설치하거나업데이트하려면다음단계를수행하십시오.
a.다운로드사이트에서 RoboDK를다운로드하십시오.
https://robodk.com/download
b.측정시스템용드라이버를설정합니다(Creaform Optical CMM에는필요하지않음). 적절한폴더를압축해제하고복사하십시오.
API 레이저트래커: https://robodk.com/downloads/private/API.zip (OTII and Radian 트래커)
Faro 레이저트래커: https://robodk.com/downloads/private/Faro.zip (all Faro 트래커)
Leica 레이저트래커: https://robodk.com/downloads/private/Leica.zip (all Leica 트래커) C:/RoboDK/api/ 폴더로압축해제후복사하십시오.
측정을시작하기전에 RoboDK(오프라인설정)에서로봇설정의가상환경을생성하는것이좋습니다. 이섹션에서는 RoboDK 스테이션을오프라인으로준비하는방법에관해설명합니다. 로봇과트래커를설치하기전에 RoboDK가설치된컴퓨터에서만사용할수있습니다.
RoboDK 보정설정예제는다음폴더에서다운로드할수있습니다.
https://www.robodk.com/downloads/calibration/
오프라인셀이이미있으면이섹션을건너뛰십시오. 기준좌표계와툴좌표계는대략추정할수있습니다. 샘플스테이션은다음그림과같습니다.
RoboDK 스테이션은가상환경스테이션과보정정보가저장되는곳입니다. 스테이션은 RDK 파일로저장됩니다. 다음단계에따라로봇보정을위한로봇스테이션을처음부터새로만드십시오(비디오미리보기: https://youtu.be/Nkb9uDamFb4):
1.로봇을선택하십시오.
a.파일➔온라인라이브러리열기를선택하십시오. 온라인라이브러리가RoboDK에표시될것입니다.
b.필터를사용하여브랜드, 가반하중등으로로봇을찾으십시오.
c.다운로드를선택하면로봇이스테이션에자동으로나타납니다.
d.또는http://www.robodk.com/library와별도로로봇파일(.robot 파일확장자)을다운로드하여 RoboDK로여십시오.
2.가상스테이션모델링
a.프로그램➔기준좌표계추가를선택하여기준좌표계추가
i.로봇기본좌표계에대해하나의“측정기준” 좌표계를추가하십시오.
ii.추가한 "측정기준"과관련하여하나의 "추적기준"을추가하십시오.
iii.추적기준이볼수있는툴의위치를시각화하기위해 "측정기준" 좌표계와관련하여하나의 "툴기준"을추가할수있습니다.
팁 1:실제세계에존재하는종속성을재구성하려면트리에서항목을끌어다놓으십시오. 예를들어, 추적기준은 "측정기준"과연관되어배치되어야합니다.
팁2: ALT 키와 SHIFT + ALT 키를각각눌러기준좌표계또는툴좌표계를대략이동할수있습니다. 또는기준좌표계를두번클릭하고올바른좌표를입력할수있습니다.
팁3: 항목트리에서 F2 키를사용하여개체이름을바꿀수있습니다.
b.툴객체 (STL, IGES 및 STEP 파일은지원되는형식)를추가하고로봇 (항목트리내부)으로끌어다놓으면객체가툴로변환됩니다. 자세한내용은여기를참조하십시오.
➔
선택사항: 프로그램➔툴추가를선택하여스테이션에서시각화하려는 TCP를추가합니다(충돌또는기타확인). 대략적인 TCP 값을설정하려면아래의절차를수행하십시오.
i.새툴을더블클릭하십시오.
ii.대략적인 TCP 값을설정하십시오. 우측의두버튼을사용하여 6 개의값을한번에복사/붙여넣기할수있습니다.
iii.보정에사용된 TCP의이름을 "CalibTool id"라는이름으로바꾸는것이좋습니다. 여기서 id는보정대상번호입니다.
c.파일➔오픈…메뉴를사용하여가상스테이션을모델링하기위해다른 3D CAD 파일(STL, IGES, STEP, SLD, ...)을추가하십시오. 또는파일을 RoboDK의기본창으로끌어다놓습니다.
팁1: 측정작업공간의 3D 파일을가져와서로봇측정이트래커의작업공간내부에서생성되도록작업공간으로이름을지정하십시오. 또는트래커작업공간내에서측정을제한하지않으려면작업공간을보이지않게설정하십시오. 자세한내용은다음섹션에서확인할수있습니다.
팁2: RoboDK에서가져온비밀 3D 파일내보내기를차단하려면 CTRL + ALT + Shift + P를선택할수있습니다.
3.스테이션에보정모듈을추가하십시오.
a.유틸리티➔로봇보정메뉴를선택하십시오.
b.레이저트래커를선택하십시오.
그러면, 다음창이나타납니다.
이창은바로닫을수있으며, 로봇보정스테이션항목을더블클릭하면언제든지열수있습니다.
4.스테이션을저장하십시오.
a.파일➔스테이션저장을선택하십시오.
b.폴더및파일이름을입력하십시오.
c.저장을선택하십시오. 새로운RDK파일이생성될것입니다(RoboDK 스테이션파일).
2.RDK 파일을열면언제든지스테이션수정사항을복구할수있습니다(Windows에서파일을더블클릭).
요약하면, 아래의사항을다시확인하십시오.
1.보정도구의이름은 "CalibTool id"이고 ID는 1부터시작합니다. 보정도구가 3 개인경우 "CalibTool 1", "CalibTool 2"및 "CalibTool 3"이있어야합니다.
2.측정기준좌표계는로봇기본에직접적으로의존합니다.
지금은이기준좌표계의추정값을사용할수있습니다.
3.트래커기준은측정기준에직접의존합니다. 트래커기준은측정기준과관련하여레이저트래커의대략적인위치여야합니다.
4.스테이션에로봇보정프로젝트가있으며우리가취할모든측정은충돌이없고추적기가볼수있습니다(보정설정을더블클릭하고 4 개의측정그룹중각그룹에대해쇼선택).
5.충돌을자동으로확인하려면충돌을확인하는데사용하려는모든객체에 "충돌"이라는이름태그를사용해야합니다. 충돌을안전하게피하기위해보정된도구보다약 25% 큰도구를사용하는것이좋습니다.
로봇보정을성공적으로수행하는데필요한4가지측정세트가있습니다.
1.기본설정: 로봇에대한보정좌표계를배치하려면이동축1과2에대하여6개(또는그이상)의측정이필요합니다. 보정설정창에서표시를선택하면로봇이순서대로움직입니다.
2.툴설정: 툴플랜지및툴타겟(이동축 5 및 6)을교정하려면7회이상의측정이필요합니다. 표시를선택하면로봇이순서대로움직입니다.
3.보정측정: 로봇을보정하려면 60회이상의측정이필요합니다. 이러한측정은로봇작업공간에무작위로배치될수있으며주변물체와충돌하지않아도됩니다.
4.검증측정(선택): 로봇정확도를검증하기위해원하는만큼의측정을사용할수있습니다. 이러한측정은로봇의정확성을검증하고로봇을보정하는데에만사용됩니다.
처음두세트의측정은 RoboDK에의해자동으로생성됩니다. 표시를선택하면로봇이다음이미지와같이순서를따릅니다. 순서를변경해야하는경우,측정을선택하고데이터내보내기를선택하여보정측정값을 CSV 파일로내보냅니다. 이파일은 Excel 시트를사용하여편집하고데이터가져오기를클릭하여다시가져올수있습니다.
측정생성이라는매크로스크립트를사용하여마지막두세트의측정(보정및검증)을생성할수있습니다. 이매크로스크립트는로봇보정프로젝트를시작할때스테이션에자동으로추가됩니다. 매크로를두번클릭하여실행하십시오. 이매크로는사용자가다음설정을정의하도록안내하는 Python 프로그램입니다.
●측정수: 생성할측정수입니다. 로봇보정에는최소60개의측정이필요하므로기본적으로80개의측정이사용됩니다.
●기준위치: 기준위치는툴이대상을볼수있는트래커를향하는로봇의위치여야합니다.
●조인트한계 : 하부및상부조인트한계를제공해야합니다.
●직교한계: 로봇기준좌표계에대해직교한계(X, Y, Z값)를제공할수있습니다.
스크립트는도구가트래커를향하고있는위치와접합점및구속점을기준으로측정을자동생성합니다. 툴을기준으로 +/- 180도회전하면기준위치에서트래커를향하는방향을기준으로허용됩니다. 또한, 관절이동순서는충돌이없고측정작업공간내부 (작업공간이표시되도록설정된경우) 내에서발생합니다. 다음이미지는자동절차가시작되기전에사용자에게제공되는내용을보여줍니다. 절차가완료되는데최대5분이걸릴수있습니다.
원하는경우측정스크립트생성을마우스오른쪽단추로클릭하고스크립트수정을선택한후알고리즘의추가매개변수를수정하여스크립트를수정할수있습니다. 스크립트는사용자입력을스테이션매개변수로자동저장합니다. 다음이미지와같이스테이션을마우스오른쪽버튼으로클릭하고스테이션매개변수를선택하여이러한설정을보거나편집또는삭제할수있습니다.
알고리즘이완료되면새메시지가나타납니다. 로봇보정에60개의측정값을사용하려면보정을선택하십시오. 같은스크립트를다시실행하여유효성검사를위한다른측정세트를생성할수있습니다. 이단계는선택사항이지만검증목적으로60회이상의측정이권장됩니다.
마지막으로측정메뉴내에서데이터가져오기를선택하여수동으로선택한구성을가져올수도있습니다. CSV 또는 TXT 파일을 Nx6 매트릭스로가져올수있습니다. 여기서 N은구성수입니다.
측정절차를자동화하려면레이저트래커와로봇을컴퓨터에연결해야합니다. 레이저트래커를움직일경우 3점을통해기준좌표계를측정하는것이좋습니다 (이단계는축 1의원점위치를복구하려는경우필수입니다. 자세한내용은부록 II참조).
다음이미지에표시된대로하나이상의 SMR 대상을부착해야합니다(3 개이상권장). 레이저트래커를이동해야하는경우 3개의네스트를기준좌표계로사용하는것이편리합니다.
측정준비를위해서는아래의섹션을차례로수행해야합니다.
RoboDK와의통신을올바르게설정하려면레이저트래커의 IP가필요합니다. 레이저트래커와의통신을확인하려면다음단계를수행하십시오.
a.연결➔레이저트래커연결메뉴를선택하십시오. 새로운창이열릴것입니다.
b.레이저트래커의 IP를설정하십시오.
c.“연결”버튼을클릭하십시오.
연결에성공하면“준비”라는녹색메시지가표시됩니다. 창을닫을수있으며연결은활성상태로유지됩니다.
RoboDK와의통신을올바르게설정하려면로봇의 IP(또는 RS232 연결을위한 COM 포트번호)가필요합니다. 로봇과의통신을확인하려면다음단계를따르십시오.
1.연결➔로봇연결을선택하십시오. 새로운창이열릴것입니다.
2.로봇의 IP 및포트(또는 RS232를통한연결의경우 COM 포트)를설정하십시오.
3.연결버튼을클릭하십시오.
4.문제가발생하면부록을참조하십시오.
연결에성공하면준비완료를표시하는녹색메시지가표시됩니다. 위치가져오기를선택하면가상로봇의위치가실제로봇의위치와정확히일치해야합니다. 또는로봇을시뮬레이터에설정된현재위치로이동하려면현재조인트로이동을선택하십시오. 창을닫을수있으며창이닫히더라도연결은활성상태로유지됩니다.
로봇기준에부착된보정기준좌표계를측정하는것이좋습니다. 보정중에트래커를움직이거나두개의보정을비교할때도움이됩니다. 보정기준좌표계는 3개의유형지점으로정의해야합니다.
로봇과관련하여트래커를이동하지않거나축 1의원점을복구할필요가없는경우, 이단계를건너뛸수있습니다. 이경우레이저트래커의기준이사용됩니다.
레이저트래커를움직일때마다다음단계를수행하십시오.
1.연결➔레이저트래커연결을선택하십시오.
2.레이저트래커가연결되지않은경우레이저트래커의 IP를설정하고연결을선택하십시오.
3.이미지에표시된대로보정기준및트래커기준을설정하십시오. 보정기준은 "측정기준"이라고도합니다.
4.기본타겟설정을선택하십시오.
RoboDK는다음이미지에표시된메뉴를사용자에게안내합니다. 절차가완료되면레이저트래커의위치가보정기준과관련하여자동으로업데이트됩니다.
로봇캘리브레이션은4단계로나뉩니다. 각단계마다일련의측정이필요합니다. 이네단계는아래의순서를반드시준수해야합니다.
1.기본기준측정(3분)
2.툴기준측정(3분)
3.보정측정(7분, 60회측정)
4.검증측정(7분, 60회측정)
다음영상은 20 분동안위의보정을수행하는방법을보여줍니다(https://www.robodk.com/robot-calibration#tab-lt). 유효성검사측정(4단계)은로봇을보정하는데필수는아니지만정확한결과를제공합니다. 한영역에서로봇을교정하고다른영역에서로봇을검증하는것의영향을볼수도있습니다.
4가지측정세트각각에대해측정버튼을선택하십시오. 그러면새로운측정을수행하고기존측정값을텍스트파일(csv 또는 txt 형식)로가져오거나내보낼수있는새창이열립니다.
6개의측정모두에대해같은목표를측정하면툴플랜지의어느곳에서나이러한측정을수행할수있습니다. 측정을시작하려면기본설정섹션에서측정을선택하십시오. 다음과같은창이열립니다. 그런다음측정시작을선택하면로봇이예약된측정을통해차례로수행합니다.
측정이완료되면창을닫고로봇기본좌표계에대해측정기준좌표계가업데이트됩니다. 기준좌표계를선택하지않으면기준을추가하고(프로그램➔기준좌표계추가선택) 이를로봇기본기준(항목트리에서드래그앤드롭) 아래에배치할수있습니다.
요약에는보정기준좌표계 ([x, y, z, w, p, r] 형식, mm 및라디안)에대한위치및방향또는로봇기준좌표계가표시됩니다.
6개의측정에대해동일한목표를측정하는한툴플랜지의어느곳에서나측정 1-6을수행할수있습니다. 그후에측정하려는모든 TCP는동일한 TCP에대해하나의측정을추가합니다. 이경우에는 3개의 TCP가있으므로총 6 + 3 = 9 측정이됩니다. 측정을두번클릭하면해당위치에서측정을계속할수있습니다.
이전섹션과같이툴설정섹션에서측정을선택하십시오. 다음과같은창이열립니다. 측정시작을선택하면로봇이계획된측정을통해차례로수행합니다. 해당위치에서측정을계속하려면측정을두번클릭하십시오.
절차가완료되면요약에보정된 TCP가표시됩니다. TCP 정의(다음이미지“CalibTool 1”)는자동으로업데이트됩니다. TCP를선택하지않은경우새 TCP를추가하고(“프로그램➔새툴추가”선택) “재계산”을선택할수있습니다. 새로운창이나타나고측정순서에따라툴의 "id"를선택해야합니다. 동일한절차를반복하여필요한만큼많은 TCP(이경우에는 3 개의 TCP)를업데이트할수있습니다. 툴이름이숫자로끝나면도구의 ID가자동으로감지됩니다.
보정섹션에서측정을선택하십시오. 다음과같은창이열립니다. 그런다음측정시작을선택하면로봇이계획된측정을통해차례로수행합니다. 해당위치에서측정을계속하려면측정을두번클릭하십시오.
측정이완료되면창을닫으십시오. 로봇이자동으로보정되고문제가없으면다음메시지가표시됩니다.
마지막으로, 녹색화면에는보정측정에관한통계와해당측정의정확도가얼마나향상되었는지표시됩니다.
로봇을교정하는데사용한것과같은측정값을사용하여로봇의정확도를검증해서는안되므로정확도를검증하기위해추가측정을수행하는것이좋습니다(정확도결과에대한객관적인관점).
검증측정을수행하려면같은보정절차를따라야합니다. 요약에유효성검사통계가표시됩니다. 자세한내용은다음결과섹션을참조하십시오.
보정이완료되면 RoboDK에서제공하는통계를통해정확도향상을분석할수있습니다. 이통계를표시하려면로봇교정창을여십시오(로봇보정아이콘을두번클릭하십시오). 유효성검사섹션의요약창에는보정전(공칭운동학) 및보정후(보정된운동학) 오류가표시됩니다. 두개의표가제공됩니다. 하나는위치오차에관한통계를나타내고다른하나는거리오차를나타냅니다.
●위치오차: 위치오차는로봇이기준좌표계에대해한지점에도달할수있는정확도입니다.
●거리오차: 거리오차는두점사이의거리오차를측정하여얻습니다. 로봇이보는두점(캘리브레이션된운동학을사용하여얻은) 사이의거리는측정시스템 (물리적으로측정된)에서보는거리와비교됩니다. 모든조합이고려되는데315번측정하면 315 x 315 / 2 = 49455가거리오차값이됩니다.
제공된통계는평균오차, 표준편차(std) 및최대오차입니다. 또한, 평균에표준편차의3배를더한값이제공되는데, 이는모든측정의 99.98%에대한예상오차에해당합니다(오차가정규분포를따른다는점을고려하면).
통계표시를선택하면두개의히스토그램은보정전후의오차분포를보여줍니다. 하나는위치정확도에대한히스토그램이고다른하나는거리정확도입니다. 다음이미지는이예제에서사용된 315 검증측정의결과입니다.
마지막으로보고서작성을선택하면이섹션에제공된정보가포함된 PDF 보고서가생성됩니다.
로봇이캘리브레이션되면캘리브레이션된로봇의절대정확도를사용하여프로그램을생성하는두가지옵션이있습니다.
●기존프로그램필터링: 프로그램내부의모든로봇대상이로봇의정확도를향상하도록수정되었습니다. 수동으로또는 API를사용하여수행할수있습니다.
●오프라인프로그램에 RoboDK를사용하여정확한프로그램을생성하십시오 (API를사용하여생성된프로그램을포함하여생성된프로그램은이미필터링되어있습니다).
기존프로그램을수동으로필터링하려면로봇프로그램파일을 RoboDK의메인화면으로끌어다놓은후(또는파일➔열기선택) 필터를선택하십시오. 프로그램이필터링되어같은폴더에저장됩니다. 필터링알고리즘을사용하는데문제가있으면필터요약에언급됩니다. 또한, RoboDK 내에서프로그램을시뮬레이션하려는경우프로그램을가져올수있는옵션이있습니다. 프로그램에종속성(툴좌표계또는기본좌표계정의, 서브프로그램등)이있는경우첫번째프로그램을가져오는같은디렉토리에있어야합니다.
RoboDK로프로그램을가져오면절대정확도의유무와관계없이재생성할수있습니다. RoboDK의주요정확도설정(도구➔옵션➔정확도)에서항상정확한운동학을사용하여프로그램을생성할것인지, 매번묻기를원하거나현재로봇운동학을사용하려는지를결정할수있습니다. 로봇을마우스오른쪽버튼으로클릭하고 "정확한운동학사용" 태그를활성화/비활성화하여현재로봇운동학을변경할수있습니다. 활성화되어있으면녹색점이표시되고활성화되어있지않으면빨간색점이표시됩니다.
보정된로봇과필터프로그램호출을사용하는로봇프로그램이주어지면 RoboDK를사용하여완전한프로그램을필터링할수있습니다.
robot.FilterProgram(file_program)
FilterProgram이라는매크로예제는라이브러리의매크로섹션에서사용할수있습니다. 다음코드는 RoboDK API를사용하여프로그램을필터링하는예제 Python 스크립트입니다.
from robolink import*# API to communicate with RoboDK
from robodk import*# basic matrix operations
import os # Path operations
# Get the current working directory
CWD = os.path.dirname(os.path.realpath(__file__))
# Start RoboDK if it is not running and link to the API
RDK = Robolink()
# optional: provide the following arguments to run behind the scenes
#RDK = Robolink(args='/NOSPLASH /NOSHOW /HIDDEN')
# Get the calibrated station (.rdk file) or robot file (.robot):
# Tip: after calibration, right click a robot and select "Save as .robot"
calibration_file = CWD +'/KUKA-KR6.rdk'
# Get the program file:
file_program = CWD +'/Prog1.src'
# Load the RDK file or the robot file:
calib_item = RDK.AddFile(calibration_file)
ifnot calib_item.Valid():
raise Exception("Something went wrong loading "+ calibration_file)
# Retrieve the robot (no popup if there is only one robot):
robot = RDK.ItemUserPick('Select a robot to filter', ITEM_TYPE_ROBOT)
ifnot robot.Valid():
raise Exception("Robot not selected or not available")
# Activate accuracy
robot.setAccuracyActive(1)
# Filter program: this will automatically save a program copy
# with a renamed file depending on the robot brand
status, summary = robot.FilterProgram(file_program)
if status ==0:
print("Program filtering succeeded")
print(summary)
calib_item.Delete()
RDK.CloseRoboDK()
else:
print("Program filtering failed! Error code: %i"% status)
print(summary)
RDK.ShowRoboDK()
다음코드는필터타겟명령을사용하여 RoboDK API를사용하여대상(포즈대상또는조인트대상)을필터링하는예제 Python 스크립트입니다.
pose_filt, joints = robot.FilterTarget(nominal_pose, estimated_joints)
이예제는타사응용프로그램(RoboDK 이외)이포즈대상을사용하여로봇프로그램을생성하는경우에유용합니다.
from robolink import*# API to communicate with RoboDK
from robodk import*# basic matrix operations
defXYZWPR_2_Pose(xyzwpr):
return KUKA_2_Pose(xyzwpr) # Convert X,Y,Z,A,B,C to a pose
defPose_2_XYZWPR(pose):
return Pose_2_KUKA(pose) # Convert a pose to X,Y,Z,A,B,C
# Start the RoboDK API and retrieve the robot:
RDK = Robolink()
robot = RDK.Item('', ITEM_TYPE_ROBOT)
ifnot robot.Valid():
raise Exception("Robot not available")
pose_tcp = XYZWPR_2_Pose([0,0,200,0,0,0]) # Define the TCP
pose_ref = XYZWPR_2_Pose([400,0,0,0,0,0]) # Define the Ref Frame
# Update the robot TCP and reference frame
robot.setTool(pose_tcp)
robot.setFrame(pose_ref)
# Very important for SolveFK and SolveIK (Forward/Inverse kinematics)
robot.setAccuracyActive(False)# Accuracy can be ON or OFF
# Define a nominal target in the joint space:
joints =[0,0,90,0,90,0]
# Calculate the nominal robot position for the joint target:
pose_rob = robot.SolveFK(joints) # robot flange wrt the robot base
# Calculate pose_target: the TCP with respect to the reference frame
pose_target = invH(pose_ref)*pose_rob*pose_tcp
print('Target not filtered:')
print(Pose_2_XYZWPR(pose_target))
joints_approx = joints # joints_approx must be within 20 deg
pose_target_filt, real_joints = robot.FilterTarget(pose_target, joints)
print('Target filtered:')
print(real_joints.tolist())
print(Pose_2_XYZWPR(pose_target_filt))
로봇을보정한후에는일반적으로프로그램을필터링하기위해 RoboDK가필요하므로 RoboDK 라이선스가필요합니다(로봇을보정한후정확한로봇프로그램을생성하려면기본 OLP 라이선스로충분합니다). 프로그램필터링은모든교정매개변수(약30개의매개변수)를고려하여로봇의정확도를향상하기위해프로그램의대상이변경/최적화됨을의미합니다.
또는조인트오프셋과기본및툴기준좌표계(4개의조인트오프셋파라미터와기본좌표계의경우6개의파라미터, 툴좌표계의경우6개의파라미터) 만보정할수있습니다. 보정은기본전체보정을사용하는것처럼정확하지않지만로봇컨트롤러에특정매개변수를입력할수있으며로봇프로그램을생성하기위해 RoboDK에의존하지않을수있습니다.
조인트오프셋에대해서만교정을얻으려면보정매개변수버튼을클릭한다음로봇보정메뉴내부마스터링버튼을클릭하십시오.
마스터링프로그램만들기를선택하면새로운창이나타납니다. 이창에서새로운원점위치생성을고려할축을선택할수있습니다.
로봇보정창에마스터링프로그램만들기버튼이나타납니다. 로봇을새로운원위치로가져오는프로그램을생성하려면이버튼을선택하십시오. 로봇으로옮기고실행하면새로운원점위치를기록해야합니다.
로봇과 PC가연결되어있으면프로그램을마우스오른쪽버튼으로클릭하고로봇에프로그램보내기를선택하여프로그램을로봇에자동으로보낼수있습니다. 그렇지않으면, 로봇프로그램생성을선택하여홈위치에대한새로운조인트값을볼수있습니다.
예를들어, 다음단계에따라 Motoman 로봇의홈위치를업데이트해야합니다.
먼저로봇을새로운원위치로가져오려면“마스터링”프로그램을실행해야합니다.
프로그램이컨트롤러에들어가면“관리모드”(Motoman 로봇의비밀번호는보통 99999999)로로그인해야하며티치모드에있어야합니다. 다음이미지는수행하여야할단계를보여줍니다.
.
모든로봇조인트의홈위치를업데이트하십시오.
원위치가설정되면로봇을새로운원위치로가져온로봇프로그램을삭제해야합니다.
RoboDK는기준좌표계및툴좌표계를교정하기위한일부유틸리티를제공합니다. 이러한도구는유틸리티➔기준좌표계보정및유틸리티➔툴좌표계보정에서각각액세스할수있습니다.
기준좌표계또는툴좌표계(각각사용자좌표계및 TCP라고도함)를교정하려면3개이상의포인트에해당하는로봇구성이필요합니다. 이러한로봇구성은조인트값또는직교좌표(경우에따라방향데이터포함) 일수있습니다. 로봇조인트를 RoboDK 메인화면에복사하여붙여넣기로하여 RoboDK에서실제로봇구성을더욱쉽게확인할수있으므로데카르트좌표대신조인트값을사용하는것이좋습니다.
유틸리티➔툴보정을선택하여 RoboDK를사용하여 TCP를보정하십시오. 우리는다른방향을사용하여원하는만큼많은포인트를사용할수있습니다. TCP에대한더나은추정과 TCP 오류에대한더나은추정을얻을수록더많은포인트와더큰방향변경이더좋습니다.
다음은TCP를보정하는데사용할수있는두가지옵션입니다.
●방향이다른 TCP로고정점하나를터치하여보정할수있습니다.
●TCP로평면을터치함으로써(터치프로브처럼) 보정할수있습니다.
터치프로브또는스핀들을보정해야하는경우평면기준을터치하여보정하는것이좋습니다. 이방법은사용자오류에대해더안정적입니다.
TCP가구형이면구의중심이새로운 TCP로계산됩니다(구지름을제공할필요는없습니다).
평면으로 TCP를보정하려면다음단계(그림참조)를수행하십시오.
1.보정이필요한툴을선택하십시오.
2.보정방법➔”Calib XYZ by plane”을선택하십시오.
3.“조인트” 이용보정을선택하십시오.
4.사용중인로봇을선택하십시오.
5.TCP 보정에사용할구성수를선택하십시오(8가지이상의구성을권장합니다).
6.기준평면의추정치를선택하십시오. 기준평면이로봇 XY 평면(로봇기준에서)과평행하지않은경우이기준평면의추정값을± 20도내에서추가해야합니다. 이평면의위치는중요하지않으며방향만중요합니다.
7.조인트값테이블을채울수있습니다. 수동으로채우거나버튼으로복사/붙여넣기를수행하여이미지를채울수있습니다. 또한“Get Jx”버튼을사용하여시뮬레이터의로봇에서현재조인트값을얻을수있습니다. 로봇에연결된실제로봇에서조인트를얻는경우먼저로봇연결메뉴에서 "현재조인트가져오기"를선택해야합니다(RoboDK와로봇연결에대한자세한내용은첨부된이미지또는부록참조). 보정에사용되는조인트의사본을별도로보관하는것이좋습니다(예: 텍스트파일등).
8.테이블이채워지면창끝쪽에새로운 TCP 값(X, Y, Z)이“보정된 TCP”로표시됩니다. “업데이트”를선택하면 RoboDK 스테이션에서새로운 TCP가업데이트됩니다. 이방법으로는프로브의방향을찾을수없습니다.
9."오류표시"를선택할수있으며계산된 TCP (모든구성의평균)와관련된모든구성의오류가표시됩니다. 하나의구성이다른구성보다오류가큰경우삭제할수있습니다.
10.실제로봇컨트롤러의값을수동으로업데이트해야합니다 (X, Y, Z 만해당). 이 TCP가 RoboDK에의해생성된프로그램에서사용될경우로봇컨트롤러의값을업데이트할필요가없습니다.
유틸리티➔기준좌표계보정을선택하여기준좌표계를보정하십시오. 다른방법을사용하여기준좌표계를설정할수있습니다. 그림의예에서기준좌표계는세점으로정의됩니다. 점 1과 2는 X 축방향을정의하고점 3은양의 Y 축을정의합니다.
축 1과 6의마스터링/홈값을복구하려면특별한주의를기울여야합니다. 이값은축 1의로봇기본좌표계및축 6의 TCP 참조와직접관련이있습니다. 따라서외부측정을수행해야합니다. 이값을올바르게설정하십시오. 이메뉴는보정메뉴에서 "마스터링프로그램만들기"를선택하면나타납니다.
이두축의마스터링매개변수를올바르게설정하려면다음의두절차를따라야합니다.
축 6의 "홈"위치를올바르게설정하려면기준대상을사용해야합니다. 각도오프셋은측정된 TCP(X, Y, Z)를알려진 TCP에가장잘맞추는데필요한툴플랜지의 Z 축을중심으로한회전입니다. TCP 기준측정된 TCP(다음이미지참조)는보정절차의2단계에서측정된 TCP 중하나입니다. 기준 TCP는사용중인교정도구의 TCP 중하나에해당하는지알려진기준입니다.
이상적으로는툴플랜지와관련하여 CMM에서기준 TCP를측정해야합니다(로봇툴플랜지의복제본이가장적합함). 또는새로운로봇을사용하여처음으로 TCP를측정(2단계교정)하고측정된 TCP를기준으로사용할수있습니다. 엔드이펙터가항상같은위치에놓이도록다웰핀및/또는적절한툴플랜지기준을사용하는것이중요합니다.
축 1을실제로봇기본좌표계에정렬하려면로봇보정을시작하기전에3개의기본타겟을올바르게측정해야합니다. 로봇과관련하여기준좌표계를찾을수있도록이러한기본타겟을선택해야합니다.
축 1의 "홈" 위치는로봇기준설정뿐만아니라3개의기준타겟에직접의존합니다. 로봇기준설정은첫번째보정단계이며, 축 1과 2를이동및측정하여측정시스템의기준좌표계가로봇기본좌표계에대해배치됩니다.
"기본타겟설정"을누르면측정시스템의기본타겟을설정할수있습니다(다음이미지참조). 원하는로봇기준좌표계를정의하는3개의측정입니다 (처음2개의측정은 X 축을정의하고세번째점은양의 Y 축을정의합니다). 이과정을반복할수있도록로봇기본과관련된적절한기준점을사용해야합니다.
조인트 1의보정각도는3점을통해측정된기본기준의 X 축과로봇축 1 및 2를움직여측정한기본기준사이의각도입니다. 물론두벡터모두사전에트리포인트를터치하여얻은기본기준의 XY 평면에투영됩니다.
로봇보정은측정시스템이있는로봇에서측정해야합니다. 이러한측정을수행하려면컴퓨터와통신하는 Faro 레이저트래커가필요합니다. 통신은콘솔모드에서실행할수있는 driver exe 파일을통해수행됩니다.
예를들어 Faro는 "Tracker Utilities"라는무료응용프로그램을제공합니다. 이응용프로그램은무엇보다도레이저트래커를초기화하고상태점검을수행할수있습니다.
트래커를초기화하려면 "Tracker Utilities" 응용프로그램을시작하고트래커 IP를사용하여연결한다음 "Startup Checks"를선택해야합니다. 추적기가초기화되면초기화하기전에 1.5 'SMR 대상을'홈 '위치에배치해야합니다. 그렇지않으면초기화후녹색표시등이깜박이고측정값이유효하지않습니다.
초기화가완료되면다음이미지와같이 "Startup complete" 메시지를볼수있습니다.
추적기에문제가발생하면“Health Checks…”를눌러상태를검사할수있습니다. 다음두이미지는각각성공확인과실패확인을보여줍니다. 때로는케이블을다시연결하고레이저트래커를재부팅하면문제가해결됩니다.
마지막으로“측정패드”를사용하여측정할수있습니다. 레이저트래커는목표물을따라 1000Hz의속도로 XYZ 위치를측정할수있습니다. 포인트당하나의샘플과연속트리거를설정하면트래커는초당1000개의측정값을 CSV 파일로기록합니다.
이기능을사용하여로봇경로를측정하고 RoboDK의경로정확도검사를사용하여경로를따라정확도, 속도및가속도를확인할수있습니다.