আমার রোবোটিক্স গবেষণা অধ্যায়

Table of Contents

এই পোস্টে আমার রোবোটিক্স যাত্রার বিবরণ রয়েছে, যেখানে শুরু হয়েছে উচ্চ বিদ্যালয় চলাকালীন 2015 সালে FRC-এ রোবোটিক্সের প্রতি আমার আগ্রহ আবিষ্কার থেকে, এবং এরপর ফেব্রুয়ারি 2021 থেকে সেপ্টেম্বর 2021 পর্যন্ত কোলোরাডো স্কুল অফ মাইন্স-এর হিউম্যান সেন্টার্ড রোবোটিক্স (HCR) ল্যাব-এ গবেষণা সহকারী হিসেবে আমার সময় পর্যন্ত। মনে রাখবেন, ২০২২-এর শেষ দিকে থেকে HCR ল্যাব কোলোরাডো স্কুল অফ মাইন্স থেকে ম্যাসাচুসেটস অ্যামহার্স্ট বিশ্ববিদ্যালয়-এ স্থানান্তরিত হয়েছে, এবং এর সাইটও hcr.mines.edu থেকে hcr.cs.umass.edu-এ সরেছে।

পটভূমি

আমি ২০১৮ সালের শরৎ সেমিস্টারে কোলোরাডো স্কুল অফ মাইন্স-এ আমার স্নাতক অধ্যয়ন শুরু করি। আমার মেজর ছিল রোবোটিক্স ও বুদ্ধিমান সিস্টেমে ফোকাসসহ কম্পিউটার বিজ্ঞান। এবং আমি ২০২২ সালের বসন্তে স্নাতক সম্পন্ন করি।

আমি আমার জীবনের শুরুতেই নিজের আগ্রহ খুঁজে পেতে সৌভাগ্যবান ছিলাম। উচ্চ বিদ্যালয়ের সময়, আমি কী পছন্দ করি এবং কীতে আমি ভালো হতে পারি তা বোঝার জন্য অনেক সময় ব্যয় করেছি। কিছুটা চেষ্টা ও ভুলের পর, আমি বুঝতে পারি যে আমার আগ্রহ ছিল কম্পিউটার বিজ্ঞান। কিন্তু এই সময়েই আমি আবিষ্কার করি যে কোডের মাধ্যমে কিছু তৈরি করার প্রতি আমার এই অপ্রতিরোধ্য ভালোবাসা আছে।

মাইন্স-এ, আমি ড. হাও ঝাং-এর অধীনে মাইন্সের হিউম্যান সেন্টার্ড রোবোটিক্স (HCR) ল্যাবে কাজ করার সুযোগ পাই। আমি প্রথম ড. ঝাং-এর সঙ্গে ২০২০ সালের বসন্তে তাঁর “হিউম্যান সেন্টার্ড রোবোটিক্স” (CSCI473) ক্লাসের মাধ্যমে দেখা করি, এবং COVID ও কোর্সওয়ার্কের বিশৃঙ্খলার পর, ২০২১ সালের বসন্তের শুরুতে আমি তাঁর ল্যাবে কাজ করতে পারি।

হিউম্যান সেন্টার্ড রোবোটিক্স (CSCI473) ক্লাস

মাইন্স-এর হিউম্যান সেন্টার্ড রোবোটিক্স (CSCI473) ছিল কলেজ জীবনের মাত্র কয়েকটি ক্লাসের একটি, যার আমার ওপর গভীর প্রভাব পড়েছিল। এই ক্লাসটি পড়াতেন ড. হাও ঝাং। ক্লাসের আমাদের পুরো গ্রেড মাত্র তিনটি প্রকল্পের ওপর নির্ভর করত, যার প্রতিটিই রোবোটিক্সের মূল ধারণাগুলো পরিচয় করিয়ে দেওয়া একটি চ্যালেঞ্জিং সমস্যা উপস্থাপন করেছিল। এই প্রকল্পগুলো ছিল:

  1. Robot Operating System (ROS) শেখা
  2. রোবটের ওয়াল ফলোয়িং-এর জন্য রিইনফোর্সমেন্ট লার্নিং
  3. স্কেলেটন-ভিত্তিক প্রতিনিধিত্ব ব্যবহার করে মানব আচরণ সম্পর্কে রোবটের বোধ

Robot Operating System (ROS) শেখা

এটাই ছিল আমাদের দেওয়া প্রথম প্রকল্প। প্রকল্পটি তিনটি কাজে বিভক্ত ছিল:

  1. ডেভেলপমেন্ট পরিবেশ সেটআপ
  2. Gazebo সিমুলেটর বোঝা
  3. একটি ROS “Hello World” লেখা

১ এবং ২ নম্বর কাজের জন্য, আমাদের শুধু ডেভেলপমেন্ট পরিবেশ সেটআপ করতে এবং Gazebo-এর একটি পরিচিতিমূলক টিউটোরিয়াল অনুসরণ করতে হতো। এতে অন্তর্ভুক্ত ছিল:

অন্যদিকে, ৩ নম্বর কাজটি ছিল সত্যিকারের চ্যালেঞ্জ। কাজটি ছিল turtlesim ব্যবহার করে কচ্ছপটিকে মাইন্স-এর “M” লোগো আঁকানো:

এই কাজটি, যদিও শুনতে সহজ লাগছিল, বাস্তবে যতটা মনে হয়েছিল তার চেয়ে অনেক বেশি কঠিন ছিল। এই প্রকল্পই শেষ পর্যন্ত আমাকে Open-Loop এবং Closed-Loop সিস্টেমের ধারণার সঙ্গে পরিচয় করিয়ে দেয়। পূর্ণ প্রকল্প বিবরণের জন্য, csci473-p1.pdf দেখুন অথবা ROS Move Turtle প্রকল্প পৃষ্ঠায় এই প্রকল্প এবং আমার সমাধান সম্পর্কে আরও জানুন।

রোবটের ওয়াল ফলোয়িং-এর জন্য রিইনফোর্সমেন্ট লার্নিং

এটি ছিল আমাদের দেওয়া দ্বিতীয় প্রকল্প, এবং এটি কলেজে আমি কাজ করা সবচেয়ে কঠিন প্রকল্পগুলোর একটি ছিল। প্রকল্পটির বিবরণ ছিল নিম্নরূপ:

এই প্রকল্পে, শিক্ষার্থীরা স্বয়ংক্রিয় মোবাইল রোবটকে একটি দেয়াল অনুসরণ করতে এবং বাধার সাথে ধাক্কা লাগা এড়াতে শেখানোর জন্য রিইনফোর্সমেন্ট লার্নিং অ্যালগরিদম ডিজাইন ও বাস্তবায়ন করবে। শিক্ষার্থীরা ROS Melodic-এ Gazebo সিমুলেশন ব্যবহার করে Triton নামের একটি সর্বদিক-মুখী মোবাইল রোবট সিমুলেট করবে, এবং আপনাকে সরবরাহ করা একটি পরিবেশ মানচিত্র ব্যবহার করবে। শিক্ষার্থীরা রোবটে থাকা একটি লেজার রেঞ্জ স্ক্যানার ব্যবহার করে সেন্সিং এবং লার্নিং সম্পাদন করবে, যেখানে রোবটটি স্টিয়ারিং এবং বেগ কমান্ডের মাধ্যমে নিয়ন্ত্রিত হবে। শিক্ষার্থীদের Ubuntu 18.04 LTS-এ চলমান ROS Melodic-এ C++ বা Python ব্যবহার করে এই প্রকল্পটি প্রোগ্রাম করতে হবে (অর্থাৎ, Project 1-এ ব্যবহৃত একই ডেভেলপমেন্ট পরিবেশ)। এছাড়াও, শিক্ষার্থীদের LATEX ব্যবহার করে মানক IEEE রোবোটিক্স সম্মেলনের ফরম্যাট অনুসরণ করে একটি প্রতিবেদন লিখতে হবে।

রিইনফোর্সমেন্ট লার্নিং অ্যালগরিদমের জন্য, আমাদের Q-Learning ব্যবহার করতে বলা হয়েছিল। আমরা ক্লাসের দেওয়া Stingray Gazebo সিমুলেশন পরিবেশও ব্যবহার করেছি। Stingray-এ Triton মডেল এবং ফিজিক্স লজিক ছিল। রোবটকে অনুসরণ করার জন্য আমাদের একটি গোলকধাঁধাও দেওয়া হয়েছিল। সব মিলিয়ে, পরিবেশটি এমন দেখাত:

আমি কখনোই আমার সমাধান GitHub বা ওয়েবে প্রকাশ করিনি, কারণ এটি খুব ভালো ছিল না এবং এতে অনেক ত্রুটি ছিল। এছাড়াও, সঠিক পরিবেশে কোড চালু করা বেশ কঠিন এবং বিরক্তিকর। তবে, আমার কাছে একটি ডেমো ভিডিও আছে, যা আমি ক্লাসে জমা দিয়েছিলাম এবং সেখানে আমার সমাধান দেখানো হয়েছে। আপনি এটি এখানে দেখতে পারেন:

পূর্ণ প্রকল্প বিবরণের জন্য, csci473-p2.pdf দেখুন

