HCR लैब रोबोटिक्स अनुसंधान

Table of Contents

यह पोस्ट मेरे रोबोटिक्स यात्रा का विवरण देती है, जो FRC में हाई स्कूल के दौरान 2015 में रोबोटिक्स के प्रति मेरे जुनून की खोज से शुरू होकर Colorado School of Mines’s Human Centered Robotics (HCR) Lab में February 2021 to September 2021 तक के एक शोध सहायक के रूप में मेरे समय तक है। ध्यान दें कि late 2022 से, HCR Lab ने Colorado School of Mines से University of Massachusetts Amherst में स्थानांतरित हो गया है, साथ ही इसकी साइट hcr.mines.edu से hcr.cs.umass.edu में बदल गई है।

पृष्ठभूमि

मैंने Colorado School of Mines में पतझड़ 2018 सेमेस्टर में अपनी स्नातक पढ़ाई शुरू की। मेरा प्रमुख कंप्यूटर विज्ञान था, जिसमें रोबोटिक्स और इंटेलिजेंट सिस्टम्स पर ध्यान केंद्रित था। और मैं वसंत 2022 में स्नातक हुआ।

मैं भाग्यशाली था कि मैंने अपने जीवन में जल्दी ही अपना जुनून खोज लिया। हाई स्कूल के दौरान, मैंने यह पता लगाने में काफी समय बिताया कि मुझे क्या पसंद है और मैं किसमें अच्छा हो सकता हूँ। कुछ प्रयोग और त्रुटियों के बाद, मैं यह समझ पाया कि मेरा जुनून कंप्यूटर विज्ञान है। लेकिन उसी समय मैंने यह भी खोजा कि कोड के माध्यम से निर्माण करने का मेरा अत्यधिक प्रेम है।

Mines में, मुझे Mines के Human Centered Robotics (HCR) Lab में Dr Hao Zhang के तहत काम करने का अवसर मिला। मैं पहली बार Dr. Zhang से वसंत 2020 में उनकी कक्षा “Human Centered Robotics” (CSCI473) के माध्यम से मिला, और COVID और कक्षा कार्यों के अराजकता के बाद, मैं शुरुआती वसंत 2021 में उनके लैब में काम करने लगा।

Human Centered Robotics (CSCI473) कक्षा

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

🧩 रोबोट ऑपरेटिंग सिस्टम (ROS) सीखना

यह वह पहला प्रोजेक्ट था जो हमें सौंपा गया था। प्रोजेक्ट में तीन कार्य शामिल थे:

  1. Setup Development Environment
  2. Understand Gazebo Simulator
  3. Write a ROS “Hello World”

कार्य 1 और 2 के लिए, हमें केवल अपना विकास पर्यावरण सेटअप करना था और Gazebo परिचय ट्यूटोरियल का पालन करना था। इसमें शामिल था:

  • ROS Melodic सेटअप करना, जिसे मैंने अपने 2011 HP लैपटॉप पर किया जो पर्याप्त था
  • ROS और Gazebo को स्थापित और कॉन्फ़िगर करना
  • gazebosim’s tutorial और e-manual’s tutorial को देखना।

दूसरी ओर, कार्य 3 एक वास्तविक चुनौती थी। इस कार्य में हमें turtlesim का उपयोग करके टर्टल को Mines का “M” लोगो खींचने के लिए कहना था:

यह कार्य, यद्यपि सरल लग रहा था, दिखने से अधिक कठिन था। इस प्रोजेक्ट ने अंततः मुझे Open-Loop और Closed-Loop सिस्टम की अवधारणा से परिचित कराया। आप इस प्रोजेक्ट और मेरे समाधान के बारे में अधिक जान सकते हैं ROS Move Turtle प्रोजेक्ट पेज पर।

🧩 रोबोट वॉल फ़ॉलोइंग के लिए रिइन्फोर्समेंट लर्निंग

यह दूसरा प्रोजेक्ट था जो हमें सौंपा गया, और यह कॉलेज में मैंने अब तक किए सबसे कठिन प्रोजेक्ट्स में से एक था। प्रोजेक्ट विवरण इस प्रकार था:

इस प्रोजेक्ट में, छात्र रिइन्फोर्समेंट लर्निंग एल्गोरिदम डिज़ाइन और लागू करेंगे ताकि एक स्वायत्त मोबाइल रोबोट को दीवार का अनुसरण करना और बाधाओं से टकराने से बचना सिखाया जा सके। छात्र Gazebo सिमुलेशन को ROS Melodic में उपयोग करेंगे ताकि एक omni-directional मोबाइल रोबोट जिसका नाम Triton है, का सिमुलेशन किया जा सके, और एक प्रदान किया गया पर्यावरण मानचित्र उपयोग करेंगे। छात्र रोबोट पर लेज़र रेंज स्कैनर का उपयोग करके संवेदन और सीखने का कार्य करेंगे, जहाँ रोबोट को स्टीयरिंग और वेग कमांड्स के माध्यम से नियंत्रित किया जाता है। छात्रों को इस प्रोजेक्ट को ROS Melodic पर Ubuntu 18.04 LTS (अर्थात, प्रोजेक्ट 1 में उपयोग किए गए समान विकास पर्यावरण) में C++ या Python का उपयोग करके प्रोग्राम करना आवश्यक है। साथ ही, छात्रों को IEEE रोबोटिक्स सम्मेलनों के मानक प्रारूप का उपयोग करके LATEX में एक रिपोर्ट लिखनी होगी।

रिइन्फोर्समेंट लर्निंग एल्गोरिदम के लिए, हमें Q-Learning का उपयोग करने के निर्देश दिए गए थे। हमने क्लास द्वारा प्रदान किए गए Stingray Gazebo सिमुलेशन पर्यावरण का भी उपयोग किया। Stingray में Triton मॉडल और फिज़िक्स लॉजिक शामिल था। हमें रोबोट के अनुसरण के लिए एक भूलभुलैया भी प्रदान की गई थी। कुल मिलाकर, पर्यावरण इस प्रकार दिखता था:

पूर्ण प्रोजेक्ट विवरण के लिए, देखें csci473-p2.pdf। मैंने अपना समाधान GitHub या वेब पर कभी प्रकाशित नहीं किया क्योंकि यह बहुत अच्छा नहीं था और कई त्रुटियों से भरा था। साथ ही, सही पर्यावरण में कोड चलाना काफी कठिन और कष्टप्रद है। हालांकि, मेरे पास एक डेमो वीडियो है जिसे मैंने क्लास में प्रस्तुत किया था, जिसमें मेरा समाधान दिखाया गया है। आप इसे यहाँ देख सकते हैं:

🧩 Skeleton-आधारित प्रतिनिधित्वों का उपयोग करके मानव व्यवहारों की रोबोट समझ

तीसरे प्रोजेक्ट के लिए, प्रोजेक्ट विवरण इस प्रकार था:

इस प्रोजेक्ट में, छात्र कई 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 का उपयोग करके कुछ मानव क्रियाओं/व्यवहारों को वर्गीकृत करना। आप इस प्रोजेक्ट और मेरे समाधान के बारे में अधिक जान सकते हैं Predict Human Actions Using LIBSVM प्रोजेक्ट पेज पर।

CSCI473 निष्कर्ष

CSCI473 वह कक्षा है, यदि सबसे अच्छी नहीं भी, जो मैंने Mines में अपनी स्नातक पढ़ाई के दौरान ली थी। इन सभी प्रोजेक्ट्स ने मुझे बहुत कुछ सिखाया और मेरे रिज्यूमे में दर्शाने और संदर्भित करने के लिए एक शानदार प्रोजेक्ट कैटलॉग प्रदान किया। यह वह पहली कक्षा भी थी जहाँ मुझे लगा कि मैं अपने तत्व में हूँ, क्योंकि मैं कभी अच्छा टेस्ट टेकर नहीं था लेकिन प्रोजेक्ट्स को पूरा करने में उत्कृष्ट था। इसी कक्षा के माध्यम से मैं Dr. Hao Zhang से मिला, जिन्होंने अंततः मुझे Mines के Human-Centered Robotics (HCR) Lab में एक शोध सहायक के रूप में पद सुरक्षित करने में मदद की।

CS फ़ील्ड सत्र (गर्मियों 2020)

CG_GUI_19

