mbs_sensor_ArmarIV-GazeStab-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 : Sun Oct 16 17:35:45 2016
15//
16// ==> Project name : ArmarIV-GazeStab-virt
17// ==> using XML input file
18//
19// ==> Number of joints : 16
20//
21// ==> Function : F 6 : Sensors Kinematical Informations (sens)
22// ==> Flops complexity : 1020
23//
24// ==> Generation Time : 0.020 seconds
25// ==> Post-Processing : 0.010 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 C15 = cos(q[15]);
90 S15 = sin(q[15]);
91 C16 = cos(q[16]);
92 S16 = sin(q[16]);
93
94 // ====== END Task 0 ======
95
96 // ===== BEGIN task 1 =====
97
98 switch (isens)
99 {
100
101 case 1:
102
103
104
105 // = = Block_1_0_0_1_0_1 = =
106
107 // Sensor Kinematics
108
109
110 ROcp0_25 = S4 * S5;
111 ROcp0_35 = -C4 * S5;
112 ROcp0_85 = -S4 * C5;
113 ROcp0_95 = C4 * C5;
114 ROcp0_16 = C5 * C6;
115 ROcp0_26 = ROcp0_25 * C6 + C4 * S6;
116 ROcp0_36 = ROcp0_35 * C6 + S4 * S6;
117 ROcp0_46 = -C5 * S6;
118 ROcp0_56 = -(ROcp0_25 * S6 - C4 * C6);
119 ROcp0_66 = -(ROcp0_35 * S6 - S4 * C6);
120 ROcp0_47 = ROcp0_46 * C7 + S5 * S7;
123 ROcp0_77 = -(ROcp0_46 * S7 - S5 * C7);
124 ROcp0_87 = -(ROcp0_56 * S7 - ROcp0_85 * C7);
125 ROcp0_97 = -(ROcp0_66 * S7 - ROcp0_95 * C7);
135 ROcp0_49 = -(ROcp0_18 * S9 - ROcp0_47 * C9);
136 ROcp0_59 = -(ROcp0_28 * S9 - ROcp0_57 * C9);
137 ROcp0_69 = -(ROcp0_38 * S9 - ROcp0_67 * C9);
141 ROcp0_710 = -(ROcp0_49 * S10 - ROcp0_78 * C10);
142 ROcp0_810 = -(ROcp0_59 * S10 - ROcp0_88 * C10);
143 ROcp0_910 = -(ROcp0_69 * S10 - ROcp0_98 * C10);
174 OMcp0_25 = qd[5] * C4;
175 OMcp0_35 = qd[5] * S4;
176 OMcp0_16 = qd[4] + qd[6] * S5;
177 OMcp0_26 = OMcp0_25 + ROcp0_85 * qd[6];
178 OMcp0_36 = OMcp0_35 + ROcp0_95 * qd[6];
179 OMcp0_17 = OMcp0_16 + ROcp0_16 * qd[7];
180 OMcp0_27 = OMcp0_26 + ROcp0_26 * qd[7];
181 OMcp0_37 = OMcp0_36 + ROcp0_36 * qd[7];
182 OMcp0_18 = OMcp0_17 + ROcp0_47 * qd[8];
183 OMcp0_28 = OMcp0_27 + ROcp0_57 * qd[8];
184 OMcp0_38 = OMcp0_37 + ROcp0_67 * qd[8];
185 OPcp0_18 = qdd[4] + ROcp0_16 * qdd[7] + ROcp0_47 * qdd[8] + qdd[6] * S5 + qd[5] * qd[6] * C5 + qd[7] * (OMcp0_26 * ROcp0_36 - OMcp0_36 * ROcp0_26)
186 + qd[8] * (OMcp0_27 * ROcp0_67 - OMcp0_37 * ROcp0_57);
187 OPcp0_28 = ROcp0_26 * qdd[7] + ROcp0_57 * qdd[8] + ROcp0_85 * qdd[6] + qdd[5] * C4 - qd[4] * qd[5] * S4 + qd[6] * (OMcp0_35 * S5 - ROcp0_95 * qd[4])
189 OPcp0_38 = ROcp0_36 * qdd[7] + ROcp0_67 * qdd[8] + ROcp0_95 * qdd[6] + qdd[5] * S4 + qd[4] * qd[5] * C4 - qd[6] * (OMcp0_25 * S5 - ROcp0_85 * qd[4])
194 OMcp0_19 = OMcp0_18 + ROcp0_78 * qd[9];
195 OMcp0_29 = OMcp0_28 + ROcp0_88 * qd[9];
196 OMcp0_39 = OMcp0_38 + ROcp0_98 * qd[9];
206 OMcp0_110 = OMcp0_19 + ROcp0_19 * qd[10];
207 OMcp0_210 = OMcp0_29 + ROcp0_29 * qd[10];
208 OMcp0_310 = OMcp0_39 + ROcp0_39 * qd[10];
239 OPcp0_113 = OPcp0_111 + ROcp0_111 * qdd[12] + ROcp0_712 * qdd[13] + qd[12] * (OMcp0_211 * ROcp0_311 - OMcp0_311 * ROcp0_211) + qd[13] * (
241 OPcp0_213 = OPcp0_211 + ROcp0_211 * qdd[12] + ROcp0_812 * qdd[13] - qd[12] * (OMcp0_111 * ROcp0_311 - OMcp0_311 * ROcp0_111) - qd[13] * (
243 OPcp0_313 = OPcp0_311 + ROcp0_311 * qdd[12] + ROcp0_912 * qdd[13] + qd[12] * (OMcp0_111 * ROcp0_211 - OMcp0_211 * ROcp0_111) + qd[13] * (
245 RLcp0_114 = ROcp0_413 * q[14];
246 RLcp0_214 = ROcp0_513 * q[14];
247 RLcp0_314 = ROcp0_613 * q[14];
254 S4 + RLcp0_314 * C4;
276 RLcp0_214);
278 RLcp0_114));
280 RLcp0_114);
317 OPcp0_116 = OPcp0_113 + ROcp0_113 * qdd[15] + ROcp0_715 * qdd[16] + qd[15] * (OMcp0_213 * ROcp0_313 - OMcp0_313 * ROcp0_213) + qd[16] * (
319 OPcp0_216 = OPcp0_213 + ROcp0_213 * qdd[15] + ROcp0_815 * qdd[16] - qd[15] * (OMcp0_113 * ROcp0_313 - OMcp0_313 * ROcp0_113) - qd[16] * (
321 OPcp0_316 = OPcp0_313 + ROcp0_313 * qdd[15] + ROcp0_915 * qdd[16] + qd[15] * (OMcp0_113 * ROcp0_213 - OMcp0_213 * ROcp0_113) + qd[16] * (
323
324 // = = Block_1_0_0_1_1_0 = =
325
326 // Symbolic Outputs
327
328 sens->P[1] = POcp0_114;
329 sens->P[2] = POcp0_214;
330 sens->P[3] = POcp0_314;
331 sens->R[1][1] = ROcp0_116;
332 sens->R[1][2] = ROcp0_216;
333 sens->R[1][3] = ROcp0_316;
334 sens->R[2][1] = ROcp0_416;
335 sens->R[2][2] = ROcp0_516;
336 sens->R[2][3] = ROcp0_616;
337 sens->R[3][1] = ROcp0_715;
338 sens->R[3][2] = ROcp0_815;
339 sens->R[3][3] = ROcp0_915;
340 sens->V[1] = VIcp0_114;
341 sens->V[2] = VIcp0_214;
342 sens->V[3] = VIcp0_314;
343 sens->OM[1] = OMcp0_116;
344 sens->OM[2] = OMcp0_216;
345 sens->OM[3] = OMcp0_316;
346 sens->J[1][1] = (1.0);
347 sens->J[1][5] = JTcp0_114_5;
348 sens->J[1][6] = JTcp0_114_6;
349 sens->J[1][7] = JTcp0_114_7;
350 sens->J[1][8] = JTcp0_114_8;
351 sens->J[1][9] = JTcp0_114_9;
352 sens->J[1][10] = JTcp0_114_10;
353 sens->J[1][11] = JTcp0_114_11;
354 sens->J[1][12] = JTcp0_114_12;
355 sens->J[1][13] = JTcp0_114_13;
356 sens->J[1][14] = ROcp0_413;
357 sens->J[2][2] = (1.0);
358 sens->J[2][4] = JTcp0_214_4;
359 sens->J[2][5] = JTcp0_214_5;
360 sens->J[2][6] = JTcp0_214_6;
361 sens->J[2][7] = JTcp0_214_7;
362 sens->J[2][8] = JTcp0_214_8;
363 sens->J[2][9] = JTcp0_214_9;
364 sens->J[2][10] = JTcp0_214_10;
365 sens->J[2][11] = JTcp0_214_11;
366 sens->J[2][12] = JTcp0_214_12;
367 sens->J[2][13] = JTcp0_214_13;
368 sens->J[2][14] = ROcp0_513;
369 sens->J[3][3] = (1.0);
370 sens->J[3][4] = JTcp0_314_4;
371 sens->J[3][5] = JTcp0_314_5;
372 sens->J[3][6] = JTcp0_314_6;
373 sens->J[3][7] = JTcp0_314_7;
374 sens->J[3][8] = JTcp0_314_8;
375 sens->J[3][9] = JTcp0_314_9;
376 sens->J[3][10] = JTcp0_314_10;
377 sens->J[3][11] = JTcp0_314_11;
378 sens->J[3][12] = JTcp0_314_12;
379 sens->J[3][13] = JTcp0_314_13;
380 sens->J[3][14] = ROcp0_613;
381 sens->J[4][4] = (1.0);
382 sens->J[4][6] = S5;
383 sens->J[4][7] = ROcp0_16;
384 sens->J[4][8] = ROcp0_47;
385 sens->J[4][9] = ROcp0_78;
386 sens->J[4][10] = ROcp0_19;
387 sens->J[4][11] = ROcp0_410;
388 sens->J[4][12] = ROcp0_111;
389 sens->J[4][13] = ROcp0_712;
390 sens->J[4][15] = ROcp0_113;
391 sens->J[4][16] = ROcp0_715;
392 sens->J[5][5] = C4;
393 sens->J[5][6] = ROcp0_85;
394 sens->J[5][7] = ROcp0_26;
395 sens->J[5][8] = ROcp0_57;
396 sens->J[5][9] = ROcp0_88;
397 sens->J[5][10] = ROcp0_29;
398 sens->J[5][11] = ROcp0_510;
399 sens->J[5][12] = ROcp0_211;
400 sens->J[5][13] = ROcp0_812;
401 sens->J[5][15] = ROcp0_213;
402 sens->J[5][16] = ROcp0_815;
403 sens->J[6][5] = S4;
404 sens->J[6][6] = ROcp0_95;
405 sens->J[6][7] = ROcp0_36;
406 sens->J[6][8] = ROcp0_67;
407 sens->J[6][9] = ROcp0_98;
408 sens->J[6][10] = ROcp0_39;
409 sens->J[6][11] = ROcp0_610;
410 sens->J[6][12] = ROcp0_311;
411 sens->J[6][13] = ROcp0_912;
412 sens->J[6][15] = ROcp0_313;
413 sens->J[6][16] = ROcp0_915;
414 sens->A[1] = ACcp0_114;
415 sens->A[2] = ACcp0_214;
416 sens->A[3] = ACcp0_314;
417 sens->OMP[1] = OPcp0_116;
418 sens->OMP[2] = OPcp0_216;
419 sens->OMP[3] = OPcp0_316;
420
421 break;
422 default:
423 break;
424 }
425
426
427 // ====== END Task 1 ======
428
429
430}
431
void mbs_sensor_ArmarIV_GazeStab_virt(MbsSensor *sens, double *q, double *qd, double *qdd, int isens)
#define q
#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
#define DPT_1_4
#define DPT_2_3
#define DPT_2_4
#define DPT_3_1
#define DPT_3_2
#define DPT_3_4