오프라인 프로그래밍이란 로봇을 생산 현장 밖에서 프로그래밍 하는 것을 의미합니다. 오프라인 프로그래밍은 생산 현장에서 프로그래밍을 함으로써 발생하게 되는 정지 시간(production downtime)이 발생하지 않습니다. 시뮬레이션과 오프라인 프로그래밍은 생산 작업 공정을 구성하기 전에 다양한 작업 공정의 구성을 살펴볼 수 있게 해줍니다. 이를 통해 작업 공정의 설계 단계에서 있을 수 있는 실수를 사전에 예측할 수 있습니다.
오프라인 프로그래밍은 로봇 시스템에 대한 투자 대비 이득(Return on Investment, ROI)을 최대화하는 가장 좋은 방법이며, 이를 위해서는 적절한 시뮬레이션 도구가 필요합니다. 새로운 프로그래램을 도입하는데 필요한 시간을 수 주에서 하루로 줄임으로써, 단기 운영 생산에 대한 로봇 자동화를 가능하게 합니다.
RoboDK를 사용하면 다양한 오프라인 프로그래밍이 가능합니다. RoboDK는 산업용 로봇의 시뮬레이션과 프로그래밍을 위한 사용자 친화적인 그래픽 인터페이스를 제공합니다. 그리고 RoboDK는 특이점과 축의 제한을 회피할 수 있도록 해 줄 것 입니다. 따라서, 로봇 프로그래밍에 대한 사전의 경험이 필요하지 않습니다. 보다 상세한 정보는 문서의 오프라인 프로그래밍 섹션에서 확인할 수 있습니다.
또한, RoboDK의 API를 사용하면 파이썬 언어를 이용하여 로봇을 프로그래밍 하고 시뮬레이션 할 수 있습니다. 파이썬은 보다 빠르게 작업을 처리하고 사용 중인 시스템과 효과적으로 연동될 수 있도록 해줄 수 있는 프로그래밍 언어입니다. 파이썬은 다른 프로그래밍 언어에 비해 단지 몇 줄로 기능을 구현할 수 있어, 보다 손쉽게 배울 수 있습니다.
보다 상세한 정보는 문서의 \RoboDK API 섹션에서 확인할 수 있습니다. RoboDK API는 C#과 Matlab으로도 사용할 수 있습니다.
# Draw a hexagon around the Target 1 from robolink import * # RoboDK's API from robodk import * # Math toolbox for robots # Start the RoboDK API: RDK = Robolink() # Get the robot (first robot found): robot = RDK.Item('', ITEM_TYPE_ROBOT) # Get the reference target by name: target = RDK.Item('Target 1') target_pose = target.Pose() xyz_ref = target_pose.Pos() # Move the robot to the reference point: robot.MoveJ(target) # Draw a hexagon around the reference target: for i in range(7): ang = i*2*pi/6 # Angle = 0,60,120,...,360 R = 200 # Polygon radius # Calculate the new position around the reference: x = xyz_ref[0] + R*cos(ang) # new X coordinate y = xyz_ref[1] + R*sin(ang) # new Y coordinate z = xyz_ref[2] # new Z coordinate target_pose.setPos([x,y,z]) # Move to the new target: robot.MoveL(target_pose) # Trigger a program call at the end of the movement robot.RunInstruction('Program_Done') # Move back to the reference target: robot.MoveL(target)
일단 시뮬레이션에서 필요한 기능이 구현되면 오프라인에서 로봇 프로그램을 생성하는 것(오프라인 프로그래밍)은 매우 쉽습니다. 예제와 같이, ABB 로봇에 사용할 수 있도록 다음의 프로그램이 생성될 것 입니다.
MODULE MOD_HexagonPath PROC HexagonPath() !Program generated by RoboDK for ABB IRB 1600ID-4/1.5 on 29/11/2014 17:42:31 ConfJ \On; ConfL \On; rdkTool.tframe:=[-4,0,371.3],[0.92387953,0,0.38268343,0]; MoveJ [[1010.634,-114.491,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj; MoveL [[810.634,-114.491,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj; MoveL [[910.634,58.715,662.29],[0,0,1,0],[0,-1,0,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj; MoveL [[1110.634,58.715,662.29],[0,0,1,0],[0,-1,0,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj; MoveL [[1210.634,-114.491,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj; MoveL [[1110.634,-287.696,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj; MoveL [[910.634,-287.696,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj; MoveL [[810.634,-114.491,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj; Program_Done; MoveL [[1010.634,-114.491,662.29],[0,0,1,0],[-1,0,-1,0],rdkExtax], rdkSpeed, rdkZone, rdkTool, \WObj:=rdkWObj; ConfJ \On; ConfL \On; ENDPROC ENDMODULE
포스트 프로세서는 로봇 프로그래밍 특정 로봇 제어기에서 사용될 수 있도록 정의합니다. 포스트 프로세서를 사용하여 시뮬레이션된 작업을 특정 로봇 제어기에 적합하도록 변환됩니다. RoboDk 포스트 프로세서는 특정한 요구 조건에 맞춰 로봇 프로그래밍을 생성하기 위해 완벽한 유연성을 제공합니다.
RoboDK는 대부분의 로봇 제어기에 대한 포스트 프로세서를 제공합니다. 이러한 포스트 프로세서는 만들고 수정하기 쉽습니다. 보다 상세한 정보는 문서의 포스트 프로세서 섹션에서 확인이 가능합니다.