স্কেলেটন-ভিত্তিক প্রতিনিধিত্ব ব্যবহার করে মানব আচরণ সম্পর্কে রোবটের বোধ

তৃতীয় প্রকল্পটির জন্য, প্রকল্পের বিবরণ ছিল নিম্নরূপ:

এই প্রকল্পে, শিক্ষার্থীরা কয়েকটি স্কেলেটন-ভিত্তিক প্রতিনিধিত্ব (Deliverable 1) বাস্তবায়ন করবে এবং একটি Kinect V1 সেন্সর থেকে সংগৃহীত জনসাধারণের কার্যকলাপ ডেটাসেট ব্যবহার করে মানব আচরণ শ্রেণিবিন্যাসের জন্য Support Vector Machines (SVMs) (Deliverable 2) ব্যবহার করবে। এছাড়াও, শিক্ষার্থীদের Deliverable 3-এ LATEX ব্যবহার করে মানক IEEE রোবোটিক্স সম্মেলনের ফরম্যাট অনুসরণ করে একটি প্রতিবেদন লিখতে হবে।

এই প্রকল্পটি চ্যালেঞ্জিং ছিল, তবে দ্বিতীয় প্রকল্পের মতো কঠিন ছিল না। মূল লক্ষ্য ছিল Kinect V1 সেন্সর ডেটা, MSR Daily Activity 3D Dataset থেকে, এবং Support Vector Machines ব্যবহার করে নির্দিষ্ট মানব ক্রিয়া/আচরণ শ্রেণিবিন্যাস করা। পূর্ণ প্রকল্প বিবরণের জন্য, csci473-p3.pdf দেখুন অথবা Predict Human Actions Using LIBSVM ব্লগ পোস্টে এই প্রকল্প এবং আমার সমাধান সম্পর্কে আরও জানুন।

CSCI473 উপসংহার

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

CS ফিল্ড সেশন (গ্রীষ্ম ২০২০)

CG_GUI_19

২০২০ সালের গ্রীষ্মে, CSCI473 শেষ করা এবং HCR ল্যাবে যোগ দেওয়ার মাঝের সময়ে, আমি কোলোরাডো স্কুল অফ মাইন্স-এ আমার CS স্নাতক কর্মসূচির অংশ হিসেবে CSCI370 বা “অ্যাডভান্সড সফটওয়্যার ইঞ্জিনিয়ারিং” নিয়েছিলাম। CSCI370 এমন একটি কোর্স যা শিক্ষার্থীদের একটি কোম্পানির জন্য সফটওয়্যার-সম্পর্কিত সমাধান ডিজাইন, বাস্তবায়ন এবং নথিভুক্ত করতে শেখায়। এটি শিক্ষার্থীদের বাস্তব বিশ্বের কম্পিউটার বিজ্ঞান সমস্যায় তাদের কোর্সওয়ার্ক জ্ঞান প্রয়োগ করতে দেয়। আপনি কোর্সটি সম্পর্কে আরও জানতে পারেন এখানে

এই কোর্সে, আপনি কোন প্রকল্প/কোম্পানির সঙ্গে কাজ করবেন তা নিজেই নির্ধারণ করেন। কোর্সে প্রতিটি প্রকল্প এবং কোম্পানির বিস্তারিতসহ PDF দেওয়া ছিল। শেষ পর্যন্ত আমি Lunar Outpost নামের একটি কোম্পানির পোস্ট করা “রিয়েল টাইম হুইল স্লিপ ডিটেকশন অ্যান্ড এরর কারেকশনস ফর এনহ্যান্সড লুনার ন্যাভিগেশন” নামের একটি প্রকল্পে কাজ করার সিদ্ধান্ত নিই। নামটি দীর্ঘ হওয়ায়, চলুন প্রকল্পটির একটি বিকল্প নাম দিই “হুইল স্লিপেজ ডিটেকশন”।

সমস্যা

Lunar Outpost একটি স্টার্টআপ, যা স্বয়ংক্রিয় চন্দ্র রোভার তৈরি করার চেষ্টা করছে। চাঁদে অনেক চন্দ্রধুলো রয়েছে, যা প্রচুর চাকা পিছলে যাওয়ার কারণ হিসেবে পরিচিত। এটি আদর্শ নয়, কারণ চাকা পিছলে গেলে স্বয়ংক্রিয় সিস্টেমগুলো তাদের বাস্তব বিশ্বের অবস্থান হারাতে পারে। পৃথিবীতে, এটি GPS ডেটা ব্যবহার করে চাকার পিছলে যাওয়ার কারণে সৃষ্ট যেকোনো বিচ্যুতি সংশোধন করে সমাধান করা হয়। কিন্তু GPS-এর সমস্যা হলো, এটি কাজ করে কেবল তখনই যখন 30+ ন্যাভিগেশন স্যাটেলাইট পৃথিবীর কক্ষপথে ক্রমাগত ঘুরতে থাকে এবং অনন্য সংকেত পাঠায়, যা কম্পিউটারকে তাদের অবস্থান গণনা করতে দেয়। কিন্তু চাঁদে বর্তমানে এমন কোনো GPS নেই। এটি জেনে, চাকা পিছলে যাওয়া শনাক্ত করতে GPS ছাড়া অন্য একটি পদ্ধতি ব্যবহার করতে হবে। প্রকল্পটির সমস্যার আরও বিস্তারিত প্রতিবেদন এখানে দেখা যেতে পারে।

দল

এই প্রকল্পটি সহজ ছিল না, তাই এটি একটি দলে করা আবশ্যক ছিল। দলটি পাঁচজন সহপাঠী কোলোরাডো স্কুল অফ মাইন্স শিক্ষার্থী নিয়ে গঠিত ছিল:

এই প্রকল্পটি সহজ ছিল না, তাই এটি একটি দলে করা আবশ্যক ছিল। এই দলে ছিলেন Mehmet Yilmaz (আমি), Kane Bruce, Braedon O’Callaghan, Liam Williams, এবং Kevin Grant।

প্রকল্পটি করার জন্য আমাদের কিছু ROS, C++, Python, Linux, Raspberry Pi, এবং Arduino জানতে প্রয়োজন ছিল। আমাদের অধিকাংশেরই এসব প্রযুক্তির এক বা একাধিকটির অভিজ্ঞতা ছিল, কিন্তু ROS-এ অভিজ্ঞতা ছিল শুধু আমার, কারণ আমি ২০২০ সালের বসন্ত সেমিস্টারে আমার Human Centered Robotics (CSCI473) ক্লাসে ROS ব্যবহার করেছিলাম। এই কারণে, শুরুতে আমি সবাইকে ROS সম্পর্কে এবং কীভাবে এর জন্য ডেভেলপ করতে হয় তা দ্রুত বোঝাতে সাহায্য করেছি।

চ্যালেঞ্জসমূহ

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

এছাড়াও, লুনার আউটপোস্টের ব্যবহারের ক্ষেত্রে Wheel Slippage সমস্যাটি কীভাবে সমাধান করা যেতে পারে সে সম্পর্কে ধারণা পেতে আমরা WVU Navigation Lab থেকে কিছু একাডেমিক গবেষণা পর্যালোচনা করেছি, যা আমাদের জন্য, স্নাতক দ্বিতীয় ও তৃতীয় বর্ষের শিক্ষার্থী হিসেবে, আমরা যতটা আশা করেছিলাম তার চেয়ে বেশি কঠিন ছিল।

আরেকটি চ্যালেঞ্জ ছিল এই প্রকল্পে কাজ করার জন্য আমাদের হাতে থাকা সময়ের পরিমাণ। CSCI370 একটি এক মাসের ক্লাস। কিন্তু সমস্যাটি নিজেই একটি বিশাল সমস্যা, যা অনেক কোম্পানি এবং একাডেমিক মহল দশকের পর দশক ধরে সমাধান/পরিপূর্ণ করার চেষ্টা করছে। তাই এক মাস এই বিষয়টি সমাধান করার জন্য মোটেই যথেষ্ট সময় নয়। কিন্তু, এই সব চ্যালেঞ্জ সত্ত্বেও আমরা এগিয়ে গিয়েছিলাম এবং নিশ্চিত করেছি যে আমরা কাজটি সম্পন্ন করব।

উপসংহার

