From 6f776c4178475afb94ce41f9662a666c4a3874e7 Mon Sep 17 00:00:00 2001 From: lamipaul <paulobest25@gmail.com> Date: Mon, 12 Jul 2021 11:40:19 +0200 Subject: [PATCH] infer output filename from input filename --- CLOCK.CFG | 0 JConfig.CFG | 0 RapportInfo2txt | Bin RapportInfo2txt.c | 0 log2wav | Bin 17768 -> 17264 bytes log2wav.c | 175 ++++++---------------------------------------- plot_mpu.py | 12 ++-- trame IMU.txt | 0 8 files changed, 30 insertions(+), 157 deletions(-) mode change 100644 => 100755 CLOCK.CFG mode change 100644 => 100755 JConfig.CFG mode change 100644 => 100755 RapportInfo2txt mode change 100644 => 100755 RapportInfo2txt.c mode change 100644 => 100755 log2wav mode change 100644 => 100755 log2wav.c mode change 100644 => 100755 plot_mpu.py mode change 100644 => 100755 trame IMU.txt diff --git a/CLOCK.CFG b/CLOCK.CFG old mode 100644 new mode 100755 diff --git a/JConfig.CFG b/JConfig.CFG old mode 100644 new mode 100755 diff --git a/RapportInfo2txt b/RapportInfo2txt old mode 100644 new mode 100755 diff --git a/RapportInfo2txt.c b/RapportInfo2txt.c old mode 100644 new mode 100755 diff --git a/log2wav b/log2wav old mode 100644 new mode 100755 index b6e6e5e04bc69b16de4399099cc49083de2f25bf..306bdaeb081e7de54002e9853746a7ec90fad9f5 GIT binary patch literal 17264 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 E03%-mi~s-t literal 17768 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 z%0D18VESO;2<qR1{14X;9glU;2dQRYfaM<u4>8UPGv^gF{9*dx<0YWY-V6*3IWUb- z8ofLPEz<*;1=9~3SIL3uhm{{t?HKt7w1OYxeyDPoG6tA_SpNkk0a6QMBh#?B2Z_V* z45)#yd<d#%KyCrK6{H4Met^<9%<Uj?7|yVSuy&(K!t8~}g8C|;-S03Sf>ySLu>V0Q IIEk(w0Pgh|6951J diff --git a/log2wav.c b/log2wav.c old mode 100644 new mode 100755 index 5aee4fd..725984e --- a/log2wav.c +++ b/log2wav.c @@ -8,139 +8,6 @@ #define MAX_PERIPHERAL 5 //Nombre max de peripheriques externes -#define twoKpDef (2.0f * 0.5f) // 2 * proportional gain -#define twoKiDef (2.0f * 0.0f) // 2 * integral gain -#define PI 3.14159265358979323846 - -// now = micros(); -float twoKp = twoKpDef; // 2 * proportional gain (Kp) -float twoKi = twoKiDef; // 2 * integral gain (Ki) -float q0 = 1.0f; -float q1 = 0.0f; -float q2 = 0.0f; -float q3 = 0.0f; -float integralFBx = 0.0f; -float integralFBy = 0.0f; -float integralFBz = 0.0f; -float anglesComputed = 0; - -void update(float gx, float gy, float gz, float ax, float ay, float az, float mx, float my, float mz) -{ - float recipNorm; - float q0q0, q0q1, q0q2, q0q3, q1q1, q1q2, q1q3, q2q2, q2q3, q3q3; - float hx, hy, bx, bz; - float halfvx, halfvy, halfvz, halfwx, halfwy, halfwz; - float halfex, halfey, halfez; - float qa, qb, qc; - - // Convert gyroscope degrees/sec to radians/sec - gx *= 0.0174533f; - gy *= 0.0174533f; - gz *= 0.0174533f; - - // Use IMU algorithm if magnetometer measurement invalid - // (avoids NaN in magnetometer normalisation) - if((mx == 0.0f) && (my == 0.0f) && (mz == 0.0f)) { - // updateIMU(gx, gy, gz, ax, ay, az); - return; - } - - // now = micros(); - // // Set integration time by time elapsed since last filter update - // delta_t = ((now - last_update) / 1000000.0f); - // last_update = now; - - // Compute feedback only if accelerometer measurement valid - // (avoids NaN in accelerometer normalisation) - if(!((ax == 0.0f) && (ay == 0.0f) && (az == 0.0f))) { - - // Normalise accelerometer measurement - recipNorm = powf(ax * ax + ay * ay + az * az, -0.5); - ax *= recipNorm; - ay *= recipNorm; - az *= recipNorm; - - // Normalise magnetometer measurement - recipNorm = powf(mx * mx + my * my + mz * mz, -0.5); - mx *= recipNorm; - my *= recipNorm; - mz *= recipNorm; - - // Auxiliary variables to avoid repeated arithmetic - q0q0 = q0 * q0; - q0q1 = q0 * q1; - q0q2 = q0 * q2; - q0q3 = q0 * q3; - q1q1 = q1 * q1; - q1q2 = q1 * q2; - q1q3 = q1 * q3; - q2q2 = q2 * q2; - q2q3 = q2 * q3; - q3q3 = q3 * q3; - - // Reference direction of Earth's magnetic field - hx = 2.0f * (mx * (0.5f - q2q2 - q3q3) + my * (q1q2 - q0q3) + mz * (q1q3 + q0q2)); - hy = 2.0f * (mx * (q1q2 + q0q3) + my * (0.5f - q1q1 - q3q3) + mz * (q2q3 - q0q1)); - bx = sqrtf(hx * hx + hy * hy); - bz = 2.0f * (mx * (q1q3 - q0q2) + my * (q2q3 + q0q1) + mz * (0.5f - q1q1 - q2q2)); - - // Estimated direction of gravity and magnetic field - halfvx = q1q3 - q0q2; - halfvy = q0q1 + q2q3; - halfvz = q0q0 - 0.5f + q3q3; - halfwx = bx * (0.5f - q2q2 - q3q3) + bz * (q1q3 - q0q2); - halfwy = bx * (q1q2 - q0q3) + bz * (q0q1 + q2q3); - halfwz = bx * (q0q2 + q1q3) + bz * (0.5f - q1q1 - q2q2); - - // Error is sum of cross product between estimated direction - // and measured direction of field vectors - halfex = (ay * halfvz - az * halfvy) + (my * halfwz - mz * halfwy); - halfey = (az * halfvx - ax * halfvz) + (mz * halfwx - mx * halfwz); - halfez = (ax * halfvy - ay * halfvx) + (mx * halfwy - my * halfwx); - - // Compute and apply integral feedback if enabled - if(false){ //twoKi > 0.0f) { - // integral error scaled by Ki - integralFBx += twoKi * halfex * 0.01; - integralFBy += twoKi * halfey * 0.01; - integralFBz += twoKi * halfez * 0.01; - gx += integralFBx; // apply integral feedback - gy += integralFBy; - gz += integralFBz; - } else { - integralFBx = 0.0f; // prevent integral windup - integralFBy = 0.0f; - integralFBz = 0.0f; - } - - // Apply proportional feedback - gx += twoKp * halfex; - gy += twoKp * halfey; - gz += twoKp * halfez; - } - - // Integrate rate of change of quaternion - gx *= (0.5f * 0.01); // pre-multiply common factors - gy *= (0.5f * 0.01); - gz *= (0.5f * 0.01); - qa = q0; - qb = q1; - qc = q2; - q0 += (-qb * gx - qc * gy - q3 * gz); - q1 += (qa * gx + qc * gz - q3 * gy); - q2 += (qa * gy - qb * gz + q3 * gx); - q3 += (qa * gz + qb * gy - qc * gx); - - // Normalise quaternion - recipNorm = powf(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3, -0.5); - q0 *= recipNorm; - q1 *= recipNorm; - q2 *= recipNorm; - q3 *= recipNorm; - anglesComputed = 0; -} - - typedef struct{ char Type; //type du peripherique (0x01 accel, 0x02 gyro, 0x03 magneto, 0x04 temperature, 0x05 pressure, 0x06 light,...) char ID; //ID du peripherique @@ -245,7 +112,7 @@ void parseMPU(unsigned char* additionnalDataBlock, int size, bool verbose, FILE* val = *((short int*) (curData + i)); val = ((val & 0x00FF)<<8) | ((val & 0xFF00)>>8); //printf("curData %x %x %hd", *(curData+i), *(curData + i +1), val); - if( true){//i<29){ + if(i<29){ fprintf(mpuFile, "%hd,", val); }else{ fprintf(mpuFile, "%hd\n", val); @@ -258,27 +125,17 @@ void parseMPU(unsigned char* additionnalDataBlock, int size, bool verbose, FILE* float gy = ((float) toLittleEndian(*((short int*) (curData + 21)))) / 32756 * 250; float gz = ((float) toLittleEndian(*((short int*) (curData + 23)))) / 32756 * 250; float mx = ((float) toLittleEndian(*((short int*) (curData + 25)))) / 32756 * 0.15; // utesla - float my = ((float) toLittleEndian(*((short int*) (curData + 27)))) / 32756 * (0.15); // - car magneto oppose a accelero - float mz = ((float) toLittleEndian(*((short int*) (curData + 29)))) / 32756 * (0.15); // - car magneto oppose a accelero - // update(ax, ay, az, gx, gy, gz, mx, my, mz); - // fprintf(mpuFile, "%f,", atan2f(q0*q1 + q2*q3, 0.5f - q1*q1 - q2*q2) * 360 / PI); // roll - // fprintf(mpuFile, "%f,", asinf(-2.0f * (q1*q3 - q0*q2)) * 360 / PI); // pitch - // fprintf(mpuFile, "%f\n", atan2f(q1*q2 + q0*q3, 0.5f - q2*q2 - q3*q3) * 360 / PI); // yaw - float pitch = 180 * atan (ax/sqrt(ay*ay + az*az))/PI; - float roll = 180 * atan (ay/sqrt(ax*ax + az*az))/PI; - float yaw = 180 * atan (az/sqrt(ax*ax + az*az))/PI; - fprintf(mpuFile, "%f,", pitch); - fprintf(mpuFile, "%f,", yaw); - fprintf(mpuFile, "%f\n", roll); + float my = ((float) toLittleEndian(*((short int*) (curData + 27)))) / 32756 * (-0.15); // - car magneto oppose a accelero + float mz = ((float) toLittleEndian(*((short int*) (curData + 29)))) / 32756 * (-0.15); // - car magneto oppose a accelero maxtimeStamp = timestamp; - } + } curData += trameSize + 1; // shift of trame size + 1 byte of checksum } } int main(int argc, char* argv[]){ - if(argc < 3){ - printf("Script needs to be called with at least 2 arguments : \n \t input file name (.log file) \n \t output filename (.wav file)\n \t (optionnal) verbose (1 / void)\n"); + if(argc < 2){ + printf("Script needs to be called with at least 1 arguments :\n\t input file name (.log file)\n\t(optionnal) output filename (.wav file)\n\t(optionnal) mpu filename (.csv file)\n\t(optionnal) verbose (1 / void)\n"); return 0; } HighBlueHeader hdr; @@ -306,7 +163,14 @@ int main(int argc, char* argv[]){ printf("resolution %d not supported yet sorry\n", hdr.resolutionBits); return 0; } - FILE* wavfile = fopen(argv[2], "wb"); // open wav file + + FILE* wavfile;// open wav file + if(argc>2){ + wavfile = fopen(argv[2], "wb"); + }else{ + strcpy(argv[1] + strlen(argv[1])-3, "wav\0"); + wavfile = fopen(argv[1], "wb"); + } if(wavfile==NULL){ printf("Failed to open wav output file\n"); return 0; @@ -321,7 +185,14 @@ int main(int argc, char* argv[]){ whdr.subChunk2Size = whdr.chunkSize-36; fwrite(&whdr, sizeof(WaveHeader), 1, wavfile); - FILE* mpuFile = fopen(argv[3], "w+"); // open mpu file + FILE* mpuFile; // open mpu file + if(argc>3){ + mpuFile = fopen(argv[3], "w+"); + }else{ + strcpy(argv[1] + strlen(argv[1])-4, "_mpu.csv\0"); + mpuFile = fopen(argv[1], "w+"); + argv[1][strlen(argv[1])-8] = '\0'; + } if(mpuFile==NULL){ printf("Failed to open mpu output file\n"); return 0; @@ -345,7 +216,7 @@ int main(int argc, char* argv[]){ } fwrite(samples, resolutionBytes, hdr.numberOfChan, wavfile); } - printf("\r %s : ", argv[2]); + printf("\r %s : ", argv[1]); pos = ftell(logfile); printf(" %ld%%", pos*100/filesize); }while(pos < filesize - 1); diff --git a/plot_mpu.py b/plot_mpu.py old mode 100644 new mode 100755 index e3defd7..de164d6 --- a/plot_mpu.py +++ b/plot_mpu.py @@ -5,11 +5,13 @@ import os time, accelX, accelY, accelZ, gyroX, gyroY, gyroZ, magX, magY, magZ = [], [], [], [], [], [], [], [], [], [] -for f in os.listdir('./test/'): +for f in os.listdir('./'): if not f.endswith('mpu.csv'): continue print(f) - a = np.loadtxt('./test/'+f, delimiter=',') + plt.figure() + plt.title(f) + a = np.loadtxt('./'+f, delimiter=',') time.extend(a[:,0]) accelX.extend(a[:,1]) accelY.extend(a[:,2]) @@ -17,9 +19,9 @@ for f in os.listdir('./test/'): gyroX.extend(a[:,4]) gyroY.extend(a[:,5]) gyroZ.extend(a[:,6]) - magX.extend(a[:,10]) - magY.extend(a[:,11]) - magZ.extend(a[:,12]) + magX.extend(a[:,7]) + magY.extend(a[:,8]) + magZ.extend(a[:,9]) plt.scatter(time, magX, label='x') plt.scatter(time, magY, label='y') diff --git a/trame IMU.txt b/trame IMU.txt old mode 100644 new mode 100755 -- GitLab