অ্যাক্সিলোমিটার ডেটা বৈশিষ্ট্য বিশ্লেষণ এবং একটি ফিল্টার ডিজাইন করা


14

আমার প্রায় 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 এইচজেডে পাওয়া চরম ফ্রিকোয়েন্সিগুলির ভিত্তিতে একটি ব্যান্ডস্টপ ফিল্টার দ্বারা ফিল্টার করা হয়।

http://img213.imageshack.us/img213/194/rollout.png

পোথোল ইভেন্টটি সময় ডোমেনে এ জাতীয় দেখাচ্ছে: এখানে চিত্র বর্ণনা লিখুন

এফএফটি-তে 10 থেকে 15 এইচজেডের উপাদানটি কী তা নিশ্চিত নয়, এটিই কি আসল গর্ত, বা এটি রাস্তার বিপরীতে চাকাগুলির হুইল হপ, বা এটি গাড়ীটির অনুরণনমূলক ফ্রিকোয়েন্সি?

FFT:

FFT

দেখে মনে হচ্ছে এটি আসল গর্তের ঘটনা, এখানে একটি এইচপিএফ @ 13HZ রয়েছে গর্তের প্রভাবশালী বৈশিষ্ট্যগুলি বর্ধিত বলে মনে হচ্ছে

http://img69.imageshack.us/img69/8663/hpf13potholefft.png

আমি বাস্তব সময়ে গর্তগুলি সনাক্ত করতে এবং গণনা করতে সক্ষম হতে চাই

মনে হচ্ছে স্থগিতাদেশটি 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 . . .

3
সুন্দরভাবে বিস্তারিত লেখার আপ। তবে: একটি নির্দিষ্ট, তুলনামূলকভাবে সংকীর্ণ প্রশ্ন করার জন্য এটি সম্পাদনা করা মনোনিবেশিত উত্তর পেতে সহায়তা করবে।
অনিন্দো ঘোষ

একটি সাধারণ নির্দিষ্ট প্রশ্ন লিখেছেন, আমার কাঁচা গোলমাল অ্যাকসিলোমিটার সংকেত থেকে একটি গর্ত আছে বলে সনাক্ত করার একটি উপায় প্রয়োজন need কার্যকর বৈশিষ্ট্যগুলি সনাক্তকরণ বা সনাক্তকরণ পদ্ধতি যা
আড্ডুইনোর

যেহেতু পাথোল নির্বিশেষে আপনার পাথোলের ঘটনাটি কম্পনগুলির তুলনায় ধীরে ধীরে, আপনার পরিবর্তে সম্ভবত এটি এলপিএফ করা উচিত এবং আপনি গর্তের কাছাকাছি পাচ্ছেন এমন সুন্দর বাম্প বাড়ানো উচিত। একটি চলন্ত গড় ফিল্টার এটি করতে সক্ষম হতে পারে। জীবনকে আরও সহজ করার জন্য, আপনি এলপিএফের আগে এটির পরিবর্তে পরিমাপের অ্যাবস মানটি বিবেচনা করতে পারেন, যেহেতু আপনার গর্ত এমনকি গাড়ীর কম্পনের ফ্রিকোয়েন্সি দ্বারা সংশোধিত বর্ধিত খামের প্রশস্ততা সহ একটি একক প্যাকেট দ্বারা চিহ্নিত করা হয়েছে।
চিন্তালগিরি শশাঙ্ক

আপডেট তথ্য, ধন্যবাদ এবং আমি চলন্ত গড় নিয়ে কাজ করব, সাসপেনশন অনুরণনটি 12.5HZ এর কাছাকাছি বলে মনে হচ্ছে ??? হার্ডওয়্যারে
এলপিএফটির

একটি ভাল উদাহরণ CSV ফাইল বা কিছু সরবরাহ করুন। যেখানে আপনি বলছেন যে উপরে ডেটা উপলব্ধ রয়েছে তা লিঙ্ক হিসাবে কাজ করবে বলে মনে হয় না।
অলিন ল্যাথ্রপ

