diff --git a/assets/img/karsttech_logo_cube.png b/assets/img/karsttech_logo_cube.png
new file mode 100644
index 0000000..23dd482
Binary files /dev/null and b/assets/img/karsttech_logo_cube.png differ
diff --git a/assets/img/karsttech_logo_horiz.png b/assets/img/karsttech_logo_horiz.png
new file mode 100644
index 0000000..99cd355
Binary files /dev/null and b/assets/img/karsttech_logo_horiz.png differ
diff --git a/assets/img/karsttech_logo_vert.png b/assets/img/karsttech_logo_vert.png
index 8854f06..4b43646 100644
Binary files a/assets/img/karsttech_logo_vert.png and b/assets/img/karsttech_logo_vert.png differ
diff --git a/config/_default/params.toml b/config/_default/params.toml
index 0812d98..07f21c7 100644
--- a/config/_default/params.toml
+++ b/config/_default/params.toml
@@ -21,8 +21,8 @@ fingerprintAlgorithm = "sha256"
[header]
layout = "basic" # valid options: basic, hamburger, hybrid, custom
- # logo = "img/logo.jpg"
- # logoDark = "img/dark-logo.jpg"
+ header.logo = "img/karsttech_logo_cube.png"
+ # logoDark = "img/karsttech_logo_cube.png"
showTitle = true
[footer]
@@ -49,8 +49,8 @@ fingerprintAlgorithm = "sha256"
showPagination = true
invertPagination = false
showReadingTime = true
- showTableOfContents = false
- showTaxonomies = false
+ showTableOfContents = true
+ showTaxonomies = true
showWordCount = false
showComments = false
# sharingLinks = ["facebook", "x-twitter", "mastodon", "pinterest", "reddit", "linkedin", "email", "threads", "telegram", "line", "weibo", "xing", "bluesky"]
@@ -58,7 +58,7 @@ fingerprintAlgorithm = "sha256"
[list]
showBreadcrumbs = false
showSummary = false
- showTableOfContents = false
+ showTableOfContents = true
showTaxonomies = false
groupByYear = true
paginationWidth = 1
diff --git a/content/_index.md b/content/_index.md
index ba89510..7cb9ed9 100644
--- a/content/_index.md
+++ b/content/_index.md
@@ -1,14 +1,14 @@
---
-title: "Welcome to KarstTech!"
+title: "Welcome!"
description: "KarstTech LLC is a company which provides Technical and Scientific Consulting and Data Science services."
---
-{{< lead >}}
-KarstTech LLC provides Technical and Scientific Consulting and Data Science services
-{{< /lead >}}
-
{{< figure src="img/karsttech_logo_vert.png" class="m-auto mt-6 max-w-prose" >}}
+{{< lead >}}
+KarstTech LLC provides Technical and Scientific Consulting services with a wide range of expertise.
+{{< /lead >}}
+
If you are here for *Business*, check out my professional [Projects]({{< ref "professional-projects" >}})
If you are here for *Pleasure*, head over to my [Blog]({{< ref "personal-blog" >}})
\ No newline at end of file
diff --git a/content/personal-blog/first-post/KarstTech_v2.1_Cube_Only_feature.png b/content/personal-blog/first-post/KarstTech_v2.1_Cube_Only_feature.png
deleted file mode 100644
index df83c65..0000000
Binary files a/content/personal-blog/first-post/KarstTech_v2.1_Cube_Only_feature.png and /dev/null differ
diff --git a/content/personal-blog/first-post/karsttech_logo_vert_feature.png b/content/personal-blog/first-post/karsttech_logo_vert_feature.png
new file mode 100644
index 0000000..4b43646
Binary files /dev/null and b/content/personal-blog/first-post/karsttech_logo_vert_feature.png differ
diff --git a/content/personal-blog/markdown-cheetsheet.md/index.md b/content/personal-blog/markdown-cheetsheet.md/index.md
index 2bbb201..b7eb29c 100644
--- a/content/personal-blog/markdown-cheetsheet.md/index.md
+++ b/content/personal-blog/markdown-cheetsheet.md/index.md
@@ -3,7 +3,7 @@ title = 'Markdown Cheatsheet'
date = 2025-02-27T07:15:18-05:00
draft = false
categories = ['references']
-tags = ['markdown']
+tags = ['hugo', 'markdown']
+++
{{< lead >}}
diff --git a/content/professional-projects/usm-magnetics/12 Pipe.png b/content/professional-projects/usm-magnetics/12 Pipe.png
deleted file mode 100644
index 4330016..0000000
Binary files a/content/professional-projects/usm-magnetics/12 Pipe.png and /dev/null differ
diff --git a/content/professional-projects/usm-magnetics/24 Pipe.png b/content/professional-projects/usm-magnetics/24 Pipe.png
new file mode 100644
index 0000000..18adf5f
Binary files /dev/null and b/content/professional-projects/usm-magnetics/24 Pipe.png differ
diff --git a/content/professional-projects/usm-magnetics/Ellipsoid Bx Contour 3D.gif b/content/professional-projects/usm-magnetics/Ellipsoid Bx Contour 3D.gif
new file mode 100644
index 0000000..5ede508
Binary files /dev/null and b/content/professional-projects/usm-magnetics/Ellipsoid Bx Contour 3D.gif differ
diff --git a/content/professional-projects/usm-magnetics/Map-of-the-geomagnetic-gradients-of-the-angle-of-inclination-a-b-and-declination-c.png b/content/professional-projects/usm-magnetics/Map-of-the-geomagnetic-gradients-of-the-angle-of-inclination-a-b-and-declination-c.png
new file mode 100644
index 0000000..45554d1
Binary files /dev/null and b/content/professional-projects/usm-magnetics/Map-of-the-geomagnetic-gradients-of-the-angle-of-inclination-a-b-and-declination-c.png differ
diff --git a/content/professional-projects/usm-magnetics/T7 Magnet Orientation Correction 3D.gif b/content/professional-projects/usm-magnetics/T7 Magnet Orientation Correction 3D.gif
new file mode 100644
index 0000000..ceebb39
Binary files /dev/null and b/content/professional-projects/usm-magnetics/T7 Magnet Orientation Correction 3D.gif differ
diff --git a/content/professional-projects/usm-magnetics/earth-geomag.webp b/content/professional-projects/usm-magnetics/earth-geomag.webp
new file mode 100644
index 0000000..ae6fe60
Binary files /dev/null and b/content/professional-projects/usm-magnetics/earth-geomag.webp differ
diff --git a/content/professional-projects/usm-magnetics/gulfport-geomag.png b/content/professional-projects/usm-magnetics/gulfport-geomag.png
new file mode 100644
index 0000000..2b4d423
Binary files /dev/null and b/content/professional-projects/usm-magnetics/gulfport-geomag.png differ
diff --git a/content/professional-projects/usm-magnetics/index.md b/content/professional-projects/usm-magnetics/index.md
index 3b894a7..407eb3d 100644
--- a/content/professional-projects/usm-magnetics/index.md
+++ b/content/professional-projects/usm-magnetics/index.md
@@ -6,9 +6,96 @@ categories = ['references']
tags = ['USM', 'magnetics', 'data science', 'KarstTech', 'UUV']
+++
+## Getting Started
Several months ago I was referred to the University of Southern Mississippi [Marine Research Center](https://www.usm.edu/ocean-enterprise/marine-research-center.php) by a coworker. They wanted some assistance from someone with a Physics and Data Science background to work on an autonomous underwater vehicle for the purpose of developing a magnetic sensing platform.
The work sounded interesting, so I joined the team as a contractor. Fast forward several months, and we are making fantastic progress!
-The work began with using data acquired from high quality magnetic sensors including from [QUSPIN](https://quspin.com/), and processing the data to detect magnetic objects of interest. For those without a background in physics, you should know that magnetic fields fall off as the cube of the distance from the source. This makes for a much more challenging problem since the size of the signals we are looking for are TINY compared to the noise in the data once we get to any significant distance from the source. This is made even more difficult by the fact that the Earth's magnetic field is a very strong signal, which changes from the perspective of the vector magnetic sensor as the vehicle moves. The final wrinkle is that the targets of interest are passive ferromagnetic objects, meaning their field is created by becoming magnetized by the Earth's magnetic field, and so they are extremely weak fields when measured at a distance.
+The work began with using data acquired from high quality magnetic sensors including from [QUSPIN](https://quspin.com/), and processing the data to detect magnetic objects of interest. This magnetic sensing becomes a very difficult problem due to a combination of factors:
+1. Magnetic fields fall off as the cube of the distance from the source (rather than the inverse square law that we all know from electromagnetic fields like light). This makes for a much more challenging problem since the size of the signals we are looking for are TINY compared to the noise in the data once we get to any significant distance from the source.
+2. The Earth's magnetic field, while weak compared to some magnets that we use in everyday life, is very strong due to it's very large size and therefore slow falloff compared to small targets.
+3. The targets of interest are passive ferromagnetic objects, meaning their field is created by becoming magnetized by the Earth's magnetic field. These induced magnetic fields are very weak compared to the Earth's magnetic field.
+4. The sensing platform is moving, and so the vehicle's orientation, and it's vector magnetic sensor readings are changing rapidly. Imbalances in the readings between vector components due to sensor imperfections, and due to the magnetic properties of the vehicle itself make this motion difficult to filter out.
+
+
+
+## Sensor Fusion
+Before we can even attempt to detect targets, we need to convert the vehicle reference frame to the Earth's reference frame. This is a non-trivial problem because the vehicle is free to rotate around the z-axis (up/down), can pitch and roll due to surface conditions, and for an underwater vehicle it can move and orient itself in virtually any direction. In addition to the vehicle orientation quickly changing, the Earth's magnetic field is very complex, and varies from location to location on the surface of the Earth.
+
+)")
+
+While the Earth's scale magnetic field is complex, many people assume that on the local scale, the magnetic field is constant. This is not the case, and local variations can be large enough to throw off the vehicle's orientation estimate.
+
+
+
+{{< mermaid >}}
+flowchart TD
+ subgraph "Input Sensors"
+ direction TB
+ GPS["GPS + RTK
+ (Position Data)
+ Note: Unavailable when underwater"]:::inputNode
+ QTFM["QTFM Magnetics
+ (X, Y, Z Magnetic Field)"]:::inputNode
+ IMU["Inertial Measurement Unit (IMU)"]:::inputNode
+ IMU_GYRO["IMU Gyroscope
+ (Roll, Pitch, Yaw Rates)
+ Only shows rate of change"]:::inputNode
+ IMU_ACCEL["IMU Accelerometer
+ (X, Y, Z Acceleration)
+ Note: Affected by quick movements"]:::inputNode
+ IMU_MAG["IMU Magnetometer
+ (X, Y, Z Magnetic Field)
+ Note: Affected by nearby magnetic fields"]:::inputNode
+ end
+
+ subgraph "Sensor Fusion Process"
+ direction TB
+ SF["Sensor Fusion Algorithm"]:::processingNode
+ GD["Geomagnetic Declination Correction
+ Note: Declination varies by location & time"]:::processingNode
+ OC["Orientation Correction"]:::processingNode
+ FILTER["Signal Filtering"]:::processingNode
+ end
+
+ subgraph "Output Data"
+ direction TB
+ POS["Geographic Position
+ (Earth Coordinates)"]:::outputNode
+ ROT["Platform Orientation
+ (Roll, Pitch, Yaw)"]:::outputNode
+ MAG_CORR["Orientation Corrected
+ Magnetic Data"]:::outputNode
+ TARGET["Target Detection
+ & Localization"]:::outputNode
+ end
+
+ classDef inputNode fill:#d4f1f9,stroke:#05386B,color:black
+ classDef processingNode fill:#f9e79f,stroke:#b7950b,color:black
+ classDef outputNode fill:#c8e6c9,stroke:#2e7d32,color:black
+
+ IMU --- IMU_GYRO
+ IMU --- IMU_ACCEL
+ IMU --- IMU_MAG
+
+ GPS --> SF
+ QTFM --> SF
+ IMU_GYRO --> SF
+ IMU_ACCEL --> SF
+ IMU_MAG --> SF
+
+ SF --> GD
+ GD --> OC
+ OC --> FILTER
+
+ SF --> POS
+ SF --> ROT
+ FILTER --> MAG_CORR
+ MAG_CORR --> TARGET
+{{< /mermaid >}}
+
+
+
+
+
diff --git a/content/professional-projects/usm-magnetics/surface-vehicle.png b/content/professional-projects/usm-magnetics/surface-vehicle.png
new file mode 100644
index 0000000..d63aa05
Binary files /dev/null and b/content/professional-projects/usm-magnetics/surface-vehicle.png differ
diff --git a/layouts/partials/favicons.html b/layouts/partials/favicons.html
new file mode 100644
index 0000000..51197ce
--- /dev/null
+++ b/layouts/partials/favicons.html
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/static/android-chrome-192x192.png b/static/android-chrome-192x192.png
new file mode 100644
index 0000000..d31d052
Binary files /dev/null and b/static/android-chrome-192x192.png differ
diff --git a/static/android-chrome-512x512.png b/static/android-chrome-512x512.png
new file mode 100644
index 0000000..ef3b5f6
Binary files /dev/null and b/static/android-chrome-512x512.png differ
diff --git a/static/apple-touch-icon.png b/static/apple-touch-icon.png
new file mode 100644
index 0000000..17534b8
Binary files /dev/null and b/static/apple-touch-icon.png differ
diff --git a/static/favicon-96x96.png b/static/favicon-96x96.png
new file mode 100644
index 0000000..378e4c8
Binary files /dev/null and b/static/favicon-96x96.png differ
diff --git a/static/favicon.ico b/static/favicon.ico
new file mode 100644
index 0000000..f0f37d3
Binary files /dev/null and b/static/favicon.ico differ
diff --git a/static/site.webmanifest b/static/site.webmanifest
new file mode 100644
index 0000000..06830f4
--- /dev/null
+++ b/static/site.webmanifest
@@ -0,0 +1,21 @@
+{
+ "name": "KarstTech",
+ "short_name": "KarstTech",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png",
+ "purpose": "maskable"
+ },
+ {
+ "src": "/wandroid-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png",
+ "purpose": "maskable"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
\ No newline at end of file