আমার প্রায় 32 সেকেন্ডের মূল্যবান অ্যাকসিলোমিটার ডেটা রয়েছে প্রায় 25 টি এমপিএইচ সাধারণ রাস্তার সাথে ড্রাইভিং দৃশ্যের প্রায় 7 টি গর্ত এবং রাস্তার মোটামুটি প্যাচ। অ্যাকসিলোমিটারটি আমার গাড়ির ড্যাশ বোর্ডে ডাবল পার্শ্বযুক্ত টেপ সহ লাগানো আছে।
সমস্যা: অ্যাক্সিলোমিটার থেকে গোলমাল করা সমস্ত ডেটা আমার কাছে আছে এবং গর্তের ঘটনা ঘটেছে তা সনাক্ত করার জন্য আমার একটি সহজ উপায় তৈরি করতে হবে। নীচে সময় ডোমেন এবং এফএফটির কয়েকটি গ্রাফের ডেটা রয়েছে। অ্যাক্সিলোমিটার জিফর্সে পরিমাপ করছে
মূলত আমি চাই আমার আর্দুইনোটি জানতে যে একটি পটোল হয়েছে পুরোপুরি দুর্দান্ত নির্ভুলতার সাথে এবং স্নাতক স্তরের গণিত এবং কৌশলগুলি ব্যবহার না করে occurred
100hz এ স্যাম্পল করা অ্যাক্সিলোমিটারের জেড অ্যাকসিসে একটি সরল 50HZ আরসি কম পাস ফিল্টার রয়েছে
Here is the CSV data for the 32 seconds of accelerometer readings TIME, GFORCE format:
http://hamiltoncomputer.us/50HZLPFDATA.CSV
আপডেট: এটি আরডিনোতে যে পরিমাণ স্যাম্পলিং হার পড়তে পারে স্যাম্পল করা অ্যাকসিলোমিটার 1000HZ এর RAW পূর্ণ ব্যান্ডউইথথ। ডাইরেক্ট সিএসভি ফাইল ডাউনলোড: প্রায় 112 সেকেন্ডের ডেটা
http://hamiltoncomputer.us/RAWUNFILTEREDFULLBANDWIDTH500HZ.csv
ব্ল্যাক ট্রেসটি RAW অপরিবর্তিত অ্যাক্সিলোমিটার ডেটা: নীল ট্রেসটি এফএফটি, ডমিনেট 2 এইচজেড এবং 12 এইচজেডে পাওয়া চরম ফ্রিকোয়েন্সিগুলির ভিত্তিতে একটি ব্যান্ডস্টপ ফিল্টার দ্বারা ফিল্টার করা হয়।
পোথোল ইভেন্টটি সময় ডোমেনে এ জাতীয় দেখাচ্ছে:
এফএফটি-তে 10 থেকে 15 এইচজেডের উপাদানটি কী তা নিশ্চিত নয়, এটিই কি আসল গর্ত, বা এটি রাস্তার বিপরীতে চাকাগুলির হুইল হপ, বা এটি গাড়ীটির অনুরণনমূলক ফ্রিকোয়েন্সি?
FFT:
দেখে মনে হচ্ছে এটি আসল গর্তের ঘটনা, এখানে একটি এইচপিএফ @ 13HZ রয়েছে গর্তের প্রভাবশালী বৈশিষ্ট্যগুলি বর্ধিত বলে মনে হচ্ছে
আমি বাস্তব সময়ে গর্তগুলি সনাক্ত করতে এবং গণনা করতে সক্ষম হতে চাই
মনে হচ্ছে স্থগিতাদেশটি 10 থেকে 13 এইচজেডের চেয়ে অনেক ধীর গতিতে চলবে যা আমি বিশ্বাস করি যে গতি-অসুস্থতা সৃষ্টি করবে
হালনাগাদ:
অ্যাংগ্রিই'র পরামর্শ অনুসারে, আমি অ্যাকিলারোমিটার 1000HZ এর পূর্ণ ব্যান্ডউইথ এবং আর্দুইনোতে সর্বাধিক স্যাম্পলিং হার পেতে পারি।
FFT:
এখানে পাথোল ইভেন্টের ডেটার একটি নমুনা টুকরা এবং এর চারপাশে কিছুগুলি ধাক্কা এবং রাস্তার শব্দ:
ডায়োড খাম আবিষ্কারক সার্কিট যুক্ত করা হয়েছে, আউটপুট একই দেখায় ... অ্যাক্সিলোমিটার সর্বদা 0 থেকে 3.3 আউটপুট negativeণাত্মক নয় ...
হালনাগাদ:
অনেকগুলি রাস্তা পরীক্ষা থেকে, আমি জেড অক্ষে আমার গাড়িতে কখনই 1.6G এর 45 এমপিএইচ ছাড়িয়েছি না, সিউডোর্যান্ডম গফোর ত্বরণ উত্পন্ন করতে আমি র্যান্ড () ব্যবহার করেছি।
আমার ধারণাটি হ'ল যদি আমি ডেটাটির 1 থেকে 3 সেকেন্ডের উইন্ডোগুলি দেখতে পারি, আমি জেড অক্ষের স্থানচ্যুতি গণনা করতে পারি, তবে অ্যাক্সিরোমিটার ড্রিফ্ট এবং সংহতকরণের ত্রুটি সম্পর্কে আমি উদ্বিগ্ন ছিলাম। আমার এখানে 90% নির্ভুল হওয়ার দরকার নেই,> 70% ভাল লাগবে, তবে আমি যদি একসাথে এক থেকে তিন সেকেন্ডে স্থানচ্যুতি দেখি তবে বাস্তব সময়ে কি সম্ভব হবে? এইভাবে আমি দেখতে পাচ্ছি যে স্থানচ্যুতিটি 1 ইঞ্চি, 2 ইঞ্চি, 5 ইঞ্চির চেয়ে বড় if দুর্গন্ধ বা পাথরের বড় রাউগারটি হ'ল বিশাল স্থানচ্যুতি:
আমি কি এটি সঠিকভাবে করছি কিনা তা পরীক্ষা করতে পারেন, আমি মূলত আমার ডেস্কটপে সেট আপ করেছি, র্যান্ড () ব্যবহার করে -1.6 থেকে 1.6 জি এর এলোমেলো ত্বরণ তৈরি করতে, একটি সিমুলেটেড 50HZ নমুনা হারের 3 সেকেন্ডের ডেটা ক্যাপচার করে
যদি আপনি * নিক্স চালনা করেন তবে আমি 20mS বিলম্ব, 50HZ স্যাম্পলিং হার তৈরি করতে উইন্ডোজ এইচ থেকে স্লিপ () ব্যবহার করছি
আমি কেবল কোডটি আপনার কাছে ঠিক দেখাচ্ছে কিনা তা দেখতে চেয়েছিলাম, আমি এখনও সিকুলার বাফারটি করিনি, আমি কীভাবে এটি প্রয়োগ করতে হবে তা নিয়ে বিভ্রান্তিকর: মন্তব্য করা কোড, আমি যে শ্রেণীর জন্য কাজ করছি তার মধ্যে থেকে , তবে আমি এটি এখনও 100% বুঝতে পারি না। একটি বিজ্ঞপ্তি বাফার ডানদিকে উইন্ডো ডানদিকে সরানোর অনুমতি দেয়?
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <ctime> // USED BY RAND
#include <windows.h> // Used for delay
using namespace std;
#define SAMPLE_RATE 0.020 // Sample rate in Milliseconds
#define GRAVITYFT_SEC 32 // Gravity velocity 32 feet/sec
#define INCH_FOOT 12 // 12 inches in foot, from velocity to inch displacement calculation
int main(int argc, char *argv[])
{
srand((unsigned)time(0)); // SEED RAND() for simulation of Geforce Readings
// SIMULATING ACCELERATION READINGS INTO A CIRCULAR BUFFER
// circular_buffer Acceleration; // Create a new Circular buffer for Acceleration
// cb_init(&Acceleration, 150, 4); // Sampling @ 50HZ, 3 seconds of data = 150, size is float data of 4 bytes
//Simulate a sample run of Acceleration data using Rand()
// WE WILL BE SIMULATING "RANDOM" GEFORCE RATINGS using the rand() function constraining to -1.6 to 1.6 GFORCE
// These ratings are consistent with our road tests of apparently random vibration and Geforce readings not exceeding about 1.6 G's
float Gforce[150]; // Random Geforce for 3 second window of data
float velocity[150]; // Hold velocity information
float displacement[150]; // Hold Displacement information
float LO = -1.6; // Low GForce limit recorded from 6 road tests at different speeds
float HI = 1.6; // High GForce limit recorded from 6 road tests at different speeds
for(int i = 0; i < 150; i++) // 3 Second iwndow of random acceleration data
{
Gforce[i] = LO + (float)rand()/((float)RAND_MAX/(HI-LO)); // Borrowed from Stackexchange : http://stackoverflow.com/questions/686353/c-random-float
if( i == 0) // Initial values @ first Acceleration
{
velocity[i] = Gforce[i] * SAMPLE_RATE * GRAVITYFT_SEC; // Initial velocity
displacement[i] = velocity[i] * SAMPLE_RATE * INCH_FOOT; // Initial Displacement
}
else
{
velocity[i] = velocity[i-1] + (Gforce[i] * SAMPLE_RATE * GRAVITYFT_SEC); // Calculate running velocity into buffer
displacement[i] = displacement[i-1] +(velocity[i] * SAMPLE_RATE * INCH_FOOT); // Calculate running displacement into buffer
}
//cout << endl << Gforce[i]; // Debugging
//cb_push_back(&Acceleration, &Gforce[i]); // Push the GeForce into the circular buffer
Sleep(SAMPLE_RATE*1000); // 20mS delay simulates 50HZ sampling rate Sleep() expects number in mS already so * 1000
}
// PRINT RESULTS
for (int j = 0; j < 150; j++)
{
cout << setprecision (3) << Gforce[j] << "\t\t" << velocity[j] << "\t\t" << displacement[j] << endl;
}
// READ THE BUFFER
//cb_free(&Acceleration); // Pervent Memory leaks
system("PAUSE");
return EXIT_SUCCESS;
}
নমুনা রান:
GFORCE FT/SEC Inch Displacement Z axis
-0.882 -0.565 -0.136
0.199 -0.437 -0.24
-1.32 -1.29 -0.549
0.928 -0.691 -0.715
0.6 -0.307 -0.788
1.47 0.635 -0.636
0.849 1.18 -0.353
-0.247 1.02 -0.108
1.29 1.85 0.335
0.298 2.04 0.824
-1.04 1.37 1.15
1.1 2.08 1.65
1.52 3.05 2.38
0.078 3.1 3.12
-0.0125 3.09 3.87
1.24 3.88 4.8
0.845 4.42 5.86
0.25 4.58 6.96
0.0463 4.61 8.06
1.37 5.49 9.38
-0.15 5.39 10.7
0.947 6 12.1
1.18 6.75 13.7
-0.791 6.25 15.2
-1.43 5.33 16.5
-1.58 4.32 17.5
1.52 5.29 18.8
-0.208 5.16 20.1
1.36 6.03 21.5
-0.294 5.84 22.9
1.22 6.62 24.5
1.14 7.35 26.3
1.01 8 28.2
0.284 8.18 30.1
1.18 8.93 32.3
-1.43 8.02 34.2
-0.167 7.91 36.1
1.14 8.64 38.2
-1.4 7.74 40
-1.49 6.79 41.7
-0.926 6.2 43.2
-0.575 5.83 44.6
0.978 6.46 46.1
-0.909 5.87 47.5
1.46 6.81 49.2
0.353 7.04 50.8
-1.12 6.32 52.4
-1.12 5.6 53.7
-0.141 5.51 55
0.463 5.8 56.4
-1.1 5.1 57.6
0.591 5.48 59
0.0912 5.54 60.3
-0.47 5.23 61.5
-0.437 4.96 62.7
0.734 5.42 64
-0.343 5.21 65.3
0.836 5.74 66.7
-1.11 5.03 67.9
-0.771 4.54 69
-0.783 4.04 69.9
-0.501 3.72 70.8
-0.569 3.35 71.6
0.765 3.84 72.5
0.568 4.21 73.5
-1.45 3.28 74.3
0.391 3.53 75.2
0.339 3.75 76.1
0.797 4.26 77.1
1.3 5.09 78.3
0.237 5.24 79.6
1.52 6.21 81.1
0.314 6.41 82.6
0.369 6.65 84.2
-0.598 6.26 85.7
-0.905 5.68 87.1
-0.732 5.22 88.3
-1.47 4.27 89.4
0.828 4.8 90.5
0.261 4.97 91.7
0.0473 5 92.9
1.53 5.98 94.3
1.24 6.77 96
-0.0228 6.76 97.6
-0.0453 6.73 99.2
-1.07 6.04 101
-0.345 5.82 102
0.652 6.24 104
1.37 7.12 105
1.15 7.85 107
0.0238 7.87 109
1.43 8.79 111
1.08 9.48 113
1.53 10.5 116
-0.709 10 118
-0.811 9.48 121
-1.06 8.8 123
-1.22 8.02 125
-1.4 7.13 126
0.129 7.21 128
0.199 7.34 130
-0.182 7.22 132
0.135 7.31 133
0.885 7.87 135
0.678 8.31 137
0.922 8.9 139
-1.54 7.91 141
-1.16 7.16 143
-0.632 6.76 145
1.3 7.59 146
-0.67 7.16 148
0.124 7.24 150
-1.19 6.48 151
-0.728 6.01 153
1.22 6.79 154
-1.33 5.94 156
-0.402 5.69 157
-0.532 5.35 159
1.27 6.16 160
0.323 6.37 162
0.428 6.64 163
0.414 6.91 165
-0.614 6.51 166
1.37 7.39 168
0.449 7.68 170
0.55 8.03 172
1.33 8.88 174
-1.2 8.11 176
-0.641 7.7 178
-1.59 6.69 179
1.02 7.34 181
-0.86 6.79 183
-1.55 5.79 184
-0.515 5.46 186
0.352 5.69 187
0.824 6.22 188
1.14 6.94 190
-1.03 6.29 192
-1.13 5.56 193
0.139 5.65 194
0.293 5.84 196
1.08 6.53 197
-1.23 5.75 199
-1.1 5.04 200
-1.17 4.29 201
-0.8 3.78 202
-0.905 3.2 203
-0.0769 3.15 203
-0.323 2.95 204
-0.0186 2.93 205
Press any key to continue . . .