উত্তর:


13

দেখে মনে হচ্ছে এটি মোটামুটি সোজা ফরওয়ার্ড ফিল্টারিংয়ের মাধ্যমে সমাধান করা যেতে পারে। আপনার মূল তথ্য এখানে:

এখানের জন্য উপযুক্ত স্তরের পর্যায়ে একটি পৃথক ইভেন্টে কী ঘটে তা দেখতে অনেক বেশি। এখানে দ্বিতীয় ২ 26 থেকে ২৮ তারিখের তথ্য রয়েছে:

আমি প্রাথমিকভাবে এটিকে লো পাস ফিল্টার করার কথা ভেবেছিলাম, তবে এটি কার্যকর হয় না কারণ সেখানে কোনও কম ফ্রিকোয়েন্সি সংকেত নেই। উচ্চ ফ্রিকোয়েন্সি সংকেতের প্রশস্ততা পরিবর্তে উপরে যায়। এখানে মূল পাসের উপরে একটি কম পাস সুপারিশ করা হয়েছে:

লক্ষ্য করুন যে এটি সিগন্যালের "গড়" অনুসরণ করছে পোথোল ইভেন্টের সময় না। যদি আমরা এই গড়টি মূল সিগন্যাল থেকে বিয়োগ করি তবে অন্যথায় তুলনায় ইভেন্টের সময় আমাদের এই গড় থেকে অনেক বেশি পরিদর্শন হয়। আরেকটি উপায় রাখুন, আমরা যা চাই তা হ'ল একটি উচ্চ পাস ফিল্টার। আমরা এখানে আসার পরে আসল থেকে নিম্ন পাসটি বিয়োগ করে আমরা এটি করব, তবে একটি উত্পাদন ব্যবস্থায় আপনি সুস্পষ্টভাবে উচ্চ পাস ফিল্টারিং দ্বারা এটি করতে চাই। যাইহোক, এখানে উচ্চ পাস ফিল্টার মূল:

এটি এখন ইভেন্টটি সনাক্ত করার জন্য একটি সুস্পষ্ট পদ্ধতির নির্দেশ করে। অন্যথায় তুলনায় ইভেন্টের সময় অনেক বেশি সংকেত প্রশস্ততা রয়েছে। আমরা এটি আরএমএসের কম্পিউটিং করে এবং কিছু লো পাস ফিল্টারিং প্রয়োগ করে সনাক্ত করতে পারি:

পুরো ডেটাতে জুম করে আমরা দেখতে পাই:

এটি ডেটাতে পাঁচটি ইভেন্ট স্পষ্টভাবে চিহ্নিত করে, যদিও এই ডেটাটি দেখানোর কথা ছিল তা আমি জানি না। ইভেন্টগুলি আরও ঘনিষ্ঠভাবে লক্ষ্য করলে আপনি লক্ষ্য করতে পারেন যে তাদের প্রত্যেকের শিখর আগে এবং পরে প্রায় 1 সেকেন্ডের কম ডপ থাকে। এর অর্থ আরএমএস সিগন্যালটি এখন যথেষ্ট হিসাবে যথেষ্ট না হওয়ায় কেবল আরও কিছু করা যায়। উদাহরণস্বরূপ, একটি সাধারণ অ্যালগরিদম যা কোনও এক সেকেন্ডের মধ্যে সর্বনিম্নের সাথে তুলনামূলকভাবে পয়েন্টের উচ্চতার সন্ধান করে তা পটভূমির শব্দকে আরও কমাতে হবে। একই জিনিসটি বলার আরেকটি উপায় হ'ল 1 সেকেন্ড সময়কালের উত্থানের সন্ধানে এই সংকেতটিকে আলাদা করা। এরপরে একটি পোথোল ইভেন্টটি ডাবল্ট দ্বারা সনাক্ত করা হত, যার অর্থ একটি উচ্চ শিখর একটি নিম্ন চূড়ায় পড়ে থাকে।

