ভূমিকা
এই নিবন্ধে, আমরা কীভাবে একটি ডেটা লগিং প্রকল্প তৈরি করব তা নিয়ে আলোচনা করব যা VEX রোবটকে VEX মস্তিষ্কের সাথে ডেটা সংগ্রহ করতে এবং ডেটা বিশ্লেষণের জন্য SD কার্ডে একটি CSV ফাইলে সংরক্ষণ করার নির্দেশ দেয়৷
ডেটা লগিং একটি শক্তিশালী হাতিয়ার যা আমরা বৈজ্ঞানিক গবেষণায় সহায়তা করতে, আমাদের নিজস্ব পরীক্ষা-নিরীক্ষা পরিচালনা করতে এবং নির্দিষ্ট সমস্যার সমাধান করতে ব্যবহার করতে পারি। বিভিন্ন মজার এবং উত্তেজনাপূর্ণ কাজ আছে যা আমরা VEX রোবট চালাতে পারি ডেটা লগিং এর মাধ্যমে সম্পন্ন করতে। নিচে কিছু উদাহরণ দেওয়া হল:
- রোবটের গতি গণনা করতে দূরত্ব সেন্সরের সাথে ডেটা সংগ্রহ করা।
- শ্রেণীকক্ষের চারপাশে রোবট চালানো এবং বিভিন্ন স্থানে আলোর পরিবর্তন পর্যবেক্ষণ করতে অপটিক্যাল সেন্সর দিয়ে ডেটা সংগ্রহ করা।
- রোবটটিকে একটি অ্যাডভেঞ্চারে নিয়ে যাওয়া এবং জিপিএস রেকর্ডিং একটি মানচিত্র তৈরি করার জন্য ডেটা সমন্বয় করে।
একটি ডেটা লগিং প্রকল্পের বিকাশের জন্য প্রয়োজনীয় কোডিং দক্ষতা
- VEX Brain/Sensors দিয়ে ডেটা সংগ্রহ করতে এবং এটিকে একটি ডেটা স্ট্রাকচারে যুক্ত করতে বিভিন্ন কমান্ড ব্যবহার করুন।
- SD কার্ডে একটি কমা-সেপারেটেড ভ্যালুস (CSV) ফাইলে ডেটা লিখুন।
ডেটা লগিংয়ের জন্য প্রয়োজনীয় হার্ডওয়্যার:
- একটি VEX মস্তিষ্ক (IQ, V5, EXP)
- একটি এসডি কার্ড
- একটি সেন্সর বা একাধিক সেন্সর (ঐচ্ছিক, প্রয়োজনীয় তথ্য অনুযায়ী)
সেন্সর থেকে ডেটা পাওয়া
আমরা নিম্নলিখিত সেন্সর থেকে ডেটা ক্যাপচার করতে VEX রোবট (IQ, V5, EXP) প্রোগ্রাম করতে পারি:
- ইনর্শিয়াল সেন্সর
- দূরত্ব সেন্সর
- অপটিক্যাল সেন্সর
- ভিশন সেন্সর
- ঘূর্ণন সেন্সর (V5, EXP)
- GPS সেন্সর (V5)
দ্রষ্টব্য: VEX IQ (2nd জেনারেশন) ব্রেন এবং VEX EXP ব্রেইনে একটি ইনর্শিয়াল সেন্সর বিল্ট ইন আছে। আমরা এই VEX মস্তিষ্কের মাধ্যমে Inertial Sensor ডেটা সংগ্রহ করতে পারি।
এই নিবন্ধে, আমরা একটি ডেটা লগিং প্রজেক্ট তৈরি করব যা VEX IQ Brain (2nd gen) দিয়ে ত্বরণ ডেটা সংগ্রহ করে এবং এটি একটি SD কার্ডে সংরক্ষণ করে।
প্রথমে, VEX IQ Brain (2nd gen) এ নির্মিত টাইমার এবং ইনর্শিয়াল সেন্সর থেকে রিডিং পেতে আমাদের একটি ছোট প্রোগ্রাম লিখতে হবে।
- এই প্রোগ্রামের শুরুতে, আমাদের VEX IQ Brain (2nd gen) নিয়ন্ত্রণ করতে পাইথন মডিউল আমদানি করতে হবে এবং এটি থেকে ডেটা আনতে হবে। সুতরাং, প্রকল্পে এই নির্দেশাবলী যোগ করে শুরু করুন।
- এরপরে, রেকর্ডিংয়ের জন্য ডেটা এন্ট্রির সংখ্যা সংরক্ষণ করতে একটি ভেরিয়েবল
numOfDataEntriesঘোষণা করতে কোডটি যুক্ত করুন, ডেটা পড়ার জন্য সময়ের ব্যবধানের মান সংরক্ষণ করতে একটি ভেরিয়েবলpolling_delay_msecঘোষণা করুন এবং সংরক্ষণ করার জন্য একটি খালি স্ট্রিং ভেরিয়েবলdata_bufferতৈরি করুন। সেন্সর থেকে তথ্য পড়া. - যেহেতু আমরা ডেটাতে টাইমস্ট্যাম্প যোগ করতে টাইমারের বর্তমান মান ব্যবহার করব, তাই ডেটা সংগ্রহ শুরু করার আগে আমাদের টাইমার মানটি 0 সেকেন্ডে পুনরায় সেট করতে হবে।
- VEX IQ Brain (2nd) থেকে ডেটা নিয়ে আসা এবং বাফারে ডেটা রেকর্ড করার নির্দেশনা ব্যবহার করার আগে, আমাদের প্রথমে এটি বুঝতে হবে।
নিম্নলিখিত নির্দেশনা একটি নির্দিষ্ট বিন্যাসে বর্তমান টাইমার মানdata_bufferভেরিয়েবলের সাথে যুক্ত করে।চলুন বিন্যাস স্ট্রিং
“%1.3f”ভাঙ্গা যাক :- "%": রূপান্তর স্পেসিফায়ার প্রবর্তন করে।
- "1": স্ট্রিংটিতে উপস্থিত থাকা সংখ্যার ন্যূনতম সংখ্যা নির্দেশ করে।
- “.3”: বিন্যাসিত সংখ্যায় অন্তর্ভুক্ত করার জন্য দশমিক স্থানের সংখ্যা নির্দিষ্ট করে।
- "f": নির্দেশ করে যে মানটি ফর্ম্যাট করা হবে একটি ফ্লোটিং-পয়েন্ট সংখ্যা।
সুতরাং, ন্যূনতম 1 সংখ্যার প্রস্থ এবং 3 দশমিক স্থানের নির্ভুলতা সহ একটি ফ্লোটিং-পয়েন্ট নম্বর ফরম্যাট করতে আমরা ফর্ম্যাট স্ট্রিং "%1.3f" ব্যবহার করতে পারি।
- এখন, আমরা VEX IQ Brain (2nd gen) এ নির্মিত Inertial Sensor-এর টাইমার এবং ত্বরণ মান পড়তে পারি এবং তারপর নির্দিষ্ট বিন্যাসে
data_bufferভেরিয়েবলের সাথে ডেটা যুক্ত করতে পারি।দ্রষ্টব্য: “\n” হল নতুন লাইনের অক্ষর। এটি নির্দেশ করে যে লাইনটি এখানে শেষ এবং একটি নতুন লাইনের শুরু।
- তারপরে,
data_bufferভেরিয়েবলে নির্দিষ্ট সংখ্যক ডেটা এন্ট্রি রেকর্ড করতে, আমরাএর জন্য লুপব্যবহার করতে পারি বারবার নির্দেশাবলী কার্যকর করতে যা ডেটা আনয়ন করে এবংডেটা_বাফারভেরিয়েবলে অনেকগুলি পুনরাবৃত্তির জন্য ডেটা যুক্ত করে। আমাদের কৌশল হল ভেরিয়েবলnumOfDataEntriesএর মান ব্যবহার করে পুনরাবৃত্তির সংখ্যা নির্ধারণ করা।
- এখন পর্যন্ত, আমাদের প্রোগ্রাম যত তাড়াতাড়ি সম্ভব ডেটা রেকর্ড করে। যাইহোক, আমরা নির্দিষ্ট সময়ের ব্যবধানে ডেটা রেকর্ড করতে চাই। তাই, আমরা
for loop-এ একটিwait()ফাংশন ব্যবহার করতে পারি যাতে দুটি রিডিংয়ের মধ্যে নির্দিষ্ট সময়ের ব্যবধান যোগ করার জন্য প্রোগ্রামটি পজ করা যায়। সময়ের ব্যবধানের মান নির্ধারণ করতে আমরাpolling_delay_msecভেরিয়েবলের মান ব্যবহার করি।
অভিনন্দন! VEX ব্রেইনে তৈরি ইনর্শিয়াল সেন্সর থেকে রিডিং (ত্বরণ ডেটা) পাওয়ার জন্য আমরা প্রোগ্রামটি শেষ করেছি। এর পরে, আমরা SD কার্ডে একটি CSV ফাইলে ডেটা কীভাবে লিখতে হয় তা অন্বেষণ করব।
VEX মস্তিষ্কে SD কার্ড সংযুক্ত করা হচ্ছে
একটি SD কার্ডে একটি ফাইলে ডেটা লেখার আগে, প্রথমে VEX মস্তিষ্কের SD কার্ড স্লটে SD কার্ডটি প্রবেশ করান৷
দ্রষ্টব্য: ডেটা লেখার জন্য SD কার্ডটিকে FAT32 তে ফর্ম্যাট করুন৷ আমরা 32GB বা তার কম আকারের SD কার্ড ব্যবহার করার পরামর্শ দিই।
SD কার্ডে একটি ফাইলে ডেটা লেখা যথাযথ অবস্থার অধীনে করা যেতে পারে তা নিশ্চিত করতে, SD কার্ডটি VEX IQ Brain (2nd gen) এ সঠিকভাবে ঢোকানো হয়েছে কিনা তা পরীক্ষা করার জন্য আমাদের কোড যোগ করতে হবে।
- এসডি কার্ড ঢোকানো হয়েছে কিনা তা পরীক্ষা করতে
brain.sdcard.is_inserted()ফাংশন ব্যবহার করুন। যদি SD কার্ড ঢোকানো না হয়, VEX IQ ব্রেইন স্ক্রিনে সংশ্লিষ্ট বার্তাটি প্রদর্শন করুন এবং প্রোগ্রামটি ধরে রাখুন।
দ্রষ্টব্য: thebrain.sdcard.is_inserted()ফাংশন ট্রু রিটার্ন করে যদি একটি SD কার্ড মস্তিষ্কে ঢোকানো হয়।
SD কার্ডে একটি CSV ফাইলে ডেটা লেখা
এখন পর্যন্ত, আমাদের প্রোগ্রাম VEX IQ Brain (2nd gen) দিয়ে ডেটা সংগ্রহ করতে পারে। ডেটা লগিং প্রকল্পটি সম্পূর্ণ করতে, ভবিষ্যতে পরীক্ষা এবং বিশ্লেষণের জন্য আমাদের SD কার্ডে একটি কমা-সেপারেটেড ভ্যালুস (CSV) ফাইলে ডেটা লিখতে হবে।
- একটি CSV ফাইলে বিভিন্ন ধরনের ডেটা লেখার সময়, আমরা জানতে চাই প্রতিটি কলামে কোন ধরনের ডেটা রয়েছে। এটি করার জন্য, ডেটা রেকর্ড করার আগে আমরা
data_bufferভেরিয়েবলের সাথে CSV হেডার টেক্সট যোগ করতে পারি।
এইভাবে, CSV ফাইলের কলামের নাম নির্দিষ্ট করতে CSV হেডার টেক্সট সংরক্ষণ করতে একটি ভেরিয়েবলcsvHeaderTextঘোষণা করতে কোডটি যোগ করুন এবং একটি পরিবর্তনশীল ঘোষণা করুনsd_file_nameযাতে লেখার জন্য CSV ফাইলের নাম ধরে রাখা যায়। এসডি কার্ড.
দ্রষ্টব্য: নিশ্চিত করুন যে শিরোনামগুলি ডেটা_বাফার ভেরিয়েবলে সংরক্ষিত ডেটার মতো একই ক্রমে রয়েছে।
- এরপর, ডেটা সংগ্রহের জন্য লুপ এর জন্য
এর আগেdata_bufferস্ট্রিং-এ CSV হেডার টেক্সট যোগ করুন।
- এসডি কার্ডে একটি ফাইলে ডেটা লেখার আগে, আসুন প্রথমে
brain.sdcard.savefile()ফাংশনটি কীভাবে ব্যবহার করবেন তা বুঝতে পারি।
এই নির্দেশটিdata_bufferভেরিয়েবলে সংরক্ষিত ডেটাকে SD কার্ডে একটি নামযুক্ত CSV ফাইলে লিখে দেয়।
আসুন এটিকে ভেঙে ফেলুন:-
brain.sdcard.savefile(): ফাংশনটি একটি বাইট অ্যারেকে SD কার্ডের একটি নামযুক্ত ফাইলে সংরক্ষণ করে। ফাংশনটি ফাইলে লেখা বাইটের সংখ্যা প্রদান করে।
-
sd_file_name: ফাংশনের প্রথম প্যারামিটার। লেখার জন্য ফাইলের নাম নির্দেশ করে। এই প্রজেক্টে, ফাইলের নাম
sd_file_name ভেরিয়েবলে সংরক্ষণ করা হয়। -
bytearray(datat_buffer,'utf-8'): ফাংশনের দ্বিতীয় প্যারামিটার। ফাইলে লেখার জন্য বাইটয়ারের প্রতিনিধিত্ব করে।
-
- bytearray(): পদ্ধতি একটি পরিবর্তনযোগ্য bytearray তৈরি করে। এই নির্দেশনায়, আমরা এনকোডিং নির্দিষ্ট করে একটি স্ট্রিংকে বাইটয়াররে রূপান্তর করতে এটি ব্যবহার করি।
- data_buffer: পদ্ধতির প্রথম প্যারামিটার। একটি বাইটয়ারে রূপান্তরিত হতে উৎস নির্দেশ করে। এই প্রকল্পে, উৎস হল ভেরিয়েবল
ডেটা_বাফারে সংরক্ষিত ডেটা। - 'utf-8': পদ্ধতির দ্বিতীয় প্যারামিটার। স্ট্রিং এনকোড করতে ব্যবহৃত নির্দিষ্ট এনকোডিং নির্দেশ করে। এই নির্দেশে এনকোডিং হল 'utf-8'।
-
-
- ডেটা সংগ্রহের জন্য লুপ
পরে,data_bufferভেরিয়েবলে সংরক্ষিত ডেটা SD কার্ডের CSV ফাইলে লিখতেbrain.sdcard.savefile()ফাংশন ব্যবহার করুন। উপরন্তু, ফাইলটিতে ডেটা সফলভাবে লেখা হয়েছে কিনা তা যাচাই করতেbrain.sdcard.savefile()ফাংশন থেকে রিটার্ন মান পরীক্ষা করতে কোডটি যোগ করুন এবং বাস্তব- পেতে VEX IQ ব্রেইন স্ক্রিনে সংশ্লিষ্ট বার্তাটি প্রদর্শন করুন। সময় প্রতিক্রিয়া।
দ্রষ্টব্য:brain.sdcard.savefile()ফাংশন ফাইলটিতে লেখা বাইটের সংখ্যা প্রদান করে। এই প্রকল্পে, আমরা একটি CSV ফাইলে সংগৃহীত ডেটা লিখতে এটি ব্যবহার করি, তাই ফাইলটিতে লেখা বাইটের সংখ্যা অবশ্যই শূন্যের বেশি হতে হবে। অন্য কথায়, যদিbrain.sdcard.savefile()ফাংশন 0 প্রদান করে, আমরা উপসংহারে আসতে পারি যে ডেটা সফলভাবে ফাইলে লেখা হয়নি। অন্যথায়, ডাটা ফাইলে লেখা হয়েছে।
অভিনন্দন! আমরা একটি ডেটা লগিং প্রজেক্ট তৈরি করেছি যা VEX IQ Brain (2nd gen) দিয়ে ত্বরণ ডেটা সংগ্রহ করে এবং SD কার্ডে একটি CSV ফাইলে সংরক্ষণ করে। এর পরে, আমরা ডেটা বিশ্লেষণের জন্য CSV ফাইলটি কীভাবে খুলতে হয় তা অন্বেষণ করব।
ডেটা বিশ্লেষণের জন্য CSV ফাইল খোলা হচ্ছে
একবার SD কার্ডে CSV ফাইলে ডেটা লেখা হয়ে গেলে, আমরা ডেটা পড়ার এবং বিশ্লেষণের জন্য ফাইলটি খুলতে একটি স্প্রেডশীট অ্যাপ্লিকেশন ব্যবহার করতে পারি।
দ্রষ্টব্য: সর্বাধিক সাধারণ স্প্রেডশীট অ্যাপ্লিকেশনগুলির মধ্যে দুটি হল গুগল শীট এবং মাইক্রোসফ্ট এক্সেল। এই নিবন্ধে, আমরা SD কার্ডে CSV ফাইল খুলতে Google পত্রক (ওয়েব-ভিত্তিক) ব্যবহার করব। অন্যান্য অ্যাপ্লিকেশন ব্যবহার করার প্রক্রিয়া একই রকম।
- VEX IQ Brain এর SD কার্ড স্লট থেকে SD কার্ডটি সরান৷ যদি কম্পিউটারে একটি বিল্ট-ইন মাইক্রো এসডি কার্ড স্লট থাকে, তাহলে আমরা সরাসরি সেই স্লটে এসডি কার্ড ঢোকাতে পারি। অন্যথায়, একটি SD কার্ড অ্যাডাপ্টারে SD কার্ডটি ঢোকান এবং তারপরে অ্যাডাপ্টারটিকে কম্পিউটারে সংযুক্ত করুন৷
- আমাদের Google অ্যাকাউন্টে লগ ইন করুন এবং Google পত্রক খুলুন। একটি নতুন স্প্রেডশীট তৈরি করুন।
- স্প্রেডশীটে, "ফাইল" মেনু খুলুন, "আমদানি" -> "আপলোড" -> "ব্রাউজ করুন" বোতাম নির্বাচন করুন, তারপরে কম্পিউটারে CSV ফাইলটি চয়ন করুন। CSV ফাইলটি আপলোড করার পরে, "আমদানি ডেটা" বোতামে ক্লিক করুন। ডেটা ইম্পোর্ট করার পর, CSV ফাইলে সংগৃহীত ডেটা দেখতে “খুলুন” এ ক্লিক করুন।
- (ঐচ্ছিক) ডেটা বিশ্লেষণ করার একটি সহজ উপায় হল একটি গ্রাফ আঁকা, এবং তারপর ডেটার প্রবণতাগুলি সন্ধান করা৷ স্প্রেডশীটে, "সন্নিবেশ" মেনু খুলুন এবং CSV ফাইলের ডেটা ব্যবহার করে একটি গ্রাফ আঁকার জন্য "চার্ট" নির্বাচন করুন। নিচের গ্রাফটি VEX IQ Brain (2nd gen) দিয়ে সংগৃহীত ত্বরণ ডেটার ফলাফল।
দ্রষ্টব্য: আমরা চার্ট সম্পাদক ব্যবহার করতে পারি একটি ভিন্ন চার্টের ধরন নির্বাচন করতে বা আমাদের প্রয়োজনের ভিত্তিতে চার্ট সম্পাদনা করতে।
এই মুহুর্তে, আমরা ডেটা লগিং প্রকল্পটি শেষ করেছি যা VEX IQ Brain (2nd gen) দিয়ে ডেটা সংগ্রহ করে এবং SD কার্ডে একটি CSV ফাইলে সংরক্ষণ করে। এছাড়াও, আমরা শিখেছি কিভাবে Google পত্রক ব্যবহার করে SD কার্ডে CSV ফাইল পড়তে হয় এবং এমনকি আরও বিশ্লেষণের জন্য একটি গ্রাফ তৈরি করতে হয়। এরপর কী? আসুন আমরা ডেটা লগিংয়ের জন্য VEX রোবট ব্যবহার করে আরও উত্তেজনাপূর্ণ পরীক্ষার পরিকল্পনা করার চেষ্টা করি, পরিবর্তিত পরিবেশগত কারণগুলি কীভাবে বিভিন্ন ধরণের ডেটাকে প্রভাবিত করে তা পর্যবেক্ষণ করতে এবং আমাদের চারপাশের বিশ্ব সম্পর্কে গভীরভাবে বোঝার চেষ্টা করি।