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

Table of Contents

এই পোস্টটি আমার রোবোটিক্স যাত্রার বিবরণ দেয়, যা শুরু হয় FRC-এ হাইস্কুলে high school কালীন 2015 সালে রোবোটিক্সের প্রতি আমার আগ্রহ আবিষ্কার করে, এবং 이어 যায় যখন আমি ছিলাম গবেষণা সহকারী Colorado School of Mines’s Human Centered Robotics (HCR) Labফেব্রুয়ারি 2021 থেকে সেপ্টেম্বর 2021 পর্যন্ত। লক্ষ করুন যে ২০২২ সালের শেষভাগ থেকে, HCR ল্যাব Colorado School of Mines থেকে University of Massachusetts Amherst এ স্থানান্তরিত হয়েছে, এবং এর সাইট hcr.mines.edu থেকে hcr.cs.umass.edu এ পরিবর্তিত হয়েছে।

পটভূমি

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

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

Mines-এ, আমি সুযোগ পেয়েছিলাম Mines-ের Human Centered Robotics (HCR) Lab-এ Dr Hao Zhang-এর অধীনে কাজ করার। আমি প্রথম Dr. Zhang-কে দেখা করেছিলাম ২০২০ সালের বসন্তে তাঁর ক্লাস “Human Centered Robotics” (CSCI473)-এর মাধ্যমে, এবং COVID ও ক্লাসকাজের বিশৃঙ্খলার পর, আমি তাঁর ল্যাবে কাজ শুরু করেছিলাম ২০২১ সালের শুরুতে।

Human Centered Robotics (CSCI473) Class

Mines-এর Human Centered Robotics (CSCI473) ছিল আমার কলেজ জীবনের কয়েকটি ক্লাসের মধ্যে এমন একটি যা আমার উপর গভীর প্রভাব ফেলেছিল। ক্লাসটি পড়িয়েছিলেন Dr. Hao Zhang। আমাদের পুরো গ্রেডটি কেবল তিনটি প্রজেক্ট নিয়ে গঠিত ছিল, প্রতিটি একটি চ্যালেঞ্জিং সমস্যা উপস্থাপন করেছিল যা রোবোটিক্সের মূল ধারণাগুলো পরিচয় করিয়েছিল। এই প্রজেক্টগুলোর মধ্যে ছিল:

  1. Learning Robot Operating System (ROS)
  2. Reinforcement Learning for Robot Wall Following
  3. Robot Understanding of Human Behaviors Using Skeleton-Based Representations

Learning Robot Operating System (ROS)

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

  1. Development Environment সেটআপ করা
  2. Gazebo সিমুলেটর বুঝা
  3. একটি ROS “Hello World” লিখা

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

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

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

Reinforcement Learning for Robot Wall Following

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

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

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

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

পুরো প্রজেক্ট বর্ণনার জন্য দেখুন csci473-p2.pdf

Robot Understanding of Human Behaviors Using Skeleton-Based Representations

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

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

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

CSCI473 উপসংহার

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

CS Field Session (Summer 2020)

CG_GUI_19

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

কোর্সে, আপনি সিদ্ধান্ত নেন কোন প্রজেক্ট/কোম্পানিতে আপনি কাজ করবেন। কোর্সটি প্রতিটি প্রজেক্ট এবং কোম্পানির বিস্তারিত PDF সরবরাহ করেছিল। অবশেষে আমি একটি কোম্পানি Lunar Outpost-এর পোস্ট করা একটি প্রজেক্টে কাজ করার সিদ্ধান্ত নিই যার নাম ছিল “Real Time Wheel Slip Detection and Error Corrections for Enhanced Lunar Navigation”। নাম দীর্ঘ হওয়ায়, আসুন প্রজেক্টটিকে “Wheel Slippage Detection” নামে ডাকি।

সমস্যা

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

দল

এই প্রজেক্টটি সহজ ছিল না, তাই এটি একটি দলে করতে হয়েছিল। দলে ছিল পাঁচ সহ-Colorado School of Mines ছাত্র:

This project was not a simple project, so it had to be done in a team. This team consisted of Mehmet Yilmaz (me), Kane Bruce, Braedon O’Callaghan, Liam Williams, and Kevin Grant.

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

চ্যালেঞ্জ

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

এছাড়াও, আমরা WVU ন্যাভিগেশন ল্যাব থেকে কিছু একাডেমিক গবেষণা পর্যালোচনা করেছিলাম যাতে জানা যায় কিভাবে হুইল স্লিপেজ সমস্যা Lunar Outpost-এর ব্যবহারের ক্ষেত্রে সমাধান করা যেতে পারে, যা আমাদের জন্য, স্নাতক পর্যায়ের সেকেন্ডইয়ার এবং তৃতীয়বর্ষীদের হিসেবে, প্রত্যাশার চেয়ে বেশি কঠিন ছিল।

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

উপসংহার

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

HCR ল্যাব-এ শুরু

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

পরিচিতি ভিডিও

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

আমার প্রকল্প

HCR ল্যাবে আমার সময়ের প্রথম থেকে শেষ পর্যন্ত আমি প্রধানত Triton প্রকল্পে ফোকাস করেছিলাম। Triton প্রকল্প হল একটি মোবাইল রোবট যা Colorado School of Mines-এর Human Centered Robotics Lab দ্বারা উন্নয়ন করা হয়েছে। এটি একটি ত্রিভুজাকৃতির ওমনি-হুইল গ্রাউন্ড রোবট যা NVIDIA-এর Jetson Nano দ্বারা চালিত।

সরলভাবে বলতে গেলে, Triton নিম্নলিখিত অংশগুলো নিয়ে গঠিত ছিল:

  • NVIDIA Jetson Nano
  • NVIDIA-এর Seed Studio A205 Carrier Board
  • Arduino Mega
  • 64 GB মাইক্রো SD কার্ড
  • কাস্টম 3D প্রিন্ট করা বডি
  • ৩টি মেকানাম হুইল
  • ১টি AR ব্যাটারি
  • পাওয়ার বিতরণ এবং তারের জন্য অপ্টিমাইজড কাস্টম সার্কিট
  • Intel-এর Realsense D435 ক্যামেরা
  • কিছু LED

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

ব্যাটারি চার্জার সেটআপ পরীক্ষার এলাকা বিন্যাস
প্রারম্ভিক টেস্ট পর্যায়ে Triton গুলো শেলফে Triton গুলো

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

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

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

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

Optitrack সিস্টেম সঠিকভাবে ক্যালিব্রেটেড থাকলে প্রায় 120Hz এ পজিশন এবং অরিয়েন্টেশন ডেটা প্রদান করত সাব-মিলিমিটার নির্ভুলতায়। প্রতিটি Triton-এর তিনটি প্রতিফলনকারী মার্কার একটি অনন্য ত্রিভুজীয় প্যাটার্ন গঠন করত যা সিস্টেম একটি রিগিড বডি হিসেবে ট্র্যাক করতে পারত। কোঅর্ডিনেট সিস্টেমটি ক্যালিব্রেট করা ছিল যাতে (0,0) ট্র্যাকিং এলাকার কেন্দ্রে থাকে, X এবং Y অক্ষগুলো ঘরের জ্যামিতির সাথে সারিবদ্ধ থাকে। কিন্তু এই সঠিক পজিশনিং ডেটা সত্ত্বেও, Triton এখনও গতিবিধিতে কষ্ট পেত।

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

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

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

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

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

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

এখন, ব্যাপক টেস্টিং এবং গবেষণার পরে, আমি Triton-গুলির জন্য দুটি ভিন্ন কন্ট্রোলার পদ্ধতি উন্নয়ন করেছি:

পদ্ধতি ১: দূরত্ব-থিটা কন্ট্রোলার

