로봇 가공

공작기계(3축또는5축 CNC)와같은산업용로봇을사용할수있습니다. CNC 기계와같은결과를얻으려면산업용로봇에는기계프로그램을로봇프로그램으로변환하기위해 RoboDK와같은고급오프라인프로그래밍소프트웨어가필요합니다.

로봇가공에는밀링, 드릴링, 모따기및디버링과같은다양한재료제거응용프로그램이포함되며일반적으로자동화된공작기계(CNC)에서수행됩니다.

부품치수는 CAD(Computer-Aided Design, 컴퓨터이용설계) 소프트웨어를사용하여정의한다음 CAM(Computer-Aided Manufacturing, 컴퓨터이용가공) 소프트웨어를통해G 코드와같은제조프로그램으로변환됩니다. 그런다음 RoboDK의오프라인프로그래밍도구를사용하여제조프로그램을로봇프로그램으로변환할수있습니다.

작업공간을확장하기위해턴테이블및선형레일과같은추가축을로봇과동기화할수있습니다.

로봇 가공 예제

이섹션에서는로봇가공과관련된몇가지예제를보여줍니다. 이러한예제중일부는플러그인을사용하여 CAM 툴패스를생성하는방법을보여줍니다. 하지만 APT, NC 또는 G 코드파일과같은일반적인 5축툴패스는 RoboDK에서직접불러올수있습니다.

예제 섹션에서 예제 프로젝트에 대해 자세히 알아보기.

로봇가공프로젝트에대한더많은예제는문서의 CAM Add-Ins 섹션에서확인할수있습니다. 예: Mastercam, MecSoft/RhinoCAM, Inventor, FeatureCAM 또는 Fusion 360.

로봇 가공 시작하기

이예제는 RoboDK에서로봇가공의기본사항과 3축로봇가공작업을로봇가공시뮬레이션및로봇프로그램으로변환하는방법을이해하는데도움이됩니다.

이 로봇 가공 예제에 대해 자세히 알아보기.

로봇 가공 시작하기 (5축)

이예제는 RoboDK에서로봇가공설정을구성하는방법과 5축로봇가공작업을로봇가공시뮬레이션및로봇프로그램으로변환하는방법을이해하는데도움이됩니다.

또한이예제는서로다른가공작업사이에서안전한접근/후퇴동작을만드는데도움이됩니다.

이 예제에 대해 자세히 알아보기.

외부 축을 이용한 로봇 가공

이예제는로봇가공을위해 3개의추가외부축이장착된 KUKA 로봇을사용하는방법을보여줍니다. 이셀에는 6축로봇암, 1축레일및 2축턴테이블이포함되어있습니다.

RhinoCAM 예제 섹션에서더많은정보를확인할수있습니다. RhinoCAM과 RoboDK 간의통합을통해 RhinoCAM의 APT 파일이 RoboDK로자동으로불러와집니다.

레이저 절단

이예제는레이저절단애플리케이션을위해 Yaskawa/모토만로봇을사용하는방법을보여줍니다. 로봇의절단툴패스는 RoboDK Add-In for Autodesk Fusion을사용하여정의됩니다.

이 레이저 절단 예제에 대해 자세히 알아보기.

로봇 금형 가공

이예제는로봇가공을위해 Yaskawa/모토만로봇과 RoboDK Add-In for Mastercam을사용하는방법을보여줍니다. RoboDK는 Mastercam에서생성된 NCI 또는 NC 파일을자동으로불러오는기능을지원합니다.

더많은정보는 3-Axis Robot Machining with Mastercam 예제를참조하십시오.

이 금형 가공 예제에 대해 자세히 알아보기.

로봇 디버링

이예제는디버링을위해 ABB 로봇을사용하는방법을보여줍니다. 이예제에는픽앤플레이스작업이포함됩니다.

이 플라스틱 디버링 예제에 대해 자세히 알아보기.

폴리싱

이예제는폴리싱을위해 KUKA 로봇을사용하는방법을보여줍니다.