এটি দেখার আর একটি উপায় হল আরএমএস সিগন্যালটি ব্যান্ড করা। এটি ইতিমধ্যে লো পাস ফিল্টারযুক্ত, তবে যেহেতু আপনি দৃ strong় opালু সহ হঠাৎ ঘটনাগুলি সন্ধান করছেন, তাই কিছুটা কম ফ্রিকোয়েন্সি বন্ধ রেখে ব্যাকগ্রাউন্ড গোলমাল কমিয়ে আনতে কাজ করা উচিত।

এখান থেকে সিগন্যালটি পরিমার্জন করার জন্য প্রচুর উপায় রয়েছে তবে আশা করি আমি কীভাবে কমপক্ষে প্রথম পাসের জন্য কার্যকর ফলাফল পেতে পারি তা দেখিয়েছি।

যোগ করা হয়েছে:

আমি কৌতূহল ছিলাম যে চূড়ার উভয় পাশের ডিপগুলি সন্ধান করা ভালভাবে কাজ করবে, তাই আমি এটি চেষ্টা করেছিলাম। আমি পূর্বের প্লট থেকে আরএমএস দিয়ে শুরু করে একটি অ-রৈখিক ফিল্টার ব্যবহার করেছি। প্রতিটি পয়েন্টের মান হ'ল এটি সর্বনিম্ন এবং এটি দ্বিতীয় দ্বিতীয়ের সর্বনিম্ন বিন্দুর চেয়ে কতটা ন্যূনতম। ফলাফলটি বেশ ভাল দেখাচ্ছে:

5 টি পিকের সর্বনিম্ন সর্বোচ্চ ব্যাকগ্রাউন্ড শব্দের চেয়ে 3 গুণ বেশি। এটি অবশ্যই ধরে নেওয়া হয় যে এই 5 টি टक्करগুলি আপনি সনাক্ত করতে চান এমন ইভেন্টগুলি উপস্থাপন করে এবং বাকিগুলি তা দেয় না।

মন্তব্যের জবাবে যুক্ত করা হয়েছে:

আমি সময় ডোমেনে ফিল্টারগুলি করেছি, তাই সরাসরি ফ্রিকোয়েন্সি প্রতিক্রিয়া জানি না। লো পাস ফিল্টারের জন্য আমি একটি সিওএস ^ 2 ফিল্টার কার্নেল দিয়ে ইনপুট সিগন্যালকে কনভলভ করেছি। যদি আমি ঠিক মনে করি তবে কয়েক 100 এমএস হিসাবে কার্নেলের ব্যাসার্ধ (কেন্দ্র থেকে প্রান্ত থেকে দূরত্ব)। প্লটটি ভাল লাগার আগে পর্যন্ত আমি মানটি নিয়ে পরীক্ষা করেছিলাম। কম পাস ফিল্টার আরএমএস করতে, আমি একই ফিল্টার কার্নেলটি ব্যবহার করেছি তবে এবার প্রায় এক সেকেন্ডের ব্যাসার্ধের সাথে। ঠিক মনে নেই। আপনি ভাল ফলাফল না পাওয়া পর্যন্ত পরীক্ষা করুন।

অ-লিনিয়ার ফিল্টার ডাবল্ট সনাক্ত করতে পারেনি। যেমনটি আমি বলেছি, আমি বর্তমান পয়েন্টের মধ্যে 1 সেকেন্ডের মধ্যে সমস্ত পয়েন্টের মধ্যে সর্বনিম্ন এবং বর্তমান পয়েন্টের মধ্যে পার্থক্যটি পেয়েছি এবং পরে 1 সেকেন্ডের মধ্যে সমস্ত পয়েন্টের মধ্যে সর্বনিম্ন। তারপরে আমি এই দুজনের নূন্যতম নিলাম।