সব গবেষণা ও উন্নয়নের কাজ শেষ করার পর, আমরা নির্ধারণ করি যে ডিজিটালি সঠিক চাঁদের পদার্থবিজ্ঞান অনুকরণ করা প্রায় অসম্ভব, তাই সিমুলেশনে এই অ্যালগরিদমটি সত্যিই চেষ্টা করা তেমন কোনো কাজে আসে না এবং মহাকাশে ও চাঁদে wheel slippage শনাক্তকরণে কোনো অর্থবহ গবেষণা দেবে না। আমরা সিদ্ধান্তে পৌঁছাই যে বালি এবং বাস্তব হার্ডওয়্যার, যেমন একটি Husky রোবট, ব্যবহার করে একটি সঠিক পরীক্ষার পরিবেশ স্থাপন করা এই ধরনের গবেষণার জন্য অনেক বেশি গুরুত্বপূর্ণ। আমরা wheel slippage শনাক্তকরণ কোডটি ROS node হিসেবে কাজ করার মতো করে হালনাগাদ করেছি এবং এটি সঠিকভাবে কাজ করেছে এবং পরীক্ষার জন্য সহজেই বাস্তব হার্ডওয়্যারে অন্তর্ভুক্ত করা যেত। এই প্রকল্পটি আমাকে নেতৃত্বের ভূমিকা নিতে, আমার সহপাঠীদের ROS development সম্পর্কে শেখাতে, এবং Python, ROS, ও Gazebo নিয়ে অভিজ্ঞতা অর্জন করতে সাহায্য করেছে, সেইসঙ্গে এমন একটি জটিল সমস্যার মোকাবিলা করেছি যা আমি আগে কখনও দেখিনি। সবচেয়ে গুরুত্বপূর্ণভাবে, এই অভিজ্ঞতা রোবোটিক্সের প্রতি আমার আগ্রহকে আরও দৃঢ় করেছে এবং এই ক্ষেত্রে গবেষণা করার আমার ইচ্ছাকে আরও শক্তিশালী করেছে, যা আমার রোবোটিক্স যাত্রায় পরবর্তীতে কী আসবে তার জন্য মঞ্চ তৈরি করেছে।

HCR ল্যাবে শুরু

CSCI473, ২০২০ সালের গ্রীষ্মে আমার CS Field Session, এবং ২০২০ সালের শরৎ সেমিস্টার শেষ করার পর, আমি রোবোটিক্সে গবেষণা করার সিদ্ধান্ত নিই। CSCI473 এবং CS Field Session—দু’টিতেই আমার অভিজ্ঞতা এত ভালো ছিল যে আমি HCR Lab-এর জন্য গবেষণা করতে চেয়েছিলাম। যেহেতু আগের বছর আমি Dr. Zhang-এর সঙ্গে দেখা করেছিলাম, তাই আমি তাকে ইমেল করে ২০২১ সালের জানুয়ারিতে ল্যাবের কোনো সুযোগ আছে কি না জিজ্ঞাসা করার সিদ্ধান্ত নিই। প্রায় ২ সপ্তাহের মধ্যে, Dr. Zhang আগ্রহ প্রকাশ করেন, আমাকে গবেষণার বিকল্পগুলো উপস্থাপন করেন, এবং ল্যাবে আমাকে একটি ভূমিকা অফার করেন। এরপর আমি ২০২১ সালের ফেব্রুয়ারিতে ল্যাবে কাজ শুরু করি।

পরিচিতিমূলক ভিডিও

HCR Lab-এ আমার সময়কালের কয়েক মাস পর আমি যে পরিচিতিমূলক ভিডিওটি রেকর্ড করেছিলাম সেটি এখানে রয়েছে। এটি ২০২১ সালের মে মাসে রেকর্ড করা হয়েছিল এবং এতে ২০২১ সালের গ্রীষ্মে HCR Lab-এ আমি যে গবেষণায় মনোযোগ দেব তা অন্তর্ভুক্ত রয়েছে:

আমার প্রকল্প

HCR Lab-এ আমার সময় জুড়ে, আমি মূলত Triton প্রকল্পের ওপর মনোযোগ দিয়েছি। Triton প্রকল্পটি Human Centered Robotics Lab দ্বারা কলোরাডো স্কুল অব মাইন্স-এ তৈরি একটি মোবাইল রোবট। এটি NVIDIA-এর Jetson Nano দ্বারা চালিত একটি ত্রিভুজাকার omni-wheel গ্রাউন্ড রোবট।

Triton, একটি সরল সারসংক্ষেপে, নিম্নলিখিত অংশগুলো নিয়ে গঠিত ছিল:

  • NVIDIA Jetson Nano
  • NVIDIA-এর Seed Studio A205 Carrier Board
  • Arduino Mega
  • 64 GB Micro SD Card
  • কাস্টম 3D-প্রিন্টেড বডি
  • 3টি mecanum wheel
  • 1টি AR Battery
  • অপ্টিমাইজড বিদ্যুৎ বণ্টন ও তারসংযোগের জন্য কাস্টম সার্কিট
  • Intel-এর Realsense D435 Camera
  • কিছু LED

এটি প্রায় ২০১৮-২০২০ সালে শিক্ষামূলক উদ্দেশ্যে একটি রোবট হিসেবে নকশা, নির্মাণ, এবং প্রস্তুত করা হয়েছিল। আমি যোগ দেওয়ার সময় Triton বেশ পরিণত অবস্থায় ছিল, এবং ল্যাব এটি একটি নতুন সংস্করণে রূপান্তর করার কথা বিবেচনা করছিল। তবে Triton-এর প্রধান সমস্যা ছিল এর সফটওয়্যার। Triton চলতে, চার্জ হতে, এবং মৌলিক অর্থে কাজ করতে পারত, কিন্তু এটি সত্যিকারের বুদ্ধিমান কোনো কাজ করত না। এমনকি আরও উন্নত গতিবিধি করার ক্ষমতাও এতে ছিল না।

ব্যাটারি চার্জার সেটআপ পরীক্ষার এলাকার বিন্যাস
প্রাথমিক পরীক্ষার পর্যায়ে Tritons শেলফে Tritons

এটি সমাধান করতে শুরু করার জন্য, ল্যাব এমন একটি এলাকা স্থাপন করেছিল যেখানে আমরা Triton-কে ট্র্যাক করতে পারতাম। এটি করতে তারা মেঝে থেকে প্রায় ৬-৭ ফুট ওপরে বর্গাকার-সদৃশ বিন্যাসে ৮টি Optitrack Flex (Infrared Red) ক্যামেরা ব্যবহার করে ২-মিটার বাই ২-মিটারের একটি এলাকা তৈরি করে।

এলাকা I1 এলাকা I2

এই এলাকা তৈরি করার পাশাপাশি, প্রতিটি Triton-এর বডির উপরের দিকে তিনটি ধূসর গোলক-আকৃতির বল লাগানো ছিল।

এই সেটআপের মাধ্যমে, আমরা কার্যত আমাদের নিজেদের একটি ছোট-স্কেলের GPS system তৈরি করেছিলাম, যা আমাদের আগ্রহের এলাকার মধ্যে একটি Triton-এর সঠিক স্থানাঙ্ক মিটারে পেতে সাহায্য করত। Optitrack infrared ক্যামেরা এবং ত্রিভুজাকারে Optitrack ধূসর গোলকগুলো ব্যবহার করে, আমরা আমাদের এলাকায় Triton-এর সঠিক স্থানাঙ্ক নির্ভুলভাবে নির্ধারণ করতে পারতাম। এতে আমরা গতিবিধিতে আরও ভালো নির্ভুলতার জন্য একটি closed-loop system প্রয়োগ করতে সক্ষম হই।

Optitrack system সঠিকভাবে ক্যালিব্রেট করা থাকলে প্রায় ১২০Hz হারে sub-millimeter নির্ভুলতায় অবস্থান ও অভিমুখের তথ্য প্রদান করত। প্রতিটি Triton-এর তিনটি reflective marker একটি অনন্য ত্রিভুজাকার pattern তৈরি করত, যা systemটি একটি rigid body হিসেবে ট্র্যাক করতে পারত। coordinate system এমনভাবে ক্যালিব্রেট করা হয়েছিল যে (0,0) ট্র্যাকিং এলাকার কেন্দ্রে ছিল, আর X ও Y axis ঘরের জ্যামিতির সঙ্গে সঙ্গতিপূর্ণ ছিল। কিন্তু এই সুনির্দিষ্ট অবস্থান তথ্য থাকা সত্ত্বেও, Triton এখনও গতিবিধিতে সমস্যায় পড়ত।

এই সেটআপের মাধ্যমে, আমরা Triton-কে যে একটি মূল বৈশিষ্ট্য দিতে চেয়েছিলাম তা হলো নির্দিষ্ট একটি স্থানাঙ্কে যাওয়ার ক্ষমতা। ব্যবহারকারী, বা তাদের সফটওয়্যার, তাদের আগ্রহের এলাকার মধ্যে একটি (x, y) স্থানাঙ্ক দিতে পারত। এরপর রোবটটি যত দ্রুত, নির্ভুলভাবে, এবং মসৃণভাবে সম্ভব সেই স্থানাঙ্কে যেত। আমি যখন যোগ দিই, তখন এই বৈশিষ্ট্যটি ছিল, কিন্তু এটি খুব ভালো কাজ করছিল না। এখানে একটি সরল অ্যানিমেশন রয়েছে যা দেখায় মূল moving logic কীভাবে কাজ করত:

আমি মূল সমাধানটি চলমান অবস্থায় রেকর্ড করিনি, তাই আমি এই সরল অ্যানিমেশনটি তৈরি করেছি যা পুরোনো moving logic চলমান অবস্থায় দেখায়। এটি জেনে, এই পদ্ধতির সমস্যাগুলো কী?

  1. এটি সত্যিই ধীর
  2. শুধু একটি নির্দিষ্ট বিন্দুতে যাওয়ার জন্য এটি রোবটকে অনেক জায়গা দখল করতে বাধ্য করে। একাধিক Triton চলাচল করার সময় এই সমাধানটি ব্যবহার করা আমাদের জন্য কঠিন করে তুলেছিল।