2020 की गर्मियों में, CSCI473 को पूरा करने और HCR Lab में शामिल होने के बीच, मैंने CSCI370 या “Advanced Software Engineering” को Colorado School of Mines में अपने CS स्नातक कार्यक्रम के हिस्से के रूप में लिया। CSCI370 एक कोर्स है जो छात्रों को एक कंपनी के लिए सॉफ्टवेयर-सम्बंधित समाधान डिजाइन, लागू और दस्तावेज़ करने के लिए प्रेरित करता है। यह छात्रों को अपने पाठ्यक्रम ज्ञान को वास्तविक दुनिया के कंप्यूटर विज्ञान समस्याओं पर लागू करने की अनुमति देता है। आप कोर्स के बारे में अधिक यहाँ पढ़ सकते हैं: here

कोर्स में, आपको यह तय करने का अवसर मिलता है कि आप किस प्रोजेक्ट/कंपनी पर काम करेंगे। कोर्स ने प्रत्येक प्रोजेक्ट और कंपनी का विवरण देने वाले PDFs प्रदान किए। अंततः मैंने एक प्रोजेक्ट चुना जो Lunar Outpost नामक कंपनी ने पोस्ट किया था, जिसका शीर्षक था “Real Time Wheel Slip Detection and Error Corrections for Enhanced Lunar Navigation”। चूँकि नाम लंबा है, हम इस प्रोजेक्ट को “Wheel Slippage Detection” के उपनाम से बुलाते हैं।

समस्या

Lunar Outpost एक स्टार्टअप है जो स्वायत्त चंद्र रोवर्स बनाने की कोशिश कर रहा है। चंद्रमा पर बहुत अधिक चंद्र धूल होती है जो पहियों के फिसलने का कारण बनती है। यह आदर्श नहीं है क्योंकि पहियों का फिसलना स्वायत्त प्रणालियों को उनके वास्तविक स्थान से हट सकता है। पृथ्वी पर, यह समस्या GPS डेटा का उपयोग करके फिसलन द्वारा उत्पन्न किसी भी ऑफ़सेट को सुधार कर हल की जाती है। लेकिन चंद्रमा पर वर्तमान में GPS जैसी कोई प्रणाली नहीं है। इस कारण, GPS के अलावा कोई अन्य विधि फिसलन का पता लगाने के लिए उपयोग करनी होगी। प्रोजेक्ट की समस्या का अधिक विस्तृत रिपोर्ट यहाँ देखी जा सकती है: here

टीम

यह प्रोजेक्ट एक साधारण प्रोजेक्ट नहीं था, इसलिए इसे एक टीम में करना पड़ा। टीम में पाँच साथी Colorado School of Mines के छात्र शामिल थे:

यह प्रोजेक्ट एक साधारण प्रोजेक्ट नहीं था, इसलिए इसे एक टीम में करना पड़ा। इस टीम में Mehmet Yilmaz (मैं), Kane Bruce, Braedon O’Callaghan, Liam Williams, और Kevin Grant शामिल थे।

प्रोजेक्ट के लिए हमें ROS, C++, Python, Linux, Raspberry Pi, और Arduino का कुछ ज्ञान चाहिए था। हममें से अधिकांश को इन तकनीकों में से एक या अधिक का अनुभव था, लेकिन मैं ही एकमात्र था जिसके पास ROS का अनुभव था क्योंकि मैंने अपने Human Centered Robotics (CSCI473) क्लास में वसंत 2020 सेमेस्टर में ROS का उपयोग किया था। इस कारण, शुरुआती दौर में, मैंने सभी को ROS के बारे में और इसे कैसे विकसित किया जाए, यह समझाने में मदद की।

चुनौतियाँ

In this project there were a lot of challenges. But the biggest challenge we faced was not having access to a real world robot for testing. This was due to COVID making everything remote and preventing us from working in the Lunar Outpost’s lab/buildings. Due to this, we had to use simulations.

Also, we went through some academic research from the WVU Navigation Lab to get an idea of how the Wheel Slippage problem could get solved for Lunar Outpost’s use case. Which, for us, as undergraduate sophomores and juniors, was more difficult than we expected.

Another challenge we faced was the amount of time we had to work on this project. CSCI370 is a one month class. But the problem itself is a massive problem that many companies and academics have been trying to solve/perfect for decades. So one month is far from enough time to solve this issue. But, despite all these challenges we pushed through and made sure to deliver.

निष्कर्ष

After working through all the research and development, we determined that it is almost impossible to simulate proper moon physics digitally, so really trying this algorithm in a simulation is no good and not going to yield any meaningful research in wheel slippage detection in space and on the moon. We concluded that setting up a proper test environment using something like sand and real hardware, like a Husky robot, is far more important for this type of research. We did update the wheel slippage detection code to work as a ROS node and it functioned properly and could easily be imported into real hardware for testing. This project allowed me to take a leadership role, educate my peers on ROS development, and gain experience with Python, ROS, and Gazebo while tackling a complex problem I had never encountered before. Most importantly, this experience further solidified my passion for robotics and reinforced my desire to pursue research in the field, setting the stage for what would come next in my robotics journey.

HCR लैब में शुरूआत

After completing CSCI473, my CS Field Session in the summer of 2020, and my Fall 2020 semester, I decided to pursue research in robotics. I had such great experiences with both CSCI473 and the CS Field Session that I decided I wanted to do research for the HCR Lab. Since I had met Dr. Zhang the year prior, I decided to email him and ask about any opportunities the lab might have in January 2021. Within about 2 weeks, Dr. Zhang expressed interest, presented me with research options, and offered me a role in the lab. I then started working for the lab in February 2021.

परिचय वीडियो

Here’s my introduction video that I recorded a few months into my time in the HCR Lab. It was recorded in May 2021 and covers the research I would focus on in the HCR Lab during the summer of 2021:

मेरा प्रोजेक्ट

Throughout my time in the HCR Lab, I mainly focused on the Triton project. The Triton project is a mobile robot developed by the Human Centered Robotics Lab at the Colorado School of Mines. It’s a triangular omni-wheel ground robot powered by NVIDIA’s Jetson Nano.

The Triton, in a simple overview, consisted of the following parts:

  • NVIDIA Jetson Nano
  • NVIDIA का Seed Studio A205 कैरियर बोर्ड
  • Arduino Mega
  • 64 GB माइक्रो एसडी कार्ड
  • कस्टम 3D प्रिंटेड बॉडी
  • 3 मेकेनम व्हील्स
  • 1 AR बैटरी
  • ऑप्टिमाइज़्ड पावर वितरण और वायरिंग के लिए कस्टम सर्किट
  • Intel का Realsense D435 कैमरा
  • कुछ LED

It was designed, built, and manufactured around 2018-2020 as a robot for educational purposes. By the time I joined, the Triton was pretty established, and the lab was considering making a new version of it. However, the main issue with the Triton was its software. The Triton could move, charge, and function in a basic sense but did not really do anything intelligent. It even lacked the ability to make more advanced movements.

बैटरी चार्जर सेटअप टेस्ट एरिया लेआउट
प्रारंभिक परीक्षण चरण में Tritons शेल्फ़ पर Tritons

To start addressing this, the lab set up an area where we could keep track of the Triton. To do this, they created a 2-meter by 2-meter area with 8 Optitrack Flex (Infrared Red) Cameras in a square-like shape about 6-7 feet above the floor.

क्षेत्र I1 क्षेत्र I2

Along with having this area built, each Triton had three gray sphere balls attached at the top of their bodies.

With this setup, we had effectively built our own small-scale GPS system that allowed us to get the exact coordinates in meters of a Triton in our area of interest. By using the Optitrack infrared cameras and the Optitrack gray spheres in a triangular shape, we could pinpoint the exact coordinates of a Triton in our area. This allowed us to apply a closed-loop system for better accuracy in movement.

The Optitrack system provided position and orientation data at about 120Hz with sub-millimeter accuracy when properly calibrated. Each Triton’s three reflective markers formed a unique triangular pattern that the system could track as a rigid body. The coordinate system was calibrated so that (0,0) was at the center of the tracking area, with X and Y axes aligned to the room’s geometry. But despite this precise positioning data, the Triton still struggled with movement.

With this setup, one core feature we wanted to provide the Triton was the ability to move to a specific coordinate. The user, or their software, could provide a (x, y) coordinate within their area of interest. Then the robot would move to that coordinate as fast, accurately, and seamlessly as possible. When I joined, this feature existed but it wasn’t working very well. Here is a simple animation showing how the original moving logic worked:

I did not record the original solution in action, so I created this simple animation showing you the old moving logic in action. Knowing this, what are the issues with this method?

  1. यह वास्तव में धीमा है
  2. यह रोबोट को केवल एक विशिष्ट बिंदु पर जाने के लिए बहुत अधिक स्थान लेता है। इससे जब कई Tritons इधर-उधर घूम रहे थे, तो इस समाधान का उपयोग करना हमारे लिए कठिन हो गया।