এই পদ্ধতিটি সমান্তরালভাবে চালিত দুটি পৃথক প্রোপোরশনাল কন্ট্রোলার ব্যবহার করত:

  • দূরত্ব কন্ট্রোলার: লক্ষ্য পর্যন্ত ইউক্লিডিয়ান দূরত্ব গণনা করে এবং একটি প্রোপোরশনাল গেইন প্রয়োগ করে সামনে/পেছনের বেগ নির্ধারণ করত
  • থিটা কন্ট্রোলার: রোবটের বর্তমান হেডিং এবং লক্ষ্যনির্দেশের মধ্যকার কোণগত ত্রুটি গণনা করে, এবং ঘূর্ণনগত বেগের জন্য একটি পৃথক প্রোপোরশনাল গেইন প্রয়োগ করত

অ্যালগরিদমটি অবিরতভাবে লক্ষ্য পর্যন্ত ইউক্লিডিয়ান দূরত্ব এবং রোবটের বর্তমান হেডিং এবং কাঙ্খিত দিশার মধ্যকার কোণগত ত্রুটি গণনা করত। লিনিয়ার এবং অ্যাঞ্জুলার গতি তৈরি করতে যথাক্রমে দুটি পৃথক প্রোপোরশনাল গেইন প্রয়োগ করা হতো।

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

পদ্ধতি ২: এক্স-ওয়াই কোঅর্ডিনেট কন্ট্রোলার

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

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

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

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

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

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

একটি সাধারণ পয়েন্ট-টু-পয়েন্ট গতিবিধিতে যা আগে 30-45 সেকেন্ড লাগতো, তা এখন প্রায় 8-12 সেকেন্ড লাগত। আরও গুরুত্বপূর্ণভাবে, ট্রাইটন এখন সঙ্কীর্ণ স্থানে আরও দক্ষভাবে নেভিগেট করতে পারত, যা আমাদের মাল্টি-রোবট দৃশ্যাবলীতে খুব উপকারী হয়েছিল।

ডেভেলপমেন্ট চ্যালেঞ্জ ও ডিবাগিং

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

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

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

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

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

মাল্টি-ট্রাইটন কন্ট্রোল সিস্টেম

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

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

এই সমস্যা সমাধান করতে আমি Python-এর multiprocessing লাইব্রেরি ব্যবহার করে একটি মাল্টি-প্রসেসিং পদ্ধতি বাস্তবায়ন করেছি। প্রতিটি ট্রাইটনের জন্য একটি নিবেদিত প্রসেস ছিল যা স্বাধীনভাবে চলতে পারত এবং কেন্দ্রীয় কন্ট্রোল সিস্টেম দ্বারা সমন্বিত থাকা সত্ত্বেও স্বাধীনভাবে অপারেট করতে পারত। এতে করে একাধিক ট্রাইটন একই সঙ্গে চলতে পারল এবং একে অপরের কন্ট্রোল লুপে হস্তক্ষেপ ঘটল না।

মাল্টি-রোবট আর্কিটেকচার ডিজাইন

আমি যে সিস্টেম আর্কিটেকচার তৈরি করেছি তা কয়েকটি মূল উপাদান নিয়ে গঠিত ছিল:

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

প্রতিটি রোবটের নিজস্ব প্রসেস: প্রতিটি ট্রাইটনের একটি নিবেদিত Python প্রসেস ছিল যা হ্যান্ডেল করত:

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

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

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

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

বহু-ট্রাইটন সংঘর্ষ পরীক্ষা প্রাথমিক বহু-ট্রাইটন সেটআপ

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

মাল্টি-ট্রাইটন সিস্টেম সম্পূর্ণ নতুন গবেষণার সুযোগ খুলে দিল। আমরা এখন সিমুলেট করতে পারতাম:

  • যানবাহন-থেকে-যানবাহন যোগাযোগের দৃশ্যাবলী
  • বাধা এড়িয়ে সমন্বিত পথ পরিকল্পনা
  • স্টর্ম রোবোটিক্স আচরণ (Swarm robotics behaviors)
  • মাল্টি-এজেন্ট SLAM ম্যাপিং
  • ফর্মেশন কন্ট্রোল এবং অনুসরণ আচরণ

নিচে একাধিক ট্রাইটন একসঙ্গে চলার সময় ল্যাব সেটআপ কেমন ছিল তা দেখানো হলো:

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

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

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

