Skip to content

Commit

Permalink
Added controller units for per rotation per minute
Browse files Browse the repository at this point in the history
  • Loading branch information
Shom770 committed Jan 20, 2024
1 parent 2804ef3 commit a50122c
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 48 deletions.
2 changes: 2 additions & 0 deletions src/main/kotlin/org/team4099/lib/units/Derivatives.kt
Original file line number Diff line number Diff line change
Expand Up @@ -71,5 +71,7 @@ inline val AngularAcceleration.inDegreesPerSecondPerSecond: Double
inline val AngularAcceleration.inRotationsPerSecondPerSecond: Double
get() = value / (2 * PI)



inline val AngularAcceleration.inRotationsPerMinutePerMinute: Double
get() = value * SECONDS_PER_MINUTE * SECONDS_PER_MINUTE / (2 * PI)
86 changes: 38 additions & 48 deletions src/main/kotlin/org/team4099/lib/units/derived/Controller.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package org.team4099.lib.units.derived
import org.team4099.lib.units.Fraction
import org.team4099.lib.units.Product
import org.team4099.lib.units.UnitKey
import org.team4099.lib.units.Unitless
import org.team4099.lib.units.Value
import org.team4099.lib.units.Velocity
import org.team4099.lib.units.base.Ampere
Expand Down Expand Up @@ -68,6 +69,11 @@ inline val <K : UnitKey> Value<K>.perRadianPerSecond
inline val <K : UnitKey> Value<K>.perDegreePerSecond
get() = perRadianPerSecond / RADIANS_PER_DEGREES

inline val <K : UnitKey> Value<K>.perRotationPerMinute
get() = (perRadianPerSecond * SECONDS_PER_MINUTE) / RADIANS_PER_ROTATION



inline val Double.VoltsPerVolts
get() = Value<Fraction<Volt, Volt>>(this)

Expand Down Expand Up @@ -158,6 +164,7 @@ inline val DerivativeGain<Velocity<Radian>, Volt>.inVoltsPerDegreesPerSecondPerS
inline val DerivativeGain<Velocity<Radian>, Volt>.inVoltsPerRotationsPerMinutePerSecond: Double
get() = inVoltsPerRadiansPerSecondPerSecond / SECONDS_PER_MINUTE * RADIANS_PER_ROTATION


inline val Double.AmpsPerAmps
get() = Value<Fraction<Ampere, Ampere>>(this)

Expand Down Expand Up @@ -248,7 +255,8 @@ inline val DerivativeGain<Velocity<Radian>, Ampere>.inAmpsPerDegreesPerSecondPer
inline val DerivativeGain<Velocity<Radian>, Ampere>.inAmpsPerRotationsPerMinutePerSecond: Double
get() = inAmpsPerRadiansPerSecondPerSecond / SECONDS_PER_MINUTE * RADIANS_PER_ROTATION

inline val Double.radiansPerSecondPerRadiansPerSecond

inline val Double.RadiansPerSecondPerRadiansPerSecond
get() = Value<Fraction<Velocity<Radian>, Velocity<Radian>>>(this)

inline val ProportionalGain<Meter, Velocity<Radian>>.inRadiansPerSecondPerMeter: Double
Expand All @@ -269,16 +277,13 @@ inline val ProportionalGain<Radian, Velocity<Radian>>.inRadiansPerSecondPerDegre
inline val ProportionalGain<Radian, Velocity<Radian>>.inRadiansPerSecondPerRotation: Double
get() = inRadiansPerSecondPerRadian * RADIANS_PER_ROTATION

inline val ProportionalGain<Velocity<Meter>, Velocity<Radian>>.inRadiansPerSecondPerMetersPerSecond:
Double
get() = value
inline val ProportionalGain<Velocity<Meter>, Velocity<Radian>>.inRadiansPerSecondPerMetersPerSecond: Double
get() = value

inline val ProportionalGain<
Velocity<Radian>, Velocity<Radian>>.inRadiansPerSecondPerRadiansPerSecond: Double
inline val ProportionalGain<Velocity<Radian>, Velocity<Radian>>.inRadiansPerSecondPerRadiansPerSecond: Double
get() = value