তাহলে এই আচরণ কেন ঘটছিল? সমস্যাটি ছিল Triton প্রথমে ঘুরত, তার alpha পরিবর্তন করে, যতক্ষণ না এটি নির্দিষ্ট error margin-এর মধ্যে target point-এর দিকে মুখ করে। তারপর এটি দ্রুত সামনে এগোত, এবং তার theta target থেকে নির্দিষ্ট পরিমাণে বিচ্যুত হলে, এটি থেমে যেত এবং আবার ঘুরতে শুরু করত যতক্ষণ না alpha target goal-এর জন্য গ্রহণযোগ্য সীমার মধ্যে আসত। তারপর এটি আবার দ্রুত এগোত এবং এভাবে করতে থাকত যতক্ষণ না এটি বিন্দুতে পৌঁছে যেত। এছাড়াও, goal point-এর কাছাকাছি যত আসত, turning এবং sprinting speed তত কমে যেত যাতে এটি overshoot না করে। এর ফলে Triton-এর চলাচল অস্বাভাবিক হয়ে উঠত, target point-এ পৌঁছাতে অনেক সময় লাগত, এবং একটি নির্দিষ্ট target point-এ যাওয়ার জন্যও খুব বেশি এলাকা প্রয়োজন হত। তাই এই সব সমস্যার কারণে, এবং Triton প্রকল্পের উন্নয়নের জন্য এই বৈশিষ্ট্যটি কতটা অপরিহার্য ছিল তা বিবেচনায়, আমি যখন HCR Lab-এ কাজ শুরু করি, তখন আমার প্রথম কাজ ছিল আরও কার্যকর সমাধান তৈরি করা, যা Triton-কে একটি goal point-এর দিকে আরও ভালোভাবে navigat করতে সাহায্য করবে।

এটি জেনে, আমি এই সমস্যাটি সমাধানের সর্বোত্তম উপায় নিয়ে অনেক সময় গবেষণা করেছি। বিদ্রূপজনকভাবে, আমি তখন Mines-এ Introduction to Feedback Control Systems (EENG307) নামের একটি ক্লাস নিচ্ছিলাম। ক্লাসের শুরুতেই আমরা Open-loop controllers এবং Closed-loop controllers-এর ধারণা সম্পর্কে শিখেছিলাম। এটি জেনে, এবং সেই ক্লাসের অধ্যাপক ও আমার বুদ্ধিমান রুমমেটের সঙ্গে কিছু আলোচনার পর, পরিষ্কার হয়ে যায় যে Triton-কে একটি goal point-এ নিয়ে যাওয়ার এই লক্ষ্যটি একটি closed-loop system সমস্যা।

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

এখন, ব্যাপক পরীক্ষা ও গবেষণার পর, আমি Triton-এর জন্য দুটি পৃথক controller পদ্ধতি তৈরি করেছি:

পদ্ধতি ১: Distance-Theta Controller

এই পদ্ধতিতে একই সঙ্গে চলমান দুটি পৃথক proportional controller ব্যবহার করা হয়েছিল:

  • Distance Controller: লক্ষ্যবস্তুর প্রতি Euclidean distance গণনা করত এবং forward/backward velocity নির্ধারণের জন্য একটি proportional gain প্রয়োগ করত
  • Theta Controller: রোবটের বর্তমান heading এবং লক্ষ্যবস্তুর দিকে কাঙ্ক্ষিত heading-এর মধ্যে angular error গণনা করত, rotational velocity-এর জন্য একটি পৃথক proportional gain প্রয়োগ করত

অ্যালগরিদমটি ধারাবাহিকভাবে লক্ষ্যবস্তুর প্রতি Euclidean distance এবং রোবটের বর্তমান heading ও কাঙ্ক্ষিত দিকের মধ্যে angular error গণনা করত। যথাক্রমে linear এবং angular velocity তৈরি করার জন্য দুটি পৃথক proportional gain প্রয়োগ করা হয়েছিল।

এর ফলে Triton স্বাভাবিকভাবে লক্ষ্যের দিকে ঘুরে একই সঙ্গে সামনে এগোতে পারত, ফলে মসৃণ বাঁকানো পথ তৈরি হতো। এর প্রধান সুবিধা ছিল যে রোবট সর্বদা তার সামনের দিকটি গন্তব্যের দিকে মুখ করে রাখত, যা camera-based applications-এর জন্য অত্যন্ত গুরুত্বপূর্ণ ছিল।

পদ্ধতি ২: X-Y স্থানাঙ্ক নিয়ন্ত্রক

এই পদ্ধতিতে রোবটটিকে একটি 2D প্লটার হিসেবে ধরা হয়েছিল, যেখানে X এবং Y গতিবিধির স্বাধীন নিয়ন্ত্রণ ছিল:

  • X নিয়ন্ত্রক: X-স্থানাঙ্কের ত্রুটির ভিত্তিতে সরাসরি পূর্ব-পশ্চিম গতি নিয়ন্ত্রণ করত
  • Y নিয়ন্ত্রক: Y-স্থানাঙ্কের ত্রুটির ভিত্তিতে সরাসরি উত্তর-দক্ষিণ গতি নিয়ন্ত্রণ করত

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

পদ্ধতি #1-এর জন্য, আমি এই পদ্ধতি সম্পর্কে Move Turtle (TurtleSim) ব্লগে পূর্ণ বিস্তারিত আলোচনা করেছি। PID কন্ট্রোলার সাধারণভাবে কীভাবে কাজ করে, এবং পদ্ধতি #1 কীভাবে কাজ করে—এই সব বিস্তারিত জানতে আমি দৃঢ়ভাবে পরামর্শ দিই যে আপনি এই ব্লগটি পড়ুন। আমি ROS-এর TurtleSim ব্যবহার করে পদ্ধতি #1 তৈরি করি, তারপর সেই কোড Triton-এ স্থানান্তর করি এবং আরও বাস্তব-জগতের পরিবেশের উপযোগী করে হালনাগাদ করি।

পদ্ধতি #2 একটি বেশ ভিন্ন কিন্তু সমানভাবে কার্যকর পদ্ধতি ব্যবহার করেছিল। রোবটের অভিমুখ এবং লক্ষ্যের দূরত্ব নিয়ে ভাবার বদলে, এই পদ্ধতি গতিবিধিকে একটি স্থানাঙ্ক সমতলের সমস্যা হিসেবে বিবেচনা করে। কন্ট্রোলার ধারাবাহিকভাবে X এবং Y উভয় দিকের ত্রুটি আলাদাভাবে গণনা করে। উদাহরণস্বরূপ, যদি রোবটকে (0,0) থেকে (2,3)-এ যেতে হয়, তবে এটি এটিকে X-এ 2-মিটার ত্রুটি এবং Y-এ 3-মিটার ত্রুটি সংশোধনের প্রয়োজন হিসেবে দেখে। দুইটি আনুপাতিক কন্ট্রোলার একসঙ্গে কাজ করত: একটি X-ত্রুটির ভিত্তিতে রোবটের X-দিকের বেগ সমন্বয় করত, আর অন্যটি Y-ত্রুটির ভিত্তিতে Y-দিকের গতি পরিচালনা করত। এতে লক্ষ্যের দিকে আরও সরাসরি পথ তৈরি হত, যা 3D প্রিন্টারের হেড কীভাবে চলে তার মতো, এবং মসৃণ তির্যক গতি সম্ভব হত। রোবটকে স্পষ্টভাবে তার লক্ষ্যের দিকে ঘুরতে হতো না, ফলে এই পদ্ধতি বিশেষ করে সংকীর্ণ স্থানে বা যেখানে নির্ভুল অবস্থান নির্ধারণ দরকার সেখানে খুব কার্যকর ছিল।

উভয় পদ্ধতিই মূল পদ্ধতির তুলনায় উল্লেখযোগ্যভাবে দ্রুত এবং বেশি নির্ভরযোগ্য প্রমাণিত হয়েছিল। এই নতুন পদ্ধতিগুলো কার্যকর অবস্থায় দেখতে Tritons in Action Playlist দেখুন, যেখানে নতুন পদ্ধতিগুলোর সাথে সব Triton-কে কাজ করতে দেখা যায়।

যেখানে আগে একটি সহজ point-to-point গতিবিধিতে 30-45 সেকেন্ড লাগত, এখন তা প্রায় 8-12 সেকেন্ডে সম্পন্ন হত। আরও গুরুত্বপূর্ণভাবে, Triton এখন সংকীর্ণ স্থানে আরও দক্ষতার সাথে চলাচল করতে পারত, যা আমাদের বহু-রোবট পরিস্থিতিতে উপকারী হয়ে ওঠে।

উন্নয়নগত চ্যালেঞ্জ এবং ডিবাগিং

এই কন্ট্রোলারগুলো বাস্তবায়ন করা সহজ ছিল না এবং এতে বেশ কিছু গুরুত্বপূর্ণ ডিবাগিং চ্যালেঞ্জ ছিল:

স্থানাঙ্ক ব্যবস্থার রূপান্তর: সবচেয়ে জটিল দিকগুলোর একটি ছিল স্থানাঙ্ক রূপান্তরগুলো ঠিকভাবে করা। Optitrack সিস্টেম তার নিজস্ব স্থানাঙ্ক ফ্রেমে তথ্য দিত, রোবটের নিজের স্থানীয় স্থানাঙ্ক ফ্রেম ছিল, আর আমাকে এদের মধ্যে সঠিকভাবে রূপান্তর করতে হতো। প্রাথমিক বাস্তবায়নে রোবটগুলো ভুল দিকে চলত, কারণ আমি রোটেশন ম্যাট্রিক্সের হিসাব গুলিয়ে ফেলেছিলাম।

বাস্তব জগৎ বনাম আদর্শ আচরণ: সবচেয়ে বড় চ্যালেঞ্জ ছিল পাঠ্যবইয়ের কন্ট্রোল তত্ত্বে না-থাকা বাস্তব-জগতের উপাদানগুলোকে হিসাব করা। রোবটের চাকার ঘর্ষণ বৈশিষ্ট্য ভিন্ন ছিল, মোটরগুলো একরকম সাড়া দিত না, আর Optitrack থেকে কন্ট্রোল সফটওয়্যার হয়ে রোবটের Arduino পর্যন্ত যোগাযোগ শৃঙ্খলে সবসময়ই কিছু না কিছু ল্যাটেন্সি থাকত। আমি কয়েক সপ্তাহ ধরে আনুপাতিক গেইন টিউন করেছি এবং এই ভৌত বাস্তবতাগুলোকে ধরতে deadband ফিল্টার যোগ করেছি।

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

বহু-রোবট হস্তক্ষেপ: একাধিক রোবট একসাথে চলার সময় আমি অপ্রত্যাশিত হস্তক্ষেপের ধরন আবিষ্কার করি। রোবটগুলো কখনও একই স্থানের জন্য “লড়াই” করত বা deadlock পরিস্থিতি তৈরি করত, যেখানে তারা অনির্দিষ্টকাল একে অপরকে আটকে দিত। এর ফলে আমি সমন্বয় ব্যবস্থাসমূহ এবং সংঘর্ষ-এড়ানোর অ্যালগরিদম বাস্তবায়ন করি।

বহু-Triton নিয়ন্ত্রণ ব্যবস্থা

একক Triton-এর চলাচলের সমস্যা সমাধান করার পর, ল্যাবের পরবর্তী চ্যালেঞ্জ ছিল একাধিক Triton-কে একই সাথে কাজ করানো। এটি আমার প্রধান ফোকাস এলাকার একটি হয়ে ওঠে এবং শেষ পর্যন্ত প্রকল্পে একটি উল্লেখযোগ্য অবদান হিসেবে দাঁড়ায়।

মূল সিস্টেমটি এক সময়ে শুধুমাত্র একটি Triton নিয়ন্ত্রণ করতে পারত, যা গবেষণার সম্ভাবনাকে মারাত্মকভাবে সীমিত করত। ল্যাব এমন পরিস্থিতি অনুকরণ করতে চেয়েছিল যেখানে একাধিক স্বায়ত্তশাসিত যানবাহনকে তাদের গতি সমন্বয় করতে হয়, যেমন স্বচালিত গাড়িগুলো ট্রাফিক প্রবাহ অনুকূল করতে এবং আরও ভালো SLAM (Simultaneous Localization and Mapping) মানচিত্র তৈরি করতে একে অপরের সাথে যোগাযোগ করে।

এটি সমাধান করতে, আমি Python-এর multiprocessing library ব্যবহার করে একটি multi-processing পদ্ধতি বাস্তবায়ন করি। প্রতিটি Triton-এর নিজস্ব নিবেদিত process ছিল, যা স্বাধীনভাবে চলতে পারত, আবার একটি কেন্দ্রীয় নিয়ন্ত্রণ ব্যবস্থার মাধ্যমে সমন্বিতও থাকত। এতে একাধিক Triton একই সাথে চলতে পারত, একে অপরের control loop-এ হস্তক্ষেপ না করেই।

বহু-রোবট স্থাপত্য নকশা

আমি যে সিস্টেম স্থাপত্য তৈরি করেছি তাতে বেশ কিছু মূল উপাদান ছিল:

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

স্বতন্ত্র রোবট প্রসেস: প্রতিটি Triton-এর নিজস্ব নিবেদিত Python প্রসেস ছিল, যা পরিচালনা করত:

  • ~50Hz-এ বাস্তব-সময়ের PID নিয়ন্ত্রণ গণনা
  • রোবটের হার্ডওয়্যারের সাথে যোগাযোগ (Arduino/Jetson)
  • স্থানীয় পথ নির্বাহ এবং বাধা এড়ানো
  • প্রধান নিয়ন্ত্রকের কাছে অবস্থার প্রতিবেদন

শেয়ার্ড মেমরি যোগাযোগ: প্রসেসগুলোর মধ্যে কার্যকর যোগাযোগ সক্ষম করতে আমি Python-এর multiprocessing.shared_memory এবং Queue objects ব্যবহার করেছি। এতে নেটওয়ার্ক যোগাযোগের অতিরিক্ত ব্যয় ছাড়াই বাস্তব-সময়ের সমন্বয় সম্ভব হয়েছিল।

সমন্বয় পদ্ধতি: একাধিক রোবটকে যখন সমন্বয় করতে হতো (যেমন সংঘর্ষ এড়ানো), তখন দ্বন্দ্ব প্রতিরোধের জন্য আমি semaphores এবং locks বাস্তবায়ন করি, যা রোবটগুলোকে কর্মক্ষেত্রের নির্দিষ্ট এলাকার একচেটিয়া প্রবেশাধিকার চাওয়ার সুযোগ দিত।

চ্যালেঞ্জ ছিল নিশ্চিত করা যে সব রোবট বৈশ্বিক সমন্বয় বজায় রেখেও নিজেদের control loop স্বাধীনভাবে চালাতে পারে। প্রতিটি রোবট প্রসেস তার নিজস্ব PID গণনা চালাত এবং সরাসরি হার্ডওয়্যারে motor command পাঠাত, আর প্রধান প্রসেস collision avoidance এবং path planning-এর মতো উচ্চ-স্তরের সমন্বয় সামলাত।

বহু-Triton সংযোগস্থল পরীক্ষা প্রাথমিক বহু-Triton সেটআপ

ভবিষ্যৎ বহু-এজেন্ট কাজের জন্য ড্রোনসহ Triton

বহু-Triton সিস্টেম সম্পূর্ণ নতুন গবেষণার সম্ভাবনা খুলে দেয়। এখন আমরা অনুকরণ করতে পারতাম:

  • যানবাহন-থেকে-যানবাহন যোগাযোগের পরিস্থিতি
  • বাধা এড়িয়ে সমন্বিত পথ পরিকল্পনা
  • swarm robotics আচরণ
  • বহু-এজেন্ট SLAM ম্যাপিং
  • formation control এবং অনুসরণ আচরণ

একাধিক Triton একসাথে চলার সময় ল্যাব সেটআপটি কেমন দেখাত, তা এখানে দেখা যাচ্ছে:

সবুজ গ্রিডে রোবট রোবট গ্রিড সেটআপ

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

সিস্টেমটি একই সাথে সর্বোচ্চ 5টি Triton সামলাতে পারত, প্রতিটি নিজস্ব PID controller চালাচ্ছিল এবং কেন্দ্রীয় নিয়ন্ত্রণ ব্যবস্থার মাধ্যমে সমন্বিত থাকছিল। কর্মক্ষমতা ছিল চমৎকার, সব রোবটই দল হিসেবে কাজ করার সময় নিজেদের পৃথক নির্ভুলতা বজায় রেখেছিল।

একটি playlist এখানে দেওয়া হলো, যেখানে একক-রোবট নিয়ন্ত্রণ থেকে বহু-রোবট সমন্বয় পর্যন্ত Triton-দের কাজ করতে দেখা যায়: Tritons in Action Playlist

Depth Sensor সংযোজন এবং স্থানাঙ্ক সংশোধন

আরেকটি বড় অগ্রগতি ছিল প্রতিটি Triton-এ স্থাপিত Intel RealSense D435 depth camera ব্যবহার করা। Optitrack সিস্টেম আমাদের অবিশ্বাস্যভাবে নির্ভুল অবস্থানগত তথ্য দিত, কিন্তু আমি অনুসন্ধান করতে চেয়েছিলাম যে রোবটগুলো কীভাবে তাদের on-board sensor ব্যবহার করে স্থানিক সচেতনতা উন্নত করতে এবং স্থানাঙ্ক ত্রুটি সংশোধন করতে পারে।