이 플라스틱 디버링 예제에 대해 자세히 알아보기.

가공 설정

이섹션에서는로봇가공을위해오프라인으로간단한 RoboDK 스테이션을준비하는방법을보여줍니다. RoboDK 스테이션에는모든로봇, 툴, 기준좌표계, 객체및기타설정이포함되어있습니다. RoboDK 스테이션구축에대한추가정보는시작하기섹션에서확인할수있습니다.

로봇가공프로젝트를설정하려면기준좌표계에툴및 3D 객체가있는로봇이필요합니다.

1-로봇을선택하십시오.

a.파일➔Robot Machining - 영상 1 온라인 라이브러리 열기를선택하십시오.

b.필터를사용하여브랜드별, 페이로드별로봇을찾으십시오.           
예를들어, ABB IRB 2600-20/1.65(20kg 가반하중, 1.65 m 작업반경)을선택하십시오.

c.다운로드를선택하면로봇은주화면에자동으로나타날것입니다.

2-툴을선택하십시오.

a.같은온라인라이브러리에서형태➔툴을통해필터링하십시오.

b.스핀들툴을내려받으십시오.

c.툴은로봇에자동으로부착될것입니다.        
툴이로드되면온라인 라이브러리를닫아도됩니다.

3-기준좌표계를추가하십시오.

a.프로그램➔Robot Machining - 영상 2 기준 좌표계 추가를선택하십시오.

b.트리에서새기준좌표계를선택하고 F2를선택하여이름을Milling Reference로변경하십시오.

4-객체를추가하십시오.

a.파일➔Robot Machining - 영상 3 열기를선택하십시오.

b.Object wooden bowl.sld라는객체를선택하십시오.

c.스테이션트리내부에서객체를Milling Reference로끌어다놓으십시오.

Robot Machining - 영상 4

로봇 가공 프로젝트

다음단계에따라 CAM 소프트웨어를사용하여생성된 NC 파일(예: G 코드또는 APT)로새로운로봇가공프로젝트를설정하십시오.

1.유틸리티➔Robot Machining - 영상 5 로봇 가공 프로젝트(Ctrl+M)를선택하십시오.    
그림과같이새로운창이나타날것입니다.

2.경로입력섹션에서 NC 파일 선택을선택하십시오.

3.RoboDK 기본라이브러리의 NC 파일과같은 NC 파일이제공됩니다. 
C:/RoboDK/Library/Milling Bowl 3x.nc

Robot Machining - 영상 6

다음이미지와같이메뉴의왼쪽위에서로봇, 기준좌표계및툴을선택하십시오.

Robot Machining - 영상 7

가공공구경로는녹색으로표시되고경로법선은흰색벡터로표시됩니다. 도구경로를숨기려면보이는도구경로를선택취소하십시오.

경로 입력

경로입력을통해공구경로를제공하는다양한방법을선택할수있습니다. 공구경로는다음과같이정의할수있습니다.

NC 파일 선택:이섹션에설명된대로하나의 NC 파일(CAM 소프트웨어에서가져옴)

커브 선택: 커브 추종 프로젝트섹션에설명된대로하나이상의커브를 RoboDK에서좌표목록으로커브 불러오기를할수있습니다.  

포인트 선택: 포인트 추종 프로젝트섹션에설명된하나이상의포인트를RoboDK에서좌표목록으로포인트 불러오기를할수있습니다.

3D 프린트 객체: 3D 프린팅의대상으로슬라이서는형상을공구경로로변환하는데사용됩니다.

Robot Machining - 영상 8Robot Machining - 영상 9

프로그램 이벤트

로봇프로그램을생성할때고려해야하는특별한이벤트를표시하려면프로그램이벤트를선택하십시오. 여기에는툴교체, RPM 단위의스핀들속도설정, 프로그램시작또는종료시특정프로그램실행등이포함됩니다.