আমি যে সফ্টওয়্যারটি ব্যবহার করেছি সেটি হ'ল একটি প্রোগ্রাম যা আমি এই উদ্দেশ্যে হ্যাক করেছি। আমার কাছে সিএসভি ফাইলগুলি পড়ার এবং লেখার জন্য ইতিমধ্যে বিভিন্ন রুটিন ছিল, তাই আমাকে যা লিখতে হয়েছিল তা হ'ল ফিল্টারিং কোড, যা খুব সহজ। বাকিটি CSV ফাইলগুলি চালিত করার জন্য এবং প্লট করার জন্য আমার কাছে পূর্ব-বিদ্যমান প্রোগ্রামগুলির সাথে সম্পন্ন হয়েছিল।


বাহ এটি খুব উত্তেজনাপূর্ণ ফলাফল, আপনার ব্যবহারিক দিক থেকে জিনিসগুলি ব্যাখ্যা করার দুর্দান্ত উপায় আছে এবং আমি ঘরে ফিরে এই নিয়ে কাজ শুরু করতে পেরে আনন্দিত! আপনি এইচপিএফ-তে কী কাটঅফ ফ্রিকোয়েন্সি ব্যবহার করেছেন এবং আরএমএস সিগন্যালের জন্য এলপিএফ কাট অফটি নিখুঁত বলে আমি আগ্রহী। এছাড়াও, ডাবল্টগুলি সনাক্ত করতে আপনি যে অ-রৈখিক ফিল্টারটি ব্যবহার করেছেন, আপনি কি তা মাতলাব বা ডিজাইনের অ্যাপ্লিকেশনটিতে করেছিলেন? আমি এটি হার্ডওয়ারেও ডিজাইনের চেষ্টা করতে চাই, যে 5 টি শৃঙ্গ আপনি পাচ্ছেন এমন 5 টি গর্তের সাথে মিলে যাচ্ছে, দুর্দান্ত ফলাফল! আমি মতলব করেছি এবং সায়াডাভিসও ব্যবহার করছি
zacharoni16

@ জ্যাচ: আপনার কয়েকটি প্রশ্নের উত্তর দেওয়ার জন্য আমি আমার উত্তরটি আপডেট করার চেষ্টা করব। দুর্ভাগ্যক্রমে আমার উত্তরটি সম্প্রদায় উইকিতে রূপান্তরিত হয়ে গেছে, তাই আমি প্রথমে এটির সমাধানের জন্য একটি মোডের জন্য অপেক্ষা করছি। আপনি যখন কোনও কিছুর জন্য সময় ব্যয় করেন তখন এই সিডব্লিউ জিনিসটি সত্যই সফল হয়।
অলিন ল্যাথ্রপ

@ অলিনলথ্রপ আপনি এটি সম্পাদনা করার সময় এটিকে আবার রূপান্তর করতে হবে। আপনি একবার সম্পাদনা শেষ করে এটিকে ফিরিয়ে দেওয়ার জন্য আমাকে পতাকাঙ্কিত করা উচিত। আমি এখনই এটি করব, তবে আপনি যদি আবার পতাকা বানাতে চান তবে অবাক হবেন না। সিডব্লিউ সম্পর্কে অভিযোগ করার নোটে, আমাদের প্রতি 4-6 মাসের মধ্যে একবার একটি সিডব্লিউ ফিরিয়ে দিতে হবে, আমি মনে করি আপনি এমন পরিস্থিতিতে খুব সংকীর্ণ অবস্থার বিষয়ে কথা বলছেন যেখানে এই অনেকগুলি সম্পাদনা রয়েছে এবং ব্যবহারকারী সিডাব্লু হতে চান না, এবং টনি বা অন্য কোনও পরিস্থিতির সাথে মোকাবিলা করার তুলনায় এটি সহজ এবং পরিষ্কার কাটকে মোকাবেলা করার জন্য আদর্শ পতাকা সম্পর্কিত। :)
কর্টুক