ধারণাটি ছিল যে Triton-গুলো তাদের depth sensor ব্যবহার করে আশেপাশের অন্যান্য Triton সনাক্ত করতে পারে এবং তাদের অবস্থানগুলো cross-reference করতে পারে। এটি একাধিক উদ্দেশ্যে কাজে আসত:

  1. ত্রুটি সংশোধন: যদি Optitrack সিস্টেমে কোনো calibration drift বা সাময়িক occlusion থাকত, তবে রোবটগুলো একে অপরের অবস্থানের visual confirmation ব্যবহার করে সঠিক স্থানাঙ্ক ব্যবস্থা বজায় রাখতে পারত।

  2. উন্নত SLAM: একাধিক রোবট যখন depth sensor সহ একসাথে কাজ করত, তখন আমরা পরিবেশের আরও সমৃদ্ধ মানচিত্র তৈরি করতে পারতাম, যেখানে অতিরিক্ত data point থাকত।

  3. সংঘর্ষ এড়ানো: রিয়েল-টাইম গভীরতা সংবেদন রোবটগুলিকে একে অপরকে শনাক্ত করতে এবং এড়িয়ে চলতে দেবে, এমনকি কেন্দ্রীয় নিয়ন্ত্রণ ব্যবস্থা যোগাযোগে বিলম্বের সম্মুখীন হলেও।

আমি এমন অ্যালগরিদম নিয়ে পরীক্ষা-নিরীক্ষা শুরু করেছিলাম, যা Triton-গুলিকে সক্ষম করবে:

  • তাদের স্বতন্ত্র ত্রিভুজাকার আকৃতি এবং প্রতিফলিত গোলক মার্কার ব্যবহার করে অন্যান্য Triton শনাক্ত করতে
  • গভীরতার ডেটা ব্যবহার করে আপেক্ষিক অবস্থান ও অভিমুখ গণনা করতে
  • অপটিট্র্যাক ডেটার সঙ্গে এই পরিমাপগুলির তুলনা করে অমিল শনাক্ত করতে
  • নির্ভুলতা বজায় রাখতে প্রয়োজনে বাস্তবসময়ে তাদের স্থানাঙ্ক ব্যবস্থা সামঞ্জস্য করতে

কম্পিউটার ভিশন পরীক্ষা-নিরীক্ষা

আমি কয়েক ধাপে কাজ করা একটি কম্পিউটার ভিশন পাইপলাইন নিয়ে উল্লেখযোগ্য সময় পরীক্ষা-নিরীক্ষায় ব্যয় করেছি:

কম্পিউটার ভিশন পরীক্ষার জন্য একে অপরের মুখোমুখি দুইটি Triton Triton-এর ক্যামেরার ক্লোজ-আপ
পরীক্ষার জন্য মুখোমুখি দুইটি Triton
একে অপরের মুখোমুখি দুইটি রোবট দৌড়ানোর প্রস্তুতিতে দুইটি Triton

গভীরতা ডেটা প্রক্রিয়াকরণ: Intel RealSense D435 উভয় RGB এবং গভীরতা ডেটার স্ট্রিম সরবরাহ করত। আমি প্রধানত গভীরতা ডেটা নিয়ে কাজ করেছি, যা 30Hz-এ দূরত্বের পরিমাপের একটি 640x480 অ্যারে হিসেবে আসত। প্রথম চ্যালেঞ্জ ছিল এই শব্দযুক্ত গভীরতা ডেটা ফিল্টার করে অর্থবহ জ্যামিতিক তথ্য বের করা।

বস্তু সনাক্তকরণের প্রচেষ্টা: আমি বহু-ধাপের সনাক্তকরণ অ্যালগরিদম নিয়ে পরীক্ষা-নিরীক্ষা করেছি। মেঝের স্তরে থাকা বস্তু শনাক্ত করতে আমি গভীরতা চিত্রকে বিভাজিত করার ক্ষেত্রে কিছুটা সাফল্য পেয়েছিলাম (দেয়াল, ছাদ ইত্যাদি ফিল্টার করে বাদ দিয়ে) এবং প্রায় 0.3x0.3 মিটার ভিত্তিক্ষেত্রবিশিষ্ট সঠিক আকারের বস্তু খুঁজে দেখেছিলাম। স্বতন্ত্র Triton প্রোফাইল শনাক্ত করতে আমি ধার শনাক্তকরণ এবং জ্যামিতিক বিশ্লেষণ ব্যবহার করার চেষ্টা করেছি, যার ফল মিশ্র ছিল।

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

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

কর্মক্ষমতার চ্যালেঞ্জ: রোবটের নিয়ন্ত্রণ লুপের পাশাপাশি এই সমস্ত প্রক্রিয়াকরণকে বাস্তবসময়ে চালানো বেশ কঠিন প্রমাণিত হয়েছিল। Jetson Nano-এর প্রক্রিয়াকরণ সক্ষমতাকে অতিরিক্ত চাপ না দিয়ে অ্যালগরিদমগুলি প্রায় 10-15Hz-এ চালানোর জন্য আমি অপ্টিমাইজেশন পদ্ধতি নিয়ে পরীক্ষা করেছি।

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

আমি কম্পিউটার ভিশন অ্যালগরিদম পরীক্ষা করার একটি ভিডিও এখানে:

আমার পরীক্ষা-নিরীক্ষার সময় গভীরতা সেন্সরের দৃশ্যটি এমন দেখাত:

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

নথিপত্র ও জ্ঞানের সংরক্ষণ

HCR Lab-এ আমার সবচেয়ে গুরুত্বপূর্ণ অবদানগুলোর একটি, এবং সম্ভবত যেটি নিয়ে আমি সবচেয়ে গর্বিত, ছিল প্রকল্পের সব নথিপত্র সংগঠিত ও সংরক্ষণ করা। আমি যখন ল্যাবে যোগ দিয়েছিলাম, Triton প্রকল্পের জ্ঞান একাধিক প্ল্যাটফর্ম ও বিন্যাসে ছড়িয়ে ছিল। গুরুত্বপূর্ণ তথ্য ছড়িয়ে ছিল:

  • বিভিন্ন Google Drive অ্যাকাউন্টে, যা ভিন্ন ভিন্ন স্নাতকোত্তর সম্পন্ন করা শিক্ষার্থীদের ছিল
  • ইনবক্সের গভীরে চাপা পুরনো ইমেইলে
  • এলোমেলো Dropbox ফোল্ডারে
  • একাধিক GitHub রিপোজিটরিতে
  • অসামঞ্জস্যপূর্ণ সংগঠনসহ GitLab রিপোজিটরিতে
  • হাতে লেখা নোটে, যা কেবল নির্দিষ্ট কয়েকজন মানুষ ব্যাখ্যা করতে পারত

এই খণ্ডিত নথিপত্র একটি বিশাল সমস্যা ছিল। নতুন শিক্ষার্থীরা শুরু করার উপায় বুঝতে শুধু কয়েক সপ্তাহ ব্যয় করত, এবং মানুষ স্নাতক হওয়া বা ল্যাব ছেড়ে যাওয়ার সঙ্গে সঙ্গে মূল্যবান জ্ঞান ক্রমাগত হারিয়ে যাচ্ছিল।

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

ডেস্কে Triton টেবিলের ওপর একাধিক Triton (মোট 8টি, 5টি নির্মাণাধীন)

সুন্দর কোণে শেলফের ওপর Triton-গুলো

কেন্দ্রীভূত নথিপত্রে অন্তর্ভুক্ত ছিল:

  • নির্মাণ নির্দেশিকা: শূন্য থেকে Triton সংযোজনের জন্য ধাপে ধাপে নির্দেশনা
  • সফটওয়্যার সেটআপ: উন্নয়ন পরিবেশ সেট আপ করার সম্পূর্ণ নির্দেশিকা
  • কোড নথিপত্র: স্পষ্ট ব্যাখ্যাসহ সু-টীকাযুক্ত কোড
  • হার্ডওয়্যার স্পেসিফিকেশন: বিস্তারিত যন্ত্রাংশের তালিকা, তারসংযোগের চিত্র, এবং PCB নকশা
  • সমস্যা সমাধানের নির্দেশিকা: সাধারণ সমস্যাগুলো এবং তাদের সমাধান
  • ভিডিও টিউটোরিয়াল: আমি YouTube-এ শিক্ষামূলক ভিডিও তৈরি ও আপলোড করেছি, যার মধ্যে বিস্তারিত Optitrack ক্যালিব্রেশন টিউটোরিয়ালও ছিল:

ভবিষ্যতের অবদানগুলো যাতে সংগঠিত ও সহজলভ্য থাকে, সে জন্য আমি নথিপত্রের মানদণ্ডও প্রতিষ্ঠা করেছি। আমি যে রিপোজিটরি কাঠামো তৈরি করেছিলাম, তা ল্যাবের পরবর্তী সব কাজের ভিত্তি হয়ে উঠেছিল।

বিদ্যমান নথিপত্র কেবল সংগঠিত করার বাইরে, আমি বেশ কয়েকটি মূল নির্দেশিকা ও টিউটোরিয়ালও তৈরি করেছি, যা জ্ঞানভান্ডারের গুরুত্বপূর্ণ শূন্যস্থান পূরণ করেছিল। এর মধ্যে ছিল নতুন ল্যাব সদস্যদের জন্য বিস্তারিত সেটআপ নির্দেশনা, বিস্তৃত সমস্যা সমাধানের নির্দেশিকা, এবং জটিল পদ্ধতিগুলোর ভিডিও ওয়াকথ্রু।

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