프로그램이벤트에서 라운딩 값을지정할수있습니다. 이렇게하면프로그램시작부분에라운딩명령이자동으로생성되어로봇가공프로그램을더부드럽게만들고로봇이흔들리는것을방지하는데도움이됩니다. 예를들어 ABB 로봇에서는 ZoneData 값을 mm 단위로설정하고, Fanuc 로봇에서는 CNT 값을백분율로설정하며, Universal Robots 컨트롤러에서는블렌딩값을 mm 단위로설정합니다.

G 코드또는 NCI 파일을사용하는경우사용자지정 M 코드는기본적으로 M_RunCode 함수호출로실행됩니다(M 코드는매개변수로전달됨). M_RunCode 호출을삭제하여사용자지정 M 호출을제거할수있습니다.

Robot Machining - 영상 10

각섹션을사용자지정하는방법에대한자세한내용을보려면마우스커서를해당필드위로이동하십시오.

예를들어툴을변경할때 CAM 소프트웨어에서제공하는툴 ID를나타내는 %1 값을사용할수있습니다. 인수를전달하는대신정적함수를호출하려면 SetTool(%1)을 SetTool%1로바꿀수있습니다. 툴 2를사용하는경우 SetTool(2) 대신 SetTool2가생성됩니다.

접근/후퇴

접근 / 후퇴이동은메뉴의오른쪽위에있습니다.

Robot Machining - 영상 11

추가를선택하여이동을추가하십시오. 녹색경로가그에따라업데이트됩니다. 정상이동 (흰색법선을따라), 탄젠트 (녹색경로를따라) 또는부품을기준으로특정축을따라이동을선택할수있습니다.

Robot Machining - 영상 12

값을더블클릭하여길이를수정하거나제거를선택하여특정이동을제거하십시오.

툴 오프셋 경로

공구오프셋경로를사용하면공구경로를따라공구의기본방향을변경할수있습니다. 이옵션은주로 TCP의 Z 축을중심으로공구를회전시키는데사용됩니다.

6축로봇은3축또는5축 CNC 제조프로그램을따르는데사용되므로추가로자유롭게정의할수있습니다. 이자유도는일반적으로 TCP의 Z 축을중심으로한회전입니다.

Robot Machining - 영상 13

기본적으로공구옵셋경로에는rotz (0)변환이표시됩니다. 이값은공구의기본방향을설정하고 TCP의 Z 축주위의방향을수정하거나다른축과조합하여수정할수있습니다. 선호되는방향은공구경로를따르는동안로봇이유지하려고하는방향입니다.

기본적으로 RoboDK는최소 공구 방향 변경알고리즘을사용합니다. 이는공구방향이공구경로를따라가능한일정하게유지됨을의미합니다. 일반적으로이옵션은로봇조인트이동을최소화하므로밀링작업에적합합니다. 또는공구 경로를 따르는 공구 방향(절삭작업에유용) 또는공구경로를로봇공구에부착해야하는경우(예: 디스펜싱또는연마) 물체를 고정하는 로봇과같은다른알고리즘 / 방법을응용하여사용할수있습니다.

Robot Machining - 영상 14

변수 최적화

원하는방향이주어지면로봇은공구의 Z 축을자유롭게회전할수있습니다. 이를통해로봇은로봇특이성과축제약을피하면서프로그램을수행할수있습니다. 기본적으로 RoboDK를사용하면 TCP 축을기준으로도구를최대20도씩 +/- 180도회전할수있습니다.

용도에따라이회전을제한하는것이좋습니다. 예를들어허용회전을반으로제한하기위해 +/- 90도를입력할수있습니다.

경로의일부지점에도달할수없는경우기준좌표계를이동하거나공구 Z 회전을사용하여이동할수있도록하는것이좋습니다. 참조키는 Alt 키를사용하여이동할수있습니다.

참조: 추정된공구경로는기준좌표계로표시되거나자동 업데이트옵션이선택된경우 TCP가수정됩니다.

Robot Machining - 영상 15

선호 구성