1
@ অ্যান্ড্রু: আমি আমার উত্তরের শেষ অনুচ্ছেদে যেমন বলেছিলাম, আমার কাছে প্রচুর ক্যানড প্রোগ্রাম রয়েছে যা সিএসভি ফাইল এবং লাইব্রেরির রুটিনগুলিতে হেরফের করে যা এগুলি পড়তে ও লিখতে সহজ করে তোলে। এর উপরে ফিল্টারিং কোড যুক্ত করা দ্রুত এবং সহজ। বেশিরভাগ ফিল্টারগুলি কয়েকবার কোডের কয়েকটি লাইন হয়। এক পরীক্ষার জন্য, আমি উপরে যা করেছি তার মতো, প্রসেসরটি দক্ষতার সাথে ব্যবহার করার দরকার নেই যেহেতু সবকিছু তাত্ক্ষণিকভাবে শেষ হয়ে যায়। উদাহরণস্বরূপ, আমি যখনই কোনও টেবিল তৈরির পরিবর্তে প্রয়োজন হয় তখন সিওএস ফাংশনটি বলেছিলাম।
অলিন ল্যাথ্রপ

1
@ অলিনলথ্রপ আমি দেখেছি আপনি উত্তরে যা উল্লেখ করেছেন তা কিন্তু আমি জানতাম না যে আপনার কাছে কিছু কাস্টম স্ক্রিপ্ট সেট আপ হয়েছে, সম্ভবত মতলব বা এটি চালানোর জন্য কিছু আছে বা আপনি কী করেছেন। আপনি কিভাবে এটি ভাগ করে নিতে পারেন? এটি আকর্ষণীয় মনে হয়। আপনি কি আউটপুট দেখতে ক্যানড গ্রাফিক্স লাইব্রেরি ব্যবহার করছেন, কেবল এক্সেলটিতে ডাম্পিং এবং প্লট করছেন বা gnuplot / অকট্যাভ বা ... ব্যবহার করছেন?
akohlsmith

2

এজ সনাক্তকারী গর্তগুলি ঝামেলা চাইতে পারে। সেন্সর দ্বারা দেখা প্রকৃত কম্পনগুলি অনেক বেশি ফ্রিকোয়েন্সি হওয়ায় গাড়িগুলির কম্পনের খামটি যেখানে উত্তরটি রয়েছে। আমি আরএমএসের সাথে ডিসি-তে যাব যা প্রায় 15Hz বা উচ্চতর এবং লো পাস দিয়ে সাড়া দেয়।


1000HZ এর পূর্ণ সেন্সর ব্যান্ডউইদথ দিয়ে সবেমাত্র আরও একটি পরীক্ষা করেছিলাম এবং আরডুইনোর সাথে সিরিয়াল ওভারে যত দ্রুত সম্ভব নমুনা তৈরি করেছিলাম। অনুরূপ ফলাফল প্রাপ্তি। 2HZ এবং 13HZ এর আধিপত্যের ফ্রিকোয়েন্সিয়ের তুলনায় 17HZ এর কাছাকাছি যে কোনও ফ্রিকোয়েন্সি দ্রুত মারা যায় আমি 9 থেকে 13.5HZ স্টাফটি কোথা থেকে আসছে তা এখনও পাই না। অ্যাক্সিলোমিটার ড্যাশবোর্ডে লাগানো আছে, সাসপেনশনটি অবশ্যই 9 থেকে 13HZ এ চলছে না বা আমি পাগলের মতো ঘুরে বেড়াচ্ছি। আমি নিশ্চিত না আপনি ডিসি থেকে আরএমএসের অর্থ কী?
zacharoni16