So why was this behavior happening? The issue was that the Triton first turned, changing its alpha, until it pointed toward the target point within a specific margin of error. Then it would sprint forward, and after its theta was off from the target by a specific amount, it would stop and start turning again until the alpha was within that acceptable range for the target goal. Then it sprints again and keeps doing this until it gets to the point. Also, as it got closer and closer to the goal point, the turning and sprinting speed would get much slower to make sure it didn’t overshoot. This resulted in the Triton having unnatural movement, taking forever to get to a target point, and requiring so much area just to get to a specific target point. So with all of these issues, and given how essential this feature was for the development of the Triton project, when I started working at the HCR Lab, my first task was to develop more effective solutions that would allow the Triton to better navigate to a goal point.

Knowing this, I spent a lot of time doing research on the best possible way of addressing this problem. Ironically, I was taking a class called Introduction to Feedback Control Systems (EENG307) at Mines. Early in that class, we learned about the concept of Open-loop controllers and Closed-loop controllers. Knowing this, and after some discussion I had with the professor of that class and my smart roommate, it became clear that this goal of getting the Triton to a goal point was a closed-loop system problem.

व्हाइटबोर्ड नियंत्रण प्रणाली आरेख

Now, after extensive testing and research, I developed two distinct controller approaches for the Tritons:

विधि 1: दूरी-थीटा कंट्रोलर

This approach used two separate proportional controllers running simultaneously:

  • Distance Controller: लक्ष्य तक की यूक्लिडियन दूरी की गणना की और आगे/पीछे की गति निर्धारित करने के लिए एक प्रोपोर्शनल गेन लागू किया
  • Theta Controller: रोबोट की वर्तमान दिशा और लक्ष्य की वांछित दिशा के बीच कोणीय त्रुटि की गणना की, घूर्णन गति के लिए एक अलग प्रोपोर्शनल गेन लागू किया

The algorithm continuously calculated the Euclidean distance to the target and the angular error between the robot’s current heading and the desired direction. Two separate proportional gains were applied to generate linear and angular velocities respectively.

This resulted in the Triton naturally turning toward the goal while simultaneously moving forward, creating smooth curved paths. The key advantage was that the robot always kept its front face oriented toward the destination, which was crucial for camera-based applications.

विधि 2: X-Y निर्देशांक कंट्रोलर

यह दृष्टिकोण रोबोट को एक 2D प्लॉटर की तरह मानता था, X और Y गति के स्वतंत्र नियंत्रण के साथ:

  • X नियंत्रक: X‑निर्देशांक त्रुटि के आधार पर पूर्व‑पश्चिम गति को सीधे नियंत्रित किया गया
  • Y नियंत्रक: Y‑निर्देशांक त्रुटि के आधार पर उत्तर‑दक्षिण गति को सीधे नियंत्रित किया गया

कार्यान्वयन ने X और Y निर्देशांक त्रुटियों की स्वतंत्र रूप से गणना की, अलग‑अलग अनुपाती गेन लागू किए, और फिर इन वैश्विक वेग घटकों को रोबोट के स्थानीय निर्देशांक फ्रेम में घूर्णन मैट्रिक्स का उपयोग करके परिवर्तित किया। यह परिवर्तन आवश्यक था क्योंकि रोबोट के ओम्नी‑व्हील ड्राइवट्रेन को अपने स्वयं के संदर्भ फ्रेम में वेग चाहिए होते थे, न कि वैश्विक निर्देशांक में। इस विधि ने लक्ष्यों तक सबसे प्रत्यक्ष पथ उत्पन्न किए और काफी तेज़ थी, लेकिन रोबोट की दिशा में ड्रिफ्ट हो जाता था क्योंकि कोई स्पष्ट अभिविन्यास नियंत्रण नहीं था।

मेथड #1 के लिए, मैंने इस विधि के बारे में अपने Move Turtle (TurtleSim) blog में पूरी विस्तार से लिखा है। मैं अत्यधिक अनुशंसा करता हूँ कि आप इस ब्लॉग को पढ़ें ताकि PID नियंत्रकों के सामान्य कार्य के सभी विवरण और मेथड #1 कैसे काम करता है, समझ सकें। मैंने मेथड #1 को ROS’s TurtleSim का उपयोग करके विकसित किया, फिर उस कोड को ट्राइटन में स्थानांतरित किया और वास्तविक‑विश्व वातावरण को ध्यान में रखते हुए अपडेट किया।

मेथड #2 ने एक बिल्कुल अलग लेकिन समान रूप से प्रभावी दृष्टिकोण अपनाया। रोबोट के अभिविन्यास और लक्ष्य तक की दूरी के बारे में सोचने के बजाय, यह विधि गति को एक निर्देशांक तल समस्या की तरह मानती है। नियंत्रक लगातार X और Y दोनों दिशाओं में त्रुटि को अलग‑अलग गणना करता है। उदाहरण के लिए, यदि रोबोट को (0,0) से (2,3) तक जाना है, तो यह X में 2‑मीटर त्रुटि और Y में 3‑मीटर त्रुटि को सुधारने की आवश्यकता के रूप में देखता है। दो अनुपाती नियंत्रक एक साथ काम करते हैं: एक X‑त्रुटि के आधार पर X दिशा में रोबोट की वेग को समायोजित करता है, जबकि दूसरा Y‑त्रुटि के आधार पर Y दिशा में गति को संभालता है। इसने लक्ष्य तक अधिक प्रत्यक्ष पथ बनाया, जैसे 3D प्रिंटर हेड की गति, और स्मूथ विकर्ण गति की अनुमति दी। रोबोट को अपने लक्ष्य की ओर स्पष्ट रूप से मुड़ने की आवश्यकता नहीं थी, जिससे यह विधि संकरे स्थानों में या जब सटीक स्थिति आवश्यक हो, विशेष रूप से प्रभावी बन गई।

दोनों विधियों ने मूल दृष्टिकोण की तुलना में काफी तेज़ और अधिक विश्वसनीय साबित हुईं। इन नई विधियों को क्रिया में देखने के लिए, देखें Tritons in Action Playlist, जो सभी ट्राइटन को नई विधियों के साथ कार्रवाई में दिखाता है।

जो पहले एक साधारण बिंदु‑से‑बिंदु गति के लिए 30‑45 सेकंड लेता था, अब लगभग 8‑12 सेकंड में हो गया। अधिक महत्वपूर्ण बात यह है कि ट्राइटन अब संकरे स्थानों में अधिक कुशलता से नेविगेट कर सकता है, जो हमारे मल्टी‑रोबोट परिदृश्यों के लिए उपयोगी साबित हुआ।

विकास चुनौतियाँ और डिबगिंग

इन नियंत्रकों को लागू करना सीधा नहीं था और इसमें कई महत्वपूर्ण डिबगिंग चुनौतियाँ शामिल थीं:

निर्देशांक प्रणाली रूपांतरण: सबसे कठिन पहलुओं में से एक सही निर्देशांक रूपांतरण प्राप्त करना था। Optitrack प्रणाली ने अपना डेटा अपने स्वयं के निर्देशांक फ्रेम में प्रदान किया, रोबोट का अपना स्थानीय निर्देशांक फ्रेम था, और मुझे उनके बीच सटीक रूप से रूपांतरण करना था। शुरुआती कार्यान्वयनों में रोबोट गलत दिशाओं में चल रहे थे क्योंकि मैंने घूर्णन मैट्रिक्स गणनाओं को उलट दिया था।

वास्तविक‑विश्व बनाम आदर्श व्यवहार: सबसे बड़ी चुनौती वास्तविक‑विश्व कारकों को ध्यान में रखना था जो पाठ्यपुस्तक नियंत्रण सिद्धांत में नहीं दिखते। रोबोट के पहियों की घर्षण विशेषताएँ अलग‑अलग थीं, मोटर्स समान रूप से प्रतिक्रिया नहीं देते थे, और Optitrack से नियंत्रण सॉफ़्टवेयर से रोबोट के Arduino तक संचार श्रृंखला में हमेशा कुछ विलंब रहता था। मैंने हफ्तों तक अनुपाती गेन को ट्यून किया और इन भौतिक वास्तविकताओं को ध्यान में रखने के लिए डेडबैंड फ़िल्टर जोड़े।

दोलन और स्थिरता समस्याएँ: मेरे पहले कार्यान्वयनों में दोलन समस्याएँ थीं जहाँ रोबोट अपने लक्ष्य को ओवरशूट कर वॉबलिंग करते थे। इसने मुझे PID नियंत्रकों में डेरिवेटिव टर्म के महत्व और उचित गेन ट्यूनिंग की आवश्यकता सिखाई। अंततः मैंने पूर्ण PID के बजाय मुख्यतः अनुपाती नियंत्रण को सावधानीपूर्वक ट्यून किए गए गेन के साथ अपनाया, क्योंकि प्रणाली का अंतर्निहित डैम्पिंग अधिकांश अनुप्रयोगों के लिए पर्याप्त था।