RoboDK는선호하는시작조인트(시작점에 대해 선호하는 조인트)에더가까운시작구성을자동으로선택합니다. 이시점에서로봇은선형이동을따르므로로봇구성은변경되지않습니다.

드롭다운메뉴에프로그램을시작하기위한가능한모든솔루션이표시됩니다. 필요한경우기본구성을선택하고업데이트를선택하여프로그램을다시계산하십시오.

Robot Machining - 영상 16


프로그램 업데이트

제공된설정에따라프로그램을얻으려면업데이트를선택하십시오. 프로그램을성공적으로만들수있으면녹색확인표시가나타납니다. 스테이션에서새로운프로그램을확인할수있습니다.

Robot Machining - 영상 17

생성된프로그램Robot Machining - 영상 18을더블클릭하거나시뮬레이션을선택하여로봇가공시뮬레이션을시작하십시오.

프로그램을마우스오른쪽버튼으로클릭하고로봇 프로그램 생성(F6)을선택하여프로그램을얻을수있습니다. 프로그램생성에대한자세한정보는프로그램섹션을참고하십시오.

Robot Machining - 영상 19

로봇 절단

경로를따라공구방향을일정하게유지할수있습니다. 이동작은절단또는용접애플리케이션에유용합니다.

경로를따라선호하는공구경로를다시계산하기위해알고리즘선택드롭다운에서경로에따른공구 방향을선택하십시오. 다른설정은공구방향이일정한가공 프로젝트프로젝트와같습니다.

Robot Machining - 영상 20

로봇으로 객체 잡기

제조작업이진행되는동안로봇과함께공구로물체 / 공구경로를잡고있을때로봇을프로그래밍할수있습니다. 이러한방법은접착제를공급하거나연마응용분야에유용합니다.

TCP 경로에공구경로를올바르게배치하기위해알고리즘 선택드롭다운에서로봇으로 객체 잡기를선택하십시오. 다른설정은공구방향이일정한가공 프로젝트와같습니다.

Robot Machining - 영상 21

커브 추종 프로젝트

RoboDK를사용하여 3D 공간에서로봇이커브를따르도록할수있습니다. RoboDK의커브는객체가장자리에서선택하거나 CSV 파일의포인트목록가져오기로확인할수있습니다. 이옵션은예를들어로봇용접애플리케이션에유용합니다.

커브추종설정을열기위해유틸리티➔커브 추종 프로젝트를선택하십시오. 이설정은로봇 가공 프로젝트와같지만경로 입력커브 선택으로사전설정되어있다는점만다릅니다.

커브 선택을선택하여화면에서커브를선택하십시오.

Robot Machining - 영상 22

마우스왼쪽클릭으로커브를선택하십시오. 같은커브를두번선택하면동작방향이전환됩니다. 또한, 이전에선택한커브를마우스오른쪽버튼으로클릭하면방향을전환하거나이전에선택한커브를선택취소할수있습니다.

Robot Machining - 영상 23

화면을마우스오른쪽버튼으로클릭하고완료를선택하거나 Esc 키를눌러설정메뉴로돌아갑니다. 녹색경로는객체에대한로봇동작을표시합니다.

공구속도및접근/후퇴이동을각커브에적용해야하는경우와같이설정오른쪽위에서일부추가옵션을사용할수있습니다. 기본설정은다음이미지에표시됩니다.

Robot Machining - 영상 24

3D 객체에서 피처 추출

도구➔커브 생성을선택하면 RoboDK로가져온 3D 객체의피처에서커브를추출할수있습니다.

Robot Machining - 영상 25

RoboDK 창왼쪽에패널이나타나며, 이패널이활성화되어있고커브자동추출옵션이켜져있는동안커브를추출할수있습니다.

Robot Machining - 영상 26

커브를추출하려는 3D 객체위로마우스커서를이동하십시오. 커브를나타내는얇고밝은파란색선이표시됩니다. 여러지점의흰색화살표는커브의법선을나타내며, 이는공구가접근하는방향입니다.