inline val ProportionalGain<
Velocity<Radian>, Velocity<Radian>>.inRadiansPerSecondPerRotationPerMinute: Double
inline val ProportionalGain<Velocity<Radian>, Velocity<Radian>>.inRadiansPerSecondPerRotationPerMinute: Double
get() = inRadiansPerSecondPerRadiansPerSecond * RADIANS_PER_ROTATION / SECONDS_PER_MINUTE

inline val IntegralGain<Meter, Velocity<Radian>>.inRadiansPerSecondPerMeterSeconds: Double
Expand Down Expand Up @@ -320,8 +325,7 @@ inline val DerivativeGain<Meter, Velocity<Radian>>.inRadiansPerSecondPerInchPerS
inline val DerivativeGain<Meter, Velocity<Radian>>.inRadiansPerSecondPerFootPerSecond: Double
get() = inRadiansPerSecondPerMeterPerSecond * METERS_PER_FOOT

inline val DerivativeGain<
Velocity<Meter>, Velocity<Radian>>.inRadiansPerSecondPerMetersPerSecondPerSecond: Double
inline val DerivativeGain<Velocity<Meter>, Velocity<Radian>>.inRadiansPerSecondPerMetersPerSecondPerSecond: Double
get() = value

inline val DerivativeGain<Radian, Velocity<Radian>>.inRadiansPerSecondPerRadianPerSecond: Double
Expand All @@ -333,19 +337,17 @@ inline val DerivativeGain<Radian, Velocity<Radian>>.inRadiansPerSecondPerDegreeP
inline val DerivativeGain<Radian, Velocity<Radian>>.inRadiansPerSecondPerRotationsPerMinute: Double
get() = inRadiansPerSecondPerRadianPerSecond / SECONDS_PER_MINUTE * RADIANS_PER_ROTATION

inline val DerivativeGain<
Velocity<Radian>, Velocity<Radian>>.inRadiansPerSecondPerRadiansPerSecondPerSecond: Double
inline val DerivativeGain<Velocity<Radian>, Velocity<Radian>>.inRadiansPerSecondPerRadiansPerSecondPerSecond: Double
get() = value

inline val DerivativeGain<
Velocity<Radian>, Velocity<Radian>>.inRadiansPerSecondPerDegreesPerSecondPerSecond: Double
inline val DerivativeGain<Velocity<Radian>, Velocity<Radian>>.inRadiansPerSecondPerDegreesPerSecondPerSecond: Double
get() = inRadiansPerSecondPerRadiansPerSecondPerSecond * RADIANS_PER_DEGREES

inline val DerivativeGain<
Velocity<Radian>, Velocity<Radian>>.inRadiansPerSecondPerRotationsPerMinutePerSecond: Double
inline val DerivativeGain<Velocity<Radian>, Velocity<Radian>>.inRadiansPerSecondPerRotationsPerMinutePerSecond: Double
get() = inRadiansPerSecondPerRadiansPerSecondPerSecond / SECONDS_PER_MINUTE * RADIANS_PER_ROTATION

inline val Double.metersPerSecondPerMetersPerSecond

inline val Double.MetersPerSecondPerMetersPerSecond
get() = Value<Fraction<Velocity<Meter>, Velocity<Meter>>>(this)

inline val ProportionalGain<Meter, Velocity<Meter>>.inMetersPerSecondPerMeter: Double
Expand All @@ -366,16 +368,13 @@ inline val ProportionalGain<Radian, Velocity<Meter>>.inMetersPerSecondPerDegree:
inline val ProportionalGain<Radian, Velocity<Meter>>.inMetersPerSecondPerRotation: Double
get() = inMetersPerSecondPerRadian * RADIANS_PER_ROTATION

inline val ProportionalGain<Velocity<Meter>, Velocity<Meter>>.inMetersPerSecondPerMetersPerSecond:
Double
get() = value
inline val ProportionalGain<Velocity<Meter>, Velocity<Meter>>.inMetersPerSecondPerMetersPerSecond: Double
get() = value

inline val ProportionalGain<Velocity<Radian>, Velocity<Meter>>.inMetersPerSecondPerRadiansPerSecond:
Double
get() = value
inline val ProportionalGain<Velocity<Radian>, Velocity<Meter>>.inMetersPerSecondPerRadiansPerSecond: Double
get() = value

