<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rahil Bhowal</title><link>https://rahil-bhowal007.github.io/resume-website/</link><atom:link href="https://rahil-bhowal007.github.io/resume-website/index.xml" rel="self" type="application/rss+xml"/><description>Rahil Bhowal</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 24 Oct 2022 00:00:00 +0000</lastBuildDate><image><url>https://rahil-bhowal007.github.io/resume-website/media/icon_hu7729264130191091259.png</url><title>Rahil Bhowal</title><link>https://rahil-bhowal007.github.io/resume-website/</link></image><item><title>Example Talk</title><link>https://rahil-bhowal007.github.io/resume-website/event/example/</link><pubDate>Sat, 01 Jun 2030 13:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/event/example/</guid><description>&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900">
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300">
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/>&lt;/svg>
&lt;/span>
&lt;span class="dark:text-neutral-300">Click on the &lt;strong>Slides&lt;/strong> button above to view the built-in slides feature.&lt;/span>
&lt;/div>
&lt;p>Slides can be added in a few ways:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Create&lt;/strong> slides using Hugo Blox Builder&amp;rsquo;s &lt;a href="https://docs.hugoblox.com/reference/content-types/" target="_blank" rel="noopener">&lt;em>Slides&lt;/em>&lt;/a> feature and link using &lt;code>slides&lt;/code> parameter in the front matter of the talk file&lt;/li>
&lt;li>&lt;strong>Upload&lt;/strong> an existing slide deck to &lt;code>static/&lt;/code> and link using &lt;code>url_slides&lt;/code> parameter in the front matter of the talk file&lt;/li>
&lt;li>&lt;strong>Embed&lt;/strong> your slides (e.g. Google Slides) or presentation video on this page using &lt;a href="https://docs.hugoblox.com/reference/markdown/" target="_blank" rel="noopener">shortcodes&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>Further event details, including &lt;a href="https://docs.hugoblox.com/reference/markdown/" target="_blank" rel="noopener">page elements&lt;/a> such as image galleries, can be added to the body of this page.&lt;/p></description></item><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>Projects</title><link>https://rahil-bhowal007.github.io/resume-website/projects/</link><pubDate>Sun, 19 May 2024 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/projects/</guid><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>Autonomous Robot for Disaster Mapping and Victim Localization</title><link>https://rahil-bhowal007.github.io/resume-website/publication/potter-autonomous-2024/</link><pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/publication/potter-autonomous-2024/</guid><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>🎉 Easily create your own simple yet highly customizable blog</title><link>https://rahil-bhowal007.github.io/resume-website/post/get-started/</link><pubDate>Fri, 27 Oct 2023 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/post/get-started/</guid><description>&lt;p>Welcome 👋&lt;/p>
&lt;details class="print:hidden xl:hidden" open>
&lt;summary>Table of Contents&lt;/summary>
&lt;div class="text-sm">
&lt;nav id="TableOfContents">
&lt;ul>
&lt;li>&lt;a href="#overview">Overview&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#get-started">Get Started&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#crowd-funded-open-source-software">Crowd-funded open-source software&lt;/a>
&lt;ul>
&lt;li>&lt;a href="#-click-here-to-become-a-sponsor-and-help-support-hugo-bloxs-future-httpshugobloxcomsponsor">&lt;a href="https://hugoblox.com/sponsor/">❤️ Click here to become a sponsor and help support Hugo Blox&amp;rsquo;s future ❤️&lt;/a>&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;a href="#ecosystem">Ecosystem&lt;/a>&lt;/li>
&lt;li>&lt;a href="#inspiration">Inspiration&lt;/a>&lt;/li>
&lt;li>&lt;a href="#features">Features&lt;/a>&lt;/li>
&lt;li>&lt;a href="#themes">Themes&lt;/a>&lt;/li>
&lt;li>&lt;a href="#license">License&lt;/a>&lt;/li>
&lt;/ul>
&lt;/nav>
&lt;/div>
&lt;/details>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;ol>
&lt;li>The Hugo Blox website builder for Hugo, along with its starter templates, is designed for professional creators, educators, and teams/organizations - although it can be used to create any kind of site&lt;/li>
&lt;li>The template can be modified and customised to suit your needs. It&amp;rsquo;s a good platform for anyone looking to take control of their data and online identity whilst having the convenience to start off with a &lt;strong>no-code solution (write in Markdown and customize with YAML parameters)&lt;/strong> and having &lt;strong>flexibility to later add even deeper personalization with HTML and CSS&lt;/strong>&lt;/li>
&lt;li>You can work with all your favourite tools and apps with hundreds of plugins and integrations to speed up your workflows, interact with your readers, and much more&lt;/li>
&lt;/ol>
&lt;h3 id="get-started">Get Started&lt;/h3>
&lt;ul>
&lt;li>👉 &lt;a href="https://hugoblox.com/templates/" target="_blank" rel="noopener">&lt;strong>Create a new site&lt;/strong>&lt;/a>&lt;/li>
&lt;li>📚 &lt;a href="https://docs.hugoblox.com/" target="_blank" rel="noopener">&lt;strong>Personalize your site&lt;/strong>&lt;/a>&lt;/li>
&lt;li>💬 &lt;a href="https://discord.gg/z8wNYzb" target="_blank" rel="noopener">Chat with the &lt;strong>Hugo Blox community&lt;/strong>&lt;/a> or &lt;a href="https://discourse.gohugo.io" target="_blank" rel="noopener">&lt;strong>Hugo community&lt;/strong>&lt;/a>&lt;/li>
&lt;li>🐦 Twitter: &lt;a href="https://twitter.com/GetResearchDev" target="_blank" rel="noopener">@GetResearchDev&lt;/a> &lt;a href="https://twitter.com/GeorgeCushen" target="_blank" rel="noopener">@GeorgeCushen&lt;/a> #MadeWithHugoBlox&lt;/li>
&lt;li>💡 &lt;a href="https://github.com/HugoBlox/hugo-blox-builder/issues" target="_blank" rel="noopener">Request a &lt;strong>feature&lt;/strong> or report a &lt;strong>bug&lt;/strong> for &lt;em>Hugo Blox&lt;/em>&lt;/a>&lt;/li>
&lt;li>⬆️ &lt;strong>Updating Hugo Blox?&lt;/strong> View the &lt;a href="https://docs.hugoblox.com/reference/update/" target="_blank" rel="noopener">Update Guide&lt;/a> and &lt;a href="https://github.com/HugoBlox/hugo-blox-builder/releases" target="_blank" rel="noopener">Release Notes&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="crowd-funded-open-source-software">Crowd-funded open-source software&lt;/h2>
&lt;p>To help us develop this template and software sustainably under the MIT license, we ask all individuals and businesses that use it to help support its ongoing maintenance and development via sponsorship.&lt;/p>
&lt;h3 id="-click-here-to-become-a-sponsor-and-help-support-hugo-bloxs-future-httpshugobloxcomsponsor">&lt;a href="https://hugoblox.com/sponsor/" target="_blank" rel="noopener">❤️ Click here to become a sponsor and help support Hugo Blox&amp;rsquo;s future ❤️&lt;/a>&lt;/h3>
&lt;p>As a token of appreciation for sponsoring, you can &lt;strong>unlock &lt;a href="https://hugoblox.com/sponsor/" target="_blank" rel="noopener">these&lt;/a> awesome rewards and extra features 🦄✨&lt;/strong>&lt;/p>
&lt;h2 id="ecosystem">Ecosystem&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>&lt;a href="https://github.com/GetRD/academic-file-converter" target="_blank" rel="noopener">Bibtex To Markdown&lt;/a>:&lt;/strong> Automatically import publications from BibTeX&lt;/li>
&lt;/ul>
&lt;h2 id="inspiration">Inspiration&lt;/h2>
&lt;p>&lt;a href="https://hugoblox.com/creators/" target="_blank" rel="noopener">Learn what other &lt;strong>creators&lt;/strong>&lt;/a> are building with this template.&lt;/p>
&lt;h2 id="features">Features&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Page builder&lt;/strong> - Create &lt;em>anything&lt;/em> with no-code &lt;a href="https://hugoblox.com/blocks/" target="_blank" rel="noopener">&lt;strong>blocks&lt;/strong>&lt;/a> and &lt;a href="https://docs.hugoblox.com/reference/markdown/" target="_blank" rel="noopener">&lt;strong>elements&lt;/strong>&lt;/a>&lt;/li>
&lt;li>&lt;strong>Edit any type of content&lt;/strong> - Blog posts, publications, talks, slides, projects, and more!&lt;/li>
&lt;li>&lt;strong>Create content&lt;/strong> in &lt;a href="https://docs.hugoblox.com/reference/markdown/" target="_blank" rel="noopener">&lt;strong>Markdown&lt;/strong>&lt;/a>, &lt;a href="https://docs.hugoblox.com/getting-started/cms/" target="_blank" rel="noopener">&lt;strong>Jupyter&lt;/strong>&lt;/a>, or &lt;a href="https://docs.hugoblox.com/getting-started/cms/" target="_blank" rel="noopener">&lt;strong>RStudio&lt;/strong>&lt;/a>&lt;/li>
&lt;li>&lt;strong>Plugin System&lt;/strong> - Fully customizable &lt;a href="https://docs.hugoblox.com/getting-started/customize/" target="_blank" rel="noopener">&lt;strong>color&lt;/strong> and &lt;strong>font themes&lt;/strong>&lt;/a>&lt;/li>
&lt;li>&lt;strong>Display Code and Math&lt;/strong> - Code syntax highlighting and LaTeX math supported&lt;/li>
&lt;li>&lt;strong>Integrations&lt;/strong> - &lt;a href="https://analytics.google.com" target="_blank" rel="noopener">Google Analytics&lt;/a>, &lt;a href="https://disqus.com" target="_blank" rel="noopener">Disqus commenting&lt;/a>, Maps, Contact Forms, and more!&lt;/li>
&lt;li>&lt;strong>Beautiful Site&lt;/strong> - Simple and refreshing one-page design&lt;/li>
&lt;li>&lt;strong>Industry-Leading SEO&lt;/strong> - Help get your website found on search engines and social media&lt;/li>
&lt;li>&lt;strong>Media Galleries&lt;/strong> - Display your images and videos with captions in a customizable gallery&lt;/li>
&lt;li>&lt;strong>Mobile Friendly&lt;/strong> - Look amazing on every screen with a mobile friendly version of your site&lt;/li>
&lt;li>&lt;strong>Multi-language&lt;/strong> - 35+ language packs including English, 中文, and Português&lt;/li>
&lt;li>&lt;strong>Multi-user&lt;/strong> - Each author gets their own profile page&lt;/li>
&lt;li>&lt;strong>Privacy Pack&lt;/strong> - Assists with GDPR&lt;/li>
&lt;li>&lt;strong>Stand Out&lt;/strong> - Bring your site to life with animation, parallax backgrounds, and scroll effects&lt;/li>
&lt;li>&lt;strong>One-Click Deployment&lt;/strong> - No servers. No databases. Only files.&lt;/li>
&lt;/ul>
&lt;h2 id="themes">Themes&lt;/h2>
&lt;p>Hugo Blox and its templates come with &lt;strong>automatic day (light) and night (dark) mode&lt;/strong> built-in. Visitors can choose their preferred mode by clicking the sun/moon icon in the header.&lt;/p>
&lt;p>&lt;a href="https://docs.hugoblox.com/getting-started/customize/" target="_blank" rel="noopener">Choose a stunning &lt;strong>theme&lt;/strong> and &lt;strong>font&lt;/strong>&lt;/a> for your site. Themes are fully customizable.&lt;/p>
&lt;h2 id="license">License&lt;/h2>
&lt;p>Copyright 2016-present &lt;a href="https://georgecushen.com" target="_blank" rel="noopener">George Cushen&lt;/a>.&lt;/p>
&lt;p>Released under the &lt;a href="https://github.com/HugoBlox/hugo-blox-builder/blob/main/LICENSE.md" target="_blank" rel="noopener">MIT&lt;/a> license.&lt;/p></description></item><item><title>🧠 Sharpen your thinking with a second brain</title><link>https://rahil-bhowal007.github.io/resume-website/post/second-brain/</link><pubDate>Thu, 26 Oct 2023 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/post/second-brain/</guid><description>&lt;p>Create a personal knowledge base and share your knowledge with your peers.&lt;/p>
&lt;p>Hugo Blox web framework empowers you with one of the most flexible note-taking capabilities out there.&lt;/p>
&lt;p>Create a powerful knowledge base that works on top of a local folder of plain text Markdown files.&lt;/p>
&lt;p>Use it as your second brain, either publicly sharing your knowledge with your peers via your website, or via a private GitHub repository and password-protected site just for yourself.&lt;/p>
&lt;h2 id="mindmaps">Mindmaps&lt;/h2>
&lt;p>Hugo Blox supports a Markdown extension for mindmaps.&lt;/p>
&lt;p>With this open format, can even edit your mindmaps in other popular tools such as Obsidian.&lt;/p>
&lt;p>Simply insert a Markdown code block labelled as &lt;code>markmap&lt;/code> and optionally set the height of the mindmap as shown in the example below.&lt;/p>
&lt;p>Mindmaps can be created by simply writing the items as a Markdown list within the &lt;code>markmap&lt;/code> code block, indenting each item to create as many sub-levels as you need:&lt;/p>
&lt;div class="highlight">
&lt;pre class="chroma">
&lt;code>
```markmap {height="200px"}
- Hugo Modules
- Hugo Blox
- blox-plugins-netlify
- blox-plugins-netlify-cms
- blox-plugins-reveal
```
&lt;/code>
&lt;/pre>
&lt;/div>
&lt;p>renders as&lt;/p>
&lt;div class="markmap" style="height: 200px;">
&lt;pre>- Hugo Modules
- Hugo Blox
- blox-plugins-netlify
- blox-plugins-netlify-cms
- blox-plugins-reveal&lt;/pre>
&lt;/div>
&lt;p>Anh here&amp;rsquo;s a more advanced mindmap with formatting, code blocks, and math:&lt;/p>
&lt;div class="highlight">
&lt;pre class="chroma">
&lt;code>
```markmap
- Mindmaps
- Links
- [Hugo Blox Docs](https://docs.hugoblox.com/)
- [Discord Community](https://discord.gg/z8wNYzb)
- [GitHub](https://github.com/HugoBlox/hugo-blox-builder)
- Features
- Markdown formatting
- **inline** ~~text~~ *styles*
- multiline
text
- `inline code`
-
```js
console.log('hello');
console.log('code block');
```
- Math: $x = {-b \pm \sqrt{b^2-4ac} \over 2a}$
```
&lt;/code>
&lt;/pre>
&lt;/div>
&lt;p>renders as&lt;/p>
&lt;div class="markmap" style="height: 500px;">
&lt;pre>- Mindmaps
- Links
- [Hugo Blox Docs](https://docs.hugoblox.com/)
- [Discord Community](https://discord.gg/z8wNYzb)
- [GitHub](https://github.com/HugoBlox/hugo-blox-builder)
- Features
- Markdown formatting
- **inline** ~~text~~ *styles*
- multiline
text
- `inline code`
-
```js
console.log('hello');
console.log('code block');
```
- Math: $x = {-b \pm \sqrt{b^2-4ac} \over 2a}$&lt;/pre>
&lt;/div>
&lt;h2 id="highlighting">Highlighting&lt;/h2>
&lt;p>&lt;mark>Highlight&lt;/mark> important text with &lt;code>mark&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">mark&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>Highlighted text&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">mark&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="callouts">Callouts&lt;/h2>
&lt;p>Use &lt;a href="https://docs.hugoblox.com/reference/markdown/#callouts" target="_blank" rel="noopener">callouts&lt;/a> (aka &lt;em>asides&lt;/em>, &lt;em>hints&lt;/em>, or &lt;em>alerts&lt;/em>) to draw attention to notes, tips, and warnings.&lt;/p>
&lt;p>By wrapping a paragraph in &lt;code>{{% callout note %}} ... {{% /callout %}}&lt;/code>, it will render as an aside.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">{{% callout note %}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">A Markdown aside is useful for displaying notices, hints, or definitions to your readers.
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{% /callout %}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-primary-100 dark:bg-primary-900">
&lt;span class="pr-3 pt-1 text-primary-600 dark:text-primary-300">
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m11.25 11.25l.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0a9 9 0 0 1 18 0m-9-3.75h.008v.008H12z"/>&lt;/svg>
&lt;/span>
&lt;span class="dark:text-neutral-300">A Markdown aside is useful for displaying notices, hints, or definitions to your readers.&lt;/span>
&lt;/div>
&lt;p>Or use the &lt;code>warning&lt;/code> callout type so your readers don&amp;rsquo;t miss critical details:&lt;/p>
&lt;div class="flex px-4 py-3 mb-6 rounded-md bg-yellow-100 dark:bg-yellow-900">
&lt;span class="pr-3 pt-1 text-red-400">
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0zM12 15.75h.007v.008H12z"/>&lt;/svg>
&lt;/span>
&lt;span class="dark:text-neutral-300">A Markdown aside is useful for displaying notices, hints, or definitions to your readers.&lt;/span>
&lt;/div>
&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>📈 Communicate your results effectively with the best data visualizations</title><link>https://rahil-bhowal007.github.io/resume-website/post/data-visualization/</link><pubDate>Wed, 25 Oct 2023 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/post/data-visualization/</guid><description>&lt;p>Hugo Blox is designed to give technical content creators a seamless experience. You can focus on the content and Hugo Blox handles the rest.&lt;/p>
&lt;p>Use popular tools such as Plotly, Mermaid, and data frames.&lt;/p>
&lt;h2 id="charts">Charts&lt;/h2>
&lt;p>Hugo Blox supports the popular &lt;a href="https://plot.ly/" target="_blank" rel="noopener">Plotly&lt;/a> format for interactive data visualizations. With Plotly, you can design almost any kind of visualization you can imagine!&lt;/p>
&lt;p>Save your Plotly JSON in your page folder, for example &lt;code>line-chart.json&lt;/code>, and then add the &lt;code>{{&amp;lt; chart data=&amp;quot;line-chart&amp;quot; &amp;gt;}}&lt;/code> shortcode where you would like the chart to appear.&lt;/p>
&lt;p>Demo:&lt;/p>
&lt;div id="chart-578693412" class="chart">&lt;/div>
&lt;script>
async function fetchChartJSON() {
console.debug('Hugo Blox fetching chart JSON...')
const response = await fetch('.\/line-chart.json');
return await response.json();
}
(function() {
let a = setInterval( function() {
if ( typeof window.Plotly === 'undefined' ) {
console.debug('Plotly not loaded yet...')
return;
}
clearInterval( a );
fetchChartJSON().then(chart => {
console.debug('Plotting chart...')
window.Plotly.newPlot('chart-578693412', chart.data, chart.layout, {responsive: true});
});
}, 500 );
})();
&lt;/script>
&lt;p>You might also find the &lt;a href="http://plotly-json-editor.getforge.io/" target="_blank" rel="noopener">Plotly JSON Editor&lt;/a> useful.&lt;/p>
&lt;h2 id="diagrams">Diagrams&lt;/h2>
&lt;p>Hugo Blox supports the &lt;em>Mermaid&lt;/em> Markdown extension for diagrams.&lt;/p>
&lt;p>An example &lt;strong>flowchart&lt;/strong>:&lt;/p>
&lt;pre>&lt;code>```mermaid
graph TD
A[Hard] --&amp;gt;|Text| B(Round)
B --&amp;gt; C{Decision}
C --&amp;gt;|One| D[Result 1]
C --&amp;gt;|Two| E[Result 2]
```
&lt;/code>&lt;/pre>
&lt;p>renders as&lt;/p>
&lt;div class="mermaid">graph TD
A[Hard] -->|Text| B(Round)
B --> C{Decision}
C -->|One| D[Result 1]
C -->|Two| E[Result 2]
&lt;/div>
&lt;p>An example &lt;strong>sequence diagram&lt;/strong>:&lt;/p>
&lt;pre>&lt;code>```mermaid
sequenceDiagram
Alice-&amp;gt;&amp;gt;John: Hello John, how are you?
loop Healthcheck
John-&amp;gt;&amp;gt;John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John--&amp;gt;&amp;gt;Alice: Great!
John-&amp;gt;&amp;gt;Bob: How about you?
Bob--&amp;gt;&amp;gt;John: Jolly good!
```
&lt;/code>&lt;/pre>
&lt;p>renders as&lt;/p>
&lt;div class="mermaid">sequenceDiagram
Alice->>John: Hello John, how are you?
loop Healthcheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
&lt;/div>
&lt;p>An example &lt;strong>class diagram&lt;/strong>:&lt;/p>
&lt;pre>&lt;code>```mermaid
classDiagram
Class01 &amp;lt;|-- AveryLongClass : Cool
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 --&amp;gt; C2 : Where am i?
Class09 --* C3
Class09 --|&amp;gt; Class07
Class07 : equals()
Class07 : Object[] elementData
Class01 : size()
Class01 : int chimp
Class01 : int gorilla
Class08 &amp;lt;--&amp;gt; C2: Cool label
```
&lt;/code>&lt;/pre>
&lt;p>renders as&lt;/p>
&lt;div class="mermaid">classDiagram
Class01 &lt;|-- AveryLongClass : Cool
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 --> C2 : Where am i?
Class09 --* C3
Class09 --|> Class07
Class07 : equals()
Class07 : Object[] elementData
Class01 : size()
Class01 : int chimp
Class01 : int gorilla
Class08 &lt;--> C2: Cool label
&lt;/div>
&lt;p>An example &lt;strong>state diagram&lt;/strong>:&lt;/p>
&lt;pre>&lt;code>```mermaid
stateDiagram
[*] --&amp;gt; Still
Still --&amp;gt; [*]
Still --&amp;gt; Moving
Moving --&amp;gt; Still
Moving --&amp;gt; Crash
Crash --&amp;gt; [*]
```
&lt;/code>&lt;/pre>
&lt;p>renders as&lt;/p>
&lt;div class="mermaid">stateDiagram
[*] --> Still
Still --> [*]
Still --> Moving
Moving --> Still
Moving --> Crash
Crash --> [*]
&lt;/div>
&lt;h2 id="data-frames">Data Frames&lt;/h2>
&lt;p>Save your spreadsheet as a CSV file in your page&amp;rsquo;s folder and then render it by adding the &lt;em>Table&lt;/em> shortcode to your page:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&amp;lt;&lt;/span> &lt;span class="nx">table&lt;/span> &lt;span class="nx">path&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s">&amp;#34;results.csv&amp;#34;&lt;/span> &lt;span class="nx">header&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s">&amp;#34;true&amp;#34;&lt;/span> &lt;span class="nx">caption&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s">&amp;#34;Table 1: My results&amp;#34;&lt;/span> &lt;span class="p">&amp;gt;}}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
&lt;table class="table-auto w-full">
&lt;thead>
&lt;tr> &lt;th class="border-b dark:border-slate-600 font-medium p-4 pt-0 pb-3 text-slate-400 dark:text-slate-200 text-left">customer_id&lt;/th> &lt;th class="border-b dark:border-slate-600 font-medium p-4 pt-0 pb-3 text-slate-400 dark:text-slate-200 text-left">score&lt;/th> &lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td data-table-dtype="number" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400">1&lt;/td>
&lt;td data-table-dtype="number" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400">0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="number" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400">2&lt;/td>
&lt;td data-table-dtype="text" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400">0.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td data-table-dtype="number" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400">3&lt;/td>
&lt;td data-table-dtype="number" class="border-b border-slate-100 dark:border-slate-700 p-4 text-slate-500 dark:text-slate-400">1&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;caption class="table-caption">Table 1: My results&lt;/caption>
&lt;/table>
&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>👩🏼‍🏫 Teach academic courses</title><link>https://rahil-bhowal007.github.io/resume-website/post/teach-courses/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/post/teach-courses/</guid><description>&lt;p>&lt;a href="https://hugoblox.com" target="_blank" rel="noopener">Hugo Blox Builder&lt;/a> is designed to give technical content creators a seamless experience. You can focus on the content and the Hugo Blox Builder which this template is built upon handles the rest.&lt;/p>
&lt;p>&lt;strong>Embed videos, podcasts, code, LaTeX math, and even test students!&lt;/strong>&lt;/p>
&lt;p>On this page, you&amp;rsquo;ll find some examples of the types of technical content that can be rendered with Hugo Blox.&lt;/p>
&lt;h2 id="video">Video&lt;/h2>
&lt;p>Teach your course by sharing videos with your students. Choose from one of the following approaches:&lt;/p>
&lt;p>&lt;strong>Youtube&lt;/strong>:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; youtube D2vj0WcvH5c &amp;gt;}}
&lt;/code>&lt;/pre>
&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/D2vj0WcvH5c?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>Bilibili&lt;/strong>:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; bilibili BV1WV4y1r7DF &amp;gt;}}
&lt;/code>&lt;/pre>
&lt;div class="w-full h-auto aspect-video relative">
&lt;iframe src="//player.bilibili.com/player.html?bvid=BV1WV4y1r7DF&amp;page=1"
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; fullscreen; picture-in-picture;"
class="w-full h-full"
>&lt;/iframe>
&lt;/div>
&lt;p>&lt;strong>Video file&lt;/strong>&lt;/p>
&lt;p>Videos may be added to a page by either placing them in your &lt;code>assets/media/&lt;/code> media library or in your &lt;a href="https://gohugo.io/content-management/page-bundles/" target="_blank" rel="noopener">page&amp;rsquo;s folder&lt;/a>, and then embedding them with the &lt;em>video&lt;/em> shortcode:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; video src=&amp;quot;my_video.mp4&amp;quot; controls=&amp;quot;yes&amp;quot; &amp;gt;}}
&lt;/code>&lt;/pre>
&lt;h2 id="podcast">Podcast&lt;/h2>
&lt;p>You can add a podcast or music to a page by placing the MP3 file in the page&amp;rsquo;s folder or the media library folder and then embedding the audio on your page with the &lt;em>audio&lt;/em> shortcode:&lt;/p>
&lt;pre>&lt;code>{{&amp;lt; audio src=&amp;quot;ambient-piano.mp3&amp;quot; &amp;gt;}}
&lt;/code>&lt;/pre>
&lt;p>Try it out:&lt;/p>
&lt;audio controls >
&lt;source src="https://rahil-bhowal007.github.io/resume-website/resume-website/post/teach-courses/ambient-piano.mp3" type="audio/mpeg">
&lt;/audio>
&lt;h2 id="test-students">Test students&lt;/h2>
&lt;p>Provide a simple yet fun self-assessment by revealing the solutions to challenges with the &lt;code>spoiler&lt;/code> shortcode:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;&lt;/span> &lt;span class="nt">spoiler&lt;/span> &lt;span class="na">text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;👉 Click to view the solution&amp;#34;&lt;/span> &lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">You found me!
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{&lt;span class="p">&amp;lt;&lt;/span> &lt;span class="p">/&lt;/span>&lt;span class="nt">spoiler&lt;/span> &lt;span class="p">&amp;gt;&lt;/span>}}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
&lt;details class="spoiler " id="spoiler-3">
&lt;summary class="cursor-pointer">👉 Click to view the solution&lt;/summary>
&lt;div class="rounded-lg bg-neutral-50 dark:bg-neutral-800 p-2">
You found me 🎉
&lt;/div>
&lt;/details>
&lt;h2 id="math">Math&lt;/h2>
&lt;p>Hugo Blox Builder supports a Markdown extension for $\LaTeX$ math. Enable math by setting the &lt;code>math: true&lt;/code> option in your page&amp;rsquo;s front matter, or enable math for your entire site by toggling math in your &lt;code>config/_default/params.yaml&lt;/code> file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="cl">&lt;span class="nt">features&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">math&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">enable&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="kc">true&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>To render &lt;em>inline&lt;/em> or &lt;em>block&lt;/em> math, wrap your LaTeX math with &lt;code>$...$&lt;/code> or &lt;code>$$...$$&lt;/code>, respectively.&lt;/p>
&lt;p>Example &lt;strong>math block&lt;/strong>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-latex" data-lang="latex">&lt;span class="line">&lt;span class="cl">&lt;span class="sb">$$&lt;/span>&lt;span class="nb">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">&lt;/span>&lt;span class="nv">\gamma&lt;/span>&lt;span class="nb">_{n} &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\frac&lt;/span>&lt;span class="nb">{ &lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> | &lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n} &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">} &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb">^T &lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">[&lt;/span>&lt;span class="nv">\nabla&lt;/span>&lt;span class="nb"> F &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\nabla&lt;/span>&lt;span class="nb"> F &lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb"> x_{n&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">]&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> |}{&lt;/span>&lt;span class="nv">\left&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\|\nabla&lt;/span>&lt;span class="nb"> F&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb">{x}_{n}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\nabla&lt;/span>&lt;span class="nb"> F&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nv">\mathbf&lt;/span>&lt;span class="nb">{x}_{n&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\right&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\|&lt;/span>&lt;span class="nb">^&lt;/span>&lt;span class="m">2&lt;/span>&lt;span class="nb">}
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">&lt;/span>&lt;span class="s">$$&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
$$\gamma_{n} = \frac{ \left | \left (\mathbf x_{n} - \mathbf x_{n-1} \right )^T \left [\nabla F (\mathbf x_{n}) - \nabla F (\mathbf x_{n-1}) \right ] \right |}{\left \|\nabla F(\mathbf{x}_{n}) - \nabla F(\mathbf{x}_{n-1}) \right \|^2}$$&lt;p>Example &lt;strong>inline math&lt;/strong> &lt;code>$\nabla F(\mathbf{x}_{n})$&lt;/code> renders as $\nabla F(\mathbf{x}_{n})$.&lt;/p>
&lt;p>Example &lt;strong>multi-line math&lt;/strong> using the math linebreak (&lt;code>\\&lt;/code>):&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-latex" data-lang="latex">&lt;span class="line">&lt;span class="cl">&lt;span class="sb">$$&lt;/span>&lt;span class="nb">f&lt;/span>&lt;span class="o">(&lt;/span>&lt;span class="nb">k;p_{&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">}^{&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="nb">}&lt;/span>&lt;span class="o">)&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="nb"> &lt;/span>&lt;span class="nv">\begin&lt;/span>&lt;span class="nb">{cases}p_{&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">}^{&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="nb">} &amp;amp; &lt;/span>&lt;span class="nv">\text&lt;/span>&lt;span class="nb">{if }k&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="nb">, &lt;/span>&lt;span class="nv">\\&lt;/span>&lt;span class="nb">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">&lt;/span>&lt;span class="m">1&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="nb">p_{&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">}^{&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="nb">} &amp;amp; &lt;/span>&lt;span class="nv">\text&lt;/span>&lt;span class="nb">{if }k&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="m">0&lt;/span>&lt;span class="nb">.&lt;/span>&lt;span class="nv">\end&lt;/span>&lt;span class="nb">{cases}&lt;/span>&lt;span class="s">$$&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
$$
f(k;p_{0}^{*}) = \begin{cases}p_{0}^{*} &amp; \text{if }k=1, \\
1-p_{0}^{*} &amp; \text{if }k=0.\end{cases}
$$&lt;h2 id="code">Code&lt;/h2>
&lt;p>Hugo Blox Builder utilises Hugo&amp;rsquo;s Markdown extension for highlighting code syntax. The code theme can be selected in the &lt;code>config/_default/params.yaml&lt;/code> file.&lt;/p>
&lt;pre>&lt;code>```python
import pandas as pd
data = pd.read_csv(&amp;quot;data.csv&amp;quot;)
data.head()
```
&lt;/code>&lt;/pre>
&lt;p>renders as&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">pandas&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">pd&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">data&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">pd&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">read_csv&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;data.csv&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">data&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">head&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="inline-images">Inline Images&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-go" data-lang="go">&lt;span class="line">&lt;span class="cl">&lt;span class="p">{{&amp;lt;&lt;/span> &lt;span class="nx">icon&lt;/span> &lt;span class="nx">name&lt;/span>&lt;span class="p">=&lt;/span>&lt;span class="s">&amp;#34;python&amp;#34;&lt;/span> &lt;span class="p">&amp;gt;}}&lt;/span> &lt;span class="nx">Python&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
&lt;p>
&lt;span class="inline-block pr-1">
&lt;svg style="height: 1em; transform: translateY(0.1em);" xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 448 512" fill="currentColor">&lt;path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"/>&lt;/svg>
&lt;/span> Python&lt;/p>
&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>Experience</title><link>https://rahil-bhowal007.github.io/resume-website/experience/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/experience/</guid><description/></item><item><title>✅ Manage your projects</title><link>https://rahil-bhowal007.github.io/resume-website/post/project-management/</link><pubDate>Mon, 23 Oct 2023 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/post/project-management/</guid><description>&lt;p>Easily manage your projects - create ideation mind maps, Gantt charts, todo lists, and more!&lt;/p>
&lt;h2 id="ideation">Ideation&lt;/h2>
&lt;p>Hugo Blox supports a Markdown extension for mindmaps.&lt;/p>
&lt;p>Simply insert a Markdown code block labelled as &lt;code>markmap&lt;/code> and optionally set the height of the mindmap as shown in the example below.&lt;/p>
&lt;p>Mindmaps can be created by simply writing the items as a Markdown list within the &lt;code>markmap&lt;/code> code block, indenting each item to create as many sub-levels as you need:&lt;/p>
&lt;div class="highlight">
&lt;pre class="chroma">
&lt;code>
```markmap {height="200px"}
- Hugo Modules
- Hugo Blox
- blox-plugins-netlify
- blox-plugins-netlify-cms
- blox-plugins-reveal
```
&lt;/code>
&lt;/pre>
&lt;/div>
&lt;p>renders as&lt;/p>
&lt;div class="markmap" style="height: 200px;">
&lt;pre>- Hugo Modules
- Hugo Blox
- blox-plugins-netlify
- blox-plugins-netlify-cms
- blox-plugins-reveal&lt;/pre>
&lt;/div>
&lt;h2 id="diagrams">Diagrams&lt;/h2>
&lt;p>Hugo Blox supports the &lt;em>Mermaid&lt;/em> Markdown extension for diagrams.&lt;/p>
&lt;p>An example &lt;strong>Gantt diagram&lt;/strong>:&lt;/p>
&lt;pre>&lt;code>```mermaid
gantt
section Section
Completed :done, des1, 2014-01-06,2014-01-08
Active :active, des2, 2014-01-07, 3d
Parallel 1 : des3, after des1, 1d
Parallel 2 : des4, after des1, 1d
Parallel 3 : des5, after des3, 1d
Parallel 4 : des6, after des4, 1d
```
&lt;/code>&lt;/pre>
&lt;p>renders as&lt;/p>
&lt;div class="mermaid">gantt
section Section
Completed :done, des1, 2014-01-06,2014-01-08
Active :active, des2, 2014-01-07, 3d
Parallel 1 : des3, after des1, 1d
Parallel 2 : des4, after des1, 1d
Parallel 3 : des5, after des3, 1d
Parallel 4 : des6, after des4, 1d
&lt;/div>
&lt;h2 id="todo-lists">Todo lists&lt;/h2>
&lt;p>You can even write your todo lists in Markdown too:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="cl">&lt;span class="k">- [x]&lt;/span> Write math example
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">- [x]&lt;/span> Write diagram example
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">- [ ]&lt;/span> Do something else
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>renders as&lt;/p>
&lt;ul>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Write math example
&lt;ul>
&lt;li>&lt;input checked="" disabled="" type="checkbox"> Write diagram example&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Do something else&lt;/li>
&lt;/ul>
&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>An overview of the design and development of a 6 dof remotely operated vehicle for underwater structural inspection</title><link>https://rahil-bhowal007.github.io/resume-website/publication/ray-overview-2021/</link><pubDate>Fri, 01 Jan 2021 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/publication/ray-overview-2021/</guid><description/></item><item><title>A Close Look at Software Design Aspects of Remotely Operated Vehicles—A Survey</title><link>https://rahil-bhowal007.github.io/resume-website/publication/ray-close-2020/</link><pubDate>Wed, 01 Jan 2020 00:00:00 +0000</pubDate><guid>https://rahil-bhowal007.github.io/resume-website/publication/ray-close-2020/</guid><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>