Robot Machining - 영상 27

마우스를수직또는수평으로살짝움직여커브법선(접근방향)의방향을변경할수있습니다. 기본스텝크기는 15도이며, 커브생성패널의기울기스텝(도) 옵션으로제어됩니다.

원하는커브를확인했으면마우스를움직이지않고클릭하십시오. 커브추종프로젝트에서사용하려는모든커브를선택할때까지반복하십시오.

Robot Machining - 영상 28

RoboDK에는커브를추출한후에도수정할수있도록다양한도구가포함되어있습니다. 법선만수정하려면도구➔커브 수정으로이동하면됩니다. 이기능을사용하면이전에생성한모든커브의법선을변경할수있습니다.

커브 가져오기

RoboDK는다양한소스로부터커브를생성하거나얻을수있습니다. 다음목록은커브추종프로젝트에서사용할수있는커브를만드는도구의예를보여줍니다:

a.피처 추출: RoboDK로가져온 3D 객체에서추출합니다.

b.CSV 파일 가져오기: 커브가포함된 CSV 파일을가져옵니다.

c.CAD/CAM 플러그인을사용하여커브를가져옵니다 (CAD/CAM 플러그인).

d.SVG 또는DXF 파일에서커브를가져옵니다.

e.Surface Pattern Generator 앱을사용합니다.

f.RoboDK API를사용하여외부애플리케이션과통합합니다.

g.RoboDK TwinTrack와같은핸드프로브를사용합니다.

CSV 파일 가져오기

유틸리티➔커브 불러오기를선택하여 CSV 파일또는텍스트파일에서 RoboDK로커브를가져올수있습니다. 스테이션에커브로객체들을보여주는새로운아이템이나타납니다.

Robot Machining - 영상 29

Robot Machining - 영상 30

파일은커브의각점의 3D 좌표를가진텍스트파일일수있습니다. 선택적으로공구의 Z 축방향을 i, j, k 벡터로제공할수있습니다.

선택적으로객체의기존커브를 CSV 파일로내보내고(커브를마우스오른쪽버튼으로클릭한다음커브내보내기를선택) RoboDK에서수정하고다시가져올수있습니다.

Robot Machining - 영상 31

CSV 또는 TXT 파일을커브나포인트로가져오는방법을사용자지정하는더많은정보와예제는 RoboDK API의 예제 섹션에서확인할수있습니다.

포인트 추종 프로젝트

RoboDK를사용하여 3D 공간에서로봇이포인트를따르도록할수있습니다. RoboDK의포인트는객체, 커브에서추출하거나 CSV 파일의포인트목록으로가져올수있습니다. 이옵션은예를들어스폿용접또는드릴링응용분야에유용합니다. 다음영상은스폿용접응용프로그램을설정하는예를보여줍니다. 영상 보기.

포인트추종설정을열기위하여유틸리티➔포인트 추종 프로젝트를선택하십시오. 설정은로봇 가공 프로젝트와같지만경로 입력포인트 선택으로사전설정되어있다는점만다릅니다.

화면에서포인트를선택하려면포인트 선택을선택하십시오.

Robot Machining - 영상 32

마우스왼쪽클릭으로포인트를선택하십시오. 같은포인트를두번선택하면접근방향이전환됩니다. 또한, 포인트를마우스오른쪽버튼으로클릭하여다음선택을선택하여다음에오는점을선택할수있습니다.

Robot Machining - 영상 33

화면을마우스오른쪽버튼으로클릭하고완료를선택하거나 Esc 키를눌러설정메뉴로돌아갑니다. 녹색경로는객체에대한로봇동작을표시합니다.

공구속도및접근거리와같은일부추가옵션은오른쪽위설정에서사용할수있습니다. 기본설정은다음그림과같이표시됩니다.

Robot Machining - 영상 34

포인트 불러오기

