Last modified by Eric Nantel on 2024/10/18 09:05

From version < 46.1 >
edited by Eric Nantel
on 2024/10/16 15:07
To version < 60.1 >
edited by Eric Nantel
on 2024/10/17 14:04
< >
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -8,7 +8,7 @@
8 8  
9 9  __It's a good thing to practice with the software without an Arm connected, that way you can learn safely.__
10 10  )))
11 -| |(% style="text-align:center; vertical-align:middle; width:150px" %)[[image:ses-pro-robotic-arm-ui-info.png]]|Pressing the i "Information" icon in the software will bring you to the [[doc:ses-pro.ses-pro-software.ses-pro-arm-ui.WebHome]] page.
11 +| |(% style="text-align:center; vertical-align:middle; width:150px" %){{lightbox image="ses-pro-robotic-arm-ui-info.png"/}}|Pressing the i "Information" icon in the software will bring you to the [[doc:ses-pro.ses-pro-software.ses-pro-arm-ui.WebHome]] page.
12 12  | |(% colspan="2" rowspan="1" %)(((
13 13  = IMPORTANT =
14 14  )))
... ... @@ -26,17 +26,17 @@
26 26  )))
27 27  | |(% colspan="2" rowspan="1" %)Before using the arm, it is important that a user know what to do when an issue or emergency arises where the arm must be stopped quickly. 
28 28  The following emergency options are available based on severity:
29 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-halt.png]]|(((
29 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-halt.png"/}}|(((
30 30  **Halt (and hold)**
31 31  
32 32  This will stop every joints and hold them in their last recorded angular positions. The corresponding command is #254H<cr>.
33 33  )))
34 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-limp.png]]|(((
34 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-limp.png"/}}|(((
35 35  **Limp**
36 36  
37 37  All joints will go limp which mean there will be nothing avoiding them to turn freely (potentially causing the arm to fall). The high gear ratio of the strain wave gearing does mean there is some (low) level of resistant to rotation, but the gears and motor are nto "locked" and as such, the arm may fall. The corresponding command is #254L<cr>.
38 38  )))
39 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-emergency.png]]|(((
39 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-arm-emergency.png"/}}|(((
40 40  **Software E-Stop**
41 41  
42 42  The E-stop button within the software sets all joints to limp, this can possibly cause the arm to fall.
... ... @@ -49,7 +49,7 @@
49 49  | |(% colspan="2" rowspan="1" %)(((
50 50  = Robotic Arm =
51 51  )))
52 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-version.png]]|(((
52 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-arm-version.png"/}}|(((
53 53  **Model**
54 54  
55 55  The software currently supports the following Lynxmotion PRO Arms:
... ... @@ -61,15 +61,15 @@
61 61  
62 62  In practice, each 5DoF arm has joint 4 at a fixed angle, otherwise the arms are identical to the 6DoF. Users can always purchase the missing actuator to upgrade to a 6DoF.
63 63  )))
64 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-com.png]]|(((
64 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-com.png"/}}|(((
65 65  **COM Port**
66 66  
67 67  The first joint at the base (J1) must be connected via USB to a computer running the sofware. No other joints should have a USB connection. A USB 3.0 port or higher on the computer is suggested, as the lower communication speeds fo USB 2.0 or 1.0 may impede communication and cause unecessary delay or issues.
68 68  )))
69 69  | |(% style="text-align:center; vertical-align:middle" %)(((
70 -[[image:ses-pro-robotic-arm-ui-connect.png]]
70 +{{lightbox image="ses-pro-robotic-arm-ui-connect.png"/}}
71 71  
72 -[[image:ses-pro-robotic-arm-ui-disconnect.png]]
72 +{{lightbox image="ses-pro-robotic-arm-ui-disconnect.png"/}}
73 73  )))|(((
74 74  **Connect / Disconnect**
75 75  
... ... @@ -78,12 +78,12 @@
78 78  | |(% colspan="2" rowspan="1" %)(((
79 79  = Gripper =
80 80  )))
81 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-version-drop.png]]|(((
81 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-arm-version-drop.png"/}}|(((
82 82  **Model**
83 83  
84 84  The software currently supports two models of Lynxmotion PRO compatible grippers based on DH Robots' PGE-50-40 and CGE-10-10 electric grippers. The Lynxmotion kits include hardware to mount the fingers in multiple different offsets for smaller or larger objects. In the sequencer, the position of the fingers for each gripper are included in the sequencer as G.
85 85  )))
86 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-version.png]]|(((
86 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-gripper-version.png"/}}|(((
87 87  * PGE-50-40 (40mm default configuration)
88 88  * PGE-50-40 (60mm configuration)
89 89  * PGE-50-40 (80mm configuration)
... ... @@ -91,22 +91,22 @@
91 91  * CGE-10-10 (40mm configuration)
92 92  * CGE-10-10 (60mm configuration)
93 93  )))
94 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-com.png]]|(((
94 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-gripper-com.png"/}}|(((
95 95  **COM Port**
96 96  
97 97  Choose the appropriate COM port to which the gripper is connected (via its own USB cable). If you are not certain, you can check Windows -> Device Manager
98 98  )))
99 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-baud.png]]|(((
99 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-gripper-baud.png"/}}|(((
100 100  **Baudrate**
101 101  
102 102  The DH Robotics grippers provide the option to change the baud rate, though the default is 115200. If the gripper is configured by the user to a different baud rate, it is important to select the corresponding baud rate in the software.
103 103  )))
104 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-connect.png]]|(((
104 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-gripper-connect.png"/}}|(((
105 105  **Connect**
106 106  
107 107  Pressing CONNECT establishes a connection to the gripper and goes through the initilization process once, opening the gripper fully. Once connection has been established, the light next to the button will go from red to green.
108 108  )))
109 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-init.png]]|(((
109 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-gripper-init.png"/}}|(((
110 110  **Initialize**
111 111  
112 112  Initializing the gripper opens it fully. This is available should the user encounter issues with positioning and need to re-zero the fingers.
... ... @@ -115,22 +115,22 @@
115 115  
116 116  )))
117 117  )))
118 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-position.png]]|(((
118 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-gripper-position.png"/}}|(((
119 119  **Position**
120 120  
121 121  
122 122  )))
123 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-speed.png]]|(((
123 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-gripper-speed.png"/}}|(((
124 124  **Speed**
125 125  
126 126  The speed of motion can be adjusted either via the plus or minus buttons or entering a value between 0 and 100 and pressing enter.
127 127  )))
128 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-force.png]]|(((
128 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-gripper-force.png"/}}|(((
129 129  **Force**
130 130  
131 131  The maximum force exerted by the gripper can be adjusted either via the plus or minus buttons or entering a value between 0 and 100 and pressing enter.
132 132  )))
133 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-open-close.png]]|(((
133 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-gripper-open-close.png"/}}|(((
134 134  **Open / Close**
135 135  
136 136  These are shortcut buttons to either fully open or fully close the gripper.
... ... @@ -151,7 +151,7 @@
151 151  | |(% colspan="2" rowspan="1" %)(((
152 152  The 3D model of the arm is shown as reference at all times. The display also includes a virtual plane to denote  the X-Y plane. The model updates based on the selection of the arm, gripper and finger configuration.
153 153  )))
154 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-3d.png]]|(((
154 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-arm-3d.png"/}}|(((
155 155  **View Controls**
156 156  
157 157  Zoom: Shift + Middle Scroll
... ... @@ -163,7 +163,7 @@
163 163  | |(% colspan="2" rowspan="1" %)(((
164 164  = Manual Move =
165 165  )))
166 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-joints.png]]|(((
166 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-arm-joints.png"/}}|(((
167 167  **Joints Control (angular)**
168 168  
169 169  In Joints mode, the user can control the angle of each joint.
... ... @@ -172,12 +172,12 @@
172 172  * Using the + and - sings will move by the amount specified in the drop down menu.
173 173  * The RESET button will send the arm to Zero on all joints
174 174  )))
175 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-coordinates.png]]|(((
175 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-arm-coordinates.png"/}}|(((
176 176  **Coordinates Control**
177 177  
178 178  In coordinate control the user can control the cartesian position of the end effector
179 179  )))
180 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-coordinates-lock.png]]|(((
180 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-arm-coordinates-lock.png"/}}|(((
181 181  **End Effector Lock**
182 182  
183 183  The orientation of the end effector can be locked with the "ENABLED" button.
... ... @@ -199,8 +199,8 @@
199 199  | |(% colspan="2" rowspan="1" %)(((
200 200  = Telemetry =
201 201  )))
202 -| |(% colspan="2" %)[[image:ses-pro-robotic-arm-ui-telemetry.png]]
203 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-telemetry-drop.png]]|(((
202 +| |(% colspan="2" %){{lightbox image="ses-pro-robotic-arm-ui-telemetry.png"/}}
203 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-telemetry-drop.png"/}}|(((
204 204  **Data to Display**
205 205  
206 206  Various telemetry data can be retrieved from each actuators / joints, here is what the software support:
... ... @@ -217,7 +217,7 @@
217 217  * PCB Temperature
218 218  * Probe Temperature
219 219  )))
220 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-telemetry-hide.png]]|(((
220 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-telemetry-hide.png"/}}|(((
221 221  **Display / Hide **
222 222  
223 223  At the bottom of the graphics you will find squares to activate / deactivate the desired actuator / joint to be displayed in the graph.
... ... @@ -228,106 +228,113 @@
228 228  | |(% colspan="2" rowspan="1" %)(((
229 229  **Sequence**
230 230  
231 -
231 +That's where you can create and edit the sequence you need to play in your particular project.
232 232  )))
233 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-sequence.png]]|(((
233 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-sequence.png"/}}|(((
234 234  **Sequence Selector**
235 235  
236 -
236 +Multiple sequences can be open at once and this is where you will be selecting which one will be displayed and/or played.
237 237  )))
238 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-sequence-add.png]]|(((
238 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-sequence-add.png"/}}|(((
239 239  **Add**
240 240  
241 -
241 +Create a new Sequence that will be automatically selected.
242 242  )))
243 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-sequence-remove.png]]|(((
244 -**Substract**
243 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-sequence-remove.png"/}}|(((
244 +**Subtract**
245 245  
246 -
246 +Remove / Delete the currently selected Sequence.
247 247  )))
248 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-sequence-copy.png]]|(((
248 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-sequence-copy.png"/}}|(((
249 249  **Copy**
250 250  
251 -
251 +Create a copy of the currently selected Sequence and add a "- copy" to it's name.
252 252  )))
253 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-sequence-save.png]]|(((
253 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-sequence-save.png"/}}|(((
254 254  **Save**
255 255  
256 -
256 +Saving the currently selected sequence for future use.
257 257  )))
258 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-sequence-open.png]]|(((
258 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-sequence-open.png"/}}|(((
259 259  **Open**
260 260  
261 -
261 +Opening a previously saved sequence.
262 262  )))
263 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-sequence-delete.png]]|(((
263 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-sequence-delete.png"/}}|(((
264 264  **Delete**
265 265  
266 -
266 +Deleting the ALL sequence leaving an empty "Sequence 1"
267 267  )))
268 -| |(% colspan="2" rowspan="1" %)**Frames**
269 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-frame-add.png]]|(((
268 +| |(% colspan="2" rowspan="1" %)(((
269 +**Frames**
270 +
271 +Those are frames or cards that will allow to move to specific positions. The user can either modify them by clicking on the Record button or manually edit them.
272 +)))
273 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-frame-add.png"/}}|(((
270 270  **Add**
271 271  
272 -
276 +Create a new frame / card in the selected sequence.
273 273  )))
274 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-frame-sequence.png]]|(((
278 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-frame-sequence.png"/}}|(((
275 275  **Sequence Selector**
276 276  
277 -
281 +This button is to be removed in a future version, was there to select the sequence but ineffective at the moment.
278 278  )))
279 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-frame-record.png]]|(((
283 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-frame-record.png"/}}|(((
280 280  **Record**
281 281  
282 -
286 +Store the current positions of each joints including the gripper in the selected frame / card.
283 283  )))
284 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-frame-delete.png]]|(((
288 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-frame-delete.png"/}}|(((
285 285  **Remove**
286 286  
287 -
291 +Delete the currently selected frame / card.
288 288  )))
289 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-frame-copy.png]]|(((
293 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-frame-copy.png"/}}|(((
290 290  **Copy**
291 291  
292 -
296 +Copy all the positions from the selected frame / card.
293 293  )))
294 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-frame-paste.png]]|(((
298 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-frame-paste.png"/}}|(((
295 295  **Paste**
296 296  
297 -
301 +Paste all the position from the previously copied frame / card to the selected one.
298 298  )))
299 -| |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-sequencer-frame-invert.png]]|(((
303 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-frame-invert.png"/}}|(((
300 300  **Invert**
301 301  
302 -
306 +Invert the frame / card so the First one become the Last and everything in between too.
303 303  )))
304 -| |(% style="text-align:center; vertical-align:middle" %) |(((
305 -**Frame Name**
308 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-frame.png"/}}|(((
309 +**Frame**
306 306  
307 -
311 +* **Name:** It's possible to change the name of the frame to better represent your sequence or application.
312 +* **Length: **The frame length define the length of the movement and can be either entered manually or using "//Alt + Left Click" //and drag the frame.
308 308  )))
309 -| |(% style="text-align:center; vertical-align:middle" %) |(((
310 -**Frame length**
314 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-frame-drop.png"/}}|(((
315 +**Frame Position**
311 311  
312 -//Alt + Left Click = Drag time//
317 +Moving your cursor to the upper part of the frame will display a "hand" and then you can drag & drop the frame into a new position to re-order them.
313 313  )))
314 -| |(% style="text-align:center; vertical-align:middle" %) |(((
315 -**Frame Move**
319 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-start.png"/}}|(((
320 +**Starting Frame**
316 316  
317 -
322 +A start frame is required to calculate the speed for the first frame / card. This is usually the Zero point with all actuators being a 0deg but it's possible to make it yours by changing it manually or with the record button.
323 +
324 +Note: This frame will always be played at a fixed speed for all actuator which means they will not Stop at the same time.
318 318  )))
319 -| |(% style="text-align:center; vertical-align:middle" %) |(((
326 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-loop.png"/}}|(((
320 320  **Loop**
321 321  
322 -
329 +The amount of time you want the particular sequence to play. If you click on the "Loop" test it will become Infinite.
323 323  )))
324 -| |(% style="text-align:center; vertical-align:middle" %) |(((
331 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-edit.png"/}}|(((
325 325  **Manual Edit**
326 326  
327 -Time, angles, gripper
334 +Manually create or edit an already made frame / card in this window. Each joints and gripper can be modified that way.
328 328  )))
329 -| |(% style="text-align:center; vertical-align:middle" %) |(((
336 +| |(% style="text-align:center; vertical-align:middle" %){{lightbox image="ses-pro-robotic-arm-ui-sequencer-zoom.png"/}}|(((
330 330  **Zoom**
331 331  
332 -
339 +Allow you to zoom In or Out making the time resolution change. Something nice when dealing with long sequences.
333 333  )))
ses-pro-robotic-arm-ui-sequencer-edit.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.ENantel
Size
... ... @@ -1,0 +1,1 @@
1 +2.6 KB
Content
ses-pro-robotic-arm-ui-sequencer-frame-drop.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.ENantel
Size
... ... @@ -1,0 +1,1 @@
1 +3.5 KB
Content
ses-pro-robotic-arm-ui-sequencer-frame.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.ENantel
Size
... ... @@ -1,0 +1,1 @@
1 +1.3 KB
Content
ses-pro-robotic-arm-ui-sequencer-loop.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.ENantel
Size
... ... @@ -1,0 +1,1 @@
1 +966 bytes
Content
ses-pro-robotic-arm-ui-sequencer-start.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.ENantel
Size
... ... @@ -1,0 +1,1 @@
1 +809 bytes
Content
ses-pro-robotic-arm-ui-sequencer-zoom.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.ENantel
Size
... ... @@ -1,0 +1,1 @@
1 +506 bytes
Content
Copyright RobotShop 2018