मल्टी‑रोबोट हस्तक्षेप: जब कई रोबोट एक साथ कार्यरत थे, तो मैंने अप्रत्याशित हस्तक्षेप पैटर्न देखे। रोबोट कभी‑कभी एक ही स्थान के लिए “लड़ते” थे या डेडलॉक स्थितियाँ बनाते थे जहाँ वे अनिश्चितकाल तक एक‑दूसरे को ब्लॉक करते रहे। इससे मुझे समन्वय तंत्र और टकराव से बचाव एल्गोरिदम लागू करने की प्रेरणा मिली।

मल्टी-ट्राइटन नियंत्रण प्रणाली

एकल ट्राइटन गति समस्या को हल करने के बाद, लैब की अगली चुनौती कई ट्राइटन को एक साथ काम करने के लिए सक्षम करना थी। यह मेरे मुख्य फोकस क्षेत्रों में से एक बन गया और परियोजना में एक महत्वपूर्ण योगदान साबित हुआ।

मूल प्रणाली केवल एक समय में एक ट्राइटन को नियंत्रित कर सकती थी, जिससे अनुसंधान संभावनाएँ बहुत सीमित हो गई थीं। लैब कई स्वायत्त वाहनों को उनके आंदोलनों का समन्वय करने वाले परिदृश्यों का सिमुलेशन करना चाहती थी, जैसे स्व-चालित कारें एक‑दूसरे के साथ संवाद करके ट्रैफ़िक प्रवाह को अनुकूलित करती हैं और बेहतर SLAM (समकालिक स्थानीयकरण और मानचित्रण) मानचित्र बनाती हैं।

इसे हल करने के लिए, मैंने Python की multiprocessing लाइब्रेरी का उपयोग करके एक मल्टी‑प्रोसेसिंग दृष्टिकोण लागू किया। प्रत्येक ट्राइटन को अपना समर्पित प्रोसेस मिला जो स्वतंत्र रूप से चल सकता था जबकि फिर भी एक केंद्रीय नियंत्रण प्रणाली द्वारा समन्वित रहता था। इससे कई ट्राइटन एक साथ चल सकते थे बिना एक‑दूसरे के नियंत्रण लूप में हस्तक्षेप किए।

मल्टी-रोबोट आर्किटेक्चर डिजाइन

मैंने विकसित की गई प्रणाली वास्तुकला कई प्रमुख घटकों से बनी थी:

मुख्य नियंत्रक प्रक्रिया: यह केंद्रीय समन्वयक के रूप में कार्य करती थी, उपयोगकर्ता इंटरफ़ेस इंटरैक्शन, पाथ प्लानिंग, और रोबोटों के बीच उच्च‑स्तरीय समन्वय को संभालती थी। यह वैश्विक स्थिति को बनाए रखती थी और व्यक्तिगत रोबोट प्रक्रियाओं को कमांड वितरित करती थी।

व्यक्तिगत रोबोट प्रक्रियाएँ: प्रत्येक ट्राइटन का अपना समर्पित Python प्रोसेस था जो निम्नलिखित कार्य करता था:

  • लगभग 50Hz पर रीयल‑टाइम PID नियंत्रण गणनाएँ
  • रोबोट के हार्डवेयर (Arduino/Jetson) के साथ संचार
  • स्थानीय पाथ निष्पादन और बाधा से बचाव
  • मुख्य नियंत्रक को स्थिति रिपोर्टिंग

साझा मेमोरी संचार: मैंने Python की multiprocessing.shared_memory और Queue ऑब्जेक्ट्स का उपयोग करके प्रक्रियाओं के बीच कुशल संचार सक्षम किया। इससे नेटवर्क संचार के ओवरहेड के बिना रीयल‑टाइम समन्वय संभव हुआ।

समकालिकता तंत्र: जब कई रोबोट को समन्वय की आवश्यकता होती (जैसे टकराव से बचना), तो मैंने सेमाफोर और लॉक लागू किए जो रोबोटों को कार्यक्षेत्र के कुछ क्षेत्रों तक विशेष पहुँच का अनुरोध करने की अनुमति देते थे।

चुनौती यह सुनिश्चित करना था कि सभी रोबोट अपने नियंत्रण लूप स्वतंत्र रूप से संचालित कर सकें जबकि वैश्विक समन्वय बना रहे। प्रत्येक रोबोट प्रक्रिया अपना PID गणना चलाती और मोटर कमांड सीधे हार्डवेयर को भेजती, जबकि मुख्य प्रक्रिया टकराव से बचाव और पाथ प्लानिंग जैसी उच्च‑स्तरीय समन्वय संभालती।

मल्टी-ट्राइटन इंटरसेक्शन परीक्षण प्रारंभिक मल्टी-ट्राइटन सेटअप

भविष्य के मल्टी-एजेंट कार्य के लिए ड्रोन के साथ ट्राइटन

मल्टी‑ट्राइटन प्रणाली ने पूरी तरह नई अनुसंधान संभावनाएँ खोलीं। हम अब निम्नलिखित का सिमुलेशन कर सकते थे:

  • वाहन‑से‑वाहन संचार परिदृश्य
  • बाधा से बचाव के साथ समन्वित पाथ प्लानिंग
  • स्वॉर्म रोबोटिक्स व्यवहार
  • मल्टी‑एजेंट SLAM मानचित्रण
  • फॉर्मेशन नियंत्रण और फ़ॉलोइंग व्यवहार

यहाँ लैब सेटअप दिखाया गया है जिसमें कई ट्राइटन एक साथ चल रहे हैं:

हरा ग्रिड पर रोबोट रोबोट ग्रिड सेटअप

मैंने एक उपयोगकर्ता‑मित्र इंटरफ़ेस भी विकसित किया जो शोधकर्ताओं को प्रत्येक ट्राइटन के लिए दृश्य रूप से पाथ परिभाषित करने की अनुमति देता था। आप वास्तव में वह पाथ ड्रॉ कर सकते थे जिसे आप चाहते थे प्रत्येक रोबोट अनुसरण करे, और वे इन पाथ को पूर्ण समन्वय के साथ निष्पादित करते थे। यह जटिल प्रयोगों को सेट अप करने में अत्यंत उपयोगी था बिना प्रत्येक गति को मैन्युअल रूप से कोड किए।

प्रणाली एक साथ अधिकतम 5 ट्राइटन को संभाल सकती थी, प्रत्येक अपना PID नियंत्रक चलाते हुए केंद्रीय नियंत्रण प्रणाली के माध्यम से समन्वित होते थे। प्रदर्शन प्रभावशाली था, सभी रोबोट अपनी व्यक्तिगत सटीकता बनाए रखते हुए टीम के रूप में एक साथ काम करते थे।

यहाँ एक प्लेलिस्ट है जो ट्राइटन को कार्रवाई में दिखाती है, एकल‑रोबोट नियंत्रण से लेकर मल्टी‑रोबोट समन्वय तक: Tritons in Action Playlist

गहराई सेंसर एकीकरण और निर्देशांक सुधार

मैंने एक और प्रमुख प्रगति पर काम किया जिसमें प्रत्येक ट्राइटन पर स्थापित Intel RealSense D435 गहराई कैमरों का उपयोग शामिल था। जबकि Optitrack प्रणाली ने हमें अत्यंत सटीक पोजिशनिंग डेटा दिया, मैं यह पता लगाना चाहता था कि रोबोट अपने ऑन‑बोर्ड सेंसर का उपयोग करके अपनी स्थानिक जागरूकता को कैसे सुधार सकते हैं और निर्देशांक त्रुटियों को कैसे सुधार सकते हैं।

विचार यह था कि ट्राइटन अपने गहराई सेंसर का उपयोग करके अपने निकटवर्ती अन्य ट्राइटन को पहचान सकें और उनके स्थानों को क्रॉस‑रेफ़रेंस कर सकें। यह कई उद्देश्यों की पूर्ति करेगा:

  1. त्रुटि सुधार: यदि Optitrack प्रणाली में कोई कैलिब्रेशन ड्रिफ्ट या अस्थायी बाधा हो, तो रोबोट एक‑दूसरे की स्थितियों की दृश्य पुष्टि का उपयोग करके सटीक निर्देशांक प्रणाली बनाए रख सकते हैं।

  2. उन्नत SLAM: कई रोबोटों के साथ गहराई सेंसर को एक साथ काम करने से हम पर्यावरण के बहुत अधिक समृद्ध मानचित्र बना सकते हैं, जिसमें दोहराव वाले डेटा बिंदु शामिल हों।

  3. टकराव से बचाव: वास्तविक-समय गहराई संवेदन रोबोटों को एक-दूसरे का पता लगाने और बचने की अनुमति देगा, भले ही केंद्रीय नियंत्रण प्रणाली में संचार में देरी हो।