আপনার অ্যাক্সিলোমিটারটি কোনওভাবে গাড়িতে সংযুক্ত। এমনকি আপনি যদি কোনওভাবে কোনওভাবে আপনার আন্ডার ক্যারিজের কাছে জিনিসটি চাপিয়ে দিয়েছেন, বোল্টগুলি ফ্রিকোয়েন্সিগুলি দমন করতে এবং বৃদ্ধি করতে পারে। বিভিন্ন বিভিন্ন ফ্রিকোয়েন্সিগুলিতে জিনিসগুলি স্পন্দিত হওয়ার জন্য একটি গাড়ি যথেষ্ট জটিল জন্তু। এমন সার্কিট রয়েছে (এবং সম্ভবত গাণিতিক অ্যালগরিদম) যা একটি এসি সিগন্যালকে তার ডিসি আরএমএস মান রূপান্তর করে। একটি অনুসন্ধানের একটি খুঁজে পাওয়া উচিত। এটি আপনাকে উচ্চতর ফ্রিকোয়েন্সি কম্পনগুলিকে প্রশস্তকরণে পরিণত করে আপনার সিগন্যালের খাম তৈরি করতে সহায়তা করতে পারে।
চিন্তালগিরি শশাঙ্ক

অর্ধ-তরঙ্গ সংশোধনকারী (ডায়োড) সম্পর্কে কী? কিন্তু এটি সবকিছুকে ইতিবাচক শিখরে রূপান্তরিত করবে, পোথোল ইভেন্টটি জি-এর টানছে বা এই সমস্যা হবে না?
zacharoni16

আমি আশা করি না এটি সমস্যা হবে। আপনার কম্পন প্রশস্ততা প্রভাবশালী প্রভাব হিসাবে যথেষ্ট উচ্চ বলে মনে হচ্ছে। তবে, আপনার সংকেতগুলি দেখে, আমি ছোট ছোট গর্তগুলি এড়াতে পরিবর্তে পূর্ণ তরঙ্গ সংশোধন করার পরামর্শ দেব suggest
চিন্তালগিরি শশাঙ্ক

শ্যাশাক উপরে পোস্ট করা খামের সার্কিট যুক্ত করেছে, আউটপুটটি মোটেও খুব বেশি পরিবর্তন হয়নি। আমি আরসি সময় ধ্রুবকটি 2 মিএসের কাছাকাছি নিয়েছি, আমি 2 এমএস 500 নমুনা / সেকেন্ডে নমুনা দিচ্ছি অ্যাকসিলোমিটার ভোল্টেজ সর্বদা 0 থেকে 3.3V এর মধ্যে থাকে যদিও ... ডায়োডটি কাজ করবে না তাই কখনও নেতিবাচক হয় না?
zacharoni16

2

ফ্রিকোয়েন্সি ডোমেন ফিল্টার বা একটি প্রান্তিক সন্ধানের পরিবর্তে, আমি একটি "সাধারণ" গর্তের জন্য একটি কার্নেল নিয়ে আসার চেষ্টা করার পরামর্শ দিয়েছি এবং এটির সাথে চলমান সম্পর্ক স্থাপন করার পরামর্শ দিচ্ছি। এটি একটি টেমপ্লেট-ম্যাচিং কৌশল হিসাবে বিবেচিত হবে এবং এটি একটি মাইক্রোকন্ট্রোলার প্ল্যাটফর্মের কাছে নিজেকে ধার দেবে বলে মনে হচ্ছে।

দ্রুত পর্যালোচনা করার জন্য http://scribblethink.org/Work/nvisionInterface/vi95_lewis.pdf দেখুন , এবং সম্ভবত ডিওবিবিএস, স্টিভেন ই।, নীল এম এস সিএমটি, এবং হালাক এস ওজেমেক "একটি মাইক্রো কম্পিউটারে রিয়েল-টাইম পারস্পরিক সম্পর্ক ব্যবহার করে টেমপ্লেট মিলের মাধ্যমে কিউআরএস সনাক্তকরণ।" ক্লিনিকাল ইঞ্জিনিয়ারিং জার্নাল 9.3 (1984): 197-212।