পরামর্শদান ও জ্ঞান হস্তান্তর

HCR Lab-এ আমার সময়ের সবচেয়ে ফলপ্রসূ দিকগুলোর একটি ছিল অন্যদের পরামর্শ দেওয়া এবং অর্জিত জ্ঞান ভাগ করে নেওয়ার সুযোগ। আমার কাজ এগোনোর সঙ্গে সঙ্গে এবং Triton সিস্টেম সম্পর্কে আমি আরও অভিজ্ঞ হয়ে উঠতে থাকলে, নতুন দল-সদস্যদের প্রশিক্ষণ দেওয়ার ক্ষেত্রে আমার দায়িত্বও বাড়তে থাকে।

ল্যাবের উত্তরসূরিদের পরামর্শদান

আমি যখন শেষ পর্যন্ত ল্যাব ছেড়ে ডিগ্রি সম্পন্ন করা এবং eBay-তে আমার কাজের ওপর মনোযোগ দেওয়ার প্রস্তুতি নিচ্ছিলাম, তখন আমি নিশ্চিত করেছিলাম যে আমার চলে যাওয়ার পর Triton প্রকল্পের দায়িত্ব নেবে এমন দুইজনকে আমি পুঙ্খানুপুঙ্খভাবে প্রশিক্ষণ দিয়েছি। এটি কেবল তাদের দেখিয়ে দেওয়া নয় যে কীভাবে জিনিসগুলো কাজ করে, বরং তারা যেন অন্তর্নিহিত নীতিগুলো সত্যিই বুঝতে পারে, সে বিষয়টি নিশ্চিত করাও ছিল, যাতে তারা নতুনত্ব আনতে পারে।

আমি তাদের সঙ্গে ঘনিষ্ঠভাবে কাজ করে সপ্তাহের পর সপ্তাহ কাটিয়েছি, এবং একসঙ্গে আলোচনা করেছি:

  • PID নিয়ন্ত্রণ ব্যবস্থার গাণিতিক ভিত্তি
  • একাধিক রোবট সমন্বয়ের জন্য বহু-প্রসেসিং স্থাপত্য
  • গভীরতা সেন্সর একীভূতকরণ এবং কম্পিউটার ভিশন অ্যালগরিদম
  • নথিপত্র ব্যবস্থা এবং তা কীভাবে বজায় রাখতে হয়
  • ডিবাগিং কৌশল এবং সাধারণ ব্যর্থতার ধরন

জ্ঞান হস্তান্তরটি ছিল অত্যন্ত বিস্তৃত। আমরা একসঙ্গে বাস্তব ডিবাগিং সেশন করতাম, আমি তাদের বিদ্যমান কোড পরিবর্তন ও সম্প্রসারণ করতে দিতাম, এবং নিশ্চিত করতাম যে তারা শূন্য থেকে স্বাধীনভাবে নতুন Triton সেট আপ করতে পারে।

উচ্চবিদ্যালয় পরামর্শদান কর্মসূচি

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

আমি একটি বিস্তৃত পাঠ্যক্রম তৈরি করেছিলাম, যাতে অন্তর্ভুক্ত ছিল:

কম্পিউটার বিজ্ঞানের মৌলিক বিষয়সমূহ:

  • প্রাথমিক ভাষা হিসেবে Python ব্যবহার করে প্রোগ্রামিংয়ের ধারণা
  • অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের পরিচয়
  • অ্যালগরিদম এবং ডেটা স্ট্রাকচার সম্পর্কে ধারণা

রোবোটিক্সের ধারণাসমূহ:

  • সেন্সর কীভাবে কাজ করে এবং সেগুলোর সঙ্গে কীভাবে সংযোগ স্থাপন করতে হয়
  • অ্যাকচুয়েটর নিয়ন্ত্রণ এবং মোটর ব্যবস্থা
  • স্বয়ংক্রিয় ব্যবস্থার মৌলিক বিষয় এবং প্রতিক্রিয়া-নিয়ন্ত্রণ

ROS (Robot Operating System):

  • প্রকাশ/সাবস্ক্রাইব বার্তাব্যবস্থা বোঝা
  • নোড এবং সার্ভিস তৈরি করা
  • launch file এবং parameter server নিয়ে কাজ করা

ব্যবহারিক প্রকল্পের কাজ:

  • আমরা মিলে একটি ROS সার্ভিস তৈরি করেছিলাম, যা Triton-এর মাথার LED সিস্টেম নিয়ন্ত্রণ করত
  • সে আমাদের বিদ্যমান সিস্টেমের সঙ্গে একীভূত করা পরিষ্কার, নথিভুক্ত কোড লিখতে শিখেছিল
  • সে যে LED নিয়ন্ত্রণ সার্ভিস তৈরি করেছিল, তা Triton কোডবেসের স্থায়ী অংশ হয়ে যায়

এই পরামর্শদানের অভিজ্ঞতাটি বিশেষভাবে অর্থবহ ছিল, কারণ আমি দেখতে পাচ্ছিলাম তার অগ্রগতি: প্রোগ্রামিং সম্পর্কে প্রায় কিছুই না জানার অবস্থা থেকে শুরু করে একটি সক্রিয় গবেষণা প্রকল্পে অর্থবহ কোড অবদান রাখার পর্যায়ে পৌঁছানো। সে “ভেরিয়েবল কী?” জিজ্ঞেস করা থেকে শুরু করে স্বাধীনভাবে ROS যোগাযোগের সমস্যা ডিবাগ করা এবং নিজের সার্ভিস বাস্তবায়ন লেখা পর্যন্ত এগিয়ে গিয়েছিল।

সে যে LED নিয়ন্ত্রণ ব্যবস্থা তৈরি করেছিল, তা গবেষকদের সহজ ROS কমান্ডের মাধ্যমে Triton-এর মাথার LED-গুলোর রং ও প্যাটার্ন সহজেই পরিবর্তন করতে দিয়েছিল। এটি শুনতে সহজ মনে হতে পারে, কিন্তু এর জন্য ROS স্থাপত্য, হার্ডওয়্যার সংযোগ, এবং উপযুক্ত সফটওয়্যার নকশা ধরন বোঝা প্রয়োজন ছিল। তার অবদান আজও ল্যাবে ব্যবহার করা হচ্ছে।

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

পিএইচডি গবেষণার সঙ্গে সহযোগিতা

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

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

আমার অবদান পেং-এর গবেষণাকে কয়েকটি ক্ষেত্রে সাহায্য করেছিল:

ছেদপথ ব্যবস্থাপনা গবেষণা: উন্নত PID কন্ট্রোলার এবং বহু-রোবট সমন্বয়ের মাধ্যমে, পেং এমন ছেদপথের দৃশ্যপট অনুকরণ করতে পারতেন যেখানে একাধিক “যানবাহন” (ট্রাইটন) তাদের চলাচল সমন্বয় করতে হতো। উন্নত সময়নির্ধারণ ও অবস্থান নির্ধারণ এই গবেষণাগুলোকে আরও বাস্তবসম্মত করে তুলেছিল।

যানবাহন-থেকে-যানবাহন যোগাযোগ: আমি যে বহু-প্রক্রিয়াকরণ ফ্রেমওয়ার্ক তৈরি করেছিলাম, তা পেংকে অনুকৃত যানবাহনগুলোর মধ্যে যোগাযোগ প্রোটোকল বাস্তবায়ন ও পরীক্ষা করতে দিয়েছিল। প্রতিটি ট্রাইটন অন্যদের সঙ্গে সমন্বয় বজায় রেখেই সিদ্ধান্ত নিতে পারত, ঠিক যেমন স্বয়ংচালিত গাড়িকে কাজ করতে হতে পারে।

SLAM ও মানচিত্রণ গবেষণা: ডেপথ সেন্সর সংযোজনের কাজটি পেংকে তার সমকালীন অবস্থান নির্ণয় ও মানচিত্রণ গবেষণার জন্য অতিরিক্ত তথ্য প্রদান করেছিল। সমন্বিত সেন্সিং ক্ষমতাসম্পন্ন একাধিক রোবট থাকা আরও বিস্তৃত মানচিত্রণ পরীক্ষাকে সম্ভব করেছিল।

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

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

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

ল্যাব ছেড়ে যাওয়ার পরেও, পেং এবং আমি যোগাযোগ বজায় রেখেছিলাম। আমি চলে যাওয়ার পরেও আমার কাজ গুরুত্বপূর্ণ গবেষণায় অবদান রাখতে থাকছে—এটা জানা ছিল অত্যন্ত সন্তোষজনক।

দৃষ্টিভঙ্গি: এলএলএম-পূর্ব উন্নয়ন যুগ

উল্লেখ করা উচিত যে এই সমস্ত কাজ সফটওয়্যার উন্নয়নের এলএলএম-পূর্ব যুগে সম্পন্ন হয়েছিল। এই সবকিছু ২০২০ থেকে ২০২১ সালের মধ্যে (মূলত ২০২১ সালে) ঘটেছিল, ChatGPT, Claude, Perplexity, অথবা Cursor IDE-এর মতো এআই-চালিত উন্নয়ন সরঞ্জাম অস্তিত্বে আসার আগেই।

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

এটি উন্নয়ন প্রক্রিয়াকে উল্লেখযোগ্যভাবে আরও কঠিন, কিন্তু একই সঙ্গে আরও শিক্ষামূলক করেছিল। আমাকে করতে হয়েছিল:

সবকিছু হাতে-কলমে গবেষণা করা: PID নিয়ন্ত্রণ তত্ত্ব বোঝার জন্য পাঠ্যপুস্তক ও একাডেমিক প্রবন্ধ পড়তে হয়েছিল। কোঅর্ডিনেট ট্রান্সফরমেশন বুঝতে গিয়ে হাতে গণিত করে এগোতে হয়েছিল। বাস্তবায়নের আগে প্রতিটি ধারণা সম্পূর্ণভাবে বুঝে নিতে হয়েছে।

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

প্রথম নীতি থেকে শেখা: “আমি কীভাবে রোবোটিক্সের জন্য পাইথনে বহু-প্রক্রিয়াকরণ বাস্তবায়ন করব?”—এটা দ্রুত জিজ্ঞাসা করার ক্ষমতা না থাকায়, আমাকে অন্তর্নিহিত ধারণাগুলো গভীরভাবে বুঝতে হয়েছিল। এতে সমবায় প্রোগ্রামিং, নিয়ন্ত্রণ ব্যবস্থা, এবং কম্পিউটার ভিশনে একটি মজবুত ভিত্তি গড়ে তুলতে বাধ্য হয়েছিলাম।

ডকুমেন্টেশন ছিল অত্যন্ত গুরুত্বপূর্ণ: পরে কোড ব্যাখ্যা করার জন্য এআই-এর ওপর নির্ভর করতে না পারায়, আমাকে অত্যন্ত স্পষ্ট ডকুমেন্টেশন ও মন্তব্য লিখতে হয়েছিল। অন্যদের কাছে জ্ঞান হস্তান্তরের সময় এই শৃঙ্খলা অমূল্য প্রমাণিত হয়েছিল।

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

ছেড়ে দেওয়ার কঠিন সিদ্ধান্ত

HCR ল্যাবে কাজ করতে আমি যতই ভালোবাসি না কেন, ২০২১ সালের শেষের দিকে আমাকে এমন একটি কঠিন সিদ্ধান্তের মুখোমুখি হতে হয়েছিল, যা অনেক শিক্ষার্থীকেই নিতে হয়: একাধিক সুযোগ ও দায়িত্বের মধ্যে ভারসাম্য রাখা। আমি একই সঙ্গে eBay-তে সফটওয়্যার প্রকৌশলী হিসেবে পূর্ণকালীন কাজ করছিলাম, Mines-এ আমার কম্পিউটার সায়েন্স ডিগ্রি শেষ করছিলাম, এবং HCR ল্যাবে গবেষণায় অবদান রাখছিলাম।

eBay-এর সুযোগটি ছিল গুরুত্বপূর্ণ; এটি ছিল আমার প্রথম বড় সফটওয়্যার প্রকৌশল ভূমিকা, অমূল্য শিল্প অভিজ্ঞতা দিয়েছিল, এবং আমাকে স্থিতিশীল আয়ের সুযোগও দিয়েছিল। তবে পূর্ণকালীন কাজ বজায় রাখা, ডিগ্রি সম্পন্ন করা, এবং গবেষণায় অর্থবহ অবদান রাখা—এসব একসঙ্গে করা ছিল সম্পূর্ণই অস্থায়ী। কিছু না কিছু ছাড়তেই হতো।

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

তাই ২০২১ সালের সেপ্টেম্বর মাসে, ল্যাবে প্রায় ৮ মাস নিবিড় কাজের পর, আমি আমার গবেষণা সহকারী ভূমিকা থেকে সরে এসে ডিগ্রি সম্পন্ন করা এবং eBay-তে কাজের ওপর মনোযোগ দেওয়ার কঠিন সিদ্ধান্ত নিই। তখনকার সবচেয়ে কঠিন পেশাগত সিদ্ধান্তগুলোর একটি ছিল এটি।

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

প্রতিফলন ও ফিরে দেখা

এখন, ২০২৫ সালে, চার বছর পরে, আমি নিজেকে সেই সময়ের কথা জটিল অনুভূতি নিয়ে ভাবতে দেখি। আমার ক্যারিয়ারের পথ আমাকে গভীরভাবে ওয়েব ডেভেলপমেন্ট এবং এআই/এমএল ইঞ্জিনিয়ারিং-এর দিকে নিয়ে গেছে, যা অবিশ্বাস্যভাবে ফলপ্রসূ হয়েছে এবং বিকাশ ও প্রভাবের বিশাল সুযোগ দিয়েছে।

টেবিলে ট্রাইটনের উপরিভাগীয় দৃশ্য

তবু আমার মনে একটি অংশ “যদি” বলে ভাবতে থাকে। রোবোটিক্স ছিল, এবং সত্যিই এখনও আছে, আমার প্রকৃত আবেগ। ভৌত সিস্টেম নিয়ে কাজ করা, আপনার কোডকে বাস্তব দুনিয়ার গতি ও আচরণে রূপ নিতে দেখা—এতে এমন কিছু আছে যা ওয়েব ডেভেলপমেন্ট কিংবা এমনকি এআই কাজও পুরোপুরি অনুকরণ করতে পারে না।

আমি কখনও কখনও ভাবি, যদি আমি ভিন্ন পথে হাঁটতাম তাহলে কী হতে পারত। যদি রোবোটিক্স গবেষণায় থেকে যাওয়ার কোনো উপায় খুঁজে পেতাম? যদি স্নাতক শেষ করার সঙ্গে সঙ্গেই স্নাতকোত্তর পড়াশোনা শুরু করতাম? যদি শিল্প অভিজ্ঞতার চেয়ে ল্যাবের কাজকে অগ্রাধিকার দিতাম?

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

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

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

স্থায়ী প্রভাব

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

তবে সম্ভবত সবচেয়ে গুরুত্বপূর্ণ হলো, এই অভিজ্ঞতা আমাকে দেখিয়েছিল যে আমি সত্যিই যেসব সমস্যায় আগ্রহী, সেগুলোতে কাজ করলে আমি কী করতে সক্ষম। সেই আট মাসে, আমি:

  • প্ল্যাটফর্মটিকে সীমাবদ্ধ করে রেখেছিল এমন রোবটের চলাচল নিয়ন্ত্রণ ব্যবস্থা উন্নত করেছি
  • শুরু থেকে একটি বহু-রোবট সমন্বয় ব্যবস্থা তৈরি করেছি
  • কম্পিউটার ভিশন এবং সেন্সর ফিউশন সক্ষমতা একীভূত করেছি
  • একটি বিস্তৃত ডকুমেন্টেশন এবং জ্ঞান ব্যবস্থাপনা ব্যবস্থা তৈরি করেছি
  • কয়েকজনকে পরামর্শ দিয়েছি এবং জ্ঞান হস্তান্তরে সাহায্য করেছি
  • স্বয়ংক্রিয় যানবাহনে পিএইচডি-স্তরের গবেষণাকে সমর্থন করেছি

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

ভবিষ্যৎ এবং রোবোটিক্স

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

ভবিষ্যৎ কী নিয়ে আসবে, কে জানে? এআই এবং মেশিন লার্নিংয়ে আমি যে দক্ষতাগুলো গড়ে তুলছি, সেগুলো রোবোটিক্সের জন্য ক্রমেই আরও প্রাসঙ্গিক হয়ে উঠছে। শিল্পক্ষেত্রে আমার অর্জিত অভিজ্ঞতা আমাকে শিখিয়েছে কীভাবে মজবুত, স্কেলযোগ্য সিস্টেম তৈরি করতে হয়। হয়তো এমন এক ভবিষ্যৎ আছে যেখানে আমার অভিজ্ঞতার এই ভিন্ন ভিন্ন সুতোগুলো অপ্রত্যাশিতভাবে একত্রিত হবে।

এখনের জন্য, HCR ল্যাবে যে সময় আমি কাটিয়েছি এবং যে অভিজ্ঞতাগুলো তা আমাকে দিয়েছে, তার জন্য আমি কৃতজ্ঞ। এটি ছিল একটি গঠনমূলক সময়, যা আমার প্রযুক্তিগত দক্ষতা এবং আমি কী ধরনের কাজকে সবচেয়ে পরিতৃপ্তিদায়ক মনে করি সে সম্পর্কে আমার বোঝাপড়া—উভয়কেই গড়ে তুলেছে। যদিও কখনও কখনও আমি সেটিকে মিস করি, তবু জানি যে আমি যে পাঠগুলো শিখেছি এবং যে পদ্ধতিগুলো বিকশিত করেছি, সেগুলো আমি যা কিছু করি তার সবকিছুকেই প্রভাবিত করে চলেছে।

ট্রাইটন রোবটগুলো এখনো সেখানে আছে, এখনো গবেষকদের সেবা করছে, এখনো গুরুত্বপূর্ণ কাজকে সম্ভব করে তুলছে। আর সেটাই সত্যিই চমৎকার।