Wiki source code of SES-PRO Robotic Arm UI

Last modified by Eric Nantel on 2024/10/16 14:33

Show last authors
1 {{lightbox image="https://wiki.lynxmotion.com/info/wiki/lynxmotion/download/ses-pro/ses-pro-software/ses-pro-arm-ui/WebHome/SES-PRO-Robotic-Arm-UI.png" width="350"/}}
2
3 [[[[image:[email protected]]]>>https://lynxmotion.com/tools/ses-pro-app/lynxmotion_ses_pro_robotic_arm_ui_stable.exe]]
4
5 **Table of Contents**
6
7 {{toc/}}
8
9 = Description =
10
11 The Lynxmotion Servo Erector Set Professional (SES PRO) Robotic Arm User Interface (UI) is a simple software which allows a user to control any of the Lynxmotion Professional Modular robotic arms in their default configuration. The two compatible gripper kits which are compatible with the SES PRO system (based on the DH Robotics PGE-50-40 and CGE-10-10 DC grillers) can also be controlled via this interface in each of their possible configurations. The included manual jog feature can be used to either position each joint angle, or move to specific cartesian coordinates. Arm (and gripper) positions can then be recorded as part of the built-in sequencer. A 3D display of the arm shows the position of the arm, and a graph can be used to show various information to the user. In order to get a better understanding of the protocol, commands sent to the arm are shown in the interface, and a user input field are standard.
12
13 = Features =
14
15 * Angular and cartesian positioning of the end effector
16 * 3D graphical display of the appropriate robotic arm and end effector
17 * Sequencer to record and play back frames (single, looped or infinite)
18 * Error checking (speed, temperature etc.)
19 * Command output and user input
20 * Safety (Software E-Stop, Halt&Hold & Limp)
21
22 __Compatibility: Windows 7 Operating System or above__
23
24 = User Guide =
25
26 * [[doc:.ses-pro-arm-ui-guide.WebHome]]
27
28 {{comment}}
29 |(% colspan="3" %)(((
30 = User Guide =
31 )))
32 |(% style="width:25px" %) |(% colspan="2" rowspan="1" style="width:100px" %)(((
33 Before proceeding with the guide, it is important to note the following:
34
35 * Neither the servos nor the arm are meant to be operated in proximity of humans as they do not have "collaborative" (COBOT) features and do not detect collision
36 * The servos use stepper motors and do NOT include mechanical brakes. If the stepper motor is unable to retain or move to a desired angle (insufficient torque), the motor will rotate freely as opposed to hold the last position
37 )))
38 | |(% 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 this page.
39 | |(% colspan="2" rowspan="1" %)(((
40 == IMPORTANT ==
41 )))
42 | |(% colspan="2" rowspan="1" %)(((
43 === Payload Considerations ===
44 )))
45 | |(% colspan="2" rowspan="1" %)(((
46 1. The rated payload for each arm does NOT include an end effector, nor any added distance between the center of mass of the payload and the output of the final joint. Each of the two compatible Lynxmotion PRO grippers reduce the maximum payload of each arm, and it is up to the user to known and understand the concept of "torque" and center of mass before adding an end effector and payload.
47 1. The rated maximum payload for each arm (at full reach) is at the rated speed for each motor. Moving any joint at a higher speed will decrease the payload capacity of the robot.
48 1. Although each servo can provide significantly more torque than is needed for the rated payload (and therefore means the arm can support much higher loads at lower speeds, the mechanical and modular structure of the arms may fail. We strongly suggest testing and using each arm in a highly controlled and safe setting where, if a failure should occur with one or more joints, that nothing will break should the arm fall.
49 1. The stepper motors provide the highest torque at low speeds, and lower torque at high speeds. Note that the maxium torque is not at the lowest speed as the torque to rpm curve for each servo resembles a "mountain".
50 )))
51 | |(% colspan="2" rowspan="1" %)(((
52 === Emergency ===
53 )))
54 | |(% 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. 
55 The following emergency options are available based on severity:
56 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-halt.png]]|(((
57 **Halt (and hold)**
58
59 This will stop every joints and hold them in their last recorded angular positions. The corresponding command is #254H<cr>.
60 )))
61 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-limp.png]]|(((
62 **Limp**
63
64 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>.
65 )))
66 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-emergency.png]]|(((
67 **Software E-Stop**
68
69 The E-stop button within the software sets all joints to limp, this can possibly cause the arm to fall.
70 )))
71 | |(% style="text-align:center; vertical-align:middle" %) |(((
72 **Power Supply E-Stop**
73
74 A hardware E-stop (push to cut power) button is located on the power supply which will cut electricity to all actuators. Similar to a limp command, this can possibly cause the arm to fall. To reset this button, rotate the red "mushroom" in the direction indicated by the white arrows and it will spring out.
75 )))
76 | |(% colspan="2" rowspan="1" %)(((
77 == Arm Connection ==
78 )))
79 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-version.png]]|(((
80 **Model**
81
82 The software currently supports the following Lynxmotion PRO Arms:
83
84 * 550mm 5DoF
85 * 550mm 6DoF
86 * 900mm 5DoF
87 * 900mm 6DoF
88
89 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.
90 )))
91 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-com.png]]|(((
92 **COM Port**
93
94 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.
95 )))
96 | |(% style="text-align:center; vertical-align:middle" %)(((
97 [[image:ses-pro-robotic-arm-ui-connect.png]]
98
99 [[image:ses-pro-robotic-arm-ui-disconnect.png]]
100 )))|(((
101 **Connect / Disconnect**
102
103 Once the COM port has been selection, the CONNECT button can be pressed, and once a servo has been found, the light next to it will go from red to green.
104 )))
105 | |(% colspan="2" rowspan="1" %)(((
106 == Gripper Controls ==
107 )))
108 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-version-drop.png]]|(((
109 **Model**
110
111 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.
112 )))
113 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-version.png]]|(((
114 * PGE-50-40 (40mm default configuration)
115 * PGE-50-40 (60mm configuration)
116 * PGE-50-40 (80mm configuration)
117 * CGE-10-10 (20mm configuration)
118 * CGE-10-10 (40mm configuration)
119 * CGE-10-10 (60mm configuration)
120 )))
121 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-com.png]]|(((
122 **COM Port**
123
124 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
125 )))
126 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-baud.png]]|(((
127 **Baudrate**
128
129 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.
130 )))
131 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-connect.png]]|(((
132 **Connect**
133
134 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.
135 )))
136 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-init.png]]|(((
137 **Initialize**
138
139 Initializing the gripper opens it fully. This is available should the user encounter issues with positioning and need to re-zero the fingers.
140
141 (((
142
143 )))
144 )))
145 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-position.png]]|(((
146 **Position**
147
148
149 )))
150 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-speed.png]]|(((
151 **Speed**
152
153 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.
154 )))
155 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-force.png]]|(((
156 **Force**
157
158 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.
159 )))
160 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-gripper-open-close.png]]|(((
161 **Open / Close**
162
163 These are shortcut buttons to either fully open or fully close the gripper.
164 )))
165 | |(% style="text-align:center; vertical-align:middle" %) |(((
166 **Sequencer**
167
168 The sequencer displays the gripper position as joint G.
169
170 Ex: #GP1000
171 This command would be open the **G**ripper to **P**osition 100.0%
172
173 HINT: If you want the gripper to open or close on an object only at the end of a motion, create a separate frame where only G moves.
174 )))
175 | |(% colspan="2" rowspan="1" %)(((
176 == 3D Model ==
177 )))
178 | |(% colspan="2" rowspan="1" %)(((
179 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.
180 )))
181 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-3d.png]]|(((
182 **View Controls**
183
184 Zoom: Shift + Middle Scroll
185
186 Rotate: Shift + Middle Mouse
187
188 Pan: None
189 )))
190 | |(% colspan="2" rowspan="1" %)(((
191 == Manual Move ==
192 )))
193 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-joints.png]]|(((
194 **Joints Control (angular)**
195
196 In Joints mode, the user can control the angle of each joint.
197
198 * The field can be clicked and changed using a keyboard.
199 * Using the + and - sings will move by the amount specified in the drop down menu.
200 * The RESET button will send the arm to Zero on all joints
201 )))
202 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-coordinates.png]]|(((
203 **Coordinates Control**
204
205 In coordinate control the user can control the cartesian position of the end effector
206 )))
207 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-arm-coordinates-lock.png]]|(((
208 **End Effector Lock**
209
210 The orientation of the end effector can be locked with the "ENABLED" button.
211 )))
212 | |(% colspan="2" rowspan="1" %)(((
213 == Direct Command ==
214 )))
215 | |(% colspan="2" rowspan="1" %)(((
216 This section allow the user to send commands using the [[LSS-PRO Communication Protocol>>url:https://wiki.lynxmotion.com/info/wiki/lynxmotion/view/ses-pro/lss-pro/lss-p-communication-protocol/]] directly if required.
217
218 A few things to keep in mind when using this:
219
220 * Make sure you know what you are doing as you can make the arm move in __dangerous__ ways.
221 * Sending commands does not require ‘#’ and ‘\r’ chars.
222 ** example for #2\r you should enter 2Q and press the "SEND" button
223 * The commands are validated, and it shows a notification in case of error.
224 * The replies of queries are shown in the text field below.
225 )))
226 | |(% colspan="2" rowspan="1" %)(((
227 == Telemetry ==
228 )))
229 | |(% colspan="2" %)[[image:ses-pro-robotic-arm-ui-telemetry.png]]
230 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-telemetry-drop.png]]|(((
231 **Data to Display**
232
233 Various telemetry data can be retrieved from each actuators / joints, here is what the software support:
234
235 * Position
236 * Current
237 * Linear Accel X
238 * Linear Accel Y
239 * Linear Accel Z
240 * Angular Accel α
241 * Angular Accel β
242 * Angular Accel γ
243 * MCU Temperature
244 * PCB Temperature
245 * Probe Temperature
246 )))
247 | |(% style="text-align:center; vertical-align:middle" %)[[image:ses-pro-robotic-arm-ui-telemetry-hide.png]]|(((
248 **Display / Hide **
249
250 At the bottom of the graphics you will find squares to activate / deactivate the desired actuator / joint to be displayed in the graph.
251 )))
252 | |(% colspan="2" rowspan="1" %)(((
253 == Sequencer ==
254 )))
255 | |(% colspan="2" rowspan="1" %)**Sequence**
256 | |(% style="text-align:center; vertical-align:middle" %) |(((
257 **Sequence Selector**
258
259
260 )))
261 | |(% style="text-align:center; vertical-align:middle" %) |(((
262 **Add**
263
264
265 )))
266 | |(% style="text-align:center; vertical-align:middle" %) |(((
267 **Substract**
268
269
270 )))
271 | |(% style="text-align:center; vertical-align:middle" %) |(((
272 **Copy**
273
274
275 )))
276 | |(% style="text-align:center; vertical-align:middle" %) |(((
277 **Save**
278
279
280 )))
281 | |(% style="text-align:center; vertical-align:middle" %) |(((
282 **Open**
283
284
285 )))
286 | |(% style="text-align:center; vertical-align:middle" %) |(((
287 **Delete**
288
289
290 )))
291 | |(% colspan="2" rowspan="1" %)**Frames**
292 | |(% style="text-align:center; vertical-align:middle" %) |(((
293 **Add**
294
295
296 )))
297 | |(% style="text-align:center; vertical-align:middle" %) |(((
298 **Sequence Selector**
299
300
301 )))
302 | |(% style="text-align:center; vertical-align:middle" %) |(((
303 **Record**
304
305
306 )))
307 | |(% style="text-align:center; vertical-align:middle" %) |(((
308 **Delete**
309
310
311 )))
312 | |(% style="text-align:center; vertical-align:middle" %) |(((
313 **Copy**
314
315
316 )))
317 | |(% style="text-align:center; vertical-align:middle" %) |(((
318 **Paste**
319
320
321 )))
322 | |(% style="text-align:center; vertical-align:middle" %) |(((
323 **Swap**
324
325
326 )))
327 | |(% style="text-align:center; vertical-align:middle" %) |(((
328 **Frame Name**
329
330
331 )))
332 | |(% style="text-align:center; vertical-align:middle" %) |(((
333 **Frame length**
334
335 //Alt + Left Click = Drag time//
336 )))
337 | |(% style="text-align:center; vertical-align:middle" %) |(((
338 **Frame Move**
339
340
341 )))
342 | |(% style="text-align:center; vertical-align:middle" %) |(((
343 **Loop**
344
345
346 )))
347 | |(% style="text-align:center; vertical-align:middle" %) |(((
348 **Manual Edit**
349
350 Time, angles, gripper
351 )))
352 | |(% style="text-align:center; vertical-align:middle" %) |(((
353 **Zoom**
354
355
356 )))
357 | |(% colspan="2" rowspan="1" %)**Errors**
358 | |(% style="text-align:center; vertical-align:middle" %) |
359 | |(% style="text-align:center; vertical-align:middle" %) |
360
361
362 = =
363
364 = User Guide =
365
366 Pressing the i "Information" icon in the software will bring you to this page. Before proceeding with the guide, it is important to note the following:
367
368 * Neither the servos nor the arm are meant to be operated in proximity of humans as they do not have "collaborative" (COBOT) features and do not detect collision
369 * The servos use stepper motors and do NOT include mechanical brakes. If the stepper motor is unable to retain or move to a desired angle (insufficient torque), the motor will rotate freely as opposed to hold the last position
370
371 == IMPORTANT: Payload Considerations ==
372
373 1. The rated payload for each arm does NOT include an end effector, nor any added distance between the center of mass of the payload and the output of the final joint. Each of the two compatible Lynxmotion PRO grippers reduce the maximum payload of each arm, and it is up to the user to known and understand the concept of "torque" and center of mass before adding an end effector and payload.
374 1. The rated maximum payload for each arm (at full reach) is at the rated speed for each motor. Moving any joint at a higher speed will decrease the payload capacity of the robot.
375 1. Although each servo can provide significantly more torque than is needed for the rated payload (and therefore means the arm can support much higher loads at lower speeds, the mechanical and modular structure of the arms may fail. We strongly suggest testing and using each arm in a highly controlled and safe setting where, if a failure should occur with one or more joints, that nothing will break should the arm fall.
376 1. The stepper motors provide the highest torque at low speeds, and lower torque at high speeds. Note that the maxium torque is not at the lowest speed as the torque to rpm curve for each servo resembles a "mountain".
377
378 == IMPORTANT: Emergency ==
379
380 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. The following emergency options are available based on severity:
381
382 **Halt & Hold**
383
384 This will stop every joints and hold them in their last recorded angular positions. The corresponding command is #254H<cr>.
385
386 **Limp**
387
388 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>.
389
390 **Software Stop**
391
392 The E-stop button within the software sets all joints to limp.
393
394 **Hardware E-Stop**
395 A hardware E-stop (push to cut power) button is located on the power supply which will cut electricity to all actuators. Similar to a limp command, this can possibly cause the arm to fall. To reset this button, rotate the red "mushroom" in the direction indicated by the white arrows and it will spring out.
396
397 == Arm Connection ==
398
399 **Model**
400
401 The software currently supports the following Lynxmotion PRO Arms:
402
403 * 550mm 5DoF
404 * 550mm 6DoF
405 * 900mm 5DoF
406 * 900mm 6DoF
407
408 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.
409
410 **COM Port**
411
412 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. 
413
414 **Connect**
415
416 Once the COM port has been selection, the CONNECT button can be pressed, and once a servo has been found, the light next to it will go from red to green.
417
418 == Gripper Controls ==
419
420 **Model**
421
422 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 J7.
423
424 * PGE-50-40 (40mm default configuration)
425 * PGE-50-40 (60mm configuration)
426 * PGE-50-40 (80mm configuration)
427 * CGE-10-10 (20mm configuration)
428 * CGE-10-10 (40mm configuration)
429 * CGE-10-10 (60mm configuration)
430
431 **COM Port**
432
433 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
434
435 **Baudrate**
436
437 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 teh software.
438
439 **Initialize**
440
441 Initializing the gripper opens it fully. This is available should the user encounter issues with positioning and need to re-zero the fingers.
442
443 **Connect**
444
445 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.
446
447 **Speed**
448
449 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.
450
451 **Force**
452
453 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.
454
455 **Open / Close**
456
457 These are shortcut buttons to either fully open or fully close the gripper.
458
459 **Sequencer**
460
461 The sequencer displays the gripper position as joint 7 (J7).
462
463 HINT: If you want the gripper to open or close on an object only at the end of a motion, create a separate frame where only J7 moves.
464
465 == 3D Model ==
466
467 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.
468
469 **View Controls**
470
471 Zoom: Shift + Middle Scroll
472
473 Rotate: Shift + Middle Mouse
474
475 Pan: None
476
477 == Manual Move ==
478
479 **Angular Control**
480
481 In angular mode, the user can control the angle of each joint
482
483 **Coordinates Control**
484
485 In coordinate control the user can control the cartesian position of the end effector
486
487 **End Effector Lock**
488
489 The orientation of the end effector can be locked.
490
491 == Direct Command ==
492
493 This section allow the user to send commands using the [[doc:ses-pro.lss-pro.lss-p-communication-protocol.WebHome]] directly if required.
494
495 A few things to keep in mind when using this:
496
497 * Make sure you know what you are doing as you can make the arm move in __dangerous__ ways.
498 * Sending commands does not require ‘#’ and ‘\r’ chars.
499 ** example for #2\r you should enter 2Q and press the "SEND" button
500 * The commands are validated, and it shows a notification in case of error.
501 * The replies of queries are shown in the text field below.
502
503 == Command Output ==
504
505 //{Coming Soon}//
506
507 == Telemetry ==
508
509 **Data to Display**
510
511 //{Coming Soon}//
512
513 **Display / Hide Actuator**
514
515 //{Coming Soon}//
516
517 == Sequencer ==
518
519 **Frames**
520
521 //{Coming Soon}//
522
523 **Record **
524
525 //{Coming Soon}//
526
527 **Edit **
528
529 Time, angles, gripper
530
531 //Alt + Left Click = Drag time//
532
533 **Reorder**
534
535 //{Coming Soon}//
536
537 **Play**
538
539 //{Coming Soon}//
540
541 **Errors**
542
543 //{Coming Soon}//
544 {{/comment}}
Copyright RobotShop 2018