मैंने ऐसे एल्गोरिदम के साथ प्रयोग शुरू किया जो ट्राइटन्स को सक्षम करेंगे:

  • अन्य ट्राइटन्स को उनके विशिष्ट त्रिकोणीय आकार और प्रतिबिंबित गोले मार्करों का उपयोग करके पहचानना
  • गहराई डेटा का उपयोग करके सापेक्ष स्थितियों और अभिविन्यासों की गणना करना
  • इन मापों की Optitrack डेटा से तुलना करके विसंगतियों की पहचान करना
  • संभावित रूप से वास्तविक समय में उनके कोऑर्डिनेट सिस्टम को समायोजित करके सटीकता बनाए रखना

कंप्यूटर विज़न प्रयोग

मैंने कई चरणों में काम करने वाले कंप्यूटर विज़न पाइपलाइन के साथ प्रयोग करने में काफी समय बिताया:

कंप्यूटर विज़न परीक्षणों के लिए एक-दूसरे की ओर मुख किए दो ट्राइटन्स ट्राइटन के कैमरे का क्लोज़‑अप
परीक्षण के लिए दो ट्राइटन्स आमने-सामने
एक-दूसरे की ओर मुख किए दो रोबोट दौड़ने वाले दो ट्राइटन्स

गहराई डेटा प्रसंस्करण: इंटेल रियलसेन्स D435 ने RGB और गहराई डेटा दोनों स्ट्रीम प्रदान किए। मैं मुख्यतः गहराई डेटा के साथ काम करता था, जो 30Hz पर दूरी मापों की 640x480 एरे के रूप में आया। पहली चुनौती इस शोरयुक्त गहराई डेटा को फ़िल्टर करके सार्थक ज्यामितीय जानकारी निकालना थी।

ऑब्जेक्ट डिटेक्शन प्रयास: मैंने बहु-चरणीय डिटेक्शन एल्गोरिदम के साथ प्रयोग किया। मुझे गहराई छवि को विभाजित करके फर्श स्तर पर वस्तुओं की पहचान करने में कुछ सफलता मिली (दीवारों, छत आदि को फ़िल्टर करके) और सही आकार विशेषताओं वाली वस्तुओं की तलाश करने में, लगभग 0.3x0.3 मीटर पदचिह्न। मैंने किनारा पहचान और ज्यामितीय विश्लेषण का उपयोग करके विशिष्ट ट्राइटन प्रोफ़ाइल की पहचान करने की कोशिश की, लेकिन परिणाम मिश्रित रहे।

मार्कर पहचान प्रयोग: प्रत्येक ट्राइटन पर तीन प्रतिबिंबित गोले सबसे आशाजनक डिटेक्शन फीचर लग रहे थे। मैंने ब्लॉब डिटेक्शन एल्गोरिदम के साथ प्रयोग किया ताकि गहराई छवि में तीन चमकीले बिंदुओं के विशिष्ट त्रिकोणीय पैटर्न की पहचान की जा सके। नियंत्रित प्रकाश स्थितियों में मुझे कुछ आशाजनक परिणाम मिले, हालांकि यह लगातार विश्वसनीय नहीं था।

कोऑर्डिनेट फ्यूजन अनुसंधान: मैंने विज़न-आधारित स्थिति अनुमान को Optitrack डेटा के साथ मिलाने के तरीकों का अध्ययन किया, जिसमें बुनियादी कालमन फ़िल्टर कार्यान्वयन शामिल थे। धारणा यह थी कि उपलब्ध होने पर Optitrack डेटा को अधिक वजन दिया जाए और आवश्यकता पड़ने पर विज़न पर वापस लौटें, हालांकि मैं इसे पूरी तरह काम करने में सफल नहीं हुआ जब तक मेरा लैब में समय समाप्त नहीं हुआ।

प्रदर्शन चुनौतियाँ: इस सभी प्रसंस्करण को रोबोट के नियंत्रण लूप के साथ वास्तविक समय में चलाना चुनौतीपूर्ण साबित हुआ। मैंने एल्गोरिदम को लगभग 10-15Hz पर चलाने के लिए अनुकूलन तरीकों के साथ प्रयोग किया, जिससे Jetson Nano की प्रसंस्करण क्षमता पर बोझ न पड़े।

दुर्भाग्यवश, मुझे इस कंप्यूटर विज़न कार्य को पूरी तरह समाप्त करने से पहले लैब छोड़ना पड़ा। हालांकि मुझे कुछ आशाजनक प्रारंभिक परिणाम मिले और गहराई सेंसर प्रसंस्करण के बारे में बहुत कुछ सीखा, मैं सिस्टम को पूरी तरह विश्वसनीय स्थिति तक नहीं ले जा सका। यह एक रोचक अनुसंधान दिशा बनी रही जिसे अन्य लोग संभावित रूप से आगे बढ़ा सकते हैं।

यहाँ कंप्यूटर विज़न एल्गोरिदम का परीक्षण करते हुए मेरा एक वीडियो है:

मेरे प्रयोगों के दौरान गहराई सेंसर दृश्य इस प्रकार दिखता था:

हालांकि मैंने गहराई सेंसर एकीकरण कार्य को पूरा नहीं किया, यह अवधारणा स्व-चालित कार परिदृश्यों का सिमुलेशन जैसे अनुप्रयोगों के लिए आशाजनक दिखी, जहाँ वाहनों को एक-दूसरे के बारे में पता होना चाहिए बिना केवल बाहरी बुनियादी ढांचे पर निर्भर हुए। मैंने जिस अनुसंधान दिशा की खोज शुरू की वह भविष्य में लैब के कार्य में योगदान दे सकती है।

दस्तावेज़ीकरण और ज्ञान संरक्षण

HCR लैब में मेरा सबसे महत्वपूर्ण योगदान, और शायद जिस पर मुझे सबसे अधिक गर्व है, सभी प्रोजेक्ट दस्तावेज़ीकरण को व्यवस्थित और संरक्षित करना था। जब मैं लैब में शामिल हुआ, ट्राइटन प्रोजेक्ट का ज्ञान कई प्लेटफ़ॉर्म और स्वरूपों में बिखरा हुआ था। महत्वपूर्ण जानकारी इन स्थानों में फैली हुई थी:

  • विभिन्न छात्रों के स्नातक होने के बाद के Google Drive खाते
  • इनबॉक्स में दफ़न पुराने ईमेल
  • रैंडम Dropbox फ़ोल्डर
  • कई GitHub रिपॉज़िटरी
  • असंगत संगठन वाले GitLab रिपॉज़िटरी
  • हस्तलिखित नोट्स जिन्हें केवल विशिष्ट लोग ही समझ सकते थे

यह बिखरा हुआ दस्तावेज़ीकरण एक बड़ी समस्या थी। नए छात्रों को शुरू करने का तरीका समझने में हफ़्तों लगते थे, और मूल्यवान ज्ञान लगातार खो जाता था जब लोग स्नातक होते या लैब छोड़ते।

मैंने इस समस्या को व्यवस्थित रूप से हल करने का जिम्मा खुद उठाया। मैंने ट्राइटन प्रोजेक्ट से संबंधित प्रत्येक दस्तावेज़, कोड, वीडियो और नोट को खोजने में अनगिनत घंटे बिताए। उसके बाद मैंने सब कुछ एक केंद्रीकृत GitLab रिपॉज़िटरी में स्पष्ट, तार्किक संरचना के साथ व्यवस्थित किया।

डेस्क पर ट्राइटन टेबल पर कई ट्राइटन्स (कुल 8, 5 बन रहे हैं)

शेल्फ पर ट्राइटन्स एक अच्छे कोण पर

केंद्रीकृत दस्तावेज़ीकरण में शामिल था:

  • निर्माण गाइड: ट्राइटन्स को शून्य से असेंबल करने के लिए चरण-दर-चरण निर्देश
  • सॉफ़्टवेयर सेटअप: विकास पर्यावरण सेट करने के लिए पूर्ण गाइड
  • कोड दस्तावेज़ीकरण: स्पष्ट व्याख्याओं के साथ अच्छी तरह टिप्पणी किया गया कोड
  • हार्डवेयर विनिर्देश: विस्तृत भाग सूची, वायरिंग आरेख, और PCB डिज़ाइन
  • समस्या निवारण गाइड: सामान्य समस्याएँ और उनके समाधान
  • वीडियो ट्यूटोरियल: मैंने यूट्यूब पर शैक्षिक वीडियो बनाए और अपलोड किए, जिसमें विस्तृत Optitrack कैलिब्रेशन ट्यूटोरियल शामिल हैं:

