mbs_sensor_ArmarIV-W-Torso-virt_new.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"
35#include "mbs_sensor2.h"
36
38 double* q,
39 double* qd,
40 double* qdd,
41 int isens)
42{
43
45
46 //double *q = s->q;
47 //double *qd = s->qd;
48 //double *qdd = s->qdd;
49
50 //double **frc = s->frc;
51 //double **trq = s->trq;
52
53
54
55 // === begin imp_aux ===
56
57 // === end imp_aux ===
58
59 // ===== BEGIN task 0 =====
60
61 // Sensor Kinematics
62
63
64
65 // = = Block_0_0_0_0_0_1 = =
66
67 // Trigonometric Variables
68
69 C4 = cos(q[4]);
70 S4 = sin(q[4]);
71 C5 = cos(q[5]);
72 S5 = sin(q[5]);
73 C6 = cos(q[6]);
74 S6 = sin(q[6]);
75 C7 = cos(q[7]);
76 S7 = sin(q[7]);
77 C8 = cos(q[8]);
78 S8 = sin(q[8]);
79 C9 = cos(q[9]);
80 S9 = sin(q[9]);
81 C10 = cos(q[10]);
82 S10 = sin(q[10]);
83 C11 = cos(q[11]);
84 S11 = sin(q[11]);
85 C12 = cos(q[12]);
86 S12 = sin(q[12]);
87 C13 = cos(q[13]);
88 S13 = sin(q[13]);
89 C14 = cos(q[14]);
90 S14 = sin(q[14]);
91 C15 = cos(q[15]);
92 S15 = sin(q[15]);
93 C17 = cos(q[17]);
94 S17 = sin(q[17]);
95 C18 = cos(q[18]);
96 S18 = sin(q[18]);
97
98 // = = Block_0_0_0_1_0_1 = =
99
100 // Trigonometric Variables
101
102 C6p7 = C6 * C7 - S6 * S7;
103 S6p7 = C6 * S7 + S6 * C7;
104
105 // ====== END Task 0 ======
106
107 // ===== BEGIN task 1 =====
108
109 switch (isens)
110 {
111
112 //
113 break;
114 case 1:
115
116
117
118 // = = Block_1_0_0_1_0_1 = =
119
120 // Sensor Kinematics
121
122
123 ROcp0_25 = S4 * S5;
124 ROcp0_35 = -C4 * S5;
125 ROcp0_85 = -S4 * C5;
126 ROcp0_95 = C4 * C5;
127 ROcp0_26 = ROcp0_25 * C6 + C4 * S6;
128 ROcp0_36 = ROcp0_35 * C6 + S4 * S6;
129 ROcp0_56 = -(ROcp0_25 * S6 - C4 * C6);
130 ROcp0_66 = -(ROcp0_35 * S6 - S4 * C6);
131 ROcp0_17 = C6p7 * C5;
134 ROcp0_47 = -S6p7 * C5;
135 ROcp0_57 = -(ROcp0_26 * S7 - ROcp0_56 * C7);
136 ROcp0_67 = -(ROcp0_36 * S7 - ROcp0_66 * C7);
137 ROcp0_48 = ROcp0_47 * C8 + S5 * S8;
140 ROcp0_78 = -(ROcp0_47 * S8 - S5 * C8);
141 ROcp0_88 = -(ROcp0_57 * S8 - ROcp0_85 * C8);
142 ROcp0_98 = -(ROcp0_67 * S8 - ROcp0_95 * C8);
146 ROcp0_79 = -(ROcp0_48 * S9 - ROcp0_78 * C9);
147 ROcp0_89 = -(ROcp0_58 * S9 - ROcp0_88 * C9);
148 ROcp0_99 = -(ROcp0_68 * S9 - ROcp0_98 * C9);
197 OMcp0_25 = qd[5] * C4;
198 OMcp0_35 = qd[5] * S4;
199 OMcp0_16 = qd[4] + qd[6] * S5;
200 OMcp0_26 = OMcp0_25 + ROcp0_85 * qd[6];
201 OMcp0_36 = OMcp0_35 + ROcp0_95 * qd[6];
202 OMcp0_17 = OMcp0_16 + qd[7] * S5;
203 OMcp0_27 = OMcp0_26 + ROcp0_85 * qd[7];
204 OMcp0_37 = OMcp0_36 + ROcp0_95 * qd[7];
205 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);
206 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 *
207 ROcp0_95 - OMcp0_36 * S5);
208 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 *
209 ROcp0_85 - OMcp0_26 * S5);
210 RLcp0_18 = DPT_3_1 * S5;
213 OMcp0_18 = OMcp0_17 + ROcp0_17 * qd[8];
214 OMcp0_28 = OMcp0_27 + ROcp0_27 * qd[8];
215 OMcp0_38 = OMcp0_37 + ROcp0_37 * qd[8];
225 OMcp0_19 = OMcp0_18 + ROcp0_17 * qd[9];
226 OMcp0_29 = OMcp0_28 + ROcp0_27 * qd[9];
227 OMcp0_39 = OMcp0_38 + ROcp0_37 * qd[9];
231 OMcp0_110 = OMcp0_19 + ROcp0_49 * qd[10];
232 OMcp0_210 = OMcp0_29 + ROcp0_59 * qd[10];
233 OMcp0_310 = OMcp0_39 + ROcp0_69 * qd[10];
234 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 *
236 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 *
238 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 *
288 OPcp0_115 = OPcp0_113 + ROcp0_113 * qdd[14] + ROcp0_714 * qdd[15] + qd[14] * (OMcp0_213 * ROcp0_313 - OMcp0_313 * ROcp0_213) + qd[15] * (
290 OPcp0_215 = OPcp0_213 + ROcp0_213 * qdd[14] + ROcp0_814 * qdd[15] - qd[14] * (OMcp0_113 * ROcp0_313 - OMcp0_313 * ROcp0_113) - qd[15] * (
292 OPcp0_315 = OPcp0_313 + ROcp0_313 * qdd[14] + ROcp0_914 * qdd[15] + qd[14] * (OMcp0_113 * ROcp0_213 - OMcp0_213 * ROcp0_113) + qd[15] * (
294 RLcp0_116 = ROcp0_415 * q[16];
295 RLcp0_216 = ROcp0_515 * q[16];
296 RLcp0_316 = ROcp0_615 * q[16];
309 - S5 * (RLcp0_311 + RLcp0_39) - S5 * (RLcp0_312 + RLcp0_313);
315 - S5 * (RLcp0_311 + RLcp0_39) - S5 * (RLcp0_312 + RLcp0_313);
384 OPcp0_118 = OPcp0_115 + ROcp0_115 * qdd[17] + ROcp0_717 * qdd[18] + qd[17] * (OMcp0_215 * ROcp0_315 - OMcp0_315 * ROcp0_215) + qd[18] * (
386 OPcp0_218 = OPcp0_215 + ROcp0_215 * qdd[17] + ROcp0_817 * qdd[18] - qd[17] * (OMcp0_115 * ROcp0_315 - OMcp0_315 * ROcp0_115) - qd[18] * (
388 OPcp0_318 = OPcp0_315 + ROcp0_315 * qdd[17] + ROcp0_917 * qdd[18] + qd[17] * (OMcp0_115 * ROcp0_215 - OMcp0_215 * ROcp0_115) + qd[18] * (
390
391 // = = Block_1_0_0_1_1_0 = =
392
393 // Symbolic Outputs
394
395 sens->P[1] = POcp0_116;
396 sens->P[2] = POcp0_216;
397 sens->P[3] = POcp0_316;
398 sens->R[1][1] = ROcp0_118;
399 sens->R[1][2] = ROcp0_218;
400 sens->R[1][3] = ROcp0_318;
401 sens->R[2][1] = ROcp0_418;
402 sens->R[2][2] = ROcp0_518;
403 sens->R[2][3] = ROcp0_618;
404 sens->R[3][1] = ROcp0_717;
405 sens->R[3][2] = ROcp0_817;
406 sens->R[3][3] = ROcp0_917;
407 sens->V[1] = VIcp0_116;
408 sens->V[2] = VIcp0_216;
409 sens->V[3] = VIcp0_316;
410 sens->OM[1] = OMcp0_118;
411 sens->OM[2] = OMcp0_218;
412 sens->OM[3] = OMcp0_318;
413 sens->J[1][1] = (1.0);
414 sens->J[1][5] = JTcp0_116_5;
415 sens->J[1][6] = JTcp0_116_6;
416 sens->J[1][7] = JTcp0_116_7;
417 sens->J[1][8] = JTcp0_116_8;
418 sens->J[1][9] = JTcp0_116_9;
419 sens->J[1][10] = JTcp0_116_10;
420 sens->J[1][11] = JTcp0_116_11;
421 sens->J[1][12] = JTcp0_116_12;
422 sens->J[1][13] = JTcp0_116_13;
423 sens->J[1][14] = JTcp0_116_14;
424 sens->J[1][15] = JTcp0_116_15;
425 sens->J[1][16] = ROcp0_415;
426 sens->J[2][2] = (1.0);
427 sens->J[2][4] = JTcp0_216_4;
428 sens->J[2][5] = JTcp0_216_5;
429 sens->J[2][6] = JTcp0_216_6;
430 sens->J[2][7] = JTcp0_216_7;
431 sens->J[2][8] = JTcp0_216_8;
432 sens->J[2][9] = JTcp0_216_9;
433 sens->J[2][10] = JTcp0_216_10;
434 sens->J[2][11] = JTcp0_216_11;
435 sens->J[2][12] = JTcp0_216_12;
436 sens->J[2][13] = JTcp0_216_13;
437 sens->J[2][14] = JTcp0_216_14;
438 sens->J[2][15] = JTcp0_216_15;
439 sens->J[2][16] = ROcp0_515;
440 sens->J[3][3] = (1.0);
441 sens->J[3][4] = JTcp0_316_4;
442 sens->J[3][5] = JTcp0_316_5;
443 sens->J[3][6] = JTcp0_316_6;
444 sens->J[3][7] = JTcp0_316_7;
445 sens->J[3][8] = JTcp0_316_8;
446 sens->J[3][9] = JTcp0_316_9;
447 sens->J[3][10] = JTcp0_316_10;
448 sens->J[3][11] = JTcp0_316_11;
449 sens->J[3][12] = JTcp0_316_12;
450 sens->J[3][13] = JTcp0_316_13;
451 sens->J[3][14] = JTcp0_316_14;
452 sens->J[3][15] = JTcp0_316_15;
453 sens->J[3][16] = ROcp0_615;
454 sens->J[4][4] = (1.0);
455 sens->J[4][6] = S5;
456 sens->J[4][7] = S5;
457 sens->J[4][8] = ROcp0_17;
458 sens->J[4][9] = ROcp0_17;
459 sens->J[4][10] = ROcp0_49;
460 sens->J[4][11] = ROcp0_710;
461 sens->J[4][12] = ROcp0_111;
462 sens->J[4][13] = ROcp0_412;
463 sens->J[4][14] = ROcp0_113;
464 sens->J[4][15] = ROcp0_714;
465 sens->J[4][17] = ROcp0_115;
466 sens->J[4][18] = ROcp0_717;
467 sens->J[5][5] = C4;
468 sens->J[5][6] = ROcp0_85;
469 sens->J[5][7] = ROcp0_85;
470 sens->J[5][8] = ROcp0_27;
471 sens->J[5][9] = ROcp0_27;
472 sens->J[5][10] = ROcp0_59;
473 sens->J[5][11] = ROcp0_810;
474 sens->J[5][12] = ROcp0_211;
475 sens->J[5][13] = ROcp0_512;
476 sens->J[5][14] = ROcp0_213;
477 sens->J[5][15] = ROcp0_814;
478 sens->J[5][17] = ROcp0_215;
479 sens->J[5][18] = ROcp0_817;
480 sens->J[6][5] = S4;
481 sens->J[6][6] = ROcp0_95;
482 sens->J[6][7] = ROcp0_95;
483 sens->J[6][8] = ROcp0_37;
484 sens->J[6][9] = ROcp0_37;
485 sens->J[6][10] = ROcp0_69;
486 sens->J[6][11] = ROcp0_910;
487 sens->J[6][12] = ROcp0_311;
488 sens->J[6][13] = ROcp0_612;
489 sens->J[6][14] = ROcp0_313;
490 sens->J[6][15] = ROcp0_914;
491 sens->J[6][17] = ROcp0_315;
492 sens->J[6][18] = ROcp0_917;
493 sens->A[1] = ACcp0_116;
494 sens->A[2] = ACcp0_216;
495 sens->A[3] = ACcp0_316;
496 sens->OMP[1] = OPcp0_118;
497 sens->OMP[2] = OPcp0_218;
498 sens->OMP[3] = OPcp0_318;
499
500 break;
501 default:
502 break;
503 }
504
505
506 // ====== END Task 1 ======
507
508
509}
510
511
#define q
#define qdd
#define qd
void mbs_sensor_ArmarIV_W_Torso_virt(MbsSensor *sens, double *q, double *qd, double *qdd, int isens)
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
#define DPT_1_6
#define DPT_3_1
#define DPT_3_3
#define DPT_2_5
#define DPT_3_2
#define DPT_3_4
#define DPT_3_6
#define DPT_2_6