<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects | Rahil Bhowal</title><link>https://rahil-bhowal007.github.io/resume-website/teaching/</link><atom:link href="https://rahil-bhowal007.github.io/resume-website/teaching/index.xml" rel="self" type="application/rss+xml"/><description>Projects</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 01 Dec 2024 00:00:00 +0000</lastBuildDate><image><url>https://rahil-bhowal007.github.io/resume-website/media/icon_hu7729264130191091259.png</url><title>Projects</title><link>https://rahil-bhowal007.github.io/resume-website/teaching/</link></image><item><title>Attention-guided Off-Road Semantic Segmentation for Autonomous Navigation</title><link>https://rahil-bhowal007.github.io/resume-website/teaching/attention-guided-off-road-semantic-segmentation-for-autonomous-navigation/</link><pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/teaching/attention-guided-off-road-semantic-segmentation-for-autonomous-navigation/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Semantic segmentation is a critical task in computer vision, enabling pixel-level understanding of
images for applications ranging from autonomous driving to environmental monitoring. While signifi-
cant advancements have been made with architectures like U-Net and DeepLabv3+, most research has
focused on structured environments with well-defined boundaries. Off-road environments, however,
present unique challenges such as diverse terrain types, imbalanced class distributions, and complex
navigability conditions.
This project addresses these challenges by proposing a semantic segmentation framework tailored for
unstructured off-road environments, evaluated on the RUGD dataset.&lt;/p>
&lt;h2 id="method">Method&lt;/h2>
&lt;p>A novel model architecture that integrates a ResNet-50 encoder, Atrous Spatial Pyramid Pooling
(ASPP) for multiscale context aggregation, and Squeeze-and-Excitation (SE) blocks for adaptive
attention. A class rebalancing approach inspired by prior work to mitigate dataset imbalances by
grouping the 24 RUGD classes into 4 broader categories relevant to off-road navigation. Comprehen-
sive evaluation of different model architectures, including SegFormer and ResNetUNetASPP variants,
across coarse-grained (4-class), intermediate (6-class), and fine-grained (24-class) classification levels.
Our results demonstrate that combining hierarchical feature extraction with attention mechanisms
significantly improves segmentation performance in off-road scenarios. Additionally, we identify
key limitations and propose avenues for future research, including lightweight models for edge
deployment and sensor fusion strategies for enhanced robustness.
The implemented model combines a ResNet-50 encoder, an Atrous Spatial Pyramid Pooling (ASPP)
module, and Squeeze-and-Excitation (SE) blocks for attention-based refinement. This design leverages hierarchical feature extraction, multiscale context handling, and adaptive feature emphasis,
ensuring robust semantic segmentation capabilities.&lt;/p>
&lt;h2 id="experiments">Experiments&lt;/h2>
&lt;p>Our experimental testbed consists of the RUGD dataset, a real-world dataset specifically curated for
semantic segmentation tasks in outdoor environments. This dataset features diverse terrain types,
obstacles, and environmental conditions, making it a robust benchmark for evaluating segmentation
model.
We evaluated our model’s performance across three levels of classification complexity:
4-class classification: Coarse-grained segmentation to test general terrain distinction. 6-class clas-
sification: Intermediate granularity for assessing the model’s ability to differentiate more nuanced
categories. 24-class classification: Fine-grained segmentation to push the model’s capacity for
detailed understanding and feature discrimination
During the start of the project, we considered the following model architectures, which includes.&lt;/p>
&lt;ol>
&lt;li>The architecture of the ResNetUNetASPP model, which combines elements from ResNet, U-Net,
and Atrous Spatial Pyramid Pooling (ASPP). This architecture involved segmentation for all 24
classes present in the RUGD dataset.&lt;/li>
&lt;li>Next we consider the ResNetUNetASPPWithAttention model which is a combination of the
following model arhitectures ResNet50 Encoder, Atrous Spatial Pyramid Pooling (ASPP) module, U-
Net-style Decoder and Squeeze-and-Excitation (SE) Attention blocks. We use a ResNet50 backbone
for the model pretrained on the ImageNet.&lt;/li>
&lt;li>Next we focused on changing out ResNetUNetASPPWithAttention model for 4 classes. Dividing
our 24 classes into 4 categories. The model architecture is subtly changed with a focus on modularity
and attention-driven refinement.&lt;/li>
&lt;/ol>
&lt;p>&lt;strong>Addressing Data Imbalance&lt;/strong>
There is a class imbalance in the dataset. So inorder to have a higher accuracy segmenting the
off-road environment. We took help from the Ga-Nav paper which addressed the class imbalance by
broadly classifying the 24 classes into 6 categories which includes Smooth Region(includes terrains
like concrete and asphalt, which are highly navigable and suitable for autonomous navigation),
Rough Region(Covers terrains such as gravel, grass, dirt, and sand, which are navigable but may
introduce moderate friction or difficulty), Bumpy Region(includes terrains with small rocks or rock
beds that are more challenging to traverse, especially for smaller or less capable robots), Forbidden
Region(includes unsafe terrains like water, bushes, or tall vegetation that the robot must avoid to
prevent damage or failure), Obstacle(Includes physical barriers like trees, poles, or logs that block the
robot’s path and must be navigated around), Background(covers irrelevant classes such as sky, signs,
or void regions, which are not part of the navigable environment). These classes were specifically
picked adhering to the requirements of off-road navigation and simplifying the segmentation task.
Our approach inspired by this paper divided the 24 classes into 4 categories which includes Back-
ground:(includes element that are not part of the environment like Sky, Sign), Smooth region (consists
of region that are easily navigable like Concrete, Asphalt), Rough Navigable (includes classes like
Gravel, Grass, Dirt, Sand, Mulch) and Obstacles/Bumpy Navigable (includes region where the
robot might get stuck while navigating. Includes classes like Rock, Rock-Bed, Tree, Pole, Vehicle,
Container/Generic Object, Building, Log, Bicycle, Person, Fence, Bush, Picnic Table, Bridge).&lt;/p>
&lt;p>&lt;strong>Implementation Details&lt;/strong>
Besides categorising the 24 classes into 4 categories. We also computed the class weights based
on the frequency of 4 classes in the dataset. Balance weights were calculated to ensure greater
representation of underrepresented groups. These weights were incorporated in the CrossEntropy
class ensuring the model learns features for all classes.
The below table shows the parameters for training on the RUGD Dataset.&lt;/p>
&lt;p>&lt;strong>Table 1: Comparison of Training Parameters for Different Models&lt;/strong>&lt;/p>
$$
\begin{array}{|l|c|c|c|c|}
\hline
\textbf{Method} &amp; \textbf{Epochs} &amp; \textbf{Learning Rate} &amp; \textbf{Optimizer} &amp; \textbf{Batch Size} \\ \hline
\text{ResNetUNetASPP} &amp; 16 &amp; 0.001 &amp; \text{Adam} &amp; 18 \\ \hline
\text{ResNetUNetASPPWithAttention} &amp; 31 &amp; 0.001 &amp; \text{Adam} &amp; 16 \\ \hline
\text{Segformer} &amp; 25 &amp; 0.00006 &amp; \text{AdamW} &amp; 32 \\ \hline
\text{ResNetUNetASPPWithAttention*} &amp; 13 &amp; 0.001 &amp; \text{Adam} &amp; 32 \\ \hline
\end{array}
$$&lt;h2 id="evaluation-and-metrics">Evaluation and Metrics&lt;/h2>
&lt;p>The 4 models were evaluated on the RUGD dataset, where the ResNetUNetASPP, ResNetUNetASP-
PWithAttention, Segformer were evaluated on all 24 classes, the ResNetUNetASPPWithAttention*
was evaluated dividing the 24 classes into 4 categories.&lt;/p>
&lt;p>&lt;strong>Table 2: Performance Metrics on RUGD&lt;/strong>&lt;/p>
$$
\begin{array}{|l|c|c|}
\hline
\textbf{Method} &amp; \textbf{mIoU} &amp; \textbf{Mean Pixel Accuracy} \\ \hline
\text{ResNetUNetASPP} &amp; 0.1303 &amp; 0.7449 \\ \hline
\text{ResNetUNetASPPWithAttention} &amp; 0.1401 &amp; 0.7221 \\ \hline
\text{Segformer} &amp; 0.2732 &amp; 0.3331 \\ \hline
\text{ResNetUNetASPPWithAttention*} &amp; 0.6138 &amp; 0.7411 \\ \hline
\end{array}
$$&lt;h2 id="output">Output&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Output on RUGD Dataset" srcset="
/resume-website/teaching/attention-guided-off-road-semantic-segmentation-for-autonomous-navigation/collage_hu1429416686632481067.webp 400w,
/resume-website/teaching/attention-guided-off-road-semantic-segmentation-for-autonomous-navigation/collage_hu16893828719563557301.webp 760w,
/resume-website/teaching/attention-guided-off-road-semantic-segmentation-for-autonomous-navigation/collage_hu15823920890974021224.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/attention-guided-off-road-semantic-segmentation-for-autonomous-navigation/collage_hu1429416686632481067.webp"
width="760"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Output on RUGD Dataset&lt;/it></description></item><item><title>3D Reconstruction Using Structure From Motion (SfM)</title><link>https://rahil-bhowal007.github.io/resume-website/teaching/3d-reconstruction-structure-from-motion/</link><pubDate>Sun, 24 Nov 2024 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/teaching/3d-reconstruction-structure-from-motion/</guid><description>&lt;h2 id="objective">Objective&lt;/h2>
&lt;p>To reconstruct a 3D scene and camera trajectory from a sequence of images using Structure-from-Motion (SfM). The pipeline includes feature detection, pose estimation, 3D point triangulation, and bundle adjustment for optimization.&lt;/p>
&lt;h2 id="dataset">Dataset&lt;/h2>
&lt;p>&lt;strong>Source&lt;/strong>: A custom dataset of images depicting a static scene (&amp;ldquo;buddha_images&amp;rdquo;).
&lt;strong>Details&lt;/strong>: The dataset consists of 25 images captured from different perspectives, simulating real-world camera motion around the object.
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Original Dataset" srcset="
/resume-website/teaching/3d-reconstruction-structure-from-motion/original_dataset_hu16627670037610402540.webp 400w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/original_dataset_hu18298456156182482465.webp 760w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/original_dataset_hu8612513613827875412.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/3d-reconstruction-structure-from-motion/original_dataset_hu16627670037610402540.webp"
width="738"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Original Dataset&lt;/it>
&lt;p>&lt;strong>Preprocessing:&lt;/strong>
Images are normalized to ensure uniform pixel intensity.
CLAHE (Contrast Limited Adaptive Histogram Equalization) is applied for better feature detection in low-contrast regions.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Preprocessing the dataset" srcset="
/resume-website/teaching/3d-reconstruction-structure-from-motion/Preprocessing_hu16598873739779166740.webp 400w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/Preprocessing_hu5876227944412584365.webp 760w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/Preprocessing_hu17756982730106449652.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/3d-reconstruction-structure-from-motion/Preprocessing_hu16598873739779166740.webp"
width="738"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Preprocessed dataset&lt;/it>
&lt;h2 id="problem-statement">Problem Statement&lt;/h2>
&lt;p>The goal is to accurately reconstruct the 3D structure of the scene and estimate the camera trajectory by:&lt;/p>
&lt;ol>
&lt;li>Detecting and matching features across the images.&lt;/li>
&lt;li>Estimating relative camera poses and 3D points.&lt;/li>
&lt;li>Refining the reconstruction with bundle adjustment to minimize reprojection errors.&lt;/li>
&lt;/ol>
&lt;h2 id="workflow">Workflow&lt;/h2>
&lt;p>&lt;strong>1. Image Preprocessing&lt;/strong>&lt;/p>
&lt;pre>&lt;code>Images are loaded and enhanced to improve feature detection.
Conversion to grayscale and CLAHE is applied for contrast improvement.
&lt;/code>&lt;/pre>
&lt;p>&lt;strong>2. Feature Detection and Matching&lt;/strong>&lt;/p>
&lt;pre>&lt;code>SIFT (Scale-Invariant Feature Transform) is used to detect robust keypoints in each image.
Keypoints are matched between consecutive images using FLANN-based matching.
RANSAC is applied to eliminate outliers and ensure reliable matches.
&lt;/code>&lt;/pre>
&lt;p>&lt;strong>3. Pose and Structure Estimation&lt;/strong>&lt;/p>
&lt;pre>&lt;code>Fundamental Matrix: Estimated using RANSAC for epipolar geometry constraints.
Essential Matrix: Extracted from the fundamental matrix to estimate relative camera poses.
3D Point Triangulation: Feature correspondences are triangulated to estimate initial 3D points.
&lt;/code>&lt;/pre>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Epipolar Lines" srcset="
/resume-website/teaching/3d-reconstruction-structure-from-motion/epipolar_lines_hu7827697987014114266.webp 400w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/epipolar_lines_hu9131896081585381650.webp 760w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/epipolar_lines_hu80999310732477610.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/3d-reconstruction-structure-from-motion/epipolar_lines_hu7827697987014114266.webp"
width="654"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Epipolar lines&lt;/it>
**4. Bundle Adjustment**
&lt;pre>&lt;code>Framework: GTSAM is used to build a factor graph that models the relationship between camera poses and 3D points.
Optimization:
Camera poses and 3D points are refined by minimizing reprojection errors.
The Levenberg-Marquardt algorithm is employed for nonlinear optimization.
&lt;/code>&lt;/pre>
&lt;p>&lt;strong>5. Visualization&lt;/strong>
The 3D reconstruction is visualized as:
A point cloud representing the reconstructed scene.
A trajectory showing the path of the camera during image capture.&lt;/p>
&lt;h2 id="output">Output&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Without Bundle Adjustment" srcset="
/resume-website/teaching/3d-reconstruction-structure-from-motion/without_bundleadjustment_hu6942033191206393866.webp 400w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/without_bundleadjustment_hu9187262976241223686.webp 760w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/without_bundleadjustment_hu6402079543670450562.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/3d-reconstruction-structure-from-motion/without_bundleadjustment_hu6942033191206393866.webp"
width="760"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Without Bundle Adjustment&lt;/it>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="With Bundle Adjustment" srcset="
/resume-website/teaching/3d-reconstruction-structure-from-motion/with_bundleadjustment_hu4539902871305604662.webp 400w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/with_bundleadjustment_hu14807982979724959188.webp 760w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/with_bundleadjustment_hu13079284056632531521.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/3d-reconstruction-structure-from-motion/with_bundleadjustment_hu4539902871305604662.webp"
width="760"
height="760"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>With Bundle Adjustment&lt;/it>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Output zoomed image" srcset="
/resume-website/teaching/3d-reconstruction-structure-from-motion/featured_hu14569655443375324010.webp 400w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/featured_hu2822277910763705096.webp 760w,
/resume-website/teaching/3d-reconstruction-structure-from-motion/featured_hu5183902391674200487.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/3d-reconstruction-structure-from-motion/featured_hu14569655443375324010.webp"
width="196"
height="359"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Output image&lt;/it>
&lt;h2 id="did-you-find-this-page-helpful-consider-sharing-it-">Did you find this page helpful? Consider sharing it 🙌&lt;/h2></description></item><item><title>Underwater Image Mosaicing</title><link>https://rahil-bhowal007.github.io/resume-website/teaching/underwater-image-mosaicing/</link><pubDate>Sun, 01 Sep 2024 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/teaching/underwater-image-mosaicing/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>In this project I worked on the understanding of image registration by working on a low contrast, somewhat challenging dataset.&lt;/p>
&lt;p>The paper describing the work for photomosaicking is attached &lt;a href="pizarro2003joe.pdf">!Pizarro2003joe.pdf&lt;/a>. I wanted to read this paper and see if we can duplicate some of the work in it while using some of the techniques I have learned in the class so far.&lt;/p>
&lt;h2 id="output">Output&lt;/h2>
&lt;p>There are 2 set of images I worked with 2 set of images each containing 6 images and 128 images.&lt;/p>
&lt;p>Steps involved are normalising the image, applying histogram equalization techniques like CLAHE, feature extraction and trying image registration. Next step I tried to use GTSAM and build a factor graph to get a better fit.&lt;/p>
&lt;p>&lt;strong>Normalising and applying CLAHE to all the images&lt;/strong>&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="normalised images" srcset="
/resume-website/teaching/underwater-image-mosaicing/6_image_set_norm_hu6289945303630338040.webp 400w,
/resume-website/teaching/underwater-image-mosaicing/6_image_set_norm_hu17323221328223451999.webp 760w,
/resume-website/teaching/underwater-image-mosaicing/6_image_set_norm_hu15746795887251051703.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/underwater-image-mosaicing/6_image_set_norm_hu6289945303630338040.webp"
width="760"
height="322"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Normalised Images&lt;/it>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="clahe images" srcset="
/resume-website/teaching/underwater-image-mosaicing/6_image_set_clahe_hu4644407238174892565.webp 400w,
/resume-website/teaching/underwater-image-mosaicing/6_image_set_clahe_hu2541818860657317241.webp 760w,
/resume-website/teaching/underwater-image-mosaicing/6_image_set_clahe_hu17126828790585424944.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/underwater-image-mosaicing/6_image_set_clahe_hu4644407238174892565.webp"
width="760"
height="322"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>CLAHE Images&lt;/it>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="sift images" srcset="
/resume-website/teaching/underwater-image-mosaicing/6_image_sift_hu8957318954434055952.webp 400w,
/resume-website/teaching/underwater-image-mosaicing/6_image_sift_hu16535997393868906444.webp 760w,
/resume-website/teaching/underwater-image-mosaicing/6_image_sift_hu835623008006578878.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/underwater-image-mosaicing/6_image_sift_hu8957318954434055952.webp"
width="760"
height="322"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>SIFT Images&lt;/it>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="before optimization" srcset="
/resume-website/teaching/underwater-image-mosaicing/before_optimization_hu9861216619646542348.webp 400w,
/resume-website/teaching/underwater-image-mosaicing/before_optimization_hu18144267825828537407.webp 760w,
/resume-website/teaching/underwater-image-mosaicing/before_optimization_hu2061129508785473117.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/underwater-image-mosaicing/before_optimization_hu9861216619646542348.webp"
width="571"
height="432"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Factor graph before Optimization for 6 image set&lt;/it>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="before optimization" srcset="
/resume-website/teaching/underwater-image-mosaicing/after_optimization_hu2501754735719854754.webp 400w,
/resume-website/teaching/underwater-image-mosaicing/after_optimization_hu16081069700264451364.webp 760w,
/resume-website/teaching/underwater-image-mosaicing/after_optimization_hu15891787928701035940.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/underwater-image-mosaicing/after_optimization_hu2501754735719854754.webp"
width="573"
height="432"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Factor graph after Optimization for 6 Image set&lt;/it>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="bundle adjustment" srcset="
/resume-website/teaching/underwater-image-mosaicing/output_bundleadjustment_hu9313756824279555366.webp 400w,
/resume-website/teaching/underwater-image-mosaicing/output_bundleadjustment_hu18373878486209860859.webp 760w,
/resume-website/teaching/underwater-image-mosaicing/output_bundleadjustment_hu16690202138311040786.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/underwater-image-mosaicing/output_bundleadjustment_hu9313756824279555366.webp"
width="760"
height="610"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Output image after Optimization for 6 Image set&lt;/it>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="bundle adjustment" srcset="
/resume-website/teaching/underwater-image-mosaicing/128_without_bundle_Adjustment_hu6298126970118963038.webp 400w,
/resume-website/teaching/underwater-image-mosaicing/128_without_bundle_Adjustment_hu8524996724453833677.webp 760w,
/resume-website/teaching/underwater-image-mosaicing/128_without_bundle_Adjustment_hu10900752592196158241.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/underwater-image-mosaicing/128_without_bundle_Adjustment_hu6298126970118963038.webp"
width="760"
height="685"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Output Image before Optimization for 128 Image set&lt;/it>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="bundle adjustment" srcset="
/resume-website/teaching/underwater-image-mosaicing/128_after_hu14127287158421106932.webp 400w,
/resume-website/teaching/underwater-image-mosaicing/128_after_hu18083732421959947747.webp 760w,
/resume-website/teaching/underwater-image-mosaicing/128_after_hu6194487628709048258.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/underwater-image-mosaicing/128_after_hu14127287158421106932.webp"
width="760"
height="629"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Output Image after Optimization for 128 Image set&lt;/it></description></item><item><title>Real-Time Social Navigation Strategy using Deep Reinforcement Learning</title><link>https://rahil-bhowal007.github.io/resume-website/teaching/socially-aware-navigation/</link><pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/teaching/socially-aware-navigation/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>Our approach to local navigation for autonomous mobile robots in crowded environments, leveraging
deep reinforcement learning (DRL) techniques and 2D laser scans. Traditional navigation methods
struggle in densely populated areas, often leading to constant replanning and inefficiency. To address
this challenge, recent research has turned to DRL-based solutions, which have shown promising
results in mapless navigation using 2D laser scans.
In our proposed approach, we integrate the perception of risk posed by the moving crowd into
the observation space of our DRL system. By focusing on the K most hazardous obstacles, identified
based on collision probability, the robot can better assess risk even in unfamiliar crowd behaviors.
This targeted attention enables effective navigation in high-density crowds while maintaining scala-
bility.
Furthermore, we enhance learning efficiency by incorporating local waypoints into the reward
function, aiding in global path planning. Through extensive evaluation across various crowd scenar-
ios, we compare our approach with a recent state-of-the-art DRL-based method, demonstrating its
effectiveness under similar test conditions.&lt;/p>
&lt;h2 id="experiment-setup">Experiment Setup&lt;/h2>
&lt;p>​The virtual environment for this project was designed to simulate real-world scenarios and train reinforcement learning models effectively. The setup involved:&lt;/p>
&lt;p>Simulation Platform:&lt;/p>
&lt;p>Gazebo 11: Used in combination with ROS2 Foxy to create a stable simulation environment.
Custom Worlds: Developed to replicate realistic and dynamic environments, including static and moving obstacles.
Custom SDF Models: Simulated human walking patterns using randomized cylinder animations to mimic crowd movement.
Training Worlds:&lt;/p>
&lt;p>Arena World: Optimized for training in mixed static and dynamic obstacle environments.
Corridor World: Simulated a realistic, constrained environment for validation and testing.
Room World: Designed for dense crowd scenarios, primarily dynamic obstacle avoidance.
Robot Models:&lt;/p>
&lt;p>Training started with Turtlebot3 Waffle Pi, transitioning to Turtlebot4 Lite for deployment due to its dimensional resemblance to the final robot.
Custom URDF files were created for compatibility with Gazebo 11 and ROS2 Foxy.
Simulation Features:&lt;/p>
&lt;p>Environments included randomized dynamic obstacles and realistic terrain features.
The LIDAR sensor was integral to robot perception and state estimation.
Deployment Interface:&lt;/p>
&lt;p>ROS2-based Communication: A unique ROS-DOMAIN-ID facilitated real-time updates and commands between the host PC and onboard Raspberry Pi 4.
Host PC Requirements: Ubuntu 22.04 with ROS2 Humble for advanced computing tasks, ensuring better performance than onboard hardware.
This environment setup ensured robust training, testing, and deployment of the socially aware navigation system, allowing the robot to navigate crowded, dynamic environments effectively.&lt;/p>
&lt;h2 id="approach">Approach&lt;/h2>
&lt;p>Our project utilizes Deep Reinforcement Learning (DRL) to enable socially aware navigation for mobile robots in crowded environments. The approach prioritizes safe, efficient, and dynamic movement in real-world scenarios, leveraging modern reinforcement learning algorithms like Twin Delayed Deep Deterministic Policy Gradient (TD3).&lt;/p>
&lt;p>Problem Formulation:&lt;/p>
&lt;p>The robot navigates using 2D laser scans, incorporating both static and dynamic obstacles into the observation space.
A novel perceived risk framework focuses on the K most hazardous obstacles in the environment, based on collision probability.
Observations include:
Static environment data from LIDAR.
Goal-relative metrics like distance and heading.
Obstacle data including positions and velocities of the most hazardous objects.
Action and Reward Spaces:&lt;/p>
&lt;p>Action Space: Continuous linear and angular velocity commands for smooth and adaptive movement.
Reward Structure: Designed to guide behavior, it penalizes collisions, incentivizes reaching goals, and introduces waypoint-based rewards for efficient pathfinding.
Reinforcement Learning Algorithm:&lt;/p>
&lt;p>TD3 Enhancements:
Dual Critic Networks to mitigate overestimation bias.
Delayed actor updates for stability.
Action noise for better exploration.
The model learns an optimal policy by interacting with custom dynamic environments during training.
Simulation and Deployment:&lt;/p>
&lt;p>Training was conducted in Gazebo 11 with ROS2 Foxy, using custom environments tailored to social navigation challenges.
Deployment on Turtlebot4 Lite in real-world settings validated the system, highlighting its robustness and areas for improvement.&lt;/p>
&lt;h2 id="videos">Videos&lt;/h2>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/fk1wiQEG_PE?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;p>&lt;strong>Read more about it on  &lt;a href="RSS_Team7.pdf">!Report&lt;/a>&lt;/strong>&lt;/p></description></item><item><title>Search and Rescue Mission Using Turtlebot</title><link>https://rahil-bhowal007.github.io/resume-website/teaching/search-and-rescue-system-turtlebot/</link><pubDate>Wed, 01 May 2024 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/teaching/search-and-rescue-system-turtlebot/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>In response to the critical need for effective
reconnaissance in disaster scenarios, this research article
presents the design and implementation of a complete
autonomous robot system using the Turtlebot3 Burger (TB3)
with Robot Operating System (ROS) Noetic. Upon deployment
in closed, initially unknown environments, the system aims to
generate a comprehensive map and identify any present ’victims’
using AprilTags as stand-ins. We discuss our solution for search
and rescue missions, while additionally exploring more advanced
algorithms to improve search and rescue functionalities. We
introduce a Cubature Kalman Filter (CKF) to help reduce
the Mean Squared Error (MSE) [m] for AprilTag localization
and an information-theoretic exploration algorithm to expedite
exploration in unknown environments.&lt;/p>
&lt;p>This project we addresses the need for an autonomous robotic
system that can both map unknown, closed environments and
identify &amp;ldquo;victims(AprilTags)&amp;rdquo; in these settings. Our goal is
to design and implement a robust system using the Robot
Operating System (ROS) Noetic, which can:&lt;/p>
&lt;p>• Generate a complete occupancy grid map of an unknown
environment, providing essential data for navigation and
strategic planning.&lt;/p>
&lt;p>• Locate and accurately estimate the poses of &amp;ldquo;victims,&amp;rdquo;
represented by AprilTags, to simulate the identification
and location of individuals in need of rescue.&lt;/p>
&lt;h2 id="method">Method&lt;/h2>
&lt;p>&lt;strong>Frontier Detection1 (background):&lt;/strong> ​&lt;/p>
&lt;p>Detection of new frontier cells (and erase old ones). ​&lt;/p>
&lt;p>Form frontiers from frontier cells. ​&lt;/p>
&lt;p>​&lt;/p>
&lt;p>&lt;strong>Compute Exploration Goal2,3 (service request):​&lt;/strong>&lt;/p>
&lt;p>Sample free points around each frontier&amp;rsquo;s centroid.​&lt;/p>
&lt;p>Compute gain for each point (optimizes yaw)​&lt;/p>
&lt;p>Return highest gain pose as exploration goal.&lt;/p>
&lt;h2 id="videos">Videos&lt;/h2>
&lt;p>&lt;strong>Demo Video Trial 1&lt;/strong>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/DVYWCJb7myw?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;/p>
&lt;p>&lt;strong>Demo Video Trial 2&lt;/strong>
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/SJKM50UK9RU?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="Final Output" srcset="
/resume-website/teaching/search-and-rescue-system-turtlebot/featured_hu5838896569951734178.webp 400w,
/resume-website/teaching/search-and-rescue-system-turtlebot/featured_hu11196183150776380623.webp 760w,
/resume-website/teaching/search-and-rescue-system-turtlebot/featured_hu4949823078138203077.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/search-and-rescue-system-turtlebot/featured_hu5838896569951734178.webp"
width="760"
height="523"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Final Map and Tag Location&lt;/it>
&lt;p>&lt;strong>Read more about it on  &lt;a href="2404.13767v1.pdf">!Report&lt;/a>&lt;/strong>&lt;/p></description></item><item><title>Loam-Series Evaluation</title><link>https://rahil-bhowal007.github.io/resume-website/teaching/loam-series-lidar-slam-evaluation-a-comparative-analysis/</link><pubDate>Fri, 24 Nov 2023 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/teaching/loam-series-lidar-slam-evaluation-a-comparative-analysis/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>In this project, we systematically examined and compared various algorithms within the LOAM series,
specifically ALOAM, LEGO-LOAM, and SC-LEGO-LOAM. Our primary focus was on meticulously analyzing the developmental
trajectory from a singular lidar odometry approach (the original LOAM) to the comprehensive SLAM systems, namely Lego-
LOAM and SC-LEGO-LOAM. This comprehensive analysis involved intricate comparisons between algorithms, elucidation
of improvements made, and in-depth assessments. Ultimately, we conducted thorough testing and comparison of these three
algorithms on two extensive long-distance datasets&lt;/p>
&lt;h2 id="evaluation-and-metrics">Evaluation and Metrics&lt;/h2>
&lt;p>&lt;strong>Table 1: ATE of LeGO-LOAM and SC-LeGO-LOAM in Kaist sequence&lt;/strong>
{{&amp;lt; math &amp;gt;}}
&lt;/p>
$$
\begin{array}{|l|c|c|}
\hline
\textbf{Metric} &amp; \textbf{SC-LeGO-LOAM (\%)} &amp; \textbf{LeGO-LOAM (\%)} \\ \hline
\text{max} &amp; 1.60 &amp; 2.55 \\ \hline
\text{mean} &amp; 0.84 &amp; 1.03 \\ \hline
\text{median} &amp; 0.82 &amp; 1.01 \\ \hline
\text{min} &amp; 0.08 &amp; 1.35 \\ \hline
\text{rmse} &amp; 0.90 &amp; 1.13 \\ \hline
\end{array}
$$&lt;p>
{{&amp;lt; math &amp;gt;}}&lt;/p>
&lt;p>&lt;strong>Table 2: ATE of LeGO-LOAM and SC-LeGO-LOAM in Riverside sequence&lt;/strong>
{{&amp;lt; math &amp;gt;}}
&lt;/p>
$$
\begin{array}{|l|c|c|}
\hline
\textbf{Metric} &amp; \textbf{SC-LeGO-LOAM (\%)} &amp; \textbf{LeGO-LOAM (\%)} \\ \hline
\text{max} &amp; 2.89 &amp; 8.55 \\ \hline
\text{mean} &amp; 1.35 &amp; 2.82 \\ \hline
\text{median} &amp; 1.36 &amp; 3.34 \\ \hline
\text{min} &amp; 0.20 &amp; 0.27 \\ \hline
\text{rmse} &amp; 1.46 &amp; 3.34 \\ \hline
\end{array}
$$&lt;p>
{{&amp;lt; math &amp;gt;}}
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://github.com/rahil-bhowal007/LOAM-SERIES/assets/65888130/29b68ae0-8bc3-4e0c-ba96-7ac997c3e8a0" alt="RIVERSIDE03" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it> Fig 1. Point Cloud Comparison on RIVERSIDE 03 Dataset &lt;/it>
&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://github.com/rahil-bhowal007/LOAM-SERIES/assets/65888130/85627c42-4458-417a-80fc-0358b5816f09" alt="KAIST 01 " loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Fig 2. Point Cloud Comparison on KAIST 01 Dataset&lt;/it>
&lt;/p>
The mapping results of three algorithms on the Kaist dataset
are illustrated in Figure 1 and Figure 2.
&lt;br/>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://github.com/rahil-bhowal007/LOAM-SERIES/assets/65888130/722af654-f017-4750-ac2d-bf487ee78049" alt="loam_r" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Fig 3. LOAM on RIVERSIDE Dataset&lt;/it>
&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://github.com/rahil-bhowal007/LOAM-SERIES/assets/65888130/cdb7b46f-955d-4133-a3d5-6392c195d703" alt="legoloam_r(1)" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Fig 4. LeGO-LOAM on RIVERSIDE Dataset&lt;/it>
&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://github.com/rahil-bhowal007/LOAM-SERIES/assets/65888130/dcb8988a-5100-4975-b179-f6cc25bdec66" alt="sclegoloam_r" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Fig 5. SC-LeGO-LOAM on RIVERSIDE Dataset&lt;/it>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img alt="TEST_IMAGE" srcset="
/resume-website/teaching/loam-series-lidar-slam-evaluation-a-comparative-analysis/featured_hu9719453656092614732.webp 400w,
/resume-website/teaching/loam-series-lidar-slam-evaluation-a-comparative-analysis/featured_hu3053301595755297694.webp 760w,
/resume-website/teaching/loam-series-lidar-slam-evaluation-a-comparative-analysis/featured_hu7524018204261152415.webp 1200w"
src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/loam-series-lidar-slam-evaluation-a-comparative-analysis/featured_hu9719453656092614732.webp"
width="760"
height="428"
loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p align="center">
&lt;it>Fig 5. SC-LeGO-LOAM on RIVERSIDE Dataset&lt;/it>
&lt;h2 id="output">Output&lt;/h2>
&lt;p>&lt;strong>Map&lt;/strong>
Here are the map formed by the LOAM Algorithm on the MulRAN Dataset(KAIST track):
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Ytw8goT86MY?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"
>&lt;/iframe>
&lt;/div>
&lt;/p>
&lt;h2 id="more-videos-will-be-added-soon">MORE VIDEOS WILL BE ADDED SOON&lt;/h2>
&lt;h2 id="did-you-find-this-page-helpful-consider-sharing-it-">Did you find this page helpful? Consider sharing it 🙌&lt;/h2></description></item><item><title>Autonomous Underwater Vehicle</title><link>https://rahil-bhowal007.github.io/resume-website/teaching/autonomous-underwater-vehicle--srmauv/</link><pubDate>Sun, 24 Nov 2019 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/teaching/autonomous-underwater-vehicle--srmauv/</guid><description>&lt;h2 id="introduction">Introduction&lt;/h2>
&lt;p>A student run team made AUV during undergrad. This project is made with collaboration over 16 members across Software Domain, Electronics, Mechanical and Corporate. I later had the chance to lead the team.&lt;/p>
&lt;h2 id="video">Video&lt;/h2>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="https://drive.google.com/file/d/1h5URiP_XApL0iLXjrNyg96h2IyTQEUjg/view?usp=sharing" alt="srmauv" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;video controls >
&lt;source src="https://rahil-bhowal007.github.io/resume-website/resume-website/teaching/autonomous-underwater-vehicle--srmauv/SAUVC-IN-21%20SRMAUV.mp4" type="video/mp4">
&lt;/video></description></item></channel></rss>