inline val ProportionalGain<
Velocity<Radian>, Velocity<Meter>>.inMetersPerSecondPerRotationPerMinute: Double
inline val ProportionalGain<Velocity<Radian>, Velocity<Meter>>.inMetersPerSecondPerRotationPerMinute: Double
get() = inMetersPerSecondPerRadiansPerSecond * RADIANS_PER_ROTATION / SECONDS_PER_MINUTE

inline val IntegralGain<Meter, Velocity<Meter>>.inMetersPerSecondPerMeterSeconds: Double
Expand Down Expand Up @@ -417,8 +416,7 @@ inline val DerivativeGain<Meter, Velocity<Meter>>.inMetersPerSecondPerInchPerSec
inline val DerivativeGain<Meter, Velocity<Meter>>.inMetersPerSecondPerFootPerSecond: Double
get() = inMetersPerSecondPerMeterPerSecond * METERS_PER_FOOT

inline val DerivativeGain<
Velocity<Meter>, Velocity<Meter>>.inMetersPerSecondPerMetersPerSecondPerSecond: Double
inline val DerivativeGain<Velocity<Meter>, Velocity<Meter>>.inMetersPerSecondPerMetersPerSecondPerSecond: Double
get() = value

inline val DerivativeGain<Radian, Velocity<Meter>>.inMetersPerSecondPerRadianPerSecond: Double
Expand All @@ -430,18 +428,16 @@ inline val DerivativeGain<Radian, Velocity<Meter>>.inMetersPerSecondPerDegreePer
inline val DerivativeGain<Radian, Velocity<Meter>>.inMetersPerSecondPerRotationsPerMinute: Double
get() = inMetersPerSecondPerRadianPerSecond / SECONDS_PER_MINUTE * RADIANS_PER_ROTATION

inline val DerivativeGain<
Velocity<Radian>, Velocity<Meter>>.inMetersPerSecondPerRadiansPerSecondPerSecond: Double
inline val DerivativeGain<Velocity<Radian>, Velocity<Meter>>.inMetersPerSecondPerRadiansPerSecondPerSecond: Double
get() = value

inline val DerivativeGain<
Velocity<Radian>, Velocity<Meter>>.inMetersPerSecondPerDegreesPerSecondPerSecond: Double
inline val DerivativeGain<Velocity<Radian>, Velocity<Meter>>.inMetersPerSecondPerDegreesPerSecondPerSecond: Double
get() = inMetersPerSecondPerRadiansPerSecondPerSecond * RADIANS_PER_DEGREES

inline val DerivativeGain<
Velocity<Radian>, Velocity<Meter>>.inMetersPerSecondPerRotationsPerMinutePerSecond: Double
inline val DerivativeGain<Velocity<Radian>, Velocity<Meter>>.inMetersPerSecondPerRotationsPerMinutePerSecond: Double
get() = inMetersPerSecondPerRadiansPerSecondPerSecond / SECONDS_PER_MINUTE * RADIANS_PER_ROTATION


inline val Double.MetersPerMeters
get() = Value<Fraction<Meter, Meter>>(this)

Expand Down Expand Up @@ -532,6 +528,7 @@ inline val DerivativeGain<Velocity<Radian>, Meter>.inMetersPerDegreesPerSecondPe
inline val DerivativeGain<Velocity<Radian>, Meter>.inMetersPerRotationsPerMinutePerSecond: Double
get() = inMetersPerRadiansPerSecondPerSecond / SECONDS_PER_MINUTE * RADIANS_PER_ROTATION


inline val Double.DegreesPerSecondPerDegreesPerSecond
get() = Value<Fraction<Velocity<Radian>, Velocity<Radian>>>(this)

Expand All @@ -553,16 +550,13 @@ inline val ProportionalGain<Radian, Velocity<Radian>>.inDegreesPerSecondPerDegre
inline val ProportionalGain<Radian, Velocity<Radian>>.inDegreesPerSecondPerRotation: Double
get() = inDegreesPerSecondPerRadian * RADIANS_PER_ROTATION

