Finished ross content, added skill matrix, li, and ul, and improved many existing components, created and refactored to unified layouts and grid, visual improvements with proper column to row collapsing
This commit is contained in:
@@ -3,17 +3,26 @@ import ExperienceLayout from "@layouts/ExperienceLayout.astro";
|
||||
|
||||
import H2 from "@components/H2.astro";
|
||||
import H3 from "@components/H3.astro";
|
||||
import InlineLink from "@components/InlineLink.astro";
|
||||
import Li from "@components/Li.astro";
|
||||
import LinkButton from "@components/LinkButton.astro";
|
||||
import Carousel from "@components/Media/CustomCarousel/CustomCarousel.astro";
|
||||
import PdfViewer from "@components/Media/PdfViewer.astro";
|
||||
import PageGroup from "@components/PageGroup.astro";
|
||||
import Paragraph from "@components/Paragraph.astro";
|
||||
import Paragraphs from "@components/Paragraphs.astro";
|
||||
import PopoverWordDefinition from "@components/PopoverWordDefinition.astro";
|
||||
import SkillMatrix from "@components/SkillMatrix/SkillMatrix.astro";
|
||||
import Timeline from "@components/Timeline/Timeline.astro";
|
||||
import Ul from "@components/Ul.astro";
|
||||
|
||||
import type { carouselGroup } from "@interfaces/image-carousel.ts";
|
||||
import type { categorySkills } from "@interfaces/skill-matrix.ts";
|
||||
import type { timelineEntry } from "@interfaces/timeline.ts";
|
||||
|
||||
import electronics_box from "@assets/experience/osu-ceoas-ocean-mixing-group/robotic-oceanographic-surface-sampler/electronics-box.jpg";
|
||||
import jet_drive from "@assets/experience/osu-ceoas-ocean-mixing-group/robotic-oceanographic-surface-sampler/jet-drive.jpg";
|
||||
import ross_ebox_4p0 from "@assets/experience/osu-ceoas-ocean-mixing-group/robotic-oceanographic-surface-sampler/ross-ebox-4p0.jpg";
|
||||
import ross_on_vessel_at_night from "@assets/experience/osu-ceoas-ocean-mixing-group/robotic-oceanographic-surface-sampler/ross-on-vessel-at-night.jpg";
|
||||
import ross_on_vessel from "@assets/experience/osu-ceoas-ocean-mixing-group/robotic-oceanographic-surface-sampler/ross-on-vessel.jpg";
|
||||
import publication from "@assets/experience/osu-ceoas-ocean-mixing-group/robotic-oceanographic-surface-sampler/ross-publication.pdf";
|
||||
@@ -31,6 +40,7 @@ const headerCarouselGroup: carouselGroup = {
|
||||
ross_team,
|
||||
ross_on_vessel,
|
||||
ross_on_vessel_at_night,
|
||||
ross_ebox_4p0,
|
||||
electronics_box,
|
||||
jet_drive,
|
||||
ui,
|
||||
@@ -50,6 +60,72 @@ const timeline: timelineEntry[] = [
|
||||
date: "May 2018",
|
||||
},
|
||||
];
|
||||
|
||||
const categorizedSkills: categorySkills[] = [
|
||||
{
|
||||
category: "Electrical",
|
||||
skills: [
|
||||
{
|
||||
item: "Schematic & PCB Design",
|
||||
subItems: [{ item: "Altium Designer" }],
|
||||
},
|
||||
{
|
||||
item: "PCB Assembly & Rework",
|
||||
subItems: [
|
||||
{ item: "Handheld Soldering" },
|
||||
{ item: "Handheld Hot-Air Reflow" },
|
||||
{ item: "Oven Reflow" },
|
||||
],
|
||||
},
|
||||
{
|
||||
item: "Electrical Diagnostics",
|
||||
subItems: [
|
||||
{ item: "Multimeters" },
|
||||
{ item: "Oscilloscopes" },
|
||||
{ item: "Logic Analyzers" },
|
||||
],
|
||||
},
|
||||
{
|
||||
item: "Harnessing Fabrication",
|
||||
subItems: [
|
||||
{ item: "DC Power & Signal" },
|
||||
{ item: "Low Frequency RF (<1GHz)" },
|
||||
{ item: "Waterproofing" },
|
||||
],
|
||||
},
|
||||
{
|
||||
item: "Simulation",
|
||||
subItems: [{ item: "LTspice" }],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
category: "Software & Environments",
|
||||
skills: [
|
||||
{ item: "Git" },
|
||||
{
|
||||
item: "Programming Languages",
|
||||
subItems: [
|
||||
{ item: "Python 2/3" },
|
||||
{ item: "Bash Shell Scripting" },
|
||||
{ item: "Low-Level Embedded C/C++ (Atmel Studio)" },
|
||||
{ item: "High-Level Embedded C/C++ (Arduino/Teensy)" },
|
||||
{ item: "Matlab" },
|
||||
],
|
||||
},
|
||||
{
|
||||
item: "Operating Systems",
|
||||
subItems: [
|
||||
{
|
||||
item: "Linux",
|
||||
subItems: [{ item: "Ubuntu" }, { item: "Raspbian" }],
|
||||
},
|
||||
{ item: "Microsoft Windows" },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
---
|
||||
|
||||
<ExperienceLayout
|
||||
@@ -57,56 +133,158 @@ const timeline: timelineEntry[] = [
|
||||
subTitles={subTitles}
|
||||
>
|
||||
<Carousel carouselGroup={headerCarouselGroup} />
|
||||
<div class="mt-4 flex items-center justify-center">
|
||||
<div class="grid grid-flow-row place-content-center gap-4 md:grid-flow-col">
|
||||
<LinkButton
|
||||
href="https://tos.org/oceanography/article/autonomous-ctd-profiling-from-the-robotic-oceanographic-surface-sampler"
|
||||
title="Official Scientific Publication"
|
||||
/>
|
||||
<LinkButton
|
||||
href="https://www.kfsk.org/2017/04/19/remote-controlled-kayaks-ready-research-leconte-glacier/"
|
||||
title="KFSK Petersburg Feature / Interview"
|
||||
/>
|
||||
</div>
|
||||
<H2>Summary</H2>
|
||||
<H3>Timeline</H3>
|
||||
<Timeline timeline={timeline} />
|
||||
<H3>Key Takeaways</H3>
|
||||
<ul class="list-inside list-disc">
|
||||
<li>
|
||||
<div class="inline-block">
|
||||
Assembled, fabricated, and debugged both custom and
|
||||
<PopoverWordDefinition key="COTS" />
|
||||
hardware and electronics.
|
||||
</div>
|
||||
</li>
|
||||
<li>Two</li>
|
||||
<li>Three</li>
|
||||
</ul>
|
||||
<h3 class="my-4 font-bold md:text-lg">Skills Used</h3>
|
||||
<div
|
||||
class="border-caperren-green relative grid grid-flow-row gap-6 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4"
|
||||
>
|
||||
<div>
|
||||
<div class="text-sm font-extrabold">Software</div>
|
||||
<hr class="text-caperren-green" />
|
||||
<ul class="list-inside list-disc text-sm">
|
||||
<li>One</li>
|
||||
<li>Two</li>
|
||||
</ul>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H2>Summary</H2></Fragment>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H3>Timeline</H3></Fragment>
|
||||
<Timeline timeline={timeline} />
|
||||
</PageGroup>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H3>Key Takeaways</H3></Fragment>
|
||||
<Ul>
|
||||
<Li
|
||||
>Hand assembled and validated dozens of custom <PopoverWordDefinition
|
||||
key="PCBs"
|
||||
/>, wiring harnesses, and electronics boxes</Li
|
||||
>
|
||||
<Li
|
||||
>Wrote, debugged, and assisted with development of embedded firmware</Li
|
||||
>
|
||||
<Li
|
||||
>Accompanied the team on two deployments to the LeConte glacier in
|
||||
Alaska to gather melt and mixing data</Li
|
||||
>
|
||||
</Ul>
|
||||
</PageGroup>
|
||||
<SkillMatrix categorizedSkills={categorizedSkills} />
|
||||
</PageGroup>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H2>Details</H2></Fragment>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H3>ROSS Overview</H3></Fragment>
|
||||
<Paragraphs>
|
||||
<Paragraph>
|
||||
ROSS was a gasoline-powered water-sampling robotics platform built
|
||||
around a Mokai jet-drive kayak. It's purpose was to continuously, and
|
||||
often autonomously, gather water data over extremely long distances
|
||||
and/or in locations where human-safety concerns would make gathering
|
||||
it manually too risky. There were a variety of sensors it could be
|
||||
outfitted with depending on the needs of the exact research project
|
||||
and destination, but some common ones were an <PopoverWordDefinition
|
||||
key="ADCP"
|
||||
/> for gathering 3D water current vector data, a <PopoverWordDefinition
|
||||
key="CTD"
|
||||
/> for measuring water conductivity/temperature/depth, and a high-precision
|
||||
GPS for generating meaningful 3D plots of the sensor data. These kayaks
|
||||
have been deployed to places like the Indian/Pacific Ocean mixing line,
|
||||
and along the active LeConte glacier terminus in Alaska, gathering novel
|
||||
data on how vastly different bodies of water act when mixing.
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
In its original configuration, the Mokai kayak's throttle and steering
|
||||
were already drive-by-wire, which made it an excellent starting point
|
||||
for automating. It was also designed for easy transport, breaking down
|
||||
into three major compartments that could easily fit in the back of a
|
||||
short-bed pickup. For our custom hulls, Mokai also thickened the
|
||||
plastic significantly and provided a bare minimum of electronics. This
|
||||
barebones platform was then modified by our team to include a
|
||||
storm-surge-rated intake and exhaust for the engine, a keel to improve
|
||||
rough sea stability, a large alternator, and a plethora of mount
|
||||
points the electronics, batteries, fuel, sensors, and radios.
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
In terms of the electronics and software for this project, the kayak
|
||||
itself was centered around a Pixhawk flight controller flashed with a
|
||||
modified Rover variant (this was before a dedicated boat option
|
||||
existed). One pelican-case electronics box housed this controller, a
|
||||
small <PopoverWordDefinition key="NUC" /> with <PopoverWordDefinition
|
||||
key="UPS"
|
||||
/>, wifi router, radio control receiver, satellite modem, and quite a
|
||||
few custom <PopoverWordDefinition key="PCBs" /> for interfacing with external
|
||||
electronics and implementing glue logic/safety overrides. A second box housed
|
||||
nothing but sealed lead-acid batteries, which were charged by the alternator
|
||||
on later revisions of the platform. The PC ran a custom python script, which
|
||||
interfaced with a Matlab GUI over a remote radio link. The kayak could also
|
||||
be overridden with an FrSky RC controller, when at close range, and additionally
|
||||
allowed for direct control without the PC needing to be in-the-loop. To
|
||||
see some of the custom hardware inside of these boxes, check out Nick McComb's
|
||||
design pages for them
|
||||
<InlineLink
|
||||
href="https://nickmccomb.net/college/printed-circuit-boards#omg"
|
||||
>here</InlineLink
|
||||
>! For even more context on ROSS, and history from before I joined the
|
||||
project, check out his <InlineLink
|
||||
href="https://nickmccomb.net/college/ross">summary page</InlineLink
|
||||
>.
|
||||
</Paragraph>
|
||||
</Paragraphs>
|
||||
</PageGroup>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H3>My Experience</H3></Fragment>
|
||||
<Paragraphs>
|
||||
<Paragraph>
|
||||
I first started on this project by doing what I thought was a one-off
|
||||
help session for Nick, working on an issue he was having getting
|
||||
ROSS's engine to start and shut down properly. I had more experience
|
||||
with engines, and engine control, so I quickly realized that a beefier
|
||||
and high-voltage-rated relay was needed to avoid arc-welding the
|
||||
contacts closed during shutdown. He rolled out a <InlineLink
|
||||
href="https://nickmccomb.net/college/printed-circuit-boards/ross-ebox-auxillary"
|
||||
>new board revision</InlineLink
|
||||
> with those changes and it was the final version used for the rest of ROSS's
|
||||
lifetime. This little taste of the project, and some wishful prodding from
|
||||
Nick, was enough for me to join the team part-time.
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
While the original plan for me was to re-write the <PopoverWordDefinition
|
||||
key="GUI"
|
||||
/> for ROSS in Python using Qt, it turns out they needed my help on the
|
||||
electrical and firmware side more than anything, so most of my time at the
|
||||
lab was focused on that. I hand-assembled so many of Nick's circuit boards
|
||||
at this lab that I still can pick his out of a lot from design aesthetic
|
||||
alone! I also helped with plenty of wiring harness builds, electrical box
|
||||
fabrication, embedded firmware development, and of course, plenty of electrical
|
||||
and software debugging. One thing that this project taught me very quickly
|
||||
was how difficult it was to make reliable hardware in a high vibration,
|
||||
electrically noisy, and salt-laden environments. The number of PCBs we went
|
||||
through, alongside wiring harnesses, was pretty incredible considering the
|
||||
lengths we went to in order to protect them.
|
||||
</Paragraph>
|
||||
<Paragraph>
|
||||
A very unique aspect of this team/project, and a large part of why I
|
||||
was drawn to it, was that it was about as hands-on as you could
|
||||
possibly get. Doubly so for an undergraduate student! Not only did I
|
||||
get to design and repair a real robot, but it was actually being used
|
||||
for proper scientific research! We would regularly go to Newport, OR
|
||||
for testing and have to make crazy additions and repairs on the fly.
|
||||
This got even more extreme during my deployments to the <InlineLink
|
||||
href="http://localhost:4321/experience/osu-ceoas-ocean-mixing-group/robotic-oceanographic-surface-sampler"
|
||||
>LeConte glacier</InlineLink
|
||||
>, as you had to get creative and fix things with what you had on-hand
|
||||
due to how remote we were. These are experiences that graduate
|
||||
students rarely even get to have, so I'm extremely thankful and fond
|
||||
of the time I spent here. Huge shout out to <InlineLink
|
||||
href="https://nickmccomb.net">Nick</InlineLink
|
||||
>, again, who made it possible in the first place! Also be sure to
|
||||
check out the scientific paper on this project below!
|
||||
</Paragraph>
|
||||
</Paragraphs>
|
||||
</PageGroup>
|
||||
</PageGroup>
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H2>Official Scientific Publication</H2></Fragment>
|
||||
<div class="h-334">
|
||||
<PdfViewer pdf={publication} />
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-sm font-extrabold">Electrical</div>
|
||||
<hr class="text-caperren-green" />
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-sm font-extrabold">Mechanical</div>
|
||||
<hr class="text-caperren-green" />
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-sm font-extrabold">Other</div>
|
||||
<hr class="text-caperren-green" />
|
||||
</div>
|
||||
</div>
|
||||
<H2>Details</H2>
|
||||
power and voltage logging
|
||||
<H2>Official Scientific Publication</H2>
|
||||
<div class="h-334">
|
||||
<PdfViewer pdf={publication} />
|
||||
</div>
|
||||
</PageGroup>
|
||||
</ExperienceLayout>
|
||||
|
||||
Reference in New Issue
Block a user