मैंने भविष्य के योगदान को व्यवस्थित और सुलभ सुनिश्चित करने के लिए दस्तावेज़ीकरण मानक भी स्थापित किए। मैंने जो रिपॉज़िटरी संरचना बनाई वह लैब में सभी बाद के कार्यों की नींव बन गई।

केवल मौजूदा दस्तावेज़ीकरण को व्यवस्थित करने से आगे, मैंने कई मूल गाइड और ट्यूटोरियल बनाए जो ज्ञान आधार में महत्वपूर्ण अंतर को भरते थे। इनमें नए लैब सदस्यों के लिए विस्तृत सेटअप निर्देश, व्यापक समस्या निवारण गाइड, और जटिल प्रक्रियाओं के वीडियो walkthrough शामिल थे।

प्रभाव तुरंत और स्थायी था। नए छात्र हफ़्तों के बजाय दिनों में गति पकड़ सकते थे। मैंने जो दस्तावेज़ीकरण रिपॉज़िटरी बनाई है, वह आज भी लैब द्वारा उपयोग में है, मेरे छोड़ने के कई साल बाद भी। यह ट्राइटन प्रोजेक्ट के लिए एकमात्र सत्य स्रोत बन गया और भविष्य के शोधकर्ताओं के लिए अनगिनत घंटे/दिन बचाए।

मेंटरिंग और ज्ञान स्थानांतरण

HCR लैब में मेरे समय का सबसे संतोषजनक पहलू दूसरों को मेंटर करने और मैंने जो ज्ञान प्राप्त किया उसे साझा करने का अवसर था। जैसे-जैसे मेरा काम आगे बढ़ा और मैं ट्राइटन सिस्टम में अधिक अनुभवी हुआ, मैंने नए टीम सदस्यों को प्रशिक्षित करने की बढ़ती जिम्मेदारी ली।

लैब उत्तराधिकारियों का मेंटरिंग

जब मैं अंततः लैब छोड़कर अपनी डिग्री पूरी करने और eBay में अपने काम पर ध्यान केंद्रित करने की तैयारी कर रहा था, तो मैंने सुनिश्चित किया कि दो लोगों को पूरी तरह प्रशिक्षित करूँ जो मेरे प्रस्थान के बाद ट्राइटन प्रोजेक्ट को संभालेंगे। यह केवल उन्हें चीज़ों के काम करने का दिखाना नहीं था, बल्कि यह सुनिश्चित करना था कि वे मूल सिद्धांतों को वास्तव में समझें ताकि वे नवाचार जारी रख सकें।

मैंने उनके साथ कई हफ़्ते निकटता से काम किया, और यह किया:

  • PID नियंत्रण प्रणालियों की गणितीय नींव
  • कई रोबोटों के समन्वय के लिए मल्टी‑प्रोसेसिंग आर्किटेक्चर
  • गहराई सेंसर एकीकरण और कंप्यूटर विज़न एल्गोरिदम
  • दस्तावेज़ीकरण प्रणाली और इसे कैसे बनाए रखें
  • डिबगिंग तकनीकें और सामान्य विफलता मोड

ज्ञान स्थानांतरण अत्यंत विस्तृत था। हम साथ में वास्तविक डिबगिंग सत्रों को पार किया, मैंने उन्हें मौजूदा कोड को संशोधित और विस्तारित करने को कहा, और सुनिश्चित किया कि वे स्वतंत्र रूप से नई ट्राइटन्स को शून्य से सेट अप कर सकें।

हाई स्कूल मेंटरशिप प्रोग्राम

शायद इससे भी अधिक संतोषजनक था मेरा अनुभव हाई स्कूल छात्र को लैब के आउटरीच प्रोग्राम के माध्यम से मेंटर करने का। यह उनके शिक्षा के प्रारंभिक चरण में रोबोटिक्स, कंप्यूटर विज्ञान और अनुसंधान से परिचित कराने का एक शानदार अवसर था।

मैंने एक व्यापक पाठ्यक्रम तैयार किया जिसमें शामिल था:

कंप्यूटर विज्ञान मूलभूत:

  • मुख्य भाषा के रूप में Python का उपयोग करके प्रोग्रामिंग अवधारणाएँ
  • ऑब्जेक्ट‑ओरिएंटेड प्रोग्रामिंग का परिचय
  • एल्गोरिदम और डेटा संरचनाओं की समझ

रोबोटिक्स अवधारणाएँ:

  • सेंसर कैसे काम करते हैं और उनके साथ इंटरफ़ेस कैसे बनाते हैं
  • एक्चुएटर नियंत्रण और मोटर सिस्टम
  • स्वायत्त सिस्टम और फीडबैक नियंत्रण की मूल बातें

ROS (रोबोट ऑपरेटिंग सिस्टम):

  • पब्लिश/सब्सक्राइब मैसेजिंग सिस्टम की समझ
  • नोड्स और सर्विसेज बनाना
  • लॉन्च फ़ाइलों और पैरामीटर सर्वरों के साथ काम करना

हैंड्स‑ऑन प्रोजेक्ट कार्य:

  • हमने मिलकर एक ROS सर्विस बनाई जो ट्राइटन के सिर पर LED सिस्टम को नियंत्रित करती थी
  • उसने साफ़, दस्तावेज़ीकृत कोड लिखना सीखा जो हमारे मौजूदा सिस्टम के साथ एकीकृत हो
  • उसके द्वारा बनाई गई LED नियंत्रण सर्विस ट्राइटन कोडबेस का स्थायी हिस्सा बन गई

इस मेंटरशिप को विशेष रूप से खास बनाने वाला यह था कि मैंने उसे प्रोग्रामिंग के बारे में लगभग कुछ न जानने से लेकर एक सक्रिय अनुसंधान प्रोजेक्ट में सार्थक कोड योगदान देने तक की प्रगति देखते हुए देखा। वह “वेरिएबल क्या है?” पूछने से लेकर स्वतंत्र रूप से ROS संचार समस्याओं को डिबग करने और अपनी स्वयं की सर्विस इम्प्लीमेंटेशन लिखने तक पहुंच गई।

उसके द्वारा विकसित LED नियंत्रण प्रणाली ने शोधकर्ताओं को सरल ROS कमांड्स के माध्यम से ट्राइटन के सिर के LEDs के रंग और पैटर्न को आसानी से बदलने की अनुमति दी। यह सरल लग सकता है, लेकिन इसके लिए ROS आर्किटेक्चर, हार्डवेयर इंटरफ़ेसिंग, और उचित सॉफ़्टवेयर डिज़ाइन पैटर्न की समझ आवश्यक थी। उसका योगदान आज भी लैब में उपयोग किया जा रहा है।

मेंटरशिप मेरे लिए उतनी ही शैक्षिक थी जितनी वह उसके लिए थी। इसने मुझे जटिल अवधारणाओं को पचने योग्य भागों में तोड़ने और वास्तव में हम जो कर रहे थे उसकी बुनियादी बातों के बारे में सोचने के लिए मजबूर किया। किसी और को सिखाने से मैं एक बेहतर इंजीनियर और शोधकर्ता बना।

PhD शोध के साथ सहयोग

मेरे लैब में बिताए समय के सबसे पेशेवर रूप से संतोषजनक पहलुओं में से एक था पेंग के साथ निकटता से काम करना, जो एक पीएचडी छात्र था और जिसका शोध स्व-चालित कार एल्गोरिदम पर केंद्रित था। ट्राइटन सिस्टम में मैंने किए गए सॉफ़्टवेयर सुधारों ने उसके डॉक्टरेट शोध को समर्थन दिया।

पेंग के शोध को सटीक, विश्वसनीय मल्टी-रोबोट समन्वय की आवश्यकता थी ताकि स्व-चालित कार परिदृश्यों का सिमुलेशन किया जा सके। मेरे गति नियंत्रण और मल्टी-रोबोट सिस्टम में सुधारों से पहले, ये प्रयोग बहुत अधिक कठिन थे। रोबोट धीमे, कम सटीक थे, और प्रभावी रूप से साथ नहीं काम कर पा रहे थे।

मेरे योगदान ने पेंग के शोध को कई क्षेत्रों में मदद की:

