본섹션은아래의주제에대하여설명합니다.
●시뮬레이션에대한충돌검사활성화
●충돌감지맵의정의
●로봇가공프로젝트에서자동충돌감지및회피활성화
●충돌회피프로그램의자동생성및 PRM 알고리즘을이용한다른대상또는프로그램연결
도구➔충돌체크사용을선택하여충돌감지를켜거나끄십시오. 충돌감지가활성화된상태에서충돌이감지되면모든프로그램과로봇구동이중지됩니다. 시뮬레이션이충돌상태에있으면충돌상태의모든객체, 도구와로봇링크가빨간색으로강조표시됩니다.
프로그램에충돌이있는지확인하려면다음단계를따르십시오.
1.마우스우측버튼을클릭하십시오.
2.경로및충돌확인 (Shift + F5)을선택하십시오. 이옵션은경로가가능한지신속하게확인하고 (경로확인– F5와동일) 충돌이없는지확인합니다.
도구➔충돌맵을선택하여객체들의상호작용이충돌을검사하는지를지정할수있습니다. 모든관계와충돌검사상태를표시하는새창이열립니다. 셀을두번클릭하여해당관계에대한충돌검사를활성화하거나비활성화하십시오. 자동으로일반적인설정을하려면선택기본값설정을선택하십시오.
기본적으로 RoboDK는모든로봇링크, 객체및도구를포함하여스테이션의모든움직이는객체간의충돌을확인합니다. 예외적으로, 연속적인로봇조인트는항상접촉할수있으므로충돌을검사하지않습니다.
충돌감지속도는다음요인에따라크게달라집니다.
1.충돌맵에정의된점검수: 점검이적은충돌맵을갖는것이더빠릅니다.
2.충돌검사에사용되는로봇단계: 충돌단계는도구➔옵션➔동작메뉴에서수정할수있습니다. 선형운동은단계를밀리미터단위로사용하고관절운동은단계를각도단위로사용합니다. 단계가클수록충돌검사가빨라지나결과의정확도가떨어질수있습니다.
3.컴퓨터성능: 더많은컴퓨터성능(빠른 CPU)과더많은처리스레드를사용하면충돌검사속도가빨라집니다.
4.3D 파일의복잡성: 둥근영역과같이세부수준이높은형상에는일반적으로더많은계산성능이필요합니다. 이러한형상을단순화하고삼각형수를줄이면충돌확인속도를높일수있습니다.
다음단계에따라로봇가공프로젝트에서자동충돌검사및충돌회피를활성화하십시오.
1.도구➔옵션➔캠을선택하십시오.
2.자동충돌회피허용을선택하십시오.
3.로봇가공프로젝트, 3D 프린팅, 곡선추적또는점추적프로젝트를더블클릭하십시오.
4.충돌회피:최적화매개변수에설명된대로 Z 축주위의공구방향을변경하여자동충돌회피를활성화할것입니다.
동작계획기능은로봇의작업공간내에충돌없는경로를자동으로생성합니다. RoboDK에서이기능은 "PRM (probabilistic roadmaps, 확률적로드맵)"이라는동작계획알고리즘을사용합니다.
먼저로봇작업공간의여유공간에대한맵이생성됩니다. 이맵은로봇프로그래밍중에충돌없는궤적을빠르게생성하는데사용됩니다.
PRM 알고리즘은다음과같은두가지특성이있습니다.
●확률: "구성공간"의점 (즉, 설계자가로봇이작업공간에서로봇을움직일수있는위치를알기위해사용하는점집합)은설계자가임의로선택합니다. 이를통해 PRM 알고리즘이전체작업공간을같게커버하는다른동작계획알고리즘보다빠르게구동될수있습니다.
●로드맵: PRM 알고리즘은전체로봇작업영역의 "로드맵"을만들어작동합니다.
로봇동작계획에대한추가적인내용은아래의블로그게시물을참조하십시오.
영상: RoboDK의충돌회피동작플래너기능소개
https://www.youtube.com/watch?v=KPR2aOZn924&list=PLjiA6TvRACQd8pL0EnE9Djc_SCH7wxxXl&index=10.
PRM 동작플래너의사용은두단계가있습니다. 이단계는 RoboDK에서별도로수행되어기능의효율성이향상됩니다. 더느린 "구성단계"는한번만수행하면되며, 더빠른 "질문단계"는여러번반복하여수행될수있습니다.
두단계는아래와같습니다.
RoboDK PRM 알고리즘의작동방식에대한자세한내용은링크된블로그의게시물을참조하십시오.
이섹션에서는 RoboDK 프로그램에서위의두단계를사용하는방법을설명합니다. 기능을설명하기위해용접설정예제가사용됩니다.
동작플래너를사용하려면도구가있는로봇이있어야합니다. 또한, 작업공간내에하나이상의객체를두는것이합리적입니다. 그렇지않으면충돌회피가필요하지않습니다. 생성된충돌없는경로의시작및끝위치로사용할대상을두개이상지정하면도움이될수있습니다.
용접설정예는다음프로세스를사용하여만들수있습니다.
1.로봇선택
a.파일➔온라인라이브러리열기선택
b.필터를사용하여로봇을찾으십시오. 예를들어, Doosan Robotics M1013을선택하십시오(Doosan Robotics(브랜드), 5 ~ 10 kg 가반하중및 1,000 ~ 1,500 mm 도달범위필터선택).
c.다운로드를선택하면주화면에로봇이자동으로나타납니다.
2.툴선택
a.먼저필터재설정을클릭하여이전필터를제거하고, 같은온라인라이브러리에서종류➔툴로필터링하십시오.
b.“Weld Gun(용접도구)”과같은예시의툴을다운로드하십시오.
c.툴은자동으로로봇에부착될것입니다.
d.툴이로드되면온라인라이브러리를닫아도됩니다.
3.기준좌표계추가
a.프로그램 ➔기준좌표계추가를선택하십시오.
b.트리에서새로운기준좌표계를선택하고, F2를눌러이름을“장애물참조”로변경하십시오.
4.목표추가
a.파일➔열기를선택하여컴퓨터에있는 RoboDK 라이브러리폴더를여십시오(RoboDK 설치폴더).
b."Object Table.wrl"와같은개체를선택하십시오.
c.스테이션트리내에서객체를장애물참조로끌어다놓습니다.
d."box.stl"과같은다른객체를선택하고장애물참조로드래그하십시오.
e.아래내용을수행하여테이블을로봇앞쪽으로이동하십시오.
i.장애물참조를마우스오른쪽버튼으로클릭하고 "옵션"을선택하거나트리에서참조를두번클릭하면프레임세부정보패널이나타납니다.
ii.다음에대한기준위치라는이름의패널에다음값을입력하십시오. 프로젝트이름 : 1000, 0, 0, 90, 0, 0
f.필요한경우다음단계에따라객체의크기와위치 (예: "상자")를늘리십시오.
iii.스테이션트리에서객체를마우스오른쪽버튼으로클릭하고옵션을선택하거나트리에서객체를두번클릭하면객체세부정보패널이나타납니다.
iv.추가옵션… ➔배율적용을클릭하여상자의크기를조정하고배율에 "4.0"을입력하십시오.
v.장애물참조에대한객체위치라는패널에0, 0, 200, 0, 0, 0값을입력하여상자를테이블로이동하십시오.
5.타겟생성
a.프로그램 ➔타겟 추가를 선택하십시오.
b.스테이션트리에서새타겟을선택하고 F2를선택하여이름을Start Target으로바꿉니다.
c.다음을수행하여타겟을이동하십시오.
vi.스테이션트리에서타겟을마우스오른쪽버튼으로클릭하고옵션을선택하거나 F3을눌러Start Target패널을표시하십시오.
vii.장애물참조패널에대하여대상위치에다음값을입력하십시오. 500, 0, 0, 90, 0, 180
d.같은방식으로두번째대상을만들고이름을End Target으로바꿉니다. 이전과같은방법으로 -500, 0, 0, 90, 0, 180 위치로옮깁니다.
어떠한작업이로봇작업공간을모두사용하는경우는거의없습니다. PRM 맵을생성할때로봇의조인트한계를제한하는것이좋습니다. 그렇게하면맵생성프로세스속도가빨라지고해당맵내의포인트가최상의위치에있게됩니다.
6축로봇의경우가장자주제한되는두개의조인트는다음과같습니다.
1.조인트 1(베이스조인트) - 이조인트를제한하면로봇이작업공간의어느한쪽으로너무멀리이동하는것을막습니다.
2.조인트 3(팔꿈치조인트) - 이조인트를제한하면로봇의팔꿈치구성과구성간에변경되는것을막을수있습니다.
다음프로세스를사용하여조인트한계를변경하십시오.
1.스테이션트리내에서로봇모델아이콘(예: Doosan Robotics M1013)을마우스오른쪽버튼으로클릭하고옵션…을선택하여로봇패널을엽니다. 또는스테이션트리에서로봇이름을두번클릭하십시오.
2.조인트축조그섹션에서제한하려는로봇조인트의슬라이더 (예 : θ1 및θ3)를이동하여원하는조인트하한의위치를찾으십시오.
3.조인트축조그내에서조인트하한을더블클릭하십시오. 예를들어, θ1의접합한계가현재 -180이면숫자 -180을두번클릭하십시오. 조인트하한값설정패널이나타날것입니다.
4.조인트하한을θ1 = -50 및θ3 = -90으로설정하십시오.
5.관절제한을변경하고확인을클릭하십시오.
6.조인트상한값에같은과정으로θ1 = 50을설정하십시오.
이변경사항은로봇의접근가능한작업공간을보면알수있습니다. 로봇패널의작업공간섹션에서현재툴보여주기옵션을선택하여작업공간을표시하십시오. 이제새로운조인트한계로작업공간의일부에만도달할수있음을보여줍니다.
PRM 알고리즘은다음세가지매개변수를사용하여도달가능한위치의로드맵을생성합니다.
1.샘플수—맵은로봇의접근가능한작업공간전체에무작위로배치된여러위치 (샘플)로구성됩니다. 이숫자는샘플수를결정합니다. 기본값은 100 샘플입니다.
2.샘플당에지(edge) —알고리즘은맵의모든샘플을여러다른샘플과연결하려고시도합니다. 두샘플을함께연결하는선을 "에지"라고하며이두위치사이의충돌없는경로를나타냅니다. 이속성은샘플당생성될최대에지수를나타냅니다. 기본값은샘플당25개의에지입니다.
3.로봇스텝(도) —잠재적인에지에충돌이없는지확인하면알고리즘은규칙적인간격으로중지되어충돌을확인합니다. 이간격사이의거리는로봇스텝에의해결정됩니다. 기본값은4도입니다.
이세가지매개변수는생성된로드맵이얼마나상세할것인지결정합니다. 또한, 구성단계에서로드맵을생성하는데걸리는시간에영향을줍니다.
많은샘플수와더많은샘플당에지는더세밀한로드맵을생성하여구성하는데시간이오래걸립니다. 로봇스텝이클수록맵이더빨리생성되지만, 잠재적충돌을감지하지못할수있습니다.
기본값을사용하면일반적으로15분이내에로드맵을생성할수있으나, 작업영역설정및로봇속성에따라다릅니다.
이매개변수설정에관한참고사례는이섹션의마지막에있는팁을참조하십시오.
동작플래너의 "구성단계"는로봇의작업공간로드맵을생성하는다음프로세스를사용하여달성됩니다.
1.유틸리티메뉴→충돌없는동작플래너→충돌없는맵생성으로이동하여충돌없는동작플래너패널을열거나충돌확인옆의작은화살표를클릭하고충돌없는맵만들기를선택하십시오.
2.새매개변수를입력하거나기본값을유지하십시오.
3.맵업데이트를클릭하여로드맵을생성하십시오.
PRM 알고리즘은선택한매개변수를사용하여로드맵을생성합니다. 완료되면맵보여주기상자를선택하여생성된로드맵을볼수있습니다. 샘플보여주기를클릭하면작업공간내의모든샘플을통해로봇이이동합니다.
동작플래너의 "쿼리단계"는두개의대상또는프로그램이서로연결될때액세스됩니다.
두대상을연결하려면먼저스테이션트리에서대상을선택하십시오. 대상을선택하고연결하는두가지방법이있습니다.
1.Ctrl 키이용
a.이동을시작하려는대상 (예 : "Start Target"이라는대상)을마우스왼쪽버튼으로클릭하십시오.
b.CTRL 키를누른상태로유지하십시오.
c.대상타겟을마우스왼쪽버튼으로클릭하십시오(예: "End Target").
d.두대상중하나를마우스오른쪽단추로클릭하고선택한대상링크를선택하십시오. 또는충돌없는동작플래너패널이열려있으면선택한대상 / 프로그램연결버튼을클릭하십시오.
2.Shift 키이용
a.스테이션트리에서두대상을하나씩대상위에정렬하고Start Target을End Target 위에놓습니다. 마우스오른쪽버튼을사용하여드래그앤드롭함으로써트리주위로대상을이동할수있습니다. 대상을삭제하면대상위치를선택할수있는메뉴가나타납니다.
b.두대상중하나를마우스왼쪽버튼으로클릭하십시오.
c.Shift 키를누른상태로유지하십시오.
d.다른대상을마우스왼쪽버튼으로클릭하십시오.
e.두대상중하나를마우스오른쪽단추로클릭하고선택한대상링크를선택하십시오. 또는충돌없는동작플래너패널이열려있으면선택한대상 / 프로그램연결버튼을클릭하십시오.
두방법모두저장된로드맵을사용하여두대상을연결하는새프로그램을생성합니다. 반대방향으로이동하려면반대방향으로대상을선택하십시오. 즉, Ctrl 방법을사용하여Start Target 전에End Target을선택하거나스테이션트리에서대상을 SHIFT 방법으로재배열하여대상을선택하십시오.
동작플래너는유사한방식으로두개의서로다른프로그램을함께연결할수도있습니다. 이것은두프로그램사이에충돌없는경로를만들고새로운메인프로그램을생성합니다.
용접예제의경우다음프로세스를사용하여두개의더미프로그램을작성하십시오.
1."대상좌표계" 기준좌표계의하위로4개의타겟을생성하십시오(스테이션트리에서 "대상좌표계참조"를마우스오른쪽단추로클릭하고활성기준좌표계를확인하십시오). 이후에프로그램→타겟추가를네번선택하거나Ctrl + T를4회눌러4개의대상을만듭니다.
2.스테이션트리에서각각새대상을선택하고다음이름과값을입력하십시오. 대상이름을변경하려면 F2 키를누르거나대상을마우스오른쪽단추로클릭하고이름바꾸기를선택하십시오. 대상값을변경하려면 F3 키를눌러타겟패널을표시하거나대상을마우스오른쪽단추로클릭하고옵션을선택하십시오. 대상좌표계와관련하여대상위치라고표시된섹션에새값을입력하십시오.
a.이름 : "Left Point 1" 값 : 200, 200, 0, 90, 0, -135
b.이름 : "Left Point 2" 값 : 200, -200, 0, 90, 0, -135
c.이름 : "Right Point 1" 값 : -200, 200, 0, 90, 0, 135
d.이름 : "Right Point 2" 값 : -200, -200, 0, 90, 0, 135
e.
3.첫번째프로그램을생성하십시오.
a.프로그램➔프로그램추가로이동하십시오.
b.스테이션트리에서먼저프로그램을선택하고 F2를누르거나마우스오른쪽버튼을클릭하고이름바꾸기를선택하여프로그램의이름을 "왼쪽용접"으로바꿉니다.
c.스테이션트리에서대상을먼저선택하고프로그램➔선형이동명령을선택하여타겟시작, 왼쪽지점 1, 왼쪽지점 2, 타겟시작을선형명령으로추가하십시오:.
4.같은방법으로 "오른쪽용접"이라는두번째프로그램을생성하십시오. 이번에는타겟종료, 오른쪽지점 1, 오른쪽지점 2, 타겟종료를추가하십시오.
이두더미프로그램에는용접건을활성화 / 비활성화하는명령이포함되어있지않습니다. 실제프로그램에는이러한명령이포함되어야합니다.
동작플래너를사용하여두프로그램을연결하려면다음프로세스를사용하십시오.
1.이전섹션 (타겟연결)에서설명한두가지방법중하나를사용하여두프로그램을모두선택하십시오.
2.프로그램중하나를마우스오른쪽단추로클릭하고선택한프로그램링크를선택하십시오. 충돌없는동작플래너패널이열려있으면선택한대상 / 프로그램연결을클릭하여같게수행할수있습니다.
첫번째프로그램을실행하고충돌없이이동하면 "MainSafe"라는새프로그램이만들어지고두번째프로그램이실행됩니다. 이기본프로그램은다른프로그램과마찬가지로변경을하거나이름을바꿀수있습니다.
전체맵을재생성하지않고도새로운대상을 PRM 로드맵에추가할수있습니다. 즉, 새로운객체가작업공간에추가되거나기존객체가이동하는경우에만로드맵을해야! 합니다.
새로운타겟이로드맵에추가되면 PRM 알고리즘은로드맵내에이미존재하는다수의기존지점에새로운에지세트로연결하려고시도합니다. 새대상에대해초기로드맵구성에대해선택한수와다른기본에지수를설정할수있습니다.
새대상의최대에지수는다음프로세스를사용하여설정할수있습니다.
1.유틸리티메뉴→충돌없는동작플래너→충돌없는맵만들기로이동하여충돌없는동작플래너패널을열거나충돌확인옆의작은화살표를클릭하고충돌없는맵만들기를선택하십시오.
2.새로운샘플에지라고표시된상자에모서리수를입력하십시오. 기본값은 5입니다.
로드맵에새대상을추가하는방법에는두가지가있습니다.
1.스테이션트리에서타겟을선택하십시오. 가장높은타겟을클릭하고Shift키를누른상태에서가장낮은타겟을클릭하면여러개의인접한타겟을한번에선택할수있습니다. Ctrl 키를누르면인접하지않은여러타겟을선택할수있습니다. 이후충돌없는동작플래너패널에서선택한대상추가를클릭하십시오.
2.같은방법을사용하여이전섹션 (타겟연결및연결프로그램)에서설명한선택한대상연결또는선택한프로그램연결을수행합니다. 아직로드맵에없는대상은자동으로추가됩니다.
동작플래너는사용이간단하지만, 프로그래밍작업흐름을개선하는참고사례가있습니다.
작은매개변수로시작
구성단계를실행하는데시간이오래걸릴수있습니다. 이것은로봇셀의레이아웃이지속해서변할때프로그래밍초기단계에서불편할수있습니다. 작업공간에객체를추가하거나이동할때마다전체로드맵을다시생성해야합니다.
로드맵생성을기다리는데걸리는시간을줄이려면먼저더작은매개변수를사용하는것이좋습니다.
예를들어, 다음매개변수는 10 ~ 15초이내에맵을생성할수있습니다.
1.샘플수 : 10
2.샘플당에지: 5
3.로봇스텝(도) : 4.0
위와같이수행하면가장효율적인충돌없는동작이생성되지않지만셀디자인을훨씬빠르게변경할수있습니다.
셀에있는모든객체의위치가결정되면더큰맵을생성할수있습니다(예: 기본매개변수 100, 25, 4.0).
마지막으로로봇프로그램을생성하기전에더큰로드맵을생성하는것이좋습니다(예: 500, 50, 2.0의매개변수사용). 생성하는데시간이오래걸리지만가장효율적인동작을생성합니다.
조인트한계사용
로봇조인트한계를설정하면(이전섹션조인트한계제한에설명된), 장점이있습니다. 첫째, 경우에따라구성단계가더빨라질수있습니다. 둘째, 로드맵에는실제로로봇프로그램에유용한위치가포함됩니다. 이중요한단계는잊어버리기쉽습니다.
충돌맵의적절한정의
충돌감지는두개체가충돌할때작동됩니다. 충돌맵설정에서각각움직이는객체간의상관관계를지정할수있습니다. 상호작용횟수(녹색확인표시)를줄이면충돌확인속도가빨라집니다.
빠른충돌검사
충돌없는경로를계산하는데걸리는시간은충돌감지섹션에설명된여러요소에따라다릅니다. 무엇보다도충돌확인을위한로봇스텝을늘리거나, 조인트한계를제한하거나, 3D 형상을단순화하여충돌확인속도를높일수있습니다.
3D 모델오프셋
"충돌회피"라는용어는동작플래너가모든상황에서항상충돌을피할것을제안합니다. 시뮬레이션환경에서도마찬가지입니다. 그러나현실에서는로봇이물체에아주가까이접근해도물체와충돌할수있습니다. 이것은일반적으로시뮬레이션된로봇과실제로봇간의약간의차이로인해발생합니다.
이러한충돌의일반적인예는로봇이작업에서멀어질때물체의가장자리를 "클리핑"하는경우입니다. 이것은일반적으로프로그램에 "오프셋"을포함해피할수있습니다. 오프셋을효과적으로사용하는방법에대한자세한내용은이블로그기사를참조하십시오.
로봇접근성이높은지역에서작동
로봇작업공간의모든영역이같은것은아닙니다. 로봇은작업영역의일부영역에서다른영역보다 "접근성"이더높습니다. 접근성이높은지역에서는로봇이여러방향에서포인트에접근할수있습니다. 도달가능성이낮은지역에서는로봇이한방향또는두방향에서만포인트에액세스할수있습니다.
때로는동작플래너가작업공간에서두대상사이의경로를찾지못할수도있습니다. 종종로드맵에서샘플수를늘려이문제를해결할수도있지만, 항상그런것은아닙니다.
동작플래너가지속해서대상을연결하지못하는경우, 작업이로봇작업공간에서가장접근성이뛰어난위치에있는지확인하십시오. 로봇패널을열고 (스테이션트리에서로봇을마우스오른쪽버튼으로클릭하고옵션을선택) 로봇의작업공간을보고작업공간섹션에서현재도구표시를선택합니다.