Skip to content
This repository has been archived by the owner on Apr 29, 2024. It is now read-only.

Commit

Permalink
Update documentation page numbers in the innovate form
Browse files Browse the repository at this point in the history
  • Loading branch information
RubyflameWarrior committed Mar 2, 2024
1 parent dd6f31b commit 5d15b77
Show file tree
Hide file tree
Showing 4 changed files with 205 additions and 31 deletions.
109 changes: 78 additions & 31 deletions appendix/innovate.typ
Original file line number Diff line number Diff line change
Expand Up @@ -11,51 +11,98 @@
#text(size: 14pt)[*Full Team Number: 53D*]

= Brief Description
The novel design on our robot is our modular Kicker and Elevation mechanism. Instead of having both the mechanism on our robot like most teams, we can swap the two to maximize the meta of Over Under to its fullest extent. For example, during match play, we play Field Starvation, and take advantage of the opponent's match loads. Since we don't introduce match loads of our own, our kicker is deactivated. However, during Skills, the meta is to introduce and score as many match loads as possible. Our elevation mechanism will be deactivated as the time it takes to hang can be used to score even more tribals, netting us more points.
The novel design on our robot is our modular kicker and elevation mechanism. Instead of having both of the mechanisms on our robot like most teams, we can swap the two to maximize the meta of Over Under to its fullest extent. For example, during match play, we play Field Starvation, and take advantage of the opponent's match loads. Since we don't introduce match loads of our own, our kicker is deactivated. However, during Skills, the meta is to introduce and score as many match loads as possible. Our elevation mechanism will be deactivated as the time it takes to hang can be used to score even more tribals, netting us more points.

What's truly innovative is our ability to adapt, switching between the two depending on the current meta. Teams who use an elevation mechanism sacrifice a game effecting option for skills. Since both the Kicker and the Elevation count as “subsystem 3”, we can still hang without sacrificing Skills. An additional feature is the gear ratio. In our gearbox, there are two gears on one axle: a 36T and 12T. The kicker runs on the 36T silver gear and the Elevation Mechanism runs on the 12T silver gear. The ratios are 3:1 and 7:1 respectively. By having the gears on the same axle, this eliminates any inconsistency we get when we switch between them and gain enough torque to get a C-tier hang.

