|
|
| Line 1: |
Line 1: |
| − | {{Languages}}
| |
| − | <div id="BackToTop" class="noprint" style="background-color:; position:fixed; bottom:32px; left:95%; z-index:9999; padding:0; margin:0;">
| |
| − | <span style="color:blue; font-size:8pt; font-face:verdana,sans-serif; border:0.2em outset:#ceebf7; padding:0.1em; font-weight:bolder; -moz-border-radius:8px; ">
| |
| − | [[Image:TOP2.png|50px|link=#top]] </span></div>
| |
| − |
| |
| − | =Introduction=
| |
| − | This feature limits robot movements inside defined WorkSpaces areas and at specific paths between them. Each WorkSpaces is modeled by users as a rectangular prism in 3D space with entry and exit points, which defined in '''*.XML''' file. <br>
| |
| − | Robot is considered to be '''inside''' WorkSpaces if its TCP (Tool Center Point) is within the prism and '''outside''' WorkSpaces if its TCP is outside the prism. <br>
| |
| − | In case user tries to move the robot outside WorkSpaces using unauthorized path an error will raise and motion won't be started. <br>
| |
| − | {{Note | Robot segments are not considered}}
| |
| − |
| |
| − | =WorkSpace Properties=
| |
| − | WorkSpaces are cuboids defined by its four vertex points:
| |
| − | * Origin (O)
| |
| − | * Width (W)
| |
| − | * Length (L)
| |
| − | * Height (H)
| |
| − | The cuboid can have any orientation in space. The coordinates of the cuboid are given in '''WorkPiece''' coordinates of the robot TCP (including tool). <br>
| |
| − | Cuboid parameter defines relative to WorkSpace origin:
| |
| − | * O = #{X,Y,Z,Yaw,Pitch,Roll} - location
| |
| − | * L = O:#{0,WSCPL,0,0,0,0}
| |
| − | * W = O:#{WSCPW,0,0,0,0,0}
| |
| − | * H = O:#{0,0,WSCPH,0,0,0}
| |
| − | When '''WSPCL''' = WorkSpace length, '''WSPCW''' = WorkSpace width, '''WSPCH''' = WorkSpace height.
| |
| − | To sets a proper WorkSpace one need to follow these rules:
| |
| − | # WorkSpaces are grouped in WorkSpace-sets. There will be maximum 16 WorkSpace defined in one WorkSpace-set when each WorkSpace-set belongs to only one robot.
| |
| − | # WorkSpace will be indexed by unique numbers 1, 2, 3, ...
| |
| − | # Only '''active''' WorkSpace is considered.
| |
| − | # WorkSpace areas won't be able to edit (change) while robot is enabled (powered-on).
| |
| − | # WorkSpace can be '''activated''' only when the robot is disabled (powered-off).
| |
| − | # WorkSpace areas won't be active during '''conveyer tracking'''.
| |
| − | # In the first phase, if there are active WorkSpace lined to a robot joint-interpolated motions (MOVE) will be not allowed!
| |
| − | # Each WorkSpace area will have a set of '''entry & exit''' points: (En1,En2, …) and (Ex1,Ex2, …) defining exit and entry paths from one workspace to another.
| |
| − | # Entry and exit points will be '''defined only''' by #{X,Y,Z} relative to the origin (O) of the related working space.
| |
| − | # Entry and exit points '''must lie on the surface''' of the WorkSpace (not inside the WorkSpace).
| |
| − | # Entry and exit points will be defined with a '''tolerance radius R''' meaning that if the robot TCP is at distance less then R from the given point it will be considered at this point. The tolerance will be described by half-sphere of radius R – meaning only the half that is inside given WorkSpace is valid.
| |
| − | # There will be only one exit and one entry path from one given pair of WorkSpaces
| |
| − | # User can move the robot from one WorkSpace area to another only if:
| |
| − | ## Movement is straight line movement (MOVES, MOVESKD), other interpolation types like: CIRCLE, MOVE, JOG are not allowed.
| |
| − | ## Movement starts from one of the exit points of the WorkSpace area (Exi) to the entry-point (Enj) of another WorkSpace area.
| |
| − | ## No other movement outside WorkSpace area are allowed.
| |
| − | # To move a robot to a WorkSpace area From random location without using WorkSpace paths, one need to issuing separate axis movements: <br> Move A1 10 <br> Move A2 -40 ....
| |
| − | # Different robots can have different WorkSpace sets.
| |
| − | # It will be possible to know for each robot in which WorkSpace-index the robot is currently placed.
| |
| − |
| |
| − | =Graphic Movement Examples=
| |
| − | To understand the movement between WorkSpaces follow the next scenario: [[File:WSPC 1.png|right|450px]]
| |
| − | * There are three workspace objects:
| |
| − | ** wspc#1
| |
| − | ** wspc#2
| |
| − | ** wspc#3
| |
| − | * Only the following exit/entry paths between workspaces are allowed:
| |
| − | ** wspc#1.Ex1→ wspc#2.En2
| |
| − | ** wspc#2.Ex1→ wspc#3.En1
| |
| − | ** wspc#3.Ex1→ wspc#1.En1
| |
| − | ** wspc#3.Ex2→ wspc#2.En1
| |
| − |
| |
| − |
| |
| − |
| |
| − | It's allowed for entry and exit paths to cross WorkSpaces and other WorkSpaces areas unlimited number of times: <br>
| |
| − | [[File:WSPC 2.png|450px]]
| |
| − |
| |
| − |
| |
| − |
| |
| − |
| |
| − | In case two WorkSpaces areas have common intersection, robot will be able to move from one to another without limitations: <br>
| |
| − | [[File:WSPC 3.png|250px]]
| |
| − |
| |
| − | =Initialization=
| |
| − | Initialization of one WorkSpace set will be done by reading an '''XML''' file with coordinates and entry/exit points linked to a specific robot. <br>
| |
| − | To upload Workspace setting user have to use WSPC function - '''WSPC_PARSE_XML(Robot ID number as long, XML Name as string)''' <br>
| |
| − | The XML structure should contain the following: <br>
| |
| − | * Workspace id number.
| |
| − | * WorkSpace vertices: O,W,H,L (all with X,Y,Z coordinates in mm)
| |
| − | * Accuracy radius: R (in mm)
| |
| − | * Exit Points to other Workspaces: Ex1#w1, … Exk#wk
| |
| − | * Entry Points from other WorkSpaces: En1#w1, … Enk#wk
| |
| − | <br>
| |
| − | In this format: <br>
| |
| − | <syntaxhighlight lang='XML'>
| |
| − | <workspace_set>
| |
| − | <workspace number="1" name = "ToolCenter_pos">
| |
| − | <origin x="450" y="-50" z="-50" yaw="0" pitch="0" roll="0"/>
| |
| − | <dimensions x="100" y="100" z="100"/>
| |
| − | <entry_points>
| |
| − | <point ws_num="3" x="0" y="0" z="50"/>
| |
| − | </entry_points>
| |
| − | <exit_points>
| |
| − | <point ws_num="2" x="0" y="100" z="50"/>
| |
| − | </exit_points>
| |
| − | <tolerance radius="5" />
| |
| − | </workspace>
| |
| − | </workspace_set>
| |
| − | </syntaxhighlight>
| |
| − |
| |
| − | =WorkSpace Functions=
| |
| − | {{Note | '''''RobotId''''' is a long value, which sets using ''<element>.ElementID'' query}}
| |
| − | {|class="wikitable" style="text-align: left"
| |
| − | |'''Function Name'''
| |
| − | |'''Description'''
| |
| − | |'''Return Value'''
| |
| − | |-
| |
| − | |WSPC_PARSE_XML(byval RobotId as long, XML file as string) as long
| |
| − | |Get workSpaces setting as defined by user.
| |
| − | | 0 - Execution succeeded <br> MC error number - Execution failed
| |
| − | |-
| |
| − | |WSPC_GET_NUM (byval RobotId as long) as long
| |
| − | |Return how many WorkSpaces defined for each robot.
| |
| − | |Number of Workspaces - long format
| |
| − | |-
| |
| − | |WSPC_ACTIVATE_ALL(byval RobotId as long) as long
| |
| − | |Activate all WorkSpaces which exist in the system.
| |
| − | | 0 - Execution succeeded <br> 1 - Execution failed
| |
| − | |-
| |
| − | |WSPC_DEACTIVATE_ALL(byval RobotId as long) as long
| |
| − | |Deactivate all WorkSpaces which exist in the system.
| |
| − | | 0 - Execution succeeded <br> 1 - Execution failed
| |
| − | |-
| |
| − | |WSPC_ACTIVATE(byval RobotId as long, byval workspace_number as long) as long
| |
| − | |Activate specific WorkSpace
| |
| − | | 0 - Execution succeeded <br> 1 - Execution failed
| |
| − | |-
| |
| − | |WSPC_DEACTIVATE(byval RobotId as long, byval workspace_number as long) as long
| |
| − | |Dectivate specific WorkSpace
| |
| − | | 0 - Execution succeeded <br> 1 - Execution failed
| |
| − | |-
| |
| − | |WSPC_GET_INDEX(byval RobotId as long) as long
| |
| − | |Return WorkSpace indexs which the robot within
| |
| − | |BIN format - as Workspaces indexs
| |
| − | |-
| |
| − | |WSPC_FIND_ENTRY(byval RobotId as long, byval workspace_number as long, byval linked_workspace_number as long, entry_loc as generic location) as long
| |
| − | |Defined entry location according to currnet Workspaces and the linked Workspaces
| |
| − | | 0 - Execution succeeded <br> 1 - Execution failed
| |
| − | |-
| |
| − | |WSPC_FIND_EXIT(byval RobotId as long, byval workspace_number as long, byval linked_workspace_number as long, exit_loc as generic location) as long
| |
| − | |Defined exit location according to currnet WSPC and the linked WSPC
| |
| − | | 0 - Execution succeeded <br> 1 - Execution failed
| |
| − | |}
| |
| − |
| |
| | =WorkSpace Example= | | =WorkSpace Example= |
| | {|class="wikitable" style="text-align: center" | | {|class="wikitable" style="text-align: center" |
| Line 160: |
Line 21: |
| | * WSPC status | | * WSPC status |
| | }} | | }} |
| | + | =Steps= |