유틸리티➔포인트 불러오기를선택하여텍스트파일또는 CSV 파일에서포인트목록을가져올수있습니다. 포인트가객체로표시되는새로운아이템이스테이션에나타납니다.

Robot Machining - 영상 35

파일은곡선의각포인트의 3D 좌표를가진텍스트파일일수있습니다. 선택적으로공구의 Z 축방향을 i, j, k 벡터로제공할수있습니다.

선택적으로커브를마우스오른쪽버튼으로클릭한다음커브 포인트 추출을선택하여객체의기존커브를포인트로변환할수있습니다.

Robot Machining - 영상 36

로봇 3D 프린팅 프로젝트

3D 프린팅또는적층제조는디지털파일에서3차원솔리드객체를만드는프로세스입니다. 산업용로봇암은3축 3D 프린터또는 RoboDK와함께5축 3D 프린터로사용할수있습니다. 다음영상은 RoboDK를오프라인으로사용하여 3D 프린팅을설정하는방법에대한개요입니다. 영상 보기.

로봇을사용한 3D 프린팅은다음방법중하나로가능합니다.

로봇 가공 프로젝트와같이 RoboDK를사용하여 G 코드프로그램(NC 파일)을로봇프로그램으로직접변환합니다. 재료흐름속도(압출기지침 E)는각움직임에대해적절히고려되며생성된프로그램에프로그램 이벤트로통합될수있습니다. G 코드는 RoboDK에서지원하는 NC 파일유형이며많은 3D 프린터에서지원되는형식이기도합니다. 대부분의슬라이서소프트웨어는 STL 파일이주어지면 G 코드를생성할수있습니다.

유틸리티➔3D 프린트 프로젝트를선택하여 3D 프린팅설정을여십시오. 이설정은로봇 가공 프로젝트와동일하지만경로입력3D 프린트 개체로사전설정되어있다는점만다릅니다. 메인화면에서객체를선택하고공구경로를자동으로얻으려면객체 선택을선택하십시오. 3D 프린팅옵션을선택하여 Slic3r을여십시오.

Robot Machining - 영상 37

Robot Machining - 영상 38

기본적으로 RoboDK는 E 지시문을Extruder라는프로그램에대한프로그램호출로변환하고 E 값을매개변수로전달합니다. 이동작을변경하려면프로그램이벤트를선택하십시오.

Robot Machining - 영상 39

압출기값(E)은각이동전에압출해야하는재료의양을나타냅니다. 이값은로봇속도와포인트사이의거리를고려하여로봇에서압출기피드를구동하는데사용할수있습니다.

또는포스트프로세서를사용하여압출기공급을계산하고그에따라적절한코드를생성할수있습니다. 다음섹션에서이에대한예제를제공합니다.

로봇 3D 프린팅 포스트 프로세서

이섹션에서는로봇포스트 프로세서를수정하여 3D 프린팅을위한이동명령을실행하기전에압출기속도를계산하는방법을보여줍니다. 또는압출기프로그램호출(압출기를구동하기위한기본명령)을사용하여로봇컨트롤러에서이러한작업을수행할수있습니다.

로봇포스트프로세서를개별화함으로써프로그램을로봇으로보내기전에 3D 프린팅을위한압출기의통합을더욱쉽게할수있습니다. 이러한작업을수행하려면로봇포스트프로세서에서프로그램이생성될때일부계산을수행하고맞춤형코드를출력해야합니다.

Note: ABB RAPID IRC5, KUKA KRC2 및 Comau 포스트와같은일부포스트프로세서는기본적으로이러한권장수정사항을구현합니다.

첫번째단계는압출기호출대신포스트프로세서의 RunCode 섹션내에서새로운압출기값(E 값)을읽는것입니다. 다음섹션은프로그램에대해생성된모든프로그램호출을처리합니다.

    def RunCode(self, code, is_function_call = False):

        if is_function_call:

            if code.startswith("Extruder("):

                # Intercept the extruder command.

                # if the program call is Extruder(123.56)

                # we extract the number as a string

                # and convert it to a number

                self.PRINT_E_NEW = float(code[9:-1])

                # Skip the program call generation

                return

            else:

                self.addline(code + "()")

        else:

            # Output program code

            self.addline(code)