= Dcoumentation Page Numbers
#locate(
loc => {

let valid_entries = entries.final(loc).enumerate()
table(
columns: 2,

valid_entries = valid_entries.filter(
entry => {
(entry.last().title.match("Kicker") != none) or ((entry.last().title.match("Outtake #2") != none) and (entry.last().type.match("understand") != none))
}
)
{
heading(level: 2)[Kicker]
let valid_entries = entries.final(loc).enumerate()

valid_entries = valid_entries.filter(
entry => {
(entry.last().title.match("Kicker") != none) or ((entry.last().title.match("Outtake #2") != none) and (entry.last().type.match("understand") != none))
}
)
let entry = valid_entries.first()
let info = type_metadata.at(entry.last().type)
let headings = query(selector(<nb_entry>), loc)
for (index, entry) in valid_entries {
let page_number = counter(page).at(headings.at(index).location()).at(0)
// let page_number = entry_page_counter.at(headings.at(index).location()).at(0) + 1
let start_date = entry.start_date.display("[year]/[month]/[day]")
let end_date = if (not entry.start_date == entry.end_date) { entry.end_date.display("[year]/[month]/[day]") } else { none }
let info = type_metadata.at(entry.type)
let frontmatter_count = frontmatter_page_counter.final(loc).at(0)
let entry = valid_entries.first()
let info = type_metadata.at(entry.last().type)
let headings = query(selector(<nb_entry>), loc)
[
#box(baseline: 15%, nb_icon(label: entry.type, size: 1em))
#h(5pt)
#box(fill: info.color.lighten(30%), radius: 1pt, height: 1em, baseline: 15%)[
#align(center + horizon)[
#link((page: {frontmatter_count + page_number + 2 - page-number-offset}, x: 0pt, y: 0pt))[
#text(fill: black)[
_#h(2pt) #start_date #sym.dash.em #info.name: #entry.title #h(2pt)_
]
]
]
]#h(5pt)
#box(width: 1fr, line(length: 100%, stroke: (dash: "dotted")))
#page_number \
]
}
},
{
heading(level: 2)[Elevation]
let valid_entries = entries.final(loc).enumerate()
valid_entries = valid_entries.filter(
entry => {
(entry.last().title.match("Elevation") != none)
}
)
for (index, entry) in valid_entries {
let page_number = counter(page).at(headings.at(index).location()).at(0)
// let page_number = entry_page_counter.at(headings.at(index).location()).at(0) + 1
let start_date = entry.start_date.display("[year]/[month]/[day]")
let end_date = if (not entry.start_date == entry.end_date) { entry.end_date.display("[year]/[month]/[day]") } else { none }
let entry = valid_entries.first()
let info = type_metadata.at(entry.last().type)
let headings = query(selector(<nb_entry>), loc)
for (index, entry) in valid_entries {
let page_number = counter(page).at(headings.at(index).location()).at(0)
// let page_number = entry_page_counter.at(headings.at(index).location()).at(0) + 1
let start_date = entry.start_date.display("[year]/[month]/[day]")
let end_date = if (not entry.start_date == entry.end_date) { entry.end_date.display("[year]/[month]/[day]") } else { none }
let info = type_metadata.at(entry.type)
let info = type_metadata.at(entry.type)
let frontmatter_count = frontmatter_page_counter.final(loc).at(0)
let frontmatter_count = frontmatter_page_counter.final(loc).at(0)
[
#box(baseline: 15%, nb_icon(label: entry.type, size: 1em))
#h(5pt)
#box(fill: info.color.lighten(30%), radius: 1pt, height: 1em, baseline: 15%)[
#align(center + horizon)[
#link((page: {frontmatter_count + page_number + 2 - page-number-offset}, x: 0pt, y: 0pt))[
#text(fill: black)[
_#h(2pt) #start_date #sym.dash.em #info.name: #entry.title #h(2pt)_
[
#box(baseline: 15%, nb_icon(label: entry.type, size: 1em))
#h(5pt)
#box(fill: info.color.lighten(30%), radius: 1pt, height: 1em, baseline: 15%)[
#align(center + horizon)[
#link((page: {frontmatter_count + page_number + 2 - page-number-offset}, x: 0pt, y: 0pt))[
#text(fill: black)[
_#h(2pt) #start_date #sym.dash.em #info.name: #entry.title #h(2pt)_
]
]
]
]
]#h(5pt)
#box(width: 1fr, line(length: 100%, stroke: (dash: "dotted")))
#page_number \
]
]#h(5pt)
#box(width: 1fr, line(length: 100%, stroke: (dash: "dotted")))
#page_number \
]
}
}
},
)
}
)
6 changes: 6 additions & 0 deletions entries/kicker-1/program.typ
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,17 @@ if(manualKicker) {
- *Ultrasonic Sensor* - Determines the distance from the sensor to the object in front of it by sending out a ping and determining how long it takes for that ping to hit the object
]

/*
#nb_admonition(type: "select", title: "Final Selection: Kicker Sensors")[
We decided to use the *Optical Sensor* because our team was out of stock of the other two sensors.
]
We then installed the optical sensor under the polycarbonate part of the kicker tray.
*/

#nb_admonition(type: "note")[
We don't have any of the sensors that we brainstormed available to us right now, so to save time, we are writing pseudocode for the optical sensor so that we have code prepared when we get it.
]

=== Triball Hue Determination
To determine which hue value the triballs are, we utilized the devices menu of the VEX V5 brain. We determined that triballs have a green hue value of around 70.
Expand Down
4 changes: 4 additions & 0 deletions entries/kicker-sensor/identify.typ
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,8 @@

#nb_admonition(type: "note")[
Unfortunately our team does not have any distance sensors, only optical sensors. Therefore, we will have to use an optical sensor.
]

