Lots of media for mars rover software lead, yt video grid now working, small fixes to import orders and extra photos
@@ -16,6 +16,7 @@ dangerousthings
|
||||
Dechorionator
|
||||
dockerization
|
||||
dockerizing
|
||||
drumheller
|
||||
ebox
|
||||
fhhs
|
||||
flowbite
|
||||
|
||||
|
After Width: | Height: | Size: 3.9 MiB |
|
Before Width: | Height: | Size: 2.7 MiB After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 10 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 3.3 MiB |
|
After Width: | Height: | Size: 10 MiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 10 MiB |
|
After Width: | Height: | Size: 14 MiB |
|
After Width: | Height: | Size: 12 MiB |
|
After Width: | Height: | Size: 1.2 MiB |
@@ -1,13 +1,26 @@
|
||||
---
|
||||
import type { videoConfig } from "@interfaces/video.ts";
|
||||
import type { videoConfig } from "@interfaces/yt-video.ts";
|
||||
|
||||
const config: videoConfig = Astro.props.videoConfig;
|
||||
interface Props extends videoConfig {}
|
||||
|
||||
const {
|
||||
videoPath,
|
||||
videoTitle,
|
||||
width = "1920",
|
||||
height = "1080",
|
||||
autoPlay = false,
|
||||
} = Astro.props;
|
||||
|
||||
const aspect = `${width} / ${height}`;
|
||||
---
|
||||
|
||||
<iframe
|
||||
class="h-128 w-full max-w-1/2"
|
||||
src={config.videoPath}
|
||||
title={config.videoTitle ?? ""}
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen></iframe>
|
||||
<div class="mx-auto my-auto w-full" style={`aspect-ratio: ${aspect};`}>
|
||||
<iframe
|
||||
src={videoPath}
|
||||
title={videoTitle}
|
||||
class="h-full w-full"
|
||||
allow={"accelerometer; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; " +
|
||||
(autoPlay ? "autoplay;" : "")}
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen></iframe>
|
||||
</div>
|
||||
|
||||
@@ -74,12 +74,10 @@ export const siteLayout: navLink[] = [
|
||||
],
|
||||
},
|
||||
{
|
||||
enabled: false,
|
||||
navText: "OSU Robotics Club",
|
||||
path: "osu-robotics-club",
|
||||
children: [
|
||||
{
|
||||
enabled: false,
|
||||
navText: "Mars Rover Software Team Lead",
|
||||
path: "mars-rover-software-team-lead",
|
||||
},
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
export interface videoConfig {
|
||||
videoTitle?: string;
|
||||
videoPath: string;
|
||||
videoType?: string;
|
||||
}
|
||||
9
src/interfaces/yt-video.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
export interface videoConfig {
|
||||
videoPath: string;
|
||||
videoTitle?: string;
|
||||
|
||||
width?: number; // “design” width
|
||||
height?: number; // “design” height
|
||||
|
||||
autoPlay?: boolean;
|
||||
}
|
||||
@@ -22,6 +22,7 @@ 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_battery_box from "@assets/experience/osu-ceoas-ocean-mixing-group/robotic-oceanographic-surface-sampler/ross-battery-box.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";
|
||||
@@ -42,6 +43,7 @@ const headerCarouselGroup: carouselGroup = {
|
||||
ross_on_vessel_at_night,
|
||||
ross_ebox_4p0,
|
||||
electronics_box,
|
||||
ross_battery_box,
|
||||
jet_drive,
|
||||
ui,
|
||||
],
|
||||
|
||||
@@ -1,279 +1,71 @@
|
||||
---
|
||||
import H2 from "@components/H2.astro";
|
||||
import Carousel from "@components/Media/CustomCarousel/CustomCarousel.astro";
|
||||
import YtVideo from "@components/Media/YtVideo.astro";
|
||||
import PageGroup from "@components/PageGroup.astro";
|
||||
import type { carouselGroup } from "@interfaces/image-carousel.ts";
|
||||
import type { videoConfig } from "@interfaces/video.ts";
|
||||
import type { videoConfig } from "@interfaces/yt-video.ts";
|
||||
import ExperienceLayout from "@layouts/ExperienceLayout.astro";
|
||||
|
||||
import circ_champions from "@assets/experience/osu-robotics-club/mars-rover-software-lead/circ-champions.jpg";
|
||||
import corwin_at_competition from "@assets/experience/osu-robotics-club/mars-rover-software-lead/corwin-at-competition.jpg";
|
||||
import drumheller_team_photo from "@assets/experience/osu-robotics-club/mars-rover-software-lead/drumheller-team-photo.jpg";
|
||||
import final_ground_station_gui from "@assets/experience/osu-robotics-club/mars-rover-software-lead/final-ground-station-gui.png";
|
||||
import ground_station_at_competition from "@assets/experience/osu-robotics-club/mars-rover-software-lead/ground-station-at-competition.jpg";
|
||||
import iris_pcb_assembly_timelapse_converted from "@assets/experience/osu-robotics-club/mars-rover-software-lead/iris-pcb-assembly-timelapse-converted.mp4";
|
||||
import iris_pcb_working from "@assets/experience/osu-robotics-club/mars-rover-software-lead/iris-pcb-working.jpg";
|
||||
import rover_at_competition_from_above from "@assets/experience/osu-robotics-club/mars-rover-software-lead/rover-at-competition-from-above.jpg";
|
||||
import rover_at_competition_pickup_test from "@assets/experience/osu-robotics-club/mars-rover-software-lead/rover-at-competition-pickup-test.jpg";
|
||||
import rover_gimbal_test_converted from "@assets/experience/osu-robotics-club/mars-rover-software-lead/rover-gimbal-test-converted.mp4";
|
||||
import rover_pose_with_dinosaur from "@assets/experience/osu-robotics-club/mars-rover-software-lead/rover-pose-with-dinosaur.jpg";
|
||||
import rover_with_arm_pose_in_desert from "@assets/experience/osu-robotics-club/mars-rover-software-lead/rover-with-arm-pose-in-desert.jpg";
|
||||
import silly_poke from "@assets/experience/osu-robotics-club/mars-rover-software-lead/silly-poke.gif";
|
||||
import Video from "@components/Media/Video.astro";
|
||||
|
||||
const headerCarouselGroup: carouselGroup = {
|
||||
animation: "slide",
|
||||
images: [],
|
||||
images: [
|
||||
circ_champions,
|
||||
drumheller_team_photo,
|
||||
rover_with_arm_pose_in_desert,
|
||||
rover_pose_with_dinosaur,
|
||||
corwin_at_competition,
|
||||
rover_at_competition_from_above,
|
||||
rover_at_competition_pickup_test,
|
||||
final_ground_station_gui,
|
||||
ground_station_at_competition,
|
||||
iris_pcb_working,
|
||||
silly_poke,
|
||||
],
|
||||
};
|
||||
|
||||
const videoList: videoConfig[] = [
|
||||
{
|
||||
videoTitle: "Ground Station Software Quick Overview",
|
||||
videoPath: "https://www.youtube-nocookie.com/embed/ZjGW-HWapVA",
|
||||
},
|
||||
{
|
||||
videoTitle: "Rover Software Environment And Full Code Overview",
|
||||
videoPath: "https://www.youtube-nocookie.com/embed/sceA2ZbEV8Y",
|
||||
},
|
||||
const videos: videoConfig[] = [
|
||||
{ videoPath: iris_pcb_assembly_timelapse_converted },
|
||||
{ videoPath: rover_gimbal_test_converted },
|
||||
{ videoPath: "https://www.youtube-nocookie.com/embed/ZjGW-HWapVA" },
|
||||
{ videoPath: "https://www.youtube-nocookie.com/embed/sceA2ZbEV8Y0" },
|
||||
];
|
||||
---
|
||||
|
||||
<ExperienceLayout title="OSURC - Software Team Lead">
|
||||
<Carousel carouselGroup={headerCarouselGroup} />
|
||||
|
||||
<h2 class="my-4 font-bold underline md:text-2xl">
|
||||
Ground Station Readouts & Features
|
||||
</h2>
|
||||
<ul class="list-inside list-disc space-y-1">
|
||||
<li>Clock</li>
|
||||
<li>Event Timer</li>
|
||||
<li>
|
||||
Status Indication
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Rover Connection</li>
|
||||
<li>Controller Connection Info</li>
|
||||
<li>Radio Stats</li>
|
||||
<li>GPS Stats</li>
|
||||
<li>NVidia Jetson TX2 Computer Stats</li>
|
||||
<li>Battery Voltage w/Low Battery Warning</li>
|
||||
<li>Wheel Connections</li>
|
||||
<li>Camera Connections</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Radio Direction Finding
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Raw Radio RSSI Indication</li>
|
||||
<li>Radio RSSI Pulse Frequency w/Validity Indication</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Arm
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>
|
||||
Special Movements
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Stow Arm</li>
|
||||
<li>Unstow Arm</li>
|
||||
<li>Upright Arm</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Calibrate Arm</li>
|
||||
<li>Clear Arm Fault</li>
|
||||
<li>Reset Arm Motor Drivers</li>
|
||||
<li>
|
||||
Task Movements
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Approach Oxygen Tank</li>
|
||||
<li>Depart Oxygen Tank</li>
|
||||
<li>Approach Light Beacon</li>
|
||||
<li>Depart Light Beacon</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Mining/Science
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Bucket Weight Measurement</li>
|
||||
<li>Bucket Lift/Tilt Position Readouts</li>
|
||||
<li>
|
||||
Preset Bucket Movements
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Mining Transport</li>
|
||||
<li>Mining Measure</li>
|
||||
<li>Mining Scoop</li>
|
||||
<li>Science Panorama</li>
|
||||
<li>Mining Sample</li>
|
||||
<li>Mining Probe</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Science Probe Readings
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Temp in C</li>
|
||||
<li>Moisture %</li>
|
||||
<li>Loss Tangent</li>
|
||||
<li>Soil Electrical Conductivity</li>
|
||||
<li>Real Dielectric Permittivity</li>
|
||||
<li>Imaginary Dielectric Permittivity</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Science Camera Controls
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>
|
||||
Video Output Selection
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Network Video</li>
|
||||
<li>Camera LCD</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Photo Controls
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Zoom In One Step</li>
|
||||
<li>Zoom Out One Step</li>
|
||||
<li>Full Zoom In</li>
|
||||
<li>Full Zoom Out</li>
|
||||
<li>Shoot Photo</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
SSH Console
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>SSH Terminal Display</li>
|
||||
<li>SSH Command Entry</li>
|
||||
<li>
|
||||
Preset Commands
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Network Host Scan</li>
|
||||
<li>List Wifi Networks</li>
|
||||
<li>Equipment Login and Help</li>
|
||||
<li>Equipment Logout</li>
|
||||
<li>Equipment Status</li>
|
||||
<li>Equipment Start</li>
|
||||
<li>Equipment Stop</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>Connect/Disconnect Rover Wifi by SSID</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Settings
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Map Selection</li>
|
||||
<li>Map Zoom Level</li>
|
||||
<li>Rover Wifi Radio Channel Selection</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Mapping Display
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Shows Google Map Terrain</li>
|
||||
<li>Shows Rover Location And Orientation</li>
|
||||
<li>Shows Rover GPS Coordinates</li>
|
||||
<li>Shows Saved Waypoints</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Waypoint Entry / Editing
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Name Entry For Landmarks</li>
|
||||
<li>GPS Entry in Decimal</li>
|
||||
<li>GPS Entry in Degree/Minute/Second</li>
|
||||
<li>Waypoint Color Choice</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Navigation Waypoints
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Shows And Allows Editing Of Nav Waypoints</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Landmark Waypoints
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Shows And Allows Editing Of Landmark Waypoints</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Arm Joint Positions
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Positions Of Six Arm Joints In Revolutions</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Gripper Joint Positions
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Positions Shown As Raw Encoder Positions</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Arm Motor Drive Statuses
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Communication/Movement/Fault Statuses For All Six Arm Joints</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Gripper Mode Readouts
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Gripper Mode Control State</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Xbox Control Mode
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Showed Whether Xbox Controller Moving Arm Or Mining</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Heading and Goal Indication w/Compass
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Raw Heading Indication</li>
|
||||
<li>Goal Indication (Unused)</li>
|
||||
<li>Compass Heading Indication</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Low Resolution Mode
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Controlled Low Resolution Fallback Mode During Radio Failure</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Current Speed
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>GPS Speed</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Speed Limit
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>% Of Max Rover Speed As Limit</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Tank Drive Output
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>% Of Total Power To Left/Right Rover Drive Systems</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
IMU Readings
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>Pitch/Roll Readings In +/- 1 Readout</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
Triple Camera Displays
|
||||
<ul class="list-inside list-disc space-y-1 ps-5">
|
||||
<li>One Primary Video Display</li>
|
||||
<li>Two Secondary Video Displays</li>
|
||||
<li>Named Display For Currently Viewed Camera</li>
|
||||
<li>Ability To Set Each Display To Any Camera</li>
|
||||
<li>Ability to Disable Any Camera</li>
|
||||
<li>Ability to Pan/Tilt Any Camera</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h2 class="my-4 font-bold underline md:text-2xl">
|
||||
Rover Demos and Software Overviews
|
||||
</h2>
|
||||
{
|
||||
videoList.map((video) => (
|
||||
<div>
|
||||
<h3 class="my-4 font-bold md:text-lg">{video.videoTitle}</h3>
|
||||
<YtVideo videoConfig={video} />
|
||||
</div>
|
||||
))
|
||||
}
|
||||
<PageGroup>
|
||||
<Fragment slot="header"><H2>Videos</H2></Fragment>
|
||||
<div class="grid grid-cols-1 gap-4 md:grid-cols-2">
|
||||
{
|
||||
videos.map((video) =>
|
||||
video.videoPath.startsWith("https://www.youtube") ? (
|
||||
<YtVideo
|
||||
videoPath={video.videoPath}
|
||||
width={video.width}
|
||||
height={video.height}
|
||||
/>
|
||||
) : (
|
||||
<Video videoPath={video.videoPath} />
|
||||
),
|
||||
)
|
||||
}
|
||||
</div>
|
||||
</PageGroup>
|
||||
</ExperienceLayout>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
---
|
||||
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 Carousel from "@components/Media/CustomCarousel/CustomCarousel.astro";
|
||||
import PageGroup from "@components/PageGroup.astro";
|
||||
@@ -15,7 +16,6 @@ import ExperienceLayout from "@layouts/ExperienceLayout.astro";
|
||||
import spring_2019_interns from "@assets/experience/spacex/avionics-test-engineering-internship/spring-2019-interns.jpg";
|
||||
import swag from "@assets/experience/spacex/avionics-test-engineering-internship/swag.jpg";
|
||||
|
||||
import InlineLink from "@components/InlineLink.astro";
|
||||
import type { carouselGroup } from "@interfaces/image-carousel.ts";
|
||||
import type { categorySkills } from "@interfaces/skill-matrix.ts";
|
||||
import type { timelineEntry } from "@interfaces/timeline.ts";
|
||||
|
||||
@@ -11,8 +11,8 @@ import Paragraphs from "@components/Paragraphs.astro";
|
||||
import type { carouselGroup } from "@interfaces/image-carousel.ts";
|
||||
|
||||
import alaska_bike_mountain_ocean from "@assets/about/alaska-bike-mountain-ocean.jpg";
|
||||
import circ_champions from "@assets/about/circ-champions.jpg";
|
||||
import headshot from "@assets/about/headshot.jpg";
|
||||
import circ_champions from "@assets/experience/osu-robotics-club/mars-rover-software-lead/circ-champions.jpg";
|
||||
|
||||
const headerCarouselGroup: carouselGroup = {
|
||||
animation: "slide",
|
||||
|
||||