압출기값(길이 / E)은로봇포스트프로세서에서 PRINT_E_NEW 변수로저장됩니다.

각각의새로운선형이동명령으로 new_move라는함수호출을실행해야합니다. MoveL 명령을시작할때이호출을추가할수있습니다.

    def MoveL(self, pose, joints, conf_RLF=None):

        """Add a linear movement"""

        # Handle 3D printing Extruder integration

        self.new_move(pose)    

       ...

또한, 압출기증분을계산하려면포스트프로세서의헤더에다음변수를추가해야합니다.

 

    # 3D Printing Extruder Setup Parameters:

    PRINT_E_AO = 5 # Analog Output ID to command the extruder flow

    PRINT_SPEED_2_SIGNAL = 0.10 # Ratio to convert the speed/flow to an analog output signal

    PRINT_FLOW_MAX_SIGNAL = 24 # Maximum signal to provide to the Extruder

    PRINT_ACCEL_MMSS = -1 # Acceleration, -1 assumes constant speed if we use rounding/blending

  

    # Internal 3D Printing Parameters

    PRINT_POSE_LAST = None # Last pose printed

    PRINT_E_LAST = 0 # Last Extruder length

    PRINT_E_NEW = None # New Extruder Length

    PRINT_LAST_SIGNAL = None # Last extruder signal

마지막으로, 이동거리, 로봇속도및로봇가속에따라적절한압출기이송명령을생성하는새로운절차를정의해야합니다. 이는압출기공급이특정아날로그출력또는맞춤형프로그램호출에의해구동된다고가정합니다.

def MoveL 프로그램정의전에다음코드를추가해야합니다.

 

    def calculate_time(self, distance, Vmax, Amax=-1):

        """Calculate the time to move a distance with Amax acceleration and Vmax speed"""

        if Amax < 0:

            # Assume constant speed (appropriate smoothing/rounding parameter must be set)

            Ttot = distance/Vmax

        else:

            # Assume we accelerate and decelerate

            tacc = Vmax/Amax;

            Xacc = 0.5*Amax*tacc*tacc;

            if distance <= 2*Xacc:

                # Vmax is not reached

                tacc = sqrt(distance/Amax)

                Ttot = tacc*2

            else:

                # Vmax is reached

                Xvmax = distance - 2*Xacc

                Tvmax = Xvmax/Vmax

                Ttot = 2*tacc + Tvmax

        return Ttot

           

    def new_move(self, new_pose):                       

        """Implement the action on the extruder for 3D printing, if applicable"""

        if self.PRINT_E_NEW isNone or new_pose is None:

            return

           

        # Skip the first move and remember the pose

        if self.PRINT_POSE_LAST isNone:

            self.PRINT_POSE_LAST = new_pose

            return         

 

        # Calculate the increase of material for the next movement

        add_material = self.PRINT_E_NEW - self.PRINT_E_LAST

        self.PRINT_E_LAST = self.PRINT_E_NEW

       

        # Calculate the robot speed and Extruder signal

        extruder_signal = 0

        if add_material > 0:

            distance_mm = norm(subs3(self.PRINT_POSE_LAST.Pos(), new_pose.Pos()))

            # Calculate movement time in seconds

            time_s = self.calculate_time(distance_mm, self.SPEED_MMS, self.PRINT_ACCEL_MMSS)

           

            # Avoid division by 0

            if time_s > 0:

                # This may look redundant but it allows you to account for accelerations and we can apply small speed adjustments

                speed_mms = distance_mm / time_s

               

                # Calculate the extruder speed in RPM*Ratio (PRINT_SPEED_2_SIGNAL)

                extruder_signal = speed_mms * self.PRINT_SPEED_2_SIGNAL

       

        # Make sure the signal is within the accepted values

        extruder_signal = max(0,min(self.PRINT_FLOW_MAX_SIGNAL, extruder_signal))

       

        # Update the extruder speed when required

        if self.PRINT_LAST_SIGNAL isNone or abs(extruder_signal - self.PRINT_LAST_SIGNAL) > 1e-6:

            self.PRINT_LAST_SIGNAL = extruder_signal

            # Use the built-in setDO function to set an analog output

            self.setDO(self.PRINT_E_AO, "%.3f" % extruder_signal)

            # Alternatively, provoke a program call and handle the integration with the robot controller

            #self.addline('ExtruderSpeed(%.3f)' % extruder_signal)

       

        # Remember the last pose

        self.PRINT_POSE_LAST = new_pose