#nb_admonition(type: "note")[
We programmed pseudocode for the optical sensor in our #nb_entry_reference(date: datetime(year: 2024, month: 1, day: 12), type: "program", title: "Kicker #1"), so we don't have to spend time programming it now.
]
117 changes: 117 additions & 0 deletions template/toc.typ
Original file line number Diff line number Diff line change
Expand Up @@ -172,4 +172,121 @@
}
)
]

// Extra page

page(
margin: (left: 5em, right: 5em, /*bottom: 4em*/),
background: nb_side_margin_color(color: gray),
header: nb_title[Table of Contents],
footer: nb_frontmatter_footer(),
)[

#locate(
loc => {
if entries.final(loc).len() > 72 {
box[

#let headings = query(selector(<nb_entry>), loc)

#for (index, entry) in entries.final(loc).enumerate().slice(36) {
let page_number = counter(page).at(headings.at(index).location()).at(0)
let start_date = entry.start_date.display("[year]/[month]/[day]")
let end_date = if (not entry.start_date == entry.end_date) { entry.end_date.display("[year]/[month]/[day]") } else { none }

let info = type_metadata.at(entry.type)

let frontmatter_count = frontmatter_page_counter.final(loc).at(0)

let temp = frontmatter_count + page_number + 3 - page-number-offset

if temp < 1 {
panic(str(info.name) + str(entry.title) + str(temp))
temp = temp * -1
}

[
#box(baseline: 15%, nb_icon(label: entry.type, size: 1em))
#h(5pt)
#box(fill: info.color.lighten(30%), radius: 1pt, height: 1em, baseline: 15%)[
#align(center + horizon)[
#link((page: {temp}, x: 0pt, y: 0pt))[
#text(fill: black)[
_#h(2pt) #start_date #sym.dash.em #info.name: #entry.title #h(2pt)_
]
]
]
]#h(5pt)
#box(width: 1fr, line(length: 100%, stroke: (dash: "dotted")))
#page_number \
]
}
]
parbreak()
}

box[

= Program

#let program_headings = query(selector(<nb_program_entry>), loc)
#for (index, entry) in program_entries.final(loc).enumerate() {
let page_number = counter(page).at(program_headings.at(index).location()).at(0)
// let page_number = program_page_counter.at(program_headings.at(index).location()).at(0)

let frontmatter_count = frontmatter_page_counter.final(loc).at(0)
let entry_count = entry_page_counter.final(loc).at(0)

[
#box(radius: 1pt, height: 1em, baseline: 15%)[
#align(center + horizon)[
#link((page: {frontmatter_count + entry_count + page_number + 3}, x: 0pt, y: 0pt))[
#text(fill: black)[
_ #entry.title _
]
]
]
]#h(5pt)
#box(width: 1fr, line(length: 100%, stroke: (dash: "dotted")))
P-#page_number \
]
}

#counter(page).update(_ => 0)
]
parbreak()

box[

= Appendix

#let appendix_headings = query(selector(<nb_appendix_entry>), loc)
#for (index, entry) in appendix_entries.final(loc).enumerate() {
let page_number = counter(page).at(appendix_headings.at(index).location()).at(0)
// let page_number = appendix_page_counter.at(appendix_headings.at(index).location()).at(0)

let frontmatter_count = frontmatter_page_counter.final(loc).at(0)
let entry_count = entry_page_counter.final(loc).at(0)
let program_count = program_page_counter.final(loc).at(0)

[
#box(radius: 1pt, height: 1em, baseline: 15%)[
#align(center + horizon)[
#link((page: {frontmatter_count + entry_count + program_count + page_number + 4}, x: 0pt, y: 0pt))[
#text(fill: black)[
_ #entry.title _
]
]
]
]#h(5pt)
#box(width: 1fr, line(length: 100%, stroke: (dash: "dotted")))
A-#page_number \
]
}
]
counter(page).update(_ => page-number-offset)

}
)
]
}

0 comments on commit 5d15b77

Please sign in to comment.