Changes for page FlowArm LSS

Last modified by Eric Nantel on 2024/07/03 09:39

From version < 132.1 >
edited by Eric Nantel
on 2019/10/18 10:52
To version < 60.1 >
edited by Coleman Benson
on 2019/09/18 12:43
< >
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -xwiki:XWiki.ENantel
1 +xwiki:XWiki.CBenson
Hidden
... ... @@ -1,1 +1,1 @@
1 -false
1 +true
Content
... ... @@ -1,6 +1,6 @@
1 -{{lightbox image="LSS-FlowArm.png" width="400"/}}
1 +[[image:LSS-FlowArm.png||width="350"]]
2 2  
3 -[[[[image:lynxmotion-wiki-attachments.WebHome@DownloadNow.png]]>>https://www.lynxmotion.com/tools/LSS_FlowArm.zip]]
3 +[[image:wiki-download.png]]
4 4  
5 5  **Page Contents**
6 6  
... ... @@ -8,7 +8,7 @@
8 8  
9 9  = Description =
10 10  
11 -The LSS FlowArm application is intended to allow easy control of the standard Lynxmotion Servo Erector Set (S.E.S.) v2 articulated robotic arm. The graphical interface shows multiple views of the arm which can be controlled via drag and drop, as well as by manually inputting coordinates. The full-featured built-in sequencer allows you create sequences which have the arm move automatically from one position ("frame") to the next. Make use of the "teach mode" to position the arm where you want and record frames which can be modified and played back. Associating each pattern with input keys means you can easily play back and test multiple sequences.
11 +The LSS FlowArm application is intended to allow easy control of the standard Lynxmotion Servo Erector Set (S.E.S.) v2 articulated robotic arm. The graphical interface shows multiple views of the arm which can be controlled via drag and drop, as well as by manually inputting coordinates. The full-featured built-in sequencer allows you create sequences which have the arm move automatically from one position ("frame") to the next. Make use of the "teach mode" to position the arm where you want and record frames which can be modified and played back. Associating each pattern with input keys means you can easily play back and test multiple sequences.
12 12  
13 13  FlowBotics Studio was used to create this app and includes hundreds of built-in components that allow you to interface your PC to many standard computer peripherals and robotics components, and you can quickly design new components for new hardware. Easily create new projects with custom GUI screens, knobs, buttons, switches, etc. that will run live from within FlowBotics Studio without needing to wait for compilation, or export as stand-alone executable files. FlowBotics Studio includes a powerful graphics engine that allows you to make custom graphical objects by using standard bitmaps or by drawing your own shapes on the screen. Using this system, you can build entirely custom interfaces like this one for your projects and integrate photographs, drawings, and graphs.
14 14  
... ... @@ -28,7 +28,11 @@
28 28  
29 29  Before assembling the arm, each of the IDs assigned to the servos must correspond with what is needed in the software.
30 30  
31 -{{lightbox image="https://www.robotshop.com/info/wiki/lynxmotion/download/servo-erector-set-robots-kits/ses-v2-robots/ses-v2-arms/lss-articulated-arm/lss-articulated-arm-servo-setup/WebHome/SESV2-LSS-ARTICULATED-ARM-IDS.PNG" width="350"/}}
31 +* Base: 1
32 +* Shoulder: 2
33 +* Elbow: 3
34 +* Wrist: 4
35 +* Gripper: 5
32 32  
33 33  To do so, the [[LSS Configuration Software>>doc:lynxmotion-smart-servo.lss-configuration-software.WebHome]] is used. Follow the procedure outlined here: [[doc:lynxmotion-smart-servo.lss-configuration-software.lss-config-configure-ids.WebHome]]
34 34  
... ... @@ -36,38 +36,33 @@
36 36  * Servos have been assembled in correct orientation (as per assembly manual)
37 37  * Servo offsets have been updated if necessary (see procedure below).
38 38  
43 +The next important step is "STORE OFFSETS" explained below.
44 +
39 39  == Connecting via USB ==
40 40  
41 -The simplest way to connect is directly using the [[LSS-Adapter>>doc:servo-erector-set-system.ses-electronics.ses-modules.lss-adapter-board.WebHome]] (or any RS232 to USB interface). Here are the steps you need to follow in order to set this up. Follow the steps below:
47 +The simplest way to connect is directly using an RS232 to USB cable. Here are the steps you need to follow in order to set this up. Follow the steps below:
42 42  
43 43  1. Connect the USB cable to the LSS Adapter board on your robot
44 44  1. Plug the USB connector into the PC
45 -1. Connect your LSS to the LSS-Adapter with the Lynxmotion cable
46 46  1. Connect the power to the LSS Adapter via the yellow XT60 plug
47 47  1. Power on the robot (On/Off switch)
48 48  1. Start the LSS FlowArm software
49 -1. Select the appropriate COM port from the drop-down list & the baudrate (115200)
54 +1. Select the appropriate COM port from the drop-down list
50 50  1. The software sends a query to servo ID1 and once a reply is received, it determines connection has been established.
51 51  
52 52  == Connecting via Bluetooth ==
53 53  
54 -If you have purchased a Bluetooth module which is in XBee format, ensure to have the right baudrate on your bluetooth adapter, the default is 115 200 for the LSS.
59 +If you have purchased a Bluetooth module which is in XBee format, ensure
55 55  
56 56  = Interface =
57 57  
58 -Following are informations regarding the user interface of LSS FlowArm.
59 -
60 60  == Header ==
61 61  
62 -[[image:lss-flowarm-header.png||alt="lss-flowarm-header"]]
65 +[[image:lss-flowarm-header.jpg]]
63 63  
64 -**EMERGENCY STOP**
65 -
66 -At any given time you can click this button to stop the arm. This will send a "LIMP" command directly to all servos.
67 -
68 68  **STORE OFFSETS**
69 69  
70 -The "STORE OFFSETS" button configures all of the servo offsets (this makes use of the CO command as part of the [[LSS Communication Protocol>>doc:lynxmotion-smart-servo.lss-communication-protocol.WebHome]]). Before pressing the button, orient the arm as shown below (with the gripper closed), and only then click the STORE OFFSETS button. This setup only need to be done once when first setting up the arm.
69 +The "STORE OFFSETS" button configures all of the servo offsets (this makes use of the CO command as part of the [[LSS Communication Protocol>>doc:lynxmotion-smart-servo.lss-communication-protocol.WebHome]]). Before pressing the button, orient the arm as shown below (with the gripper closed), and only then click the STORE OFFSETS button.
71 71  
72 72  * Base servo aligned with the x axis
73 73  * Shoulder to elbow along z axis (straight up)
... ... @@ -75,14 +75,13 @@
75 75  * Wrist servo along R axis (parallel to elbow to wrist)
76 76  * Gripper servo closed
77 77  
78 -(% style="width:700px" %)
79 -|(% style="text-align:center; vertical-align:middle" %)[[image:lss-flowarm-offset-left.png||alt="lss-flowarm-left.png" height="300" width="300"]]|(% style="text-align:center; vertical-align:middle" %)[[image:lss-flowarm-offset-top.png||alt="lss-flowarm-top.png" height="300" width="300"]]
77 +[[image:lss-flowarm-offsets.jpg]]
80 80  
81 81  **LIMP**
82 82  
83 -Causes all servos to slowly go LIMP (i.e. lose torque), gradually loosing torque until hitting the ground. It's important to note that the software will not constantly query all servos for their position, and as such the virtual arm on screen will not update frequently if at all. If you want the virtual arm on screen to update as you move the real arm, use TEACH mode described below.
81 +Causes all servos to immediately go LIMP (i.e. lose torque). The arm will collapse. It's important to note that the software will not constantly query all servos for their position, and as such the virtual arm on screen will not update frequently if at all. If you want the virtual arm on screen to update as you move the real arm, use TEACH mode described below.
84 84  
85 -**HALT & HOLD**
83 +**STOP**
86 86  
87 87  Causes all servos to immediately stop their motion and hold their position.
88 88  
... ... @@ -123,15 +123,15 @@
123 123  
124 124  **Side View**
125 125  
126 -The left view is a representation of the arm, where the orange circles represent the location of each axis of rotation. You can move the arm in this view by clicking on and dragging anywhere in that side view screen.
124 +The left view is a representation of the arm, where the orange circles represent the location of each axis of rotation. You can move the arm in this view by clicking on and dragging the wrist rotation servo.
127 127  
128 -[[image:lss-flowarm-left.png||width="300"]]
126 +[[image:lss-flowarm-side-view.jpg]]
129 129  
130 130  **Top View**
131 131  
132 -The top view shows the arm top down. You can move the arm within this view by clicking on and dragging the dot right next to the gripper.
130 +The top view shows the arm top down. You can move the arm within this view by clicking on and dragging the wrist rotation servo.
133 133  
134 -**[[image:lss-flowarm-top.png||width="300"]]**
132 +**[[image:lss-flowarm-top-view.jpg]]**
135 135  
136 136  == Shortcuts ==
137 137  
... ... @@ -153,33 +153,36 @@
153 153  
154 154  **Gripper**
155 155  
156 -Assuming the gripper has been properly calibrated, The number below represents the opening at the tip. Fully closed should correspond to 0 degrees. We added a feature where the servo stop when it feel a current raising, this allows the user to ask for a full close and have a good grip on the item picked.
154 +Assuming the gripper has been properly calibrated, The number below represents the opening at the tip. Fully closed should correspond to 0 degrees. In order to grasp an object, DO NOT have the servo rotate to a position which it cannot reach. In order to ensure the gripper servo does not go into error mode, the gripper should not exert much force on the object.
157 157  
158 -[[image:lss-flowarm-gripper-view.png||alt="lss-flowarm-gripper-view.jpg"]]
156 +1. Close the gripper to a position just slightly larger than the object
157 +1. Using the arrows, close the gripper until friction between the foam and the object prevent the object from falling out or moving.
158 +1. DO NOT apply too much pressure, or else the servo's current will spike and it will go into error mode and need to be reset.
159 +1. Use the last position as the "fully closed" position for the gripper for that object, in that specific orientation.
159 159  
161 +[[image:lss-flowarm-gripper-view.jpg]]
162 +
160 160  **Wrist**
161 161  
162 162  The wrist angle can be locked or unlocked. The field allows for user input (click the numbers) or fine adjustments using the arrows.
163 163  
164 -[[image:lss-flowarm-wrist-view.png||alt="lss-flowarm-wrist-view.jpg"]]
167 +[[image:lss-flowarm-wrist-view.jpg]]
165 165  
166 166  **End Effector Position**
167 167  
168 168  The position of the end effector can be controlled either by manually entering the information for R (radius), or the Cartesian x, y, z coordinates, or using the arrows.
169 169  
170 -When in keyboard mode, there is an overlay indicating which keys do what motion.
173 +[[image:lss-flowarm-positioning.jpg]]
171 171  
172 -[[image:lss-flowarm-positioning.png||alt="lss-flowarm-positioning.jpg"]]
173 -
174 174  == **Data Log** ==
175 175  
176 -The optional Data log (normally hidden) can be toggled on or off and allows the user to see all commands being sent to and received from the smart servos. The data can be saved to a file in a Comma Separated Values (.csv) format.
177 +The optional Data log can be toggled on or off and allows the user to see all commands being sent to and received from the smart servos. The data can be saved to a file in a Comma Separated Values (.csv) format.
177 177  
178 -[[image:lss-flowarm-data-log.png||alt="lss-flowarm-data-log.jpg"]]
179 +[[image:lss-flowarm-data-log.jpg]]
179 179  
180 180  = Sequencer =
181 181  
182 -[[image:lss-flowarm-sequencer.png||alt="lss-flowarm-sequencer.jpg"]]
183 +[[image:lss-flowarm-sequencer.jpg]]
183 183  
184 184  LSS FlowArm has a powerful pattern sequencer component (normally found only in the full version of FlowBotics Studio) that is used to create reusable patterns within minutes, instead of hours or days.
185 185  
... ... @@ -191,11 +191,10 @@
191 191  )))
192 192  |(% style="width:257px" %)[[image:lss-flowarm-frames.jpg]]|(% style="width:306px" %)Frame Options|(% style="width:758px" %)Adding a frame adds a blank frame to the list. The drop-down list gives "useful" pre-made frames. Recording a frame copies the arm's current on-screen position. The X removes a selected frame.
193 193  |(% style="width:257px" %)[[image:lss-flowarm-copy-paste.jpg]]|(% style="width:306px" %)Copy / Paste Frame|(% style="width:758px" %)Copy and paste a frame
194 -|(% style="width:257px" %)[[image:lss-flowarm-settings.jpg]]|(% style="width:306px" %)Operations / Settings|(% style="width:758px" %)Useful features include: Toggle pause before frame; Remove gaps between frames; Reverse frames
195 -|(% style="width:257px" %)[[image:lss-flowarm-lock.jpg]]|(% style="width:306px" %)Lock |(% style="width:758px" %)Timeline locking
195 +|(% style="width:257px" %)[[image:lss-flowarm-settings.jpg]]|(% style="width:306px" %)Operations|(% style="width:758px" %)Useful features include: Toggle pause before frame; Remove gaps between frames; Reverse frames
196 +|(% style="width:257px" %)[[image:lss-flowarm-lock.jpg]]|(% style="width:306px" %)Lock |(% style="width:758px" %)
196 196  |(% style="width:257px" %)[[image:lss-flowarm-loop.jpg]]|(% style="width:306px" %)Repeat / Loop Pattern|(% style="width:758px" %)Play once or loop; Set the playback speed using the up and down arrows.
197 197  |(% style="width:257px" %)[[image:lss-flowarm-play.jpg]]|(% style="width:306px" %)Sequence Playback|(% style="width:758px" %)Restart sequence, play or stop
198 -|(% style="width:257px" %)[[image:lss-flowarm-inspector.png]]|(% style="width:306px" %)Frame Inspector|(% style="width:758px" %)Allows to modify the values sent in a particular frame manually.
199 199  
200 200  **Sequences**
201 201  
... ... @@ -211,15 +211,15 @@
211 211  
212 212  [[image:lss-flowarm-patterns.jpg]]
213 213  
214 -**Add a Sequence**
214 +**Add Sequence**
215 215  
216 216  To add a sequence click the add button. A new sequence will appear in the list and its name will open for editing.
217 217  
218 -**Remove a Sequence**
218 +**Remove Sequence**
219 219  
220 220  Click the remove sequence button to delete the currently selected sequence from the list. This action is irreversible so you will be asked for confirmation.
221 221  
222 -**Duplicate a Sequence**
222 +**Duplicate Sequence**
223 223  
224 224  If you want to make a new sequence based on an existing one then you can duplicate it.
225 225  
... ... @@ -234,7 +234,7 @@
234 234  The sequences in the file will be added to the list. They do not replace the sequence list. Also it doesn't
235 235  matter how many sequences the file contains, all of them will be imported.
236 236  
237 -**Clear All Sequences**
237 +**Clear All**
238 238  
239 239  If you want to start from scratch you can clear all the sequences from the list using the clear all button.
240 240  
... ... @@ -251,10 +251,6 @@
251 251  
252 252  To add a frame click the Add button. A new frame will be added at the end of the sequence. The duration of the frame will be whatever the last frame duration was. The frame will record whatever position the robot is currently set to. You can add a sub sequence to the sequence by clicking the arrow to the right of the Add button. A drop list of the available sequences will appear. Select one and it will be added to the end of the sequence.
253 253  
254 -**Recording to a Frame**
255 -
256 -When you add a frame it will record the state that the robot is currently in. If you want to change this state first select the frame by clicking on it. Next move the robot to the position you want to record. When you're happy press the record button. The frame will flash to indicate that it has been updated.
257 -
258 258  **Deleting Frames**
259 259  
260 260  To delete a sequence or frame from a sequence, click the Delete button.
... ... @@ -265,8 +265,6 @@
265 265  
266 266  **Timeline Locking**
267 267  
268 -[[image:lss-flowarm-lock.jpg]]
269 -
270 270  The timeline is locked by default. This means that frames will automatically run from one to the next – you cannot create space in between. Moving a frame past another one will move it along the order in the timeline. If the timeline is unlocked then you can move frames independently of each other and also create gaps of time in between.
271 271  
272 272  **Moving and Resizing**
... ... @@ -274,6 +274,10 @@
274 274  To move a frame on the timeline, simply click on it and drag it to the time you want it to start. The start time will be displayed as you drag. How frames move relative to each other is determined by whether the timeline is locked (see previous section). To resize a frame grab the right-hand edge and drag it. When moving or resizing the mouse snaps to the nearest unit on the timeline. If you hold SHIFT while moving or resizing no snap will be applied. When the timeline is unlocked then if you hold CTRL while dragging or resizing a frame all frames to
275 275  the right of the selected frame will be moved so that the time interval between the selected frame and the next one is maintained.
276 276  
271 +**Recording to a Frame**
272 +
273 +When you add a frame it will record the state that the robot is currently in. If you want to change this state first select the frame by clicking on it. Next move the robot to the position you want to record. When you're happy press the record button. The frame will flash to indicate that it has been updated.
274 +
277 277  **Auto Record**
278 278  
279 279  If you want changes you make to be automatically recorded you can lock the record button in place by double-clicking on it. Now whenever you change the robot position the currently elected frame will be updated. The record button will light up to show that auto record is on. To switch auto record off, double-click on the record button again.
... ... @@ -295,12 +295,6 @@
295 295  
296 296  If the timeline is unlocked then you can instantly remove all the gaps between frames and push them up against each other by clicking the Operations button and choosing Remove Gaps Between Frames from the menu.
297 297  
298 -**Frame Inspector**
299 -
300 -[[image:lss-flowarm-inspector-frame.png]]
301 -
302 -If any adjustments are required on a particular joint (servo) this function allows you to manually change them. Click on the particular frame and the commands can be edited.
303 -
304 304  == Sequencer ==
305 305  
306 306  **Reverse Frames**
... ... @@ -336,37 +336,8 @@
336 336  
337 337  If another sequence is associated with that input, it will then play Playback Control. You can change the speed of playback by changing the speed multiplier. Click the up and down arrows to alter this. Normally a sequence plays to the end then stops. However, sometimes you want a sequence to repeat. You can toggle this by clicking the Loop button.
338 338  
339 -= Notifications =
340 -
341 -(% style="width:1300px" %)
342 -|(% style="text-align:center; width:450px" %)**Displayed Error**|(% style="text-align:center; width:100px" %)**LED Status**|(% style="text-align:center" %)**Informations**
343 -|{{lightbox image="lss-flowarm-notification-limp.png"/}}|(% colspan="1" rowspan="2" style="text-align:center; vertical-align:middle" %)(((
344 -[[image:LSS-UserColor.png||alt="LSS-Error-SafeMode.gif"]]
345 -
346 -User Defined
347 -)))|User clicked on the "LIMP" button or FlowArm noticed an error and put the arm in "LIMP" by himself.
348 -|{{lightbox image="lss-flowarm-notification-firmware.png"/}}|(((
349 -FlowArm noticed an earlier firmware version which is not compatible (SERVO 1 in this example).
350 -
351 -* As suggested, use the LSS-Config software to update the servo(s)
352 -)))
353 -|{{lightbox image="lss-flowarm-notification-current.png"/}}|(% colspan="1" rowspan="2" style="text-align:center; vertical-align:middle" %)(((
354 -[[image:LSS-Error-SafeMode.gif]]
355 -
356 -Red Flashing
357 -)))|(((
358 -FlowArm noticed a high current error on the specified servo (SERVO 4 in this example)
359 -
360 -* Verify that noting is in the way of the servo that can block it's movement.
361 -* Try to "RELEASE SERVOS" which will "RESET" the servo(s) in error.
362 -)))
363 -|{{lightbox image="lss-flowarm-notification-temperature.png"/}}|(((
364 -FlowArm noticed a high temperature error on the specified servo (SERVO 5 in this example).
365 -
366 -* Let it cool down for a minute.
367 -* Try to "RELEASE SERVOS" which will "RESET" the servo(s) in error.
368 -)))
369 -
370 370  = Troubleshooting =
371 371  
372 372  If you encounter any bugs or issues when installing or using the LSS FlowArm application, please submit a new post on the Lynxmotion community sub-forum here: [[https:~~/~~/www.robotshop.com/community/forum/c/lynxmotion/electronics-software>>url:https://www.robotshop.com/community/forum/c/lynxmotion/electronics-software]]
334 +
335 +{Work in progress}
LSS-Error-SafeMode.gif
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -7.2 KB
Content
LSS-UserColor.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -10.6 KB
Content
lss-flowarm-data-log.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -10.8 KB
Content
lss-flowarm-gripper-view.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -4.7 KB
Content
lss-flowarm-header.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -23.4 KB
Content
lss-flowarm-inspector-frame.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -3.1 KB
Content
lss-flowarm-inspector.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -1.9 KB
Content
lss-flowarm-left.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -11.2 KB
Content
lss-flowarm-notification-current.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -11.0 KB
Content
lss-flowarm-notification-firmware.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -11.2 KB
Content
lss-flowarm-notification-limp.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -5.1 KB
Content
lss-flowarm-notification-temperature.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -11.4 KB
Content
lss-flowarm-offset-left.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -9.8 KB
Content
lss-flowarm-offset-top.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -7.0 KB
Content
lss-flowarm-positioning.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -13.5 KB
Content
lss-flowarm-sequencer.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -11.9 KB
Content
lss-flowarm-top.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -7.1 KB
Content
lss-flowarm-wrist-view.png
Author
... ... @@ -1,1 +1,0 @@
1 -xwiki:XWiki.ENantel
Size
... ... @@ -1,1 +1,0 @@
1 -3.6 KB
Content
LSS-flowarm-30812.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.CBenson
Size
... ... @@ -1,0 +1,1 @@
1 +260.5 KB
Content
lss-flowarm-header.jpg
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.CBenson
Size
... ... @@ -1,0 +1,1 @@
1 +17.7 KB
Content
wiki-download.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.CBenson
Size
... ... @@ -1,0 +1,1 @@
1 +3.9 KB
Content
Copyright RobotShop 2018