산업용로봇은반복성은높지만정확하지는않으므로로봇보정을통해산업용로봇의정확도를향상시킬수있습니다. 로봇의공칭정확도는로봇브랜드와모델에따라다릅니다. 로봇교정을사용하면로봇정확도를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://robodk.com/stations#filter?feature=calibration-project.
오프라인셀이이미있으면이섹션을건너뛰십시오. 기준좌표계와툴좌표계는대략추정할수있습니다. 샘플스테이션은다음그림과같습니다.
RoboDK 스테이션은가상환경스테이션과보정정보가저장되는곳입니다. 스테이션은 RDK 파일로저장됩니다. 다음단계에따라로봇보정을위한로봇스테이션을처음부터새로만드십시오(비디오미리보기: https://youtu.be/Nkb9uDamFb4):
1.로봇을선택하십시오.
a.파일➔온라인 라이브러리 열기를선택하십시오. 온라인라이브러리가RoboDK에표시될것입니다.
b.필터를사용하여브랜드, 가반하중등으로로봇을찾으십시오.
c. 다운로드를선택하면로봇이스테이션에자동으로나타납니다.
d.또는https://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 스테이션파일).
RDK 파일을열면언제든지스테이션수정사항을복구할수있습니다(Windows에서파일을더블클릭).
요약하면, 아래의사항을다시확인하십시오.
1.기준좌표계 “측정기준”이로봇기본기준좌표계에직접연결됩니다.
현재이기준좌표계의추정값을사용할수있습니다(대략적인값).
2.트래커 기준은측정 기준에직접의존합니다. 트래커기준은측정기준과관련하여추적측정장치의예상위치여야합니다.
3.스테이션에 "로봇 보정" 프로젝트가있으며우리가취할모든측정은충돌이없고추적기가볼수있습니다(보정설정을더블클릭하고4개의측정그룹중각그룹에대해쇼선택).
4.충돌을자동으로확인하려면충돌을확인하는데사용하려는모든객체에 "충돌"이라는이름태그를사용해야합니다. 충돌을안전하게피하기위해보정된도구보다약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은구성수입니다.
툴객체 (로봇에의해유지)와기본기준객체(셀내에서정적상태유지)의두객체가필요합니다. 트래커는각측정에대한툴객체와기본기준객체를볼수있어야합니다. 이러한객체는 "모델"(VXelements)이라고도하며툴및기준좌표계객체에연결된일련의대상으로정의됩니다. 트래커는트래커에대한측정값으로이러한객체의기준좌표계를제공하며이러한대상의위치를추적합니다. RoboDK는기본기준좌표계를기준으로툴의위치에대해각측정을수행하므로측정값을변경하지않고도트래커를이동할수있습니다.
이러한객체를올바르게추적할수있도록대상그룹을툴과기준좌표계에각각연결해야합니다. 다음이미지는적절한설정의예를보여줍니다.
측정준비를위해서는아래의섹션을차례로수행해야합니다. 마지막으로, 측정절차를자동화하기위해트래커와로봇을컴퓨터에연결해야합니다.
먼저두가지모델이필요합니다. 하나의툴모델과하나의기본기준좌표계모델입니다. 하나의모델은모델기준(툴또는기본기준좌표계)과관련하여대상에해당하는점(X, Y, Z 좌표) 목록으로정의된하나의객체입니다. 필요에따라 HandyProbe를사용하여기준좌표계를배치할수있습니다.
툴및기본모델을정의하려면이단계를두번수행해야합니다.
1. VXelements를시작하고트래커를연결하십시오. 필요한경우추적기및 HandyProbe를교정하십시오.
2.VXelements의왼쪽트리에서모델 찾기를선택하고모델 검색을선택합니다. 모델(툴또는객체)에해당하는대상을선택하고 "선택"을선택하십시오.
팁: CTRL을누른상태에서대상그룹을선택하십시오.
3. 객체의기준좌표계는객체의특정특징에대하여특정위치에배치될수있습니다. 이단계는선택사항이지만로봇플랜지와관련하여 TCP 기능을정확하게배치해야하는경우권장됩니다. 예를들어스핀들축으로사용되는기준실린더를따라공구의 Z 축을정확하게배치할수있습니다. 객체의기준좌표계를올바르게이동하려면 HandyProbe를사용하고이러한기능을가상 VXelements 세션에서가져와야합니다. 사용되는모델은형상이이모델과관련하여측정되도록위치결정모델로정의되어야합니다. 점, 선, 평면, 원통, 원뿔을측정하고이러한기능과관련하여기준좌표계를정의할수있습니다.
완료되면모델을 txt 파일로내보낼수있습니다. 텍스트파일에서대상을 XYZ 포인트목록으로볼수있습니다.
RoboDK에서통신을올바르게설정하려면트래커의 IP가필요합니다. VXelements가실행되고있지않은지확인하고다음단계에따라트래커와의통신을확인하십시오.
a. “연결➔스테레오카메라연결”메뉴를선택하십시오. 새로운창이열릴것입니다.
b. 이전섹션에서생성된“기본모델”과“툴모델”을텍스트파일로입력하십시오. 이들은기준좌표계와툴좌표계를각각정의하는타겟의위치입니다.
c. “연결” 버튼을선택하십시오.
d.연결에성공하면기본및툴모델을텍스트파일(.txt)로제공해야합니다.
VXelements의통합버전이시작되고몇초후에연결에성공하면“준비”라는녹색메시지가표시됩니다. VXelements 창이닫히고연결은활성상태로유지됩니다. 연결에실패하면 Windows 작업표시줄또는작업관리자에서VXelements 프로세스가백그라운드에서실행되고있지않은지확인해야합니다(“VXelementsApiImplementation”프로세스를강제로중지하려면 CTRL + ALT + DEL을선택하십시오). 연결을선택하여RoboDK와의연결을다시시도하십시오.
RoboDK와의통신을올바르게설정하려면로봇의 IP (또는 RS232 연결을위한 COM 포트번호)가필요합니다. 로봇과의통신을확인하려면다음단계를따르십시오.
1.연결➔로봇 연결을선택하십시오. 새로운창이열릴것입니다.
2.로봇의 IP 및포트 (또는 RS232를통한연결의경우 COM 포트)를설정하십시오.
3.연결버튼을클릭하십시오.
4.문제가발생하면부록을참조하십시오.
연결에성공하면준비완료를표시하는녹색메시지가표시됩니다. 현재 조인트 가져오기를선택하면가상로봇의위치가실제로봇의위치와정확히일치해야합니다. 또는로봇을시뮬레이터에설정된현재위치로이동하려면현재 조인트로 이동을선택하십시오. 창을닫을수있으며창이닫히더라도연결은활성상태로유지됩니다.
로봇캘리브레이션은4단계로나뉩니다. 각단계마다일련의측정이필요합니다. 이네단계는아래의순서를반드시준수해야합니다.
1.기본기준측정(3분)
2.툴기준측정(3분)
3.보정측정(7분, 60회측정)
4.검증측정(7분, 60회측정)
다음영상은20분동안위의보정을수행하는방법을보여줍니다(https://youtu.be/Htpx-p7tmYs). 유효성검사측정(4단계)은로봇을보정하는데필수는아니지만정확한결과를제공합니다. 한영역에서로봇을교정하고다른영역에서로봇을검증하는것의영향을볼수도있습니다.
4가지측정세트각각에대해측정버튼을선택하십시오. 그러면새로운측정을수행하고기존측정값을텍스트파일(csv 또는 txt 형식)로가져오거나내보낼수있는새창이열립니다.
6개의측정모두에대해같은목표를측정하면툴플랜지의어느곳에서나이러한측정을수행할수있습니다. 측정을시작하려면기본 설정섹션에서측정을선택하십시오. 다음과같은창이열립니다. 그런다음 측정 시작을선택하면로봇이예약된측정을통해차례로수행합니다.
측정이완료되면창을닫고로봇기본좌표계에대해측정 기준좌표계가업데이트됩니다. 기준좌표계를선택하지않으면기준을추가하고(프로그램➔기준 좌표계 추가선택) 이를로봇기본기준(항목트리에서드래그앤드롭) 아래에배치할수있습니다.
요약에는보정기준좌표계([x, y, z, w, p, r] 형식, mm 및라디안)에대한위치및방향또는로봇기준좌표계가표시됩니다.
이단계가완료되면RoboDK의로봇에대한트래커의작업공간을실시간으로정확하게표시할수있습니다.
이전섹션과같이툴 설정섹션에서측정을선택하십시오. 다음과같은창이열립니다. 측정 시작을선택하면로봇이계획된측정을통해차례로수행합니다. 해당위치에서측정을계속하려면측정을두번클릭하십시오.
절차가완료되면요약에보정된 TCP(위치및방향)가표시됩니다. TCP 정의(다음이미지“스핀들”에서)는자동으로업데이트됩니다. TCP를선택하지않으면새 TCP를추가하고(“프로그램➔새툴추가”선택) “재계산”을선택할수있습니다.
보정섹션에서측정을선택하십시오. 다음과같은창이열립니다. 그런다음측정시작을선택하면로봇이계획된측정을통해차례로수행합니다. 해당위치에서측정을계속하려면측정을두번클릭하십시오.
측정이완료되면창을닫으십시오. 로봇이자동으로보정되고문제가없으면다음메시지가표시됩니다.
마지막으로, 녹색화면에는보정측정에관한통계와해당측정의정확도가얼마나향상되었는지표시됩니다.
로봇을교정하는데사용한것과같은측정값을사용하여로봇의정확도를검증해서는안되므로정확도를검증하기위해추가측정을수행하는것이좋습니다(정확도결과에대한객관적인관점).
검증측정을수행하려면같은보정절차를따라야합니다. 요약에유효성검사통계가표시됩니다. 자세한내용은다음결과 섹션을참조하십시오.
보정이완료되면 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)
if not 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)
if not 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
def XYZWPR_2_Pose(xyzwpr):
return KUKA_2_Pose(xyzwpr) # Convert X,Y,Z,A,B,C to a pose
def Pose_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)
if not 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가연결되어있으면프로그램을마우스오른쪽버튼으로클릭하고로봇에 프로그램 보내기를선택하여프로그램을로봇에자동으로보낼수있습니다. 그렇지않으면, 로봇 프로그램 생성을선택하여홈위치에대한새로운조인트값을볼수있습니다.
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 평면에투영됩니다.