इंटरसेक्शन प्रबंधन अध्ययन: बेहतर PID नियंत्रकों और मल्टी-रोबोट समन्वय के साथ, पेंग कई “वाहनों” (ट्राइटन) को उनके आंदोलनों का समन्वय करने की आवश्यकता वाले इंटरसेक्शन परिदृश्यों का सिमुलेशन कर सके। बेहतर समय निर्धारण और स्थिति निर्धारण ने इन अध्ययनों को अधिक व्यावहारिक बना दिया।

वाहन-से-वाहन संचार: मैंने जो मल्टी-प्रोसेसिंग फ्रेमवर्क विकसित किया, उसने पेंग को सिम्युलेटेड वाहनों के बीच संचार प्रोटोकॉल को लागू करने और परीक्षण करने की अनुमति दी। प्रत्येक ट्राइटन निर्णय ले सकता था जबकि अन्य के साथ समन्वय बनाए रखता था, ठीक उसी तरह जैसे स्व-चालित कारों को काम करना पड़ सकता है।

SLAM और मैपिंग शोध: गहराई सेंसर एकीकरण कार्य ने पेंग को उसके समकालिक स्थानीयकरण और मैपिंग शोध के लिए अतिरिक्त डेटा प्रदान किया। कई रोबोटों के समन्वित सेंसर क्षमताओं के साथ अधिक व्यापक मैपिंग प्रयोग संभव हुए।

हमारी सहयोग को विशेष रूप से मूल्यवान बनाता था कि यह केवल मेरा उसका शोध मदद करना नहीं था, बल्कि एक वास्तविक साझेदारी थी। स्वायत्त वाहनों के सैद्धांतिक पहलुओं की पेंग की समझ ने मेरे व्यावहारिक कार्यान्वयन को दिशा दी। उसकी प्रतिक्रिया और आवश्यकताओं ने मुझे सिस्टम को अधिक मजबूत और सक्षम बनाने के लिए प्रेरित किया।

हम लैब में कई घंटे साथ बिताते थे, परिदृश्यों को डिबग करते, विभिन्न नियंत्रण रणनीतियों पर चर्चा करते, और ट्राइटन प्लेटफ़ॉर्म क्या हासिल कर सकता है, इसका अन्वेषण करते। पेंग एक सहयोगी और मित्र दोनों बन गया, और उसके साथ काम करने ने मुझे यह सिखाया कि शैक्षणिक शोध वास्तव में कैसे काम करता है।

मैंने जो सिस्टम बनाए, वे पेंग के डिसर्टेशन कार्य का एक उपयोगी हिस्सा बन गए। मेरे व्यावहारिक इंजीनियरिंग योगदान को स्वायत्त वाहन प्रौद्योगिकी में शोध का समर्थन करते देखना वास्तव में संतोषजनक था। इसने मेरे इस विश्वास को मजबूत किया कि ठोस इंजीनियरिंग और शोध मिलकर उपयोगी परिणाम उत्पन्न कर सकते हैं।

भले ही मैं लैब छोड़ गया, पेंग और मैं संपर्क में रहे। यह जानकर कि मेरा काम मेरे प्रस्थान के बाद भी महत्वपूर्ण शोध में योगदान देता रहा, अत्यंत संतोषजनक था।

परिप्रेक्ष्य: प्री‑LLM विकास युग

यह उल्लेखनीय है कि यह सभी कार्य प्री‑LLM सॉफ़्टवेयर विकास युग के दौरान पूरा किया गया था। यह सब 2020 से 2021 (मुख्यतः 2021) के बीच हुआ, जब ChatGPT, Claude, Perplexity, या Cursor IDE जैसे AI‑संचालित विकास उपकरण मौजूद नहीं थे।

हर कोड की पंक्ति को शून्य से लिखा गया, हर एल्गोरिदम को शैक्षणिक पत्रों और पाठ्यपुस्तकों के माध्यम से शोध किया गया, और हर डिबग सत्र में पारंपरिक विधियों जैसे प्रिंट स्टेटमेंट, डिबगर, और व्यवस्थित परीक्षण का उपयोग किया गया। जब मैं किसी समन्वय परिवर्तन या PID ट्यूनिंग समस्या पर अटक जाता था, तो मैं AI सहायक से अवधारणा समझाने या समस्या को डिबग करने के लिए नहीं पूछ सकता था।

इसने विकास प्रक्रिया को काफी चुनौतीपूर्ण बना दिया, लेकिन साथ ही अधिक शैक्षिक भी बना दिया। मुझे करना पड़ा:

सब कुछ मैन्युअल रूप से शोधें: PID नियंत्रण सिद्धांत को समझने के लिए पाठ्यपुस्तकों और शैक्षणिक पत्रों को पढ़ना पड़ा। समन्वय परिवर्तन को समझने के लिए गणित को हाथ से हल करना पड़ा। प्रत्येक अवधारणा को लागू करने से पहले पूरी तरह समझना आवश्यक था।

AI सहायता के बिना डिबग करें: जब रोबोट अप्रत्याशित दिशाओं में चलते या लक्ष्य के आसपास दोलन करते, तो मुझे तर्क को व्यवस्थित रूप से ट्रेस करना, डिबग आउटपुट जोड़ना, और एक‑एक करके परिकल्पनाओं का परीक्षण करना पड़ता था। संभावित समस्याओं का सुझाव देने या त्रुटि पैटर्न की व्याख्या करने के लिए कोई AI नहीं था।

पहले सिद्धांतों से सीखें: “रोबोटिक्स के लिए Python में मल्टी‑प्रोसेसिंग कैसे लागू करें?” जैसे प्रश्न को जल्दी पूछने की क्षमता न होने के कारण, मुझे मूलभूत अवधारणाओं को गहराई से समझना पड़ा। इसने मुझे समवर्ती प्रोग्रामिंग, नियंत्रण प्रणाली, और कंप्यूटर विज़न में ठोस नींव बनाने के लिए मजबूर किया।

दस्तावेज़ीकरण अत्यंत महत्वपूर्ण था: चूँकि मैं बाद में कोड को समझाने के लिए AI पर निर्भर नहीं हो सकता था, मुझे अत्यंत स्पष्ट दस्तावेज़ीकरण और टिप्पणी लिखनी पड़ी। यह अनुशासन दूसरों को ज्ञान हस्तांतरित करने के समय अमूल्य साबित हुआ।

पिछे मुड़कर देखें तो, जबकि आधुनिक AI उपकरण विकास के कई पहलुओं को तेज़ कर सकते थे, उनके बिना काम करने ने मुझे गहरी समस्या‑समाधान कौशल और अंतर्निहित सिस्टम की अधिक गहरी समझ विकसित करने के लिए मजबूर किया। यह सोचना रोचक है कि आज के विकास उपकरण उपलब्ध होते तो यह परियोजना कितनी अलग होती।

छोड़ने का कठिन निर्णय

जितना मैं HCR लैब में काम करना पसंद करता था, 2021 के अंत में मुझे एक कठिन निर्णय का सामना करना पड़ा जो कई छात्रों को मिलता है: कई अवसरों और जिम्मेदारियों को संतुलित करना। मैं एक ही समय में eBay में सॉफ़्टवेयर इंजीनियर के रूप में पूर्णकालिक काम कर रहा था, Mines में अपना कंप्यूटर विज्ञान डिग्री पूरा कर रहा था, और HCR लैब में शोध में योगदान दे रहा था।

eBay का अवसर महत्वपूर्ण था; यह मेरा पहला प्रमुख सॉफ़्टवेयर इंजीनियरिंग भूमिका था, जिसने अमूल्य उद्योग अनुभव प्रदान किया, और मुझे एक स्थिर आय दी। हालांकि, पूर्णकालिक काम, डिग्री पूरी करना, और शोध में सार्थक योगदान देना केवल अस्थिर था। कुछ न कुछ तो बदलना ही पड़ेगा।

जब मैंने डॉ. झांग से अपने कोर्स लोड को कम करके लैब कार्य पर अधिक ध्यान केंद्रित करने की संभावना के बारे में बात की, तो उन्होंने दृढ़ता से इसका विरोध किया। उनका तर्क समझदारी भरा था: मेरी डिग्री पूरी करना प्राथमिकता होनी चाहिए, और eBay में उद्योग अनुभव मेरे करियर विकास के लिए मूल्यवान होगा। उन्होंने महसूस किया कि शोध पर ध्यान देने के लिए कक्षाएँ छोड़ना, यद्यपि आकर्षक हो, दीर्घकालिक रूप से सबसे अच्छा निर्णय नहीं हो सकता।

इसलिए सितंबर 2021 में, लगभग 8 महीने की तीव्र लैब कार्य के बाद, मैंने अपने रिसर्च असिस्टेंट भूमिका से पीछे हटने का कठिन निर्णय लिया ताकि मैं अपनी डिग्री पूरी करने और eBay में अपने काम पर ध्यान केंद्रित कर सकूँ। यह उस समय मेरे लिए सबसे कठिन पेशेवर निर्णयों में से एक था।

लैब को आधिकारिक रूप से छोड़ने के बाद भी, मैं किसी को भी मेरे द्वारा बनाए गए सिस्टम में मदद की आवश्यकता होने पर समर्थन प्रदान करता रहा। मैं आवश्यकतानुसार दस्तावेज़ीकरण अपडेट करता रहा, डिबगिंग के बारे में प्रश्नों के उत्तर देता रहा, और दूरस्थ रूप से समस्याओं का समाधान करने में मदद करता रहा। मेरे द्वारा स्थापित कनेक्शन और परियोजना की सफलता में मेरा निवेश केवल इसलिए नहीं गायब हुआ क्योंकि मैं अब टीम का आधिकारिक सदस्य नहीं रहा।

प्रतिबिंब और पुनरावलोकन

अब, 2025 में, चार साल बाद, मैं उस समय को जटिल भावनाओं के साथ देख रहा हूँ। मेरा करियर पथ मुझे वेब विकास और AI/ML इंजीनियरिंग में गहराई तक ले गया, क्षेत्रों में जो अत्यंत संतोषजनक रहे और विकास और प्रभाव के लिए अद्भुत अवसर प्रदान किए।

टेबल पर ट्राइटन का शीर्ष‑से‑नीचे दृश्य

फिर भी मेरे भीतर एक हिस्सा है जो पूछता है “क्या होता अगर।” रोबोटिक्स मेरा सच्चा जुनून रहा है, और ईमानदारी से कहूँ तो अभी भी है। भौतिक सिस्टमों के साथ काम करने, अपने कोड को वास्तविक दुनिया की गति और व्यवहार में बदलते देखना, वह चीज़ है जो वेब विकास और यहाँ तक कि AI कार्य पूरी तरह से नहीं दोहरा सकते।

मैं कभी‑कभी सोचता हूँ कि अगर मैंने अलग रास्ता चुना होता तो क्या होता। अगर मैं रोबोटिक्स शोध में बना रहता? अगर मैंने अपनी स्नातक डिग्री पूरी करने के बाद तुरंत स्नातकोत्तर स्कूल का रास्ता अपनाया? अगर मैंने उद्योग अनुभव के ऊपर लैब कार्य को प्राथमिकता दी होती?

लेकिन मैं यह भी मानता हूँ कि हर रास्ते के अपने‑अपने समझौते होते हैं। वेब विकास और AI में मैंने जो कौशल विकसित किए, वे अत्यंत मूल्यवान रहे हैं। उद्योग अनुभव ने मुझे बड़े पैमाने पर सॉफ़्टवेयर इंजीनियरिंग, उपयोगकर्ता अनुभव डिज़ाइन, और उन व्यावहारिक चुनौतियों के बारे में सिखाया जो लाखों लोगों द्वारा उपयोग किए जाने वाले उत्पादों को बनाने में आती हैं। इन अनुभवों ने मुझे कुल मिलाकर एक बेहतर इंजीनियर बना दिया है।

HCR लैब में किया गया काम आज भी मेरे समस्या‑समाधान दृष्टिकोण को प्रभावित करता है। PID नियंत्रण सिस्टम के लिए आवश्यक व्यवस्थित सोच मेरे सॉफ़्टवेयर सिस्टम में फीडबैक लूप डिज़ाइन करने में प्रकट होती है। दस्तावेज़ीकरण और ज्ञान संरक्षण कौशल ने हर भूमिका में अमूल्य साबित हुए हैं। मेंटरशिप और शिक्षण का अनुभव ने मेरे जूनियर डेवलपर्स के साथ काम करने और टीम ज्ञान‑साझाकरण में योगदान देने के तरीके को आकार दिया है।

सबसे महत्वपूर्ण बात यह है कि इस अनुभव ने मुझे सिखाया कि मैं तब सबसे अच्छा काम करता हूँ जब मैं चुनौतीपूर्ण तकनीकी समस्याओं पर काम करता हूँ जिनका वास्तविक‑विश्व प्रभाव हो। चाहे वह रोबोट गति एल्गोरिदम को अनुकूलित करना हो या AI सिस्टम बनाना जो उपयोगकर्ताओं को उनके लक्ष्य हासिल करने में मदद करे, संतुष्टि कठिन लेकिन महत्वपूर्ण समस्याओं को हल करने से आती है।

स्थायी प्रभाव

HCR लैब के अनुभव को पीछे मुड़कर देखें तो मैं आश्चर्यचकित हूँ कि मैंने अपेक्षाकृत कम समय में कितना हासिल किया। मैंने जो सिस्टम बनाए, उन्होंने ट्राइटन प्लेटफ़ॉर्म के संचालन को मूल रूप से बदल दिया, और उन सुधारों में से कई आज भी उपयोग में हैं। मैंने जो दस्तावेज़ीकरण रिपॉज़िटरी बनाई, वह पूरे प्रोजेक्ट के लिए ज्ञान‑भंडार बन गई। मैंने जो मेंटरशिप संबंध स्थापित किए, उनका लोगों पर दीर्घकालिक प्रभाव रहा।

लेकिन शायद सबसे अधिक महत्वपूर्ण यह है कि इस अनुभव ने मुझे दिखाया कि मैं उन समस्याओं पर काम करते समय क्या हासिल कर सकता हूँ जिनके प्रति मैं वास्तव में जुनूनी हूँ। उन आठ महीनों में, मैंने:

  • रोबोट गति नियंत्रण प्रणाली में सुधार किया जो प्लेटफ़ॉर्म को सीमित कर रही थी
  • शून्य से एक बहु-रोबोट समन्वय प्रणाली बनाई
  • कंप्यूटर विज़न और सेंसर फ्यूज़न क्षमताओं को एकीकृत किया
  • व्यापक दस्तावेज़ीकरण और ज्ञान प्रबंधन प्रणाली बनाई
  • कई लोगों को मेंटर किया और ज्ञान स्थानांतरण में मदद की
  • स्वायत्त वाहनों में पीएचडी-स्तर के शोध का समर्थन किया

यह केवल तकनीकी उपलब्धियों के बारे में नहीं था, हालांकि वे मेरे लिए महत्वपूर्ण थीं। यह इस बात को सीखने के बारे में था कि दृढ़ता और व्यवस्थित सोच के साथ, आप एक स्नातक छात्र के रूप में भी उपयोगी योगदान दे सकते हैं।

भविष्य और रोबोटिक्स

जबकि मेरा करियर मुझे अन्य दिशाओं में ले गया है, रोबोटिक्स के प्रति मेरा जुनून कम नहीं हुआ है। मैं अभी भी इस क्षेत्र में विकास को फॉलो करता हूँ, रोबोट लर्निंग और स्वायत्त प्रणालियों में प्रगति को लेकर उत्साहित हूँ, और कभी-कभी अपने खाली समय में व्यक्तिगत रोबोटिक्स प्रोजेक्ट्स पर काम करता हूँ।

कौन जानता है भविष्य में क्या होगा? AI और मशीन लर्निंग में मैं जो कौशल विकसित कर रहा हूँ, वे रोबोटिक्स के लिए लगातार अधिक प्रासंगिक होते जा रहे हैं। उद्योग में प्राप्त अनुभव ने मुझे मजबूत, स्केलेबल सिस्टम बनाने का तरीका सिखाया है। शायद भविष्य में ये विभिन्न अनुभवों के धागे अप्रत्याशित तरीकों से एक साथ मिलेंगे।

अभी के लिए, मैं HCR लैब में बिताए समय और उसके द्वारा प्रदान किए गए अनुभवों के लिए आभारी हूँ। यह एक निर्माणात्मक अवधि थी जिसने मेरे तकनीकी कौशल और यह समझ दोनों को आकार दिया कि मुझे किस प्रकार का काम सबसे अधिक संतोषजनक लगता है। हालांकि कभी-कभी मुझे इसकी याद आती है, मैं जानता हूँ कि मैंने जो सबक सीखे और जो दृष्टिकोण विकसित किए वे मेरे सभी कार्यों को प्रभावित करते रहते हैं।

रोबोट अभी भी वहाँ हैं, अभी भी शोधकर्ताओं की सेवा कर रहे हैं, अभी भी महत्वपूर्ण कार्य को सक्षम बना रहे हैं। और यह वास्तव में अद्भुत है।