আপনি যদি বিফায়ার প্ল্যাটফর্মে থাকেন তবে আমি ওয়েভলেটকে একটি স্পিন দেওয়ার পরামর্শ দেব।


ধন্যবাদ :), এটি করা খুব কঠিন বলে মনে হচ্ছে, বা আমি কিছু মিস করছি?
zacharoni16

সাধারণ ফিল্টারের চেয়ে আরও বেশি কঠিন, তবে আপনার কাজটি শেষ হওয়ার পরে এটি যা করতে চান তা করবে এটির বেশি সম্ভাবনা! যে কোনও উপায়ে, যতক্ষণ না আপনি এটি মাতলাব বা আর-এর মতো কোনও কিছুতে কাজ না করা অবধি মাইক্রোকন্ট্রোলারে প্রয়োগ করার চেষ্টা করবেন না
স্কট সিডম্যান

রিয়েল টাইমে আপনার "ফিল্টার" চালানোর জন্য, আপনি প্রতিটি সময় পদক্ষেপে একটি ফ্রিকোয়েন্সি ডোমেন গুণনের বিপরীতে সম্ভবত এটি একটি সমঝোতা হিসাবে পরিচালনা করবেন। একটি ক্রস-পারস্পরিক সম্পর্ক (টেমপ্লেট মিলের একটি প্রধান পদ্ধতির) একই সঠিক ক্রিয়াকলাপ হবে, আবেগের প্রতিক্রিয়াটির সময় স্কেল ব্যতীত অন্য কোনও রূপান্তর হিসাবে এটি উল্টানো হবে না এবং আমরা এই আবেগ প্রতিক্রিয়াটিকে একটি "টেমপ্লেট" বলব । এখন, আপনাকে কেবল সেই টেমপ্লেটটি কী হতে হবে তা নির্ধারণ করতে হবে।
স্কট সিডম্যান

এই উত্তরের জন্য ধন্যবাদ, এটি আমার বর্তমান দক্ষতা-স্তরের চেয়ে বেশি বলে মনে হচ্ছে এটি বাস্তবায়নের জন্য আমাকে আরও অনেক গবেষণা এবং অধ্যয়ন করতে হবে। যদিও আমি
চেষ্টাটির

2

আর একটি পদ্ধতির আপনার সিগন্যালের চলমান বৈচিত্র গণনা করা হবে তা দেখার জন্য যে গর্তগুলি সত্যিকার অর্থে স্তূপগুলি আটকে আছে। চলমান বৈকল্পিক ফিল্টারটির জন্য এখানে একটি ম্যাটল্যাব ফাংশন রয়েছে, এন পয়েন্ট প্রশস্ত - চতুরতার সাথে (যদি আমাকে নিজেরাই বলতে হবে) গণনার জন্য কনভলিউশন ব্যবহার করে

function y=movingvar(X,N)
% y=movingvar(X,N)
% Calculates N-point moving variance of  Vector X
% Highly recommend that N be odd (no error checking)
% Note: first and last N/2 points will be unreliable.
% Output will be a column vector.


X=X(:);
XSQR=X.*X;
convsig=ones(1,N);
y=(conv(convsig,XSQR)-(conv(convsig,X).^2)/N)/(N-1);

y=y(ceil(N/2):length(X)+floor(N/2));

এটি কি কোনও আদর্শ বিচ্যুতির গণনার সাথে সমান হবে?
zacharoni16

হ্যাঁ, কেবল স্কোয়ার
স্কট সিডম্যান

1

