mbs_sensor_ArmarIV-W-Torso-virt.c
Go to the documentation of this file.
1//
2//-------------------------------------------------------------
3//
4// ROBOTRAN - Version 6.6 (build : february 22, 2008)
5//
6// Copyright
7// Universite catholique de Louvain
8// Departement de Mecanique
9// Unite de Production Mecanique et Machines
10// 2, Place du Levant
11// 1348 Louvain-la-Neuve
12// http://www.robotran.be//
13//
14// ==> Generation Date : Fri Oct 28 11:08:15 2016
15//
16// ==> Project name : ArmarIV-W-Torso-virt
17// ==> using XML input file
18//
19// ==> Number of joints : 18
20//
21// ==> Function : F 6 : Sensors Kinematical Informations (sens)
22// ==> Flops complexity : 1319
23//
24// ==> Generation Time : 0.020 seconds
25// ==> Post-Processing : 0.030 seconds
26//
27//-------------------------------------------------------------
28//
29
30#include <math.h>
31
32#include "mbs_data.h"
33#include "mbs_project_interface.h"
34#include "mbs_sensor.h"
35
36void mbs_sensor_ArmarIV - W - Torso - virt(MbsSensor* sens,
37 MbsData* s,
38 int isens)
39{
40
42#define q s->q
43#define qd s->qd
44#define qdd s->qdd
45
46
47
48 // === begin imp_aux ===
49
50 // === end imp_aux ===
51
52 // ===== BEGIN task 0 =====
53
54 // Sensor Kinematics
55
56
57
58 // = = Block_0_0_0_0_0_1 = =
59
60 // Trigonometric Variables
61
62 C4 = cos(q[4]);
63 S4 = sin(q[4]);
64 C5 = cos(q[5]);
65 S5 = sin(q[5]);
66 C6 = cos(q[6]);
67 S6 = sin(q[6]);
68 C7 = cos(q[7]);
69 S7 = sin(q[7]);
70 C8 = cos(q[8]);
71 S8 = sin(q[8]);
72 C9 = cos(q[9]);
73 S9 = sin(q[9]);
74 C10 = cos(q[10]);
75 S10 = sin(q[10]);
76 C11 = cos(q[11]);
77 S11 = sin(q[11]);
78 C12 = cos(q[12]);
79 S12 = sin(q[12]);
80 C13 = cos(q[13]);
81 S13 = sin(q[13]);
82 C14 = cos(q[14]);
83 S14 = sin(q[14]);
84 C15 = cos(q[15]);
85 S15 = sin(q[15]);
86 C17 = cos(q[17]);
87 S17 = sin(q[17]);
88 C18 = cos(q[18]);
89 S18 = sin(q[18]);
90
91 // = = Block_0_0_0_1_0_1 = =
92
93 // Trigonometric Variables
94
95 C6p7 = C6 * C7 - S6 * S7;
96 S6p7 = C6 * S7 + S6 * C7;
97
98 // ====== END Task 0 ======
99
100 // ===== BEGIN task 1 =====
101
102 switch (isens)
103 {
104
105 //
106 break;
107 case 1:
108
109
110
111 // = = Block_1_0_0_1_0_1 = =
112
113 // Sensor Kinematics
114
115
116 ROcp0_25 = S4 * S5;
117 ROcp0_35 = -C4 * S5;
118 ROcp0_85 = -S4 * C5;
119 ROcp0_95 = C4 * C5;
120 ROcp0_26 = ROcp0_25 * C6 + C4 * S6;
121 ROcp0_36 = ROcp0_35 * C6 + S4 * S6;
122 ROcp0_56 = -(ROcp0_25 * S6 - C4 * C6);
123 ROcp0_66 = -(ROcp0_35 * S6 - S4 * C6);
124 ROcp0_17 = C6p7 * C5;
127 ROcp0_47 = -S6p7 * C5;
128 ROcp0_57 = -(ROcp0_26 * S7 - ROcp0_56 * C7);
129 ROcp0_67 = -(ROcp0_36 * S7 - ROcp0_66 * C7);
130 ROcp0_48 = ROcp0_47 * C8 + S5 * S8;
133 ROcp0_78 = -(ROcp0_47 * S8 - S5 * C8);
134 ROcp0_88 = -(ROcp0_57 * S8 - ROcp0_85 * C8);
135 ROcp0_98 = -(ROcp0_67 * S8 - ROcp0_95 * C8);
139 ROcp0_79 = -(ROcp0_48 * S9 - ROcp0_78 * C9);
140 ROcp0_89 = -(ROcp0_58 * S9 - ROcp0_88 * C9);
141 ROcp0_99 = -(ROcp0_68 * S9 - ROcp0_98 * C9);
190 OMcp0_25 = qd[5] * C4;
191 OMcp0_35 = qd[5] * S4;
192 OMcp0_16 = qd[4] + qd[6] * S5;
193 OMcp0_26 = OMcp0_25 + ROcp0_85 * qd[6];
194 OMcp0_36 = OMcp0_35 + ROcp0_95 * qd[6];
195 OMcp0_17 = OMcp0_16 + qd[7] * S5;
196 OMcp0_27 = OMcp0_26 + ROcp0_85 * qd[7];
197 OMcp0_37 = OMcp0_36 + ROcp0_95 * qd[7];
198 OPcp0_17 = qdd[4] + qdd[6] * S5 + qdd[7] * S5 + qd[5] * qd[6] * C5 + qd[7] * (OMcp0_26 * ROcp0_95 - OMcp0_36 * ROcp0_85);
199 OPcp0_27 = ROcp0_85 * (qdd[6] + qdd[7]) + qdd[5] * C4 - qd[4] * qd[5] * S4 + qd[6] * (OMcp0_35 * S5 - ROcp0_95 * qd[4]) - qd[7] * (OMcp0_16 *
200 ROcp0_95 - OMcp0_36 * S5);
201 OPcp0_37 = ROcp0_95 * (qdd[6] + qdd[7]) + qdd[5] * S4 + qd[4] * qd[5] * C4 - qd[6] * (OMcp0_25 * S5 - ROcp0_85 * qd[4]) + qd[7] * (OMcp0_16 *
202 ROcp0_85 - OMcp0_26 * S5);
203 RLcp0_18 = s->dpt[3][1] * S5;
204 RLcp0_28 = ROcp0_85 * s->dpt[3][1];
205 RLcp0_38 = ROcp0_95 * s->dpt[3][1];
206 OMcp0_18 = OMcp0_17 + ROcp0_17 * qd[8];
207 OMcp0_28 = OMcp0_27 + ROcp0_27 * qd[8];
208 OMcp0_38 = OMcp0_37 + ROcp0_37 * qd[8];
215 RLcp0_19 = ROcp0_78 * s->dpt[3][2];
216 RLcp0_29 = ROcp0_88 * s->dpt[3][2];
217 RLcp0_39 = ROcp0_98 * s->dpt[3][2];
218 OMcp0_19 = OMcp0_18 + ROcp0_17 * qd[9];
219 OMcp0_29 = OMcp0_28 + ROcp0_27 * qd[9];
220 OMcp0_39 = OMcp0_38 + ROcp0_37 * qd[9];
224 OMcp0_110 = OMcp0_19 + ROcp0_49 * qd[10];
225 OMcp0_210 = OMcp0_29 + ROcp0_59 * qd[10];
226 OMcp0_310 = OMcp0_39 + ROcp0_69 * qd[10];
227 OPcp0_110 = OPcp0_18 + ROcp0_17 * qdd[9] + ROcp0_49 * qdd[10] + qd[10] * (OMcp0_29 * ROcp0_69 - OMcp0_39 * ROcp0_59) + qd[9] * (OMcp0_28 *
229 OPcp0_210 = OPcp0_28 + ROcp0_27 * qdd[9] + ROcp0_59 * qdd[10] - qd[10] * (OMcp0_19 * ROcp0_69 - OMcp0_39 * ROcp0_49) - qd[9] * (OMcp0_18 *
231 OPcp0_310 = OPcp0_38 + ROcp0_37 * qdd[9] + ROcp0_69 * qdd[10] + qd[10] * (OMcp0_19 * ROcp0_59 - OMcp0_29 * ROcp0_49) + qd[9] * (OMcp0_18 *
233 RLcp0_111 = ROcp0_710 * s->dpt[3][3];
234 RLcp0_211 = ROcp0_810 * s->dpt[3][3];
235 RLcp0_311 = ROcp0_910 * s->dpt[3][3];
245 RLcp0_112 = ROcp0_710 * s->dpt[3][4];
246 RLcp0_212 = ROcp0_810 * s->dpt[3][4];
247 RLcp0_312 = ROcp0_910 * s->dpt[3][4];
257 RLcp0_113 = ROcp0_412 * s->dpt[2][5];
258 RLcp0_213 = ROcp0_512 * s->dpt[2][5];
259 RLcp0_313 = ROcp0_612 * s->dpt[2][5];
269 RLcp0_114 = ROcp0_113 * s->dpt[1][6] + ROcp0_412 * s->dpt[2][6] + ROcp0_713 * s->dpt[3][6];
270 RLcp0_214 = ROcp0_213 * s->dpt[1][6] + ROcp0_512 * s->dpt[2][6] + ROcp0_813 * s->dpt[3][6];
271 RLcp0_314 = ROcp0_313 * s->dpt[1][6] + ROcp0_612 * s->dpt[2][6] + ROcp0_913 * s->dpt[3][6];
281 OPcp0_115 = OPcp0_113 + ROcp0_113 * qdd[14] + ROcp0_714 * qdd[15] + qd[14] * (OMcp0_213 * ROcp0_313 - OMcp0_313 * ROcp0_213) + qd[15] * (
283 OPcp0_215 = OPcp0_213 + ROcp0_213 * qdd[14] + ROcp0_814 * qdd[15] - qd[14] * (OMcp0_113 * ROcp0_313 - OMcp0_313 * ROcp0_113) - qd[15] * (
285 OPcp0_315 = OPcp0_313 + ROcp0_313 * qdd[14] + ROcp0_914 * qdd[15] + qd[14] * (OMcp0_113 * ROcp0_213 - OMcp0_213 * ROcp0_113) + qd[15] * (
287 RLcp0_116 = ROcp0_415 * q[16];
288 RLcp0_216 = ROcp0_515 * q[16];
289 RLcp0_316 = ROcp0_615 * q[16];
295 JTcp0_116_5 = s->dpt[3][1] * C5 + C4 * (RLcp0_311 + RLcp0_39) + C4 * (RLcp0_312 + RLcp0_313) + C4 * (RLcp0_314 + RLcp0_316) - S4 * (RLcp0_211 +
302 - S5 * (RLcp0_311 + RLcp0_39) - S5 * (RLcp0_312 + RLcp0_313);
308 - S5 * (RLcp0_311 + RLcp0_39) - S5 * (RLcp0_312 + RLcp0_313);
377 OPcp0_118 = OPcp0_115 + ROcp0_115 * qdd[17] + ROcp0_717 * qdd[18] + qd[17] * (OMcp0_215 * ROcp0_315 - OMcp0_315 * ROcp0_215) + qd[18] * (
379 OPcp0_218 = OPcp0_215 + ROcp0_215 * qdd[17] + ROcp0_817 * qdd[18] - qd[17] * (OMcp0_115 * ROcp0_315 - OMcp0_315 * ROcp0_115) - qd[18] * (
381 OPcp0_318 = OPcp0_315 + ROcp0_315 * qdd[17] + ROcp0_917 * qdd[18] + qd[17] * (OMcp0_115 * ROcp0_215 - OMcp0_215 * ROcp0_115) + qd[18] * (
383
384 // = = Block_1_0_0_1_1_0 = =
385
386 // Symbolic Outputs
387
388 sens->P[1] = POcp0_116;
389 sens->P[2] = POcp0_216;
390 sens->P[3] = POcp0_316;
391 sens->R[1][1] = ROcp0_118;
392 sens->R[1][2] = ROcp0_218;
393 sens->R[1][3] = ROcp0_318;
394 sens->R[2][1] = ROcp0_418;
395 sens->R[2][2] = ROcp0_518;
396 sens->R[2][3] = ROcp0_618;
397 sens->R[3][1] = ROcp0_717;
398 sens->R[3][2] = ROcp0_817;
399 sens->R[3][3] = ROcp0_917;
400 sens->V[1] = VIcp0_116;
401 sens->V[2] = VIcp0_216;
402 sens->V[3] = VIcp0_316;
403 sens->OM[1] = OMcp0_118;
404 sens->OM[2] = OMcp0_218;
405 sens->OM[3] = OMcp0_318;
406 sens->J[1][1] = (1.0);
407 sens->J[1][5] = JTcp0_116_5;
408 sens->J[1][6] = JTcp0_116_6;
409 sens->J[1][7] = JTcp0_116_7;
410 sens->J[1][8] = JTcp0_116_8;
411 sens->J[1][9] = JTcp0_116_9;
412 sens->J[1][10] = JTcp0_116_10;
413 sens->J[1][11] = JTcp0_116_11;
414 sens->J[1][12] = JTcp0_116_12;
415 sens->J[1][13] = JTcp0_116_13;
416 sens->J[1][14] = JTcp0_116_14;
417 sens->J[1][15] = JTcp0_116_15;
418 sens->J[1][16] = ROcp0_415;
419 sens->J[2][2] = (1.0);
420 sens->J[2][4] = JTcp0_216_4;
421 sens->J[2][5] = JTcp0_216_5;
422 sens->J[2][6] = JTcp0_216_6;
423 sens->J[2][7] = JTcp0_216_7;
424 sens->J[2][8] = JTcp0_216_8;
425 sens->J[2][9] = JTcp0_216_9;
426 sens->J[2][10] = JTcp0_216_10;
427 sens->J[2][11] = JTcp0_216_11;
428 sens->J[2][12] = JTcp0_216_12;
429 sens->J[2][13] = JTcp0_216_13;
430 sens->J[2][14] = JTcp0_216_14;
431 sens->J[2][15] = JTcp0_216_15;
432 sens->J[2][16] = ROcp0_515;
433 sens->J[3][3] = (1.0);
434 sens->J[3][4] = JTcp0_316_4;
435 sens->J[3][5] = JTcp0_316_5;
436 sens->J[3][6] = JTcp0_316_6;
437 sens->J[3][7] = JTcp0_316_7;
438 sens->J[3][8] = JTcp0_316_8;
439 sens->J[3][9] = JTcp0_316_9;
440 sens->J[3][10] = JTcp0_316_10;
441 sens->J[3][11] = JTcp0_316_11;
442 sens->J[3][12] = JTcp0_316_12;
443 sens->J[3][13] = JTcp0_316_13;
444 sens->J[3][14] = JTcp0_316_14;
445 sens->J[3][15] = JTcp0_316_15;
446 sens->J[3][16] = ROcp0_615;
447 sens->J[4][4] = (1.0);
448 sens->J[4][6] = S5;
449 sens->J[4][7] = S5;
450 sens->J[4][8] = ROcp0_17;
451 sens->J[4][9] = ROcp0_17;
452 sens->J[4][10] = ROcp0_49;
453 sens->J[4][11] = ROcp0_710;
454 sens->J[4][12] = ROcp0_111;
455 sens->J[4][13] = ROcp0_412;
456 sens->J[4][14] = ROcp0_113;
457 sens->J[4][15] = ROcp0_714;
458 sens->J[4][17] = ROcp0_115;
459 sens->J[4][18] = ROcp0_717;
460 sens->J[5][5] = C4;
461 sens->J[5][6] = ROcp0_85;
462 sens->J[5][7] = ROcp0_85;
463 sens->J[5][8] = ROcp0_27;
464 sens->J[5][9] = ROcp0_27;
465 sens->J[5][10] = ROcp0_59;
466 sens->J[5][11] = ROcp0_810;
467 sens->J[5][12] = ROcp0_211;
468 sens->J[5][13] = ROcp0_512;
469 sens->J[5][14] = ROcp0_213;
470 sens->J[5][15] = ROcp0_814;
471 sens->J[5][17] = ROcp0_215;
472 sens->J[5][18] = ROcp0_817;
473 sens->J[6][5] = S4;
474 sens->J[6][6] = ROcp0_95;
475 sens->J[6][7] = ROcp0_95;
476 sens->J[6][8] = ROcp0_37;
477 sens->J[6][9] = ROcp0_37;
478 sens->J[6][10] = ROcp0_69;
479 sens->J[6][11] = ROcp0_910;
480 sens->J[6][12] = ROcp0_311;
481 sens->J[6][13] = ROcp0_612;
482 sens->J[6][14] = ROcp0_313;
483 sens->J[6][15] = ROcp0_914;
484 sens->J[6][17] = ROcp0_315;
485 sens->J[6][18] = ROcp0_917;
486 sens->A[1] = ACcp0_116;
487 sens->A[2] = ACcp0_216;
488 sens->A[3] = ACcp0_316;
489 sens->OMP[1] = OPcp0_118;
490 sens->OMP[2] = OPcp0_218;
491 sens->OMP[3] = OPcp0_318;
492
493 break;
494 default:
495 break;
496 }
497
498
499 // ====== END Task 1 ======
500
501
502}
503
504
#define q
void mbs_sensor_ArmarIV W Torso virt(MbsSensor *sens, MbsData *s, int isens)
#define qdd
#define qd
double OM[4]
Angular velocity vector of the sensor expressed in the inertial frame: .
Definition mbs_sensor2.h:28
double V[4]
Velocity vector of the sensor expressed in the inertial frame: .
Definition mbs_sensor2.h:26
double OMP[4]
Angular acceleration vector of the sensor expressed in the inertial frame: .
Definition mbs_sensor2.h:32
double P[4]
Position vector of the sensor expressed in the inertial frame: .
Definition mbs_sensor2.h:21
double A[4]
Acceleration vector of the sensor expressed in the inertial frame: .
Definition mbs_sensor2.h:30
double * J[7]
Jacobian matrix of the sensor: .
Definition mbs_sensor2.h:37
double R[4][4]
Rotation matrix from the inertial frame to the sensor frame: .
Definition mbs_sensor2.h:24