Cura를 이용한 로봇 3D 프린팅

로봇을이용한적층제조(3D 프린팅)는 Ultimaker Cura와같은슬라이서에서툴패스를준비하고, 생성된 G 코드를 RoboDK에서로봇프로그램으로변환하여구현할수있습니다.

이 예제는 ABB IRB 6640 로봇, CEAD 압출기, ABB IRBT 6004 선형레일을사용하여선체몰드를대규모로 3D 프린팅할때 Cura와 RoboDK를함께사용하는방법을보여줍니다.

Robot Machining - 영상 40

Cura와 RoboDK를이용한 3D 프린팅은다음방법중하나로가능합니다:

1.로봇의작업공간에맞게 Cura에서커스텀 FFF 프린터를생성합니다.

2.3D 모델(STL 파일)을 Cura로가져와슬라이스하기전에 45° 기울기를적용합니다.

3.회전된 STL을슬라이스하여 G 코드프로그램을생성합니다.

4.Cura의 G 코드를 RoboDK에서로봇프로그램으로변환합니다.

5.RoboDK에서기울어진압출프로세스를시뮬레이션하고 ABB RAPID 코드를내보냅니다.

Cura에서 커스텀 프린터 만들기

Ultimaker Cura를열고 Settings → Printer → Add Printer를선택한다음 Custom → Custom FFF Printer를선택합니다.

Robot Machining - 영상 41

로봇및레일에맞게빌드볼륨을설정합니다:

1.X: 6000 mm

2.Y: 2500 mm

3.Z: 2000 mm

CEAD 압출기가외부에서가열을관리하므로히터제어를비활성화합니다.

Robot Machining - 영상 42

Cura에서 45° 기울기 적용

STL 모델은슬라이스하기전에 Cura에서 45° 회전시켜야합니다.

1.객체를선택합니다.

2.Cura의 Rotate 도구를사용하여부품을 45° 기울입니다.

3.회전된 STL을슬라이스합니다.

Robot Machining - 영상 43

Robot Machining - 영상 44

G 코드 생성 및 가져오기

모델을기울인후 Cura에서슬라이스하고프로그램을 .gcode 파일로저장합니다.

RoboDK에서 Utilities → Convert NC Program을선택하고 Cura 파일을선택합니다.

Robot Machining - 영상 45

NC 가져오기대화상자에서:

1.ABB IRB 6640 로봇을선택합니다.

2.ABB IRBT 6004 레일을외부축으로추가합니다.

3.CEAD 압출기를툴로선택합니다.

4.기준좌표계(선체플랫폼)를정의합니다.

압출기 동기화

기본적으로 RoboDK는 Cura의 E 지시자를 Extruder라는프로그램에대한호출로변환하며, E 값을매개변수로전달합니다.

이는 Tools → Options → Program Events에서수정할수있습니다.

Robot Machining - 영상 46

45° 프린팅 시뮬레이션

Cura의 G 코드를가져오면 RoboDK는기울어진압출프로세스를시뮬레이션합니다:

1.ABB IRB 6640이 Cura의툴패스를따라동작합니다.

2.CEAD 압출기가로봇동작과동기화됩니다.

3.툴방향은 Cura에서적용된 45° 기울기를반영합니다.