13
13
import spatialgeometry as gm
14
14
from math import pi , sin , cos
15
15
16
+
16
17
class TestERobot (unittest .TestCase ):
17
18
18
19
def test_init (self ):
19
20
ets = tb .ETS .rz ()
20
21
robot = ERobot (ets , name = 'myname' , manufacturer = 'I made it' ,
21
- comment = 'other stuff' )
22
+ comment = 'other stuff' )
22
23
self .assertEqual (robot .name , 'myname' )
23
24
self .assertEqual (robot .manufacturer , 'I made it' )
24
25
self .assertEqual (robot .comment , 'other stuff' )
@@ -44,7 +45,8 @@ def test_init_ets(self):
44
45
45
46
def test_init_elink (self ):
46
47
link1 = ELink (ETS .rx (), name = 'link1' )
47
- link2 = ELink (ETS .tx (1 ) * ETS .ty (- 0.5 ) * ETS .tz (), name = 'link2' , parent = link1 )
48
+ link2 = ELink (ETS .tx (1 ) * ETS .ty (- 0.5 ) * ETS .tz (),
49
+ name = 'link2' , parent = link1 )
48
50
link3 = ELink (ETS .tx (1 ), name = 'ee_1' , parent = link2 )
49
51
robot = ERobot ([link1 , link2 , link3 ])
50
52
self .assertEqual (robot .n , 2 )
@@ -66,7 +68,8 @@ def test_init_elink(self):
66
68
self .assertEqual (robot [2 ].children , [])
67
69
68
70
link1 = ELink (ETS .rx (), name = 'link1' )
69
- link2 = ELink (ETS .tx (1 ) * ETS .ty (- 0.5 ) * ETS .tz (), name = 'link2' , parent = 'link1' )
71
+ link2 = ELink (ETS .tx (1 ) * ETS .ty (- 0.5 ) * ETS .tz (),
72
+ name = 'link2' , parent = 'link1' )
70
73
link3 = ELink (ETS .tx (1 ), name = 'ee_1' , parent = 'link2' )
71
74
robot = ERobot ([link1 , link2 , link3 ])
72
75
self .assertEqual (robot .n , 2 )
@@ -84,13 +87,12 @@ def test_init_elink(self):
84
87
self .assertEqual (robot [1 ].children , [robot [2 ]])
85
88
self .assertEqual (robot [2 ].children , [])
86
89
87
-
88
90
def test_init_elink_autoparent (self ):
89
91
links = [
90
92
ELink (ETS .rx (), name = 'link1' ),
91
93
ELink (ETS .tx (1 ) * ETS .ty (- 0.5 ) * ETS .tz (), name = 'link2' ),
92
94
ELink (ETS .tx (1 ), name = 'ee_1' )
93
- ]
95
+ ]
94
96
robot = ERobot (links )
95
97
self .assertEqual (robot .n , 2 )
96
98
self .assertIsInstance (robot [0 ], ELink )
@@ -106,7 +108,6 @@ def test_init_elink_autoparent(self):
106
108
self .assertEqual (robot [1 ].children , [robot [2 ]])
107
109
self .assertEqual (robot [2 ].children , [])
108
110
109
-
110
111
def test_init_elink_branched (self ):
111
112
robot = ERobot ([
112
113
ELink (ETS .rz (), name = 'link1' ),
@@ -247,10 +248,10 @@ def test_fkine(self):
247
248
q3 = np .expand_dims (q1 , 0 )
248
249
249
250
ans = np .array ([
250
- [- 0.50827907 , - 0.57904589 , 0.63746234 , 0.44682295 ],
251
- [0.83014553 , - 0.52639462 , 0.18375824 , 0.16168396 ],
252
- [0.22915229 , 0.62258699 , 0.74824773 , 0.96798113 ],
253
- [0. , 0. , 0. , 1. ]
251
+ [- 0.50827907 , - 0.57904589 , 0.63746234 , 0.44682295 ],
252
+ [0.83014553 , - 0.52639462 , 0.18375824 , 0.16168396 ],
253
+ [0.22915229 , 0.62258699 , 0.74824773 , 0.96798113 ],
254
+ [0. , 0. , 0. , 1. ]
254
255
])
255
256
256
257
panda .q = q1
@@ -266,10 +267,10 @@ def test_fkine_traj(self):
266
267
qq = np .r_ [q , q , q , q ]
267
268
268
269
ans = np .array ([
269
- [- 0.50827907 , - 0.57904589 , 0.63746234 , 0.44682295 ],
270
- [0.83014553 , - 0.52639462 , 0.18375824 , 0.16168396 ],
271
- [0.22915229 , 0.62258699 , 0.74824773 , 0.96798113 ],
272
- [0. , 0. , 0. , 1. ]
270
+ [- 0.50827907 , - 0.57904589 , 0.63746234 , 0.44682295 ],
271
+ [0.83014553 , - 0.52639462 , 0.18375824 , 0.16168396 ],
272
+ [0.22915229 , 0.62258699 , 0.74824773 , 0.96798113 ],
273
+ [0. , 0. , 0. , 1. ]
273
274
])
274
275
275
276
TT = panda .fkine (qq )
@@ -303,23 +304,23 @@ def test_jacob0(self):
303
304
q4 = np .expand_dims (q1 , 1 )
304
305
305
306
ans = np .array ([
306
- [- 1.61683957e-01 , 1.07925929e-01 , - 3.41453006e-02 ,
307
- 3.35029257e-01 , - 1.07195463e-02 , 1.03187865e-01 ,
307
+ [- 1.61683957e-01 , 1.07925929e-01 , - 3.41453006e-02 ,
308
+ 3.35029257e-01 , - 1.07195463e-02 , 1.03187865e-01 ,
308
309
0.00000000e+00 ],
309
- [4.46822947e-01 , 6.25741987e-01 , 4.16474664e-01 ,
310
- - 8.04745724e-02 , 7.78257566e-02 , - 1.17720983e-02 ,
310
+ [4.46822947e-01 , 6.25741987e-01 , 4.16474664e-01 ,
311
+ - 8.04745724e-02 , 7.78257566e-02 , - 1.17720983e-02 ,
311
312
0.00000000e+00 ],
312
313
[0.00000000e+00 , - 2.35276631e-01 , - 8.20187641e-02 ,
313
314
- 5.14076923e-01 , - 9.98040745e-03 , - 2.02626953e-01 ,
314
315
0.00000000e+00 ],
315
- [1.29458954e-16 , - 9.85449730e-01 , 3.37672585e-02 ,
316
- - 6.16735653e-02 , 6.68449878e-01 , - 1.35361558e-01 ,
316
+ [1.29458954e-16 , - 9.85449730e-01 , 3.37672585e-02 ,
317
+ - 6.16735653e-02 , 6.68449878e-01 , - 1.35361558e-01 ,
317
318
6.37462344e-01 ],
318
- [9.07021273e-18 , 1.69967143e-01 , 1.95778638e-01 ,
319
- 9.79165111e-01 , 1.84470262e-01 , 9.82748279e-01 ,
319
+ [9.07021273e-18 , 1.69967143e-01 , 1.95778638e-01 ,
320
+ 9.79165111e-01 , 1.84470262e-01 , 9.82748279e-01 ,
320
321
1.83758244e-01 ],
321
- [1.00000000e+00 , - 2.26036604e-17 , 9.80066578e-01 ,
322
- - 1.93473657e-01 , 7.20517510e-01 , - 1.26028049e-01 ,
322
+ [1.00000000e+00 , - 2.26036604e-17 , 9.80066578e-01 ,
323
+ - 1.93473657e-01 , 7.20517510e-01 , - 1.26028049e-01 ,
323
324
7.48247732e-01 ]
324
325
])
325
326
@@ -340,7 +341,7 @@ def test_hessian0(self):
340
341
ans = np .array ([
341
342
[
342
343
[- 4.46822947e-01 , - 6.25741987e-01 , - 4.16474664e-01 ,
343
- 8.04745724e-02 , - 7.78257566e-02 , 1.17720983e-02 ,
344
+ 8.04745724e-02 , - 7.78257566e-02 , 1.17720983e-02 ,
344
345
0.00000000e+00 ],
345
346
[- 6.25741987e-01 , - 3.99892968e-02 , - 1.39404950e-02 ,
346
347
- 8.73761859e-02 , - 1.69634134e-03 , - 3.44399243e-02 ,
@@ -349,131 +350,131 @@ def test_hessian0(self):
349
350
- 2.17748413e-02 , - 7.82283735e-02 , - 2.81325889e-02 ,
350
351
0.00000000e+00 ],
351
352
[8.04745724e-02 , - 8.73761859e-02 , - 2.17748413e-02 ,
352
- - 5.18935898e-01 , 5.28476698e-03 , - 2.00682834e-01 ,
353
+ - 5.18935898e-01 , 5.28476698e-03 , - 2.00682834e-01 ,
353
354
0.00000000e+00 ],
354
355
[- 7.78257566e-02 , - 1.69634134e-03 , - 7.82283735e-02 ,
355
356
5.28476698e-03 , - 5.79159088e-02 , - 2.88966443e-02 ,
356
357
0.00000000e+00 ],
357
358
[1.17720983e-02 , - 3.44399243e-02 , - 2.81325889e-02 ,
358
359
- 2.00682834e-01 , - 2.88966443e-02 , - 2.00614904e-01 ,
359
360
0.00000000e+00 ],
360
- [0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
361
- 0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
361
+ [0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
362
+ 0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
362
363
0.00000000e+00 ]
363
364
],
364
365
[
365
- [- 1.61683957e-01 , 1.07925929e-01 , - 3.41453006e-02 ,
366
- 3.35029257e-01 , - 1.07195463e-02 , 1.03187865e-01 ,
366
+ [- 1.61683957e-01 , 1.07925929e-01 , - 3.41453006e-02 ,
367
+ 3.35029257e-01 , - 1.07195463e-02 , 1.03187865e-01 ,
367
368
0.00000000e+00 ],
368
369
[1.07925929e-01 , - 2.31853293e-01 , - 8.08253690e-02 ,
369
370
- 5.06596965e-01 , - 9.83518983e-03 , - 1.99678676e-01 ,
370
371
0.00000000e+00 ],
371
372
[- 3.41453006e-02 , - 8.08253690e-02 , - 3.06951191e-02 ,
372
- 3.45709946e-01 , - 1.01688580e-02 , 1.07973135e-01 ,
373
+ 3.45709946e-01 , - 1.01688580e-02 , 1.07973135e-01 ,
373
374
0.00000000e+00 ],
374
- [3.35029257e-01 , - 5.06596965e-01 , 3.45709946e-01 ,
375
- - 9.65242924e-02 , 1.45842251e-03 , - 3.24608603e-02 ,
375
+ [3.35029257e-01 , - 5.06596965e-01 , 3.45709946e-01 ,
376
+ - 9.65242924e-02 , 1.45842251e-03 , - 3.24608603e-02 ,
376
377
0.00000000e+00 ],
377
378
[- 1.07195463e-02 , - 9.83518983e-03 , - 1.01688580e-02 ,
378
- 1.45842251e-03 , - 1.05221866e-03 , 2.09794626e-01 ,
379
+ 1.45842251e-03 , - 1.05221866e-03 , 2.09794626e-01 ,
379
380
0.00000000e+00 ],
380
- [1.03187865e-01 , - 1.99678676e-01 , 1.07973135e-01 ,
381
- - 3.24608603e-02 , 2.09794626e-01 , - 4.04324654e-02 ,
381
+ [1.03187865e-01 , - 1.99678676e-01 , 1.07973135e-01 ,
382
+ - 3.24608603e-02 , 2.09794626e-01 , - 4.04324654e-02 ,
382
383
0.00000000e+00 ],
383
- [0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
384
- 0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
384
+ [0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
385
+ 0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
385
386
0.00000000e+00 ]
386
387
],
387
388
[
388
- [0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
389
- 0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
389
+ [0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
390
+ 0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
390
391
0.00000000e+00 ],
391
392
[0.00000000e+00 , - 6.34981134e-01 , - 4.04611266e-01 ,
392
393
2.23596800e-02 , - 7.48714002e-02 , - 5.93773551e-03 ,
393
394
0.00000000e+00 ],
394
- [0.00000000e+00 , - 4.04611266e-01 , 2.07481281e-02 ,
395
- - 6.83089775e-02 , 4.72662062e-03 , - 2.05994912e-02 ,
395
+ [0.00000000e+00 , - 4.04611266e-01 , 2.07481281e-02 ,
396
+ - 6.83089775e-02 , 4.72662062e-03 , - 2.05994912e-02 ,
396
397
0.00000000e+00 ],
397
- [0.00000000e+00 , 2.23596800e-02 , - 6.83089775e-02 ,
398
- - 3.23085806e-01 , 5.69641385e-03 , - 1.00311930e-01 ,
398
+ [0.00000000e+00 , 2.23596800e-02 , - 6.83089775e-02 ,
399
+ - 3.23085806e-01 , 5.69641385e-03 , - 1.00311930e-01 ,
399
400
0.00000000e+00 ],
400
- [0.00000000e+00 , - 7.48714002e-02 , 4.72662062e-03 ,
401
- 5.69641385e-03 , 5.40000550e-02 , - 2.69041502e-02 ,
401
+ [0.00000000e+00 , - 7.48714002e-02 , 4.72662062e-03 ,
402
+ 5.69641385e-03 , 5.40000550e-02 , - 2.69041502e-02 ,
402
403
0.00000000e+00 ],
403
404
[0.00000000e+00 , - 5.93773551e-03 , - 2.05994912e-02 ,
404
405
- 1.00311930e-01 , - 2.69041502e-02 , - 9.98142073e-02 ,
405
406
0.00000000e+00 ],
406
- [0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
407
- 0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
407
+ [0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
408
+ 0.00000000e+00 , 0.00000000e+00 , 0.00000000e+00 ,
408
409
0.00000000e+00 ]
409
410
],
410
411
[
411
412
[- 9.07021273e-18 , - 2.77555756e-17 , - 2.77555756e-17 ,
412
- - 1.11022302e-16 , - 2.77555756e-17 , 0.00000000e+00 ,
413
+ - 1.11022302e-16 , - 2.77555756e-17 , 0.00000000e+00 ,
413
414
- 2.77555756e-17 ],
414
- [- 1.69967143e-01 , - 1.97756387e-17 , 4.11786040e-17 ,
415
+ [- 1.69967143e-01 , - 1.97756387e-17 , 4.11786040e-17 ,
415
416
- 1.48932398e-16 , - 5.07612940e-17 , - 8.38219650e-17 ,
416
417
- 4.90138154e-17 ],
417
- [- 1.95778638e-01 , 1.66579116e-01 , - 1.38777878e-17 ,
418
- 1.04083409e-17 , - 1.38777878e-17 , 3.46944695e-18 ,
418
+ [- 1.95778638e-01 , 1.66579116e-01 , - 1.38777878e-17 ,
419
+ 1.04083409e-17 , - 1.38777878e-17 , 3.46944695e-18 ,
419
420
0.00000000e+00 ],
420
421
[- 9.79165111e-01 , - 3.28841647e-02 , - 9.97525009e-01 ,
421
- - 4.16333634e-17 , - 1.14491749e-16 , 1.38777878e-17 ,
422
+ - 4.16333634e-17 , - 1.14491749e-16 , 1.38777878e-17 ,
422
423
- 6.24500451e-17 ],
423
- [- 1.84470262e-01 , 1.22464303e-01 , - 3.97312016e-02 ,
424
- 7.41195745e-01 , - 2.77555756e-17 , 1.12757026e-16 ,
424
+ [- 1.84470262e-01 , 1.22464303e-01 , - 3.97312016e-02 ,
425
+ 7.41195745e-01 , - 2.77555756e-17 , 1.12757026e-16 ,
425
426
2.77555756e-17 ],
426
427
[- 9.82748279e-01 , - 2.14206274e-02 , - 9.87832342e-01 ,
427
- 6.67336352e-02 , - 7.31335770e-01 , 2.08166817e-17 ,
428
+ 6.67336352e-02 , - 7.31335770e-01 , 2.08166817e-17 ,
428
429
- 6.07153217e-17 ],
429
- [- 1.83758244e-01 , 1.27177529e-01 , - 3.36043908e-02 ,
430
- 7.68210453e-01 , 5.62842325e-03 , 7.58497864e-01 ,
430
+ [- 1.83758244e-01 , 1.27177529e-01 , - 3.36043908e-02 ,
431
+ 7.68210453e-01 , 5.62842325e-03 , 7.58497864e-01 ,
431
432
0.00000000e+00 ]
432
433
],
433
434
[
434
- [1.29458954e-16 , - 1.11022302e-16 , 8.67361738e-17 ,
435
- - 4.16333634e-17 , 5.55111512e-17 , 2.77555756e-17 ,
435
+ [1.29458954e-16 , - 1.11022302e-16 , 8.67361738e-17 ,
436
+ - 4.16333634e-17 , 5.55111512e-17 , 2.77555756e-17 ,
436
437
5.55111512e-17 ],
437
438
[- 9.85449730e-01 , - 6.36381327e-17 , - 1.02735399e-16 ,
438
- - 1.83043043e-17 , - 5.63484308e-17 , 8.08886307e-18 ,
439
+ - 1.83043043e-17 , - 5.63484308e-17 , 8.08886307e-18 ,
439
440
1.07112702e-18 ],
440
- [3.37672585e-02 , 9.65806345e-01 , 8.32667268e-17 ,
441
- - 2.55871713e-17 , 1.07552856e-16 , 2.08166817e-17 ,
441
+ [3.37672585e-02 , 9.65806345e-01 , 8.32667268e-17 ,
442
+ - 2.55871713e-17 , 1.07552856e-16 , 2.08166817e-17 ,
442
443
- 5.20417043e-18 ],
443
444
[- 6.16735653e-02 , - 1.90658563e-01 , - 5.39111251e-02 ,
444
- - 6.59194921e-17 , - 2.77555756e-17 , 2.38524478e-17 ,
445
+ - 6.59194921e-17 , - 2.77555756e-17 , 2.38524478e-17 ,
445
446
- 4.16333634e-17 ],
446
- [6.68449878e-01 , 7.10033786e-01 , 6.30795483e-01 ,
447
- - 8.48905588e-02 , 0.00000000e+00 , 3.46944695e-17 ,
447
+ [6.68449878e-01 , 7.10033786e-01 , 6.30795483e-01 ,
448
+ - 8.48905588e-02 , 0.00000000e+00 , 3.46944695e-17 ,
448
449
2.77555756e-17 ],
449
450
[- 1.35361558e-01 , - 1.24194307e-01 , - 1.28407717e-01 ,
450
- 1.84162966e-02 , - 1.32869389e-02 , 2.77555756e-17 ,
451
+ 1.84162966e-02 , - 1.32869389e-02 , 2.77555756e-17 ,
451
452
- 2.08166817e-17 ],
452
- [6.37462344e-01 , 7.37360525e-01 , 5.99489263e-01 ,
453
- - 7.71850655e-02 , - 4.08633244e-02 , 2.09458434e-02 ,
453
+ [6.37462344e-01 , 7.37360525e-01 , 5.99489263e-01 ,
454
+ - 7.71850655e-02 , - 4.08633244e-02 , 2.09458434e-02 ,
454
455
0.00000000e+00 ]
455
456
],
456
457
[
457
458
[0.00000000e+00 , - 6.59521910e-17 , - 1.31033786e-16 ,
458
- - 1.92457571e-16 , 1.54134782e-17 , - 7.69804929e-17 ,
459
+ - 1.92457571e-16 , 1.54134782e-17 , - 7.69804929e-17 ,
459
460
1.11140361e-17 ],
460
- [0.00000000e+00 , - 2.77555756e-17 , 7.15573434e-17 ,
461
- 1.65666092e-16 , 1.38777878e-17 , - 8.67361738e-18 ,
461
+ [0.00000000e+00 , - 2.77555756e-17 , 7.15573434e-17 ,
462
+ 1.65666092e-16 , 1.38777878e-17 , - 8.67361738e-18 ,
462
463
3.46944695e-17 ],
463
- [0.00000000e+00 , - 1.98669331e-01 , 8.67361738e-18 ,
464
- - 1.46584134e-16 , 6.02816408e-17 , - 3.12250226e-17 ,
464
+ [0.00000000e+00 , - 1.98669331e-01 , 8.67361738e-18 ,
465
+ - 1.46584134e-16 , 6.02816408e-17 , - 3.12250226e-17 ,
465
466
6.11490025e-17 ],
466
- [0.00000000e+00 , - 9.54435515e-01 , 4.51380881e-02 ,
467
- 1.38777878e-17 , 1.08420217e-16 , 3.46944695e-18 ,
467
+ [0.00000000e+00 , - 9.54435515e-01 , 4.51380881e-02 ,
468
+ 1.38777878e-17 , 1.08420217e-16 , 3.46944695e-18 ,
468
469
6.24500451e-17 ],
469
470
[0.00000000e+00 , - 2.95400686e-01 , - 1.24639152e-01 ,
470
471
- 6.65899738e-01 , - 4.85722573e-17 , - 5.20417043e-18 ,
471
472
- 5.55111512e-17 ],
472
- [0.00000000e+00 , - 9.45442009e-01 , 5.96856167e-02 ,
473
- 7.19317248e-02 , 6.81888149e-01 , - 2.77555756e-17 ,
473
+ [0.00000000e+00 , - 9.45442009e-01 , 5.96856167e-02 ,
474
+ 7.19317248e-02 , 6.81888149e-01 , - 2.77555756e-17 ,
474
475
1.04083409e-17 ],
475
476
[0.00000000e+00 , - 2.89432165e-01 , - 1.18596498e-01 ,
476
- - 6.35513913e-01 , 5.24032975e-03 , - 6.51338823e-01 ,
477
+ - 6.35513913e-01 , 5.24032975e-03 , - 6.51338823e-01 ,
477
478
0.00000000e+00 ]
478
479
]
479
480
])
@@ -794,18 +795,18 @@ def test_invdyn(self):
794
795
tau = robot .rne (z , z , z ) / 9.81
795
796
nt .assert_array_almost_equal (tau , np .r_ [- 2 , - 0.5 ])
796
797
797
- tau = robot .rne ([0 , - pi / 2 ], z , z ) / 9.81
798
+ tau = robot .rne ([0 , - pi / 2 ], z , z ) / 9.81
798
799
nt .assert_array_almost_equal (tau , np .r_ [- 1.5 , 0 ])
799
800
800
- tau = robot .rne ([- pi / 2 , pi / 2 ], z , z ) / 9.81
801
+ tau = robot .rne ([- pi / 2 , pi / 2 ], z , z ) / 9.81
801
802
nt .assert_array_almost_equal (tau , np .r_ [- 0.5 , - 0.5 ])
802
803
803
- tau = robot .rne ([- pi / 2 , 0 ], z , z ) / 9.81
804
+ tau = robot .rne ([- pi / 2 , 0 ], z , z ) / 9.81
804
805
nt .assert_array_almost_equal (tau , np .r_ [0 , 0 ])
805
806
806
807
# check velocity terms
807
808
robot .gravity = [0 , 0 , 0 ]
808
- q = [0 , - pi / 2 ]
809
+ q = [0 , - pi / 2 ]
809
810
h = - 0.5 * sin (q [1 ])
810
811
811
812
tau = robot .rne (q , [0 , 0 ], z )
@@ -840,7 +841,6 @@ def test_invdyn(self):
840
841
nt .assert_array_almost_equal (tau , np .r_ [d11 + d12 , d21 + d22 ])
841
842
842
843
843
-
844
844
if __name__ == '__main__' : # pragma nocover
845
845
846
846
unittest .main ()
0 commit comments