This repository was archived by the owner on Jul 22, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathspec.tex
More file actions
71 lines (59 loc) · 3.13 KB
/
Copy pathspec.tex
File metadata and controls
71 lines (59 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
\documentclass{article}
\usepackage[margin=1in]{geometry}
\usepackage{booktabs}
\usepackage{amsmath}
\title{Rebuilt: Subsystem State Spec for 4152}
\author{Gabriel Nakamoto}
\date{\today}
\begin{document}
\maketitle
\section{Architecture}
SuperStructure acts as high level state logic wrapper for commanding all subsystem except drivetrain. \\
\begin{tabular}{@{} l l l @ {}}
\toprule
\textbf{Subsystem} & \textbf{Motors} & \textbf{Control Methods} \\
\midrule
\textsc{Intake} & Kraken x44, Neo Vortex & Position, Velocity \\
\textsc{Turret} & 2xKraken x44, Kraken x60 & Velocity (TF\footnotemark), Position (TF), Position (TF) \\
\textsc{Spindexer} & 2xNeo Vortex & Velocity, Velocity \\
\bottomrule
\end{tabular}
\footnotetext{Torque FOC}
\section{States}
Enumeration of corresponding subsystem states commanded by higher level superstructure state.\\
\begin{tabular}{@{} l l l l @ {}}
\toprule
\textbf{SuperStructure} & \textbf{Turret} & \textbf{Intake} & \textbf{Spindexer} \\
\midrule
\textsc{Idle} & \textsc{Idle Track} & \textsc{Retract} & \textsc{Hold} \\
\textsc{Intake} & \textsc{Idle Track} & \textsc{Intake} & \textsc{Hold} \\
\textsc{Shoot} & \textsc{Shoot} & \textsc{Agitate} & \textsc{Feed}\\
\textsc{Shoot Intake} & \textsc{Shoot} & \textsc{Intake} & \textsc{Feed} \\
\textsc{Reverse Intake} & \textsc{Idle Track} & \textsc{Reverse} & \textsc{Hold} \\
\textsc{Cooldown} & \textsc{Shoot} & \textsc{Agitate} & \textsc{Cooldown} \\
\bottomrule
\end{tabular}
\subsection{Exceptions}
\begin{itemize}
\item Hood clamped below max trench angle when near trench (Trench State = \textsc{Near Trench})
\item Spindexer will only enter feed state when the following conditions are met:
\begin{itemize}
\item Hood position within tunable threshold of setpoint
\item Azimuth position within tunable threshold of setpoint
\item Flywheel within tunable threshold of setpoint speed
\item Current turret state != \textsc{Near Trench}
\item Azimuth will not wrap within next $n$ seconds
\end{itemize}
\item Spindexer will run in reverse when stall detected ($<0.5$ rps)
\item Cooldown automatically ran for tunable duration after leaving \textsc{Shoot} superstructure state to preserve speed for remaining balls in pipeline.
\end{itemize}
\section{Limiting Factors}
How to optimize BPS and accuracy of the overall robot through software control and coordination of these subsystems?\\
Heuristics:
\begin{itemize}
\item Every step of the pipeline must be running at a greater or equal speed then the last for deterministic behaviour
\item Every step of the pipeline must be able to regain full speed after processing a gamepiece within ~5\% of setpoint by the time the next gamepiece arrives
\item Predictable factors that influence accuracy such as control error and turret wrapping should be handled ahead of time, systems reacting and decelerating so that game pieces will not be launched with large margins of error
\item Blind spots in vision should be limited and global pose estimate reliability/smoothness is paramount for SOTM
\end{itemize}
\end{document}