This project showcases a robotic motion-planning pipeline developed for the Franka Emika Panda arm using ROS 2 Humble, MoveIt 2, and RViz2. The system enables users to define start and goal poses in RViz and insert static obstacles into the planning scene. MoveIt’s OMPL planners (default: RRTConnect), coupled with the FCL collision checker, generate collision-free trajectories that are visualized and executed within the simulation environment.
In a dedicated branch (isaac_panda), the project extends functionality to Isaac Sim, where the planned trajectories from RViz are mirrored in a pre-configured simulation scene. This provides a seamless bridge between high-level planning and photorealistic robotic simulation, making it a powerful demo of motion planning, collision avoidance, and simulator integration.
Github: https://github.com/PannagaS/panda_path_planning_task/tree/main
Key Features:
ROS 2 launch files for initializing the Panda arm in RViz with MoveIt 2
Integration of obstacle-aware planning with MoveIt
Collision detection powered by the Flexible Collision Library (FCL)
Isaac Sim support for synchronized visualization of executed trajectories
"Real-time pallet detection and ground segmentation optimized for edge deployment on NVIDIA Jetson - because smart warehouses deserve smart vision."
This project focuses on detecting industrial pallets using computer vision techniques for smart warehousing and logistics. Leveraging OpenCV and deep learning-based object detection pipelines, I developed a robust method to identify and localize pallets in RGB images under variable lighting and occlusions. The system is designed to integrate seamlessly with robotic platforms for autonomous navigation and manipulation tasks in warehouse settings.
Key highlights include:
Trained a YOLOv11-based pallet detection and ground segmentation model tailored for warehouse automation.
The model achieved 81.5% precision, 69.3% recall, and an mAP@50 of 70.1% after 150 epochs of training.
To make the model deployment-ready, I optimized it using TensorRT for the NVIDIA Jetson Orin Nano Super - achieving a 40% reduction in inference time.
Stack used - ROS2, Python, OpenCV, Numpy, Docker
This system enables warehouse robots to perceive and react to pallet placements in real time, forming a critical step toward fully autonomous logistics.
Click here for code and implementation details.
Kalman Filter is a beautiful invention in my opinion, which is an objective truth tbh. In this project, I implemented an Extended Kalman Filter & Linear Kalman Filter for real-time state estimation using ROS2 and C++. The project involved fusing noisy sensor data, such as position and velocity measurements, from multiple sources to track the state of a mobile robot. The system utilized a linear motion model (or non-linear depending on the case), and an observation model to estimate the robot's position, velocity, and orientation, while effectively reducing noise and handling uncertainties. Click here for code and implementation details.
Key highlights include:
Developing custom ROS2 nodes to publish and subscribe to sensor readings.
Implementing the Kalman filter algorithm for state prediction and update.
Visualizing estimated trajectories in RViz2 for analysis and debugging.
This project demonstrated the robustness of Kalman filters for sensor fusion and state estimation in dynamic environments, showcasing practical applications in robotics and autonomous systems.
Monte Carlo localization localization is a technique of estimating state of a robot using Particle Filter. I implemented particle-filter in C++ for a differential drive mobile robot to robustly estimate the state of a robot navigating through an environment. The algorithm uses a sequential importance resampling technique to handle sensor noise and uncertainty in motion dynamics. By propagating particles through an action model and updating their weights based on a sensor model, the filter achieves accurate localization. The implementation includes dynamic noise modeling, systematic resampling, and efficient matrix operations using Eigen, ensuring both accuracy and performance. This project showcases my ability to apply advanced probabilistic algorithms in robotics for state estimation and navigation tasks.
Click here for code and implementation details.
Cardiovascular disease (CVDs) is the number one cause of death globally, taking an estimated 17.9 million lives each year, which accounts for 31% of all deaths worldwide. Four out of five CVD deaths are due to heart attacks and strokes, and one-third of these deaths occur prematurely in people under 70 years of age. Heart failure is a common event caused by CVDs. People with cardiovascular disease or at high cardiovascular risk (due to one or more risk factors such as hypertension, diabetes, hyperlipidemia, or already established disease) need early detection and management. This dataset contains 11 features that can be used to predict possible heart disease.
The dataset is taken from Kaggle: https://www.kaggle.com/datasets/fedesoriano/heart-failure-prediction
Age: age of the patient [years]
Sex: sex of the patient [M: Male, F: Female]
ChestPainType: chest pain type [TA: Typical Angina, ATA: Atypical Angina, NAP: Non-Anginal Pain, ASY: Asymptomatic]
RestingBP: resting blood pressure [mm Hg]
Cholesterol: serum cholesterol [mm/dl]
FastingBS: fasting blood sugar [1: if FastingBS > 120 mg/dl, 0: otherwise]
RestingECG: resting electrocardiogram results [Normal: Normal, ST: having ST-T wave abnormality (T wave inversions and/or ST elevation or depression of > 0.05 mV), - LVH: showing probable or definite left ventricular hypertrophy by Estes' criteria]
MaxHR: maximum heart rate achieved [Numeric value between 60 and 202]
ExerciseAngina: exercise-induced angina [Y: Yes, N: No]
Oldpeak: oldpeak = ST [Numeric value measured in depression]
ST_Slope: the slope of the peak exercise ST segment [Up: upsloping, Flat: flat, Down: downsloping]
One-hot-encoding scheme is utilized on Sex, ChestPainType, RestingECG, ExerciseAngina, and ST_Slope to breakdown features to increase granularity of the data.
The parameters for decision tree model and random forest model were selected based on the observations from the various graphs such as accuracy Vs max_depth, accuracy Vs min_splits, accuracy Vs n_estimators, for both training set and validation set, in order to avoid overfitting or underfitting
A ROS2 project which uses fundamental concepts like ROS2 publishers, subscribers, service and clients, custom messages and service. The project uses the turtlesim package available in ROS2 [humble]. A primary P controller has been implemented to maneuver the master turtle so that it can catch the nearest turtle that spawns randomly on the playground.
The rqt_graph is as shown below.
Tech stack : Python, ROS2
Code : https://github.com/PannagaS/turtle_tag
A weekend project which enhanced my open-cv skills. This project demonstrates the use of essential concepts in computer vision like gaussian blur (for denoising), sklearn (to obtain Euclidian distances and make life easy!), numpy (because everything is an array), contouring, thresholding for masking, etc., and understanding these concepts is very important to build any computer vision project, let alone a simple one such as this - which detects the hand and the number of fingers held in the region of interest (roi) on a live video stream. Please feel free to take a look at the code and the output video.
Tech stack : Python, OpenCV, numpy, matplotlib, sklearn
Concepts : thresholding, masking, contours, gaussian blur, noise, denoising
Code : https://github.com/PannagaS/counting_digits/tree/main
The following video demonstrates the above problem statement :