Hello, I'm
I build safe, intelligent robotic systems that work alongside people. M.Engg. AI Graduate specialising in collaborative robotics, real-time control, and deep learning.
Master's Thesis Researcher at Technische Hochschule Deggendorf
As my Master's thesis at Technische Hochschule Deggendorf, I designed and implemented a complete human-robot interaction framework on a UR3e collaborative robot, from force control to computer vision to safety compliance.
The system features a hybrid position-admittance controller for real-time force-guided collaboration, an ISO/TS 15066-compliant safety architecture with Speed & Separation Monitoring, Power & Force Limiting, and Hand Guiding modes, and a YOLOv8-based human detection pipeline using an Intel RealSense D435i depth camera in an eye-to-hand configuration.
A 13-state finite state machine orchestrates assistive lift-and-place tasks, combining autonomous grasping with human-guided object placement via real-time force feedback, all integrated in ROS 2 Humble with MoveIt 2, MoveIt Servo, Gazebo, and a Robotiq 2F-140 gripper.
Previously, I applied computer vision and ML to renewable energy monitoring at Energy Future World (85% detection accuracy on aerial imagery), and gained industrial experience at Mühlbauer Group, Amazon, and Power And Instrumentations Ltd.
Professional journey from power engineering to collaborative robotics
Technische Hochschule Deggendorf (THD), Cham, Germany
Energy Future World, London, United Kingdom (Remote)
Mühlbauer Group, Roding, Bavaria, Germany
Amazon, Bangalore, India
Power And Instrumentations Ltd, Gujarat, India
Academic and personal projects spanning robotics, AI, and computer vision
Complete HRI framework on a UR3e cobot: hybrid admittance control, ISO/TS 15066 safety (SSM, PFL, Hand Guiding), YOLOv8 human detection with Intel RealSense D435i, and a 13-state FSM for assistive manipulation.
View on GitHubModelled a 150W PV module in MATLAB/Simulink, implemented the Incremental Conductance MPPT algorithm with a SEPIC DC-DC converter. Achieved 97%+ MPP tracking accuracy, outperforming Perturb & Observe under varying irradiance.
Four-wheeled mobile robot with a 2D LiDAR, rebuilt from scratch on ROS 2 Humble as a solo portfolio piece. Runs slam_toolbox for online SLAM and a full Nav2 stack (AMCL, NavFn A*, DWB local planner, behaviour-tree navigator) for autonomous goal-to-pose navigation on the saved map. Verified in a cluttered warehouse: 3/3 goals reached, 0 collisions, 0 recoveries on the final tuning pass.
A natural-language command becomes a grounded robot plan. A Claude vision model reads the RealSense D435i frame and returns a JSON list of objects with pixel centres; depth + camera intrinsics back-project each one into the base_link frame; a Claude planner then drives an 8-tool loop (describe_scene, pick, place, move_to, open_gripper, close_gripper, check_safety, home) to execute the instruction on MoveIt 2. Built on top of my thesis's UR3e + Robotiq 2F-140 + D435i Gazebo sim, with a read-only safety gate that reuses the thesis F/T and proximity topics. The point is that the high-level reasoning (e.g. "put the red block next to the blue cup" → grasp pose → place pose) is synthesised by the LLM over real tool feedback, not a hand-written state machine.
Hierarchical humanoid stack in MuJoCo. A local open-source VLM (Qwen2.5-VL-3B, no cloud APIs) plans at ~1 Hz via tool-calling with Set-of-Mark visual grounding, while a compliant whole-body controller executes at ~500 Hz. The same brain drives Unitree G1 and H1 through one tool interface (only a per-robot config file changes); 22-DoF five-finger hands composed onto the H1 at load time via MjSpec. A PPO stance-balance policy trained CPU-only holds the pelvis to 1.4 cm while the arms reach, where the pretrained walking policy falls every time. "Human-like motion" is measurable against Flash & Hogan minimum-jerk criteria: 3 of 4 grasp motions meet every human-reaching benchmark.
DeepMimic-style motion imitation training the Unitree G1 to track LAFAN1 human mocap, running in JAX and MJX with PPO on a 6 GB laptop GPU at ~30,000 env-steps/s (9x the CPU baseline); 5.8B total training steps across 13 measured cycles. The resulting gait sits within 2 to 7% of the human reference on speed (0.48 vs 0.49 m/s), cadence (1.09 vs 1.07/s), stride (0.43 vs 0.46 m) and pelvis bounce. Found that PD position control reached in 5M steps what the reference torque-control recipe needed 300M for (~60x sample efficiency), and shipped four undocumented framework fixes upstream, including a silent JAX-scalar vs MuJoCo-enum bug that had been blocking every dataset load.
Seven independent SARIMA models (PM2.5, PM10, NO2, SO2, O3, CO, and overall AQI) trained on the Kaggle Air Quality in India dataset, feeding monthly pollutant forecasts into the Indian CPCB sub-index formula I = ((IHI−ILO)/(BPHI−BPLO))(Cp−BPLO) + ILO. Overall AQI = max sub-index across pollutants, with a colour-coded six-category severity banner and health advice. The original Tkinter windows were rewritten as a single Streamlit web app with a forecast-by-month tab and a live AQI calculator tab (dominant-pollutant readout, CSV export, expandable CPCB breakpoint reference).
Integrated YOLOv8 with Google text-to-speech (gTTS) and a real-time GUI for enhancing accessibility for visually impaired users with audio feedback of detected objects.
Classical OpenCV pipeline that segments individual tablets inside a blister pack and classifies each by whether its horizontal seam edge is visible. Pipeline: Sobel-based edge exploration → Gaussian blur + adaptive thresholding to get a clean binary mask → Canny edges on the cropped region → cv2.findContours with area filtering to isolate tablets → per-contour horizontal-edge check drives red / green bounding-box classification. Built without any deep learning, the point was to reason about edges, thresholds, and morphology from first principles.
Implemented the core pixel-wise intensity transforms from first principles: the affine map g(x,y) = α·f(x,y) + β drives darken, lighten, low-contrast, and high-contrast variants; a bitwise NOT gives the photographic negative; and a weighted RGB→luminance projection 0.3R + 0.6G + 0.1B produces grayscale. All seven outputs (original, darken, lighten, invert, low-contrast, high-contrast, grayscale) are rendered side by side. No library-level helpers beyond the numpy clip and the OpenCV colour-space wrappers.
Reimplemented global histogram equalization without using cv2.equalizeHist: compute the 256-bin intensity histogram, derive the PDF and then the CDF, and use np.interp to remap every pixel through the CDF × 255 lookup. Applied to an under-exposed sunset photograph where most of the intensity mass sits near zero; the equalized output spreads that narrow range across the full 0-255 gamut, pulling foliage texture and cloud structure out of the near-black regions.
Tools and technologies I work with
Academic background in AI and electrical engineering
Technische Hochschule Deggendorf (DIT), Cham, Germany • 2022 to 2026
Specialisation: Machine Learning, Deep Learning, Computer Vision, Autonomous Systems, IoT, Robotics
University of Calicut, Kerala, India
Specialisation: Digital Signal Processing, Digital System Design, Power Electronics, IoT
External credentials backing the skill set
August 2026
Skills: Agentic AI, Tool Use, Function Calling, AI Agent Architecture, LLM Application Development, Prompt Engineering, Prompt Patterns, OpenAI API, Retrieval-Augmented Generation (RAG), Python for AI.
September 2026
Skills: Supervised Learning, Unsupervised Learning, Classification (Logistic Regression, KNN, SVM, Decision Trees), Regression (Linear, Non-linear), Clustering (k-means, Hierarchical, DBSCAN), Recommender Systems, Model Evaluation (Cross-validation, Precision/Recall/F1), Scikit-learn, Pandas.
Open to robotics, AI/ML, and automation engineering roles in Germany