এখানে একটি প্লেলিস্ট আছে যা ট্রাইটনসকে একক-রোবট কন্ট্রোল থেকে মাল্টি-রোবট সমন্বয় পর্যন্ত কাজ করতে দেখায়: ট্রাইটনস ইন অ্যাকশন প্লেলিস্ট

ডেপথ সেন্সর ইন্টিগ্রেশন এবং কোঅর্ডিনেট সংশোধন

আরেকটি বড় অগ্রগতি ছিল প্রতিটি ট্রাইটনে লাগানো Intel RealSense D435 ডেপথ ক্যামেরা ব্যবহার করে রোবটগুলোকে তাদের অনবোর্ড সেন্সর দিয়ে তাদের স্থানগত অনুমান উন্নত করা এবং কোঅর্ডিনেট ত্রুটিগুলো সংশোধন করা।

ধারণাটি ছিল যে ট্রাইটনগুলো তাদের ডেপথ সেন্সর ব্যবহার করে পাশের অন্য ট্রাইটনগুলো সনাক্ত করতে এবং তাদের অবস্থান ক্রস-রেফারেন্স করতে পারবে। এর ফলে বহু উদ্দেশ্য সেবা করা যেত:

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

  2. উন্নত SLAM: একাধিক রোবটের ডেপথ সেন্সর একত্র করে আমরা পরিবেশের অনেক সমৃদ্ধ মানচিত্র তৈরি করতে পারতাম, যেখানে পুনরাবৃত্তি করা ডেটা বিন্দু থাকায় মানচিত্র আরও নির্ভরযোগ্য হতো।

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

আমি এমন অ্যালগরিদম নিয়ে পরীক্ষামূলক কাজ শুরু করেছিলাম যা ট্রিটনসকে অনুমতি দেবে:

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

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

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

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

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

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

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

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

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

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

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

এখানেই দেখা যায় আমার পরীক্ষার সময় গভীরতা সেন্সরের ভিউ কেমন দেখত:

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

ডকুমেন্টেশন এবং জ্ঞান সংরক্ষণ

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

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

এই ভাঙাচোরা ডকুমেন্টেশন একটি বড় সমস্যা ছিল। নতুন শিক্ষার্থীরা শুরু করতে কেবল weeks-ই কাটাত এবং মূল্যবান জ্ঞান নিয়মিত হারিয়ে যাচ্ছিল যখন কেউ গ্র্যাজুয়েট বা ল্যাব ছেড়ে যাচ্ছিল।

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

ডেস্কে ট্রিটন টেবিলে একাধিক ট্রিটন (মোট ৮টি, ৫টি নির্মাণাধীন)

শেলফে ট্রিটনসমূহ সুন্দর কোণে

কেন্দ্রীভূত ডকুমেন্টেশনে অন্তর্ভুক্ত ছিল:

  • নির্মাণ নির্দেশিকা: শূন্য থেকে ট্রিটনগুলি একত্রিত করার ধাপে ধাপে নির্দেশ
  • সফটওয়্যার সেটআপ: ডেভেলপমেন্ট এনভায়রনমেন্ট সেটআপের পূর্ণাঙ্গ গাইড
  • কোড ডকুমেন্টেশন: বর্ণনামূলক মন্তব্যসহ সুসংগঠিত কোড
  • হার্ডওয়্যার স্পেসিফিকেশন: বিস্তারিত পার্টস লিস্ট, ওয়্যারিং ডায়াগ্রাম এবং PCB ডিজাইন
  • সমস্যা সমাধান নির্দেশিকা: সাধারণ সমস্যা ও তাদের সমাধান
  • ভিডিও টিউটোরিয়াল: আমি ইউটিউবে নির্দেশনামূলক ভিডিও আপলোড করেছি, যার মধ্যে বিস্তারিত অপটিট্র্যাক ক্যালিব্রেশন টিউটোরিয়ালও রয়েছে:

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

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

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

মেন্টরিং এবং জ্ঞান হস্তান্তর

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

ল্যাবের উত্তরাধিকারীদের মেন্টরিং

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