আমার প্রাথমিক ধারণাটি হ'ল লো-পাস ফিল্টারটি ব্যবহারের জন্য ভুল ধরণের ফিল্টার হতে পারে। পদক্ষেপটি মূলত একটি উচ্চ-ফ্রিকোয়েন্সি ইভেন্ট - ধাপে ফাংশন বা বর্গাকার তরঙ্গের মতো। কেবল 50Hz ফিল্টার হওয়া ডেটা দেখে আমার মনে হয় যে আপনি পাথর সম্পর্কে তথ্য হারাচ্ছেন - এটি সমস্ত একই রকম স্কুইগলসের মতো দেখতে পাথরের ঘটনার কোনও উল্লেখযোগ্য পার্থক্য নেই। আমি প্রথমে একটি উচ্চ-পাস ফিল্টার ব্যবহার করব, তারপরে অনেক বেশি ফ্রিকোয়েন্সি সহ একটি লো-পাস ফিল্টার। আপনার অ্যাক্সিলোমিটার যদি ইতিমধ্যে লো-পাস ফিল্টার করা থাকে তবে আপনি লো-পাস ফিল্টার পুরোপুরি এড়িয়ে যেতে পারেন।

আপনার কাছে উচ্চ-পাস ফিল্টারযুক্ত ডেটা হওয়ার পরে আমি মনে করি যে একটি প্রান্তিক সেট সহ একটি সাধারণ তুলনামূলক সঠিকভাবে গর্তের কারণে সৃষ্ট ত্বরণ ডেটার শিখরগুলি বেছে নেবে এবং আপনাকে সেগুলি গণনা করার অনুমতি দেবে।


আমি আরসি 50 এইচজেড ফিল্টারটি সরিয়ে ফেলব তখন অ্যাক্সিলোমিটার একটি ডিফল্ট 500HZ বা 1000HZ এলপিএফ ব্যবহার করবে যা যান্ত্রিক স্পন্দনের জন্য পর্যাপ্ত পরিমাণে হওয়া উচিত। আমি নমুনার হার 100HZ থেকে 1000HZ এ বাড়িয়ে দেব এবং আরও ডেটা পোস্ট করব। অন্তর্দৃষ্টি জন্য ধন্যবাদ
zacharoni16

আমি অ্যাক্সিলোমিটার এবং দ্রুত স্যাম্পলিংয়ের সম্পূর্ণ ব্যান্ডউইথটি ব্যবহার করেছি, মনে হয় একই রকম ডেটা পেয়েছে :( এটি কীভাবে
পোথোল

আমি বললাম একটি হাই পার্স ফিল্টার ব্যবহার করুন, কম নয়। আমি অবিলম্বে থাকা তথ্যের একটি এফএফটি দেখতে আগ্রহী।
ক্রোধে

ওয়েল অ্যাক্সিলোমিটারে 1000HZ এলপিএফ একটি বিল্ট রয়েছে এবং আমি এটি পরিবর্তন করতে পারি না। আমি শীঘ্রই এটি
ছাপানো

আপনার এটিকে পরিবর্তন করার দরকার নেই - আপনি যখন কোনও গর্তে আঘাত হানেন তখন আচমকা ত্বরণ থেকে আসা উচ্চ ফ্রিকোয়েন্সিগুলি চান তবে সাধারণ যাত্রায় মৃদু দুলতে হবে না। আপনার সিগন্যালটি বেশ কয়েকটি বড় অস্থায়ী স্পাইকগুলির সাথে স্বল্প ফ্রিকোয়েন্সি কম্পন দ্বারা চিহ্নিত বলে মনে হচ্ছে। আপনি দ্রুত অস্থায়ী স্পাইকগুলি ক্যাপচার করতে উচ্চ-ফ্রিকোয়েন্সিগুলি চান তবে আপনি ধ্রুবক কম ফ্রিকোয়েন্সি প্রত্যাখ্যান করতে চান। সুতরাং, আপনার সম্ভবত 50Hz বা 100Hz থেকে সমস্ত কিছু ফিল্টার করা উচিত।
রাগান্বিত করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.