inline val ProportionalGain<Velocity<Meter>, Velocity<Radian>>.inDegreesPerSecondPerMetersPerSecond:
Double
get() = value
inline val ProportionalGain<Velocity<Meter>, Velocity<Radian>>.inDegreesPerSecondPerMetersPerSecond: Double
get() = value

inline val ProportionalGain<
Velocity<Radian>, Velocity<Radian>>.inDegreesPerSecondPerRadiansPerSecond: Double
inline val ProportionalGain<Velocity<Radian>, Velocity<Radian>>.inDegreesPerSecondPerRadiansPerSecond: Double
get() = value

inline val ProportionalGain<
Velocity<Radian>, Velocity<Radian>>.inDegreesPerSecondPerRotationPerMinute: Double
inline val ProportionalGain<Velocity<Radian>, Velocity<Radian>>.inDegreesPerSecondPerRotationPerMinute: Double
get() = inDegreesPerSecondPerRadiansPerSecond * RADIANS_PER_ROTATION / SECONDS_PER_MINUTE

inline val IntegralGain<Meter, Velocity<Radian>>.inDegreesPerSecondPerMeterSeconds: Double
Expand Down Expand Up @@ -604,8 +598,7 @@ inline val DerivativeGain<Meter, Velocity<Radian>>.inDegreesPerSecondPerInchPerS
inline val DerivativeGain<Meter, Velocity<Radian>>.inDegreesPerSecondPerFootPerSecond: Double
get() = inDegreesPerSecondPerMeterPerSecond * METERS_PER_FOOT

inline val DerivativeGain<
Velocity<Meter>, Velocity<Radian>>.inDegreesPerSecondPerMetersPerSecondPerSecond: Double
inline val DerivativeGain<Velocity<Meter>, Velocity<Radian>>.inDegreesPerSecondPerMetersPerSecondPerSecond: Double
get() = value

inline val DerivativeGain<Radian, Velocity<Radian>>.inDegreesPerSecondPerRadianPerSecond: Double
Expand All @@ -617,14 +610,11 @@ inline val DerivativeGain<Radian, Velocity<Radian>>.inDegreesPerSecondPerDegreeP
inline val DerivativeGain<Radian, Velocity<Radian>>.inDegreesPerSecondPerRotationsPerMinute: Double
get() = inDegreesPerSecondPerRadianPerSecond / SECONDS_PER_MINUTE * RADIANS_PER_ROTATION

inline val DerivativeGain<
Velocity<Radian>, Velocity<Radian>>.inDegreesPerSecondPerRadiansPerSecondPerSecond: Double
inline val DerivativeGain<Velocity<Radian>, Velocity<Radian>>.inDegreesPerSecondPerRadiansPerSecondPerSecond: Double
get() = value

inline val DerivativeGain<
Velocity<Radian>, Velocity<Radian>>.inDegreesPerSecondPerDegreesPerSecondPerSecond: Double
inline val DerivativeGain<Velocity<Radian>, Velocity<Radian>>.inDegreesPerSecondPerDegreesPerSecondPerSecond: Double
get() = inDegreesPerSecondPerRadiansPerSecondPerSecond * RADIANS_PER_DEGREES

inline val DerivativeGain<
Velocity<Radian>, Velocity<Radian>>.inDegreesPerSecondPerRotationsPerMinutePerSecond: Double
inline val DerivativeGain<Velocity<Radian>, Velocity<Radian>>.inDegreesPerSecondPerRotationsPerMinutePerSecond: Double
get() = inDegreesPerSecondPerRadiansPerSecondPerSecond / SECONDS_PER_MINUTE * RADIANS_PER_ROTATION
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ inline val <K : UnitKey> Value<K>.perRadianPerSecond
inline val <K : UnitKey> Value<K>.perDegreePerSecond
get() = perRadianPerSecond / RADIANS_PER_DEGREES

inline val <K : UnitKey> Value<K>.perRotationPerMinute
get() = (perRadianPerSecond * SECONDS_PER_MINUTE) / RADIANS_PER_ROTATION

{% for output_index in range(control_outputs | length) %}

inline val Double.{{ output_aliases[output_index] }}Per{{ output_aliases[output_index] }}
Expand Down

0 comments on commit a50122c

Please sign in to comment.