আমি তাদের সাথে ঘন্টা-ঘন্টার ঘনিষ্ঠভাবে কাজ করে সপ্তাহগুলো কেটেছি, যেখানে আমরা আলোচনা করেছি:

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

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

হাইস্কুল মেন্টরশিপ প্রোগ্রাম

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

আমি একটি বিস্তৃত পাঠ্যক্রম ডিজাইন করেছিলাম যা ছিল:

কম্পিউটার সায়েন্স ফান্ডামেন্টালস:

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

রোবোটিকস ধারণা:

  • সেন্সরগুলি কীভাবে কাজ করে এবং কিভাবে তাদের সাথে ইন্টারফেস করতে হয়
  • অ্যাকচুয়েটর কন্ট্রোল এবং মোটর সিস্টেম
  • স্বায়ত্তশাসিত সিস্টেম এবং ফিডব্যাক কন্ট্রোলের মৌলিক বিষয়াবলী

ROS (রোবট অপারেটিং সিস্টেম):

  • পাবলিশ/সাবস্ক্রাইব ম্যাসেজিং সিস্টেমের বোঝাপড়া
  • নোড এবং সার্ভিস তৈরি করা
  • লঞ্চ ফাইল এবং প্যারামিটার সার্ভারের সাথে কাজ করা

হ্যান্ডস-অন প্রজেক্ট কাজ:

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

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

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

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

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

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

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

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

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

Vehicle-to-Vehicle Communication: আমি যে মাল্টি-প্রসেসিং ফ্রেমওয়ার্ক তৈরি করেছিলাম তা পেংকে সিমুলেটেড যানবাহনের মধ্যে যোগাযোগ প্রোটোকলগুলি বাস্তবায়ন এবং পরীক্ষা করতে সাহায্য করেছিল। প্রতিটি ট্রাইটন স্বতন্ত্রভাবে সিদ্ধান্ত নিতে পারত অথচ অন্যদের সঙ্গে সমন্বয় করে চলতে পারত, যা স্বয়ংচালিত গাড়িগুলোর অপারেশনের অনুরূপ।

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

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

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

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

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

দৃষ্টিভঙ্গি: বিকাশের প্রি-LLM যুগ

উল্লেখযোগ্য যে এই কাজগুলো সবই সফটওয়্যার ডেভেলপমেন্টের প্রি-LLM যুগে সম্পন্ন হয়েছে। সবকিছু 2020 থেকে 2021 (প্রধানত 2021) এর মধ্যে ঘটেছিল, চ্যাটজিপিটি, ক্লড, পারপ্লেক্সিটি বা কার্সর আইডিই-এর মতো AI-চালিত ডেভেলপমেন্ট টুলগুলো চালু হওয়ার আগে।

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

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

Research Everything Manually: PID কন্ট্রোল থিওরি বুঝতে হলে পাঠ্যপুস্তক এবং একাডেমিক পেপার পড়তে হত। কোঅর্ডিনেট ট্রান্সফরমেশন বের করতে হলে হাতে গণিত করে কাজ করতে হত। প্রতিটি ধারণাকে বাস্তবায়নের আগে পুরোপুরি বোঝা লাগত।

Debug Without AI Assistance: যখন রোবটগুলো অপ্রত্যাশিত দিকগুলোতে গতি করত বা লক্ষ্যের চারপাশে অস্হিরতা করত, আমাকে যুক্তিগুলো ধরে পদ্ধতিগতভাবে ট্রেস করতে হত, ডিবাগ আউটপুট যোগ করতে হত, এবং এক এক করে হাইপোথিসিস টেস্ট করতে হত। কোন AI ছিল না যে সম্ভাব্য সমস্যা সূচিত করত বা ত্রুটির প্যাটার্ন ব্যাখ্যা করত।

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

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

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

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

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

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

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

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

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

প্রতিফলন এবং পেছনে তাকানো

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

টেবিলের উপর থেকে ট্রাইটনগুলোর উপর একটি উপরে-নিচে দৃশ্য

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

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

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

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

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

টেকসই প্রভাব

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

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

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

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

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

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

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

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

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