Source code for wpimath.units

# Copyright (c) FIRST and other WPILib contributors.
# Open Source Software; you can modify and/or share it under the terms of
# the WPILib BSD license file in the root directory of this project.

from __future__ import annotations

import math
import typing

kInchesPerFoot = 12.0
kMetersPerInch = 0.0254
kSecondsPerMinute = 60
kMillisecondsPerSecond = 1000
kKilogramsPerLb = 0.453592


[docs] def metersToFeet(m: meters) -> feet: """Converts given meters to feet. :param m: The meters to convert to feet. :returns: Feet converted from meters. """ return metersToInches(m) / kInchesPerFoot
[docs] def feetToMeters(ft: feet) -> meters: """Converts given feet to meters. :param ft: The feet to convert to meters. :returns: Meters converted from feet. """ return inchesToMeters(ft * kInchesPerFoot)
[docs] def metersToInches(m: meters) -> inches: """Converts given meters to inches. :param m: The meters to convert to inches. :returns: Inches converted from meters. """ return m / kMetersPerInch
[docs] def inchesToMeters(i: inches) -> meters: """Converts given inches to meters. :param i: The inches to convert to meters. :returns: Meters converted from inches. """ return i * kMetersPerInch
# Converts given degrees to radians. degreesToRadians: typing.Callable[[degrees], radians] = math.radians # Converts given radians to degrees. radiansToDegrees: typing.Callable[[radians], degrees] = math.degrees
[docs] def radiansToRotations(rad: radians) -> float: """Converts given radians to rotations. :param rad: The radians to convert. :returns: rotations Converted from radians. """ return rad / math.tau
[docs] def degreesToRotations(deg: degrees) -> float: """Converts given degrees to rotations. :param deg: The degrees to convert. :returns: rotations Converted from degrees. """ return deg / 360.0
[docs] def rotationsToDegrees(rotations: float) -> degrees: """Converts given rotations to degrees. :param rotations: The rotations to convert. :returns: degrees Converted from rotations. """ return rotations * 360.0
[docs] def rotationsToRadians(rotations: float) -> float: """Converts given rotations to radians. :param rotations: The rotations to convert. :returns: radians Converted from rotations. """ return rotations * math.tau
[docs] def rotationsPerMinuteToRadiansPerSecond( rpm: revolutions_per_minute, ) -> radians_per_second: """Converts rotations per minute to radians per second. :param rpm: The rotations per minute to convert to radians per second. :returns: Radians per second converted from rotations per minute. """ return (rpm / kSecondsPerMinute) * math.tau
[docs] def radiansPerSecondToRotationsPerMinute( rps: radians_per_second, ) -> revolutions_per_minute: """Converts radians per second to rotations per minute. :param rps: The radians per second to convert to from rotations per minute. :returns: Rotations per minute converted from radians per second. """ return (rps * kSecondsPerMinute) / math.tau
[docs] def millisecondsToSeconds(ms: milliseconds) -> seconds: """Converts given milliseconds to seconds. :param ms: The milliseconds to convert to seconds. :returns: Seconds converted from milliseconds. """ return ms / kMillisecondsPerSecond
[docs] def secondsToMilliseconds(s: seconds) -> milliseconds: """Converts given seconds to milliseconds. :param s: The seconds to convert to milliseconds. :returns: Milliseconds converted from seconds. """ return s * kMillisecondsPerSecond
[docs] def kilogramsToLbs(kg: kilograms) -> pounds: """Converts kilograms into lbs (pound-mass). :param kg: The kilograms to convert to lbs (pound-mass). :returns: Lbs (pound-mass) converted from kilograms. """ return kg / kKilogramsPerLb
[docs] def lbsToKilograms(lbs: pounds) -> kilograms: """Converts lbs (pound-mass) into kilograms. :param lbs: The lbs (pound-mass) to convert to kilograms. :returns: Kilograms converted from lbs (pound-mass). """ return lbs * kKilogramsPerLb
# # type aliases to make type checkers happier # - None of these types do any enforcement of unit related things # # acceleration meters_per_second_squared = float feet_per_second_squared = float standard_gravity = float # angle radians = float nanoradians = float microradians = float milliradians = float kiloradians = float degrees = float arcminutes = float arcseconds = float milliarcseconds = float turns = float gradians = float # angular acceleration radians_per_second_squared = float radians_per_second = float degrees_per_second_squared = float turns_per_second_squared = float # angular velocity radians_per_second = float degrees_per_second = float turns_per_second = float revolutions_per_minute = float milliarcseconds_per_year = float # area square_meters = float square_feet = float square_inches = float square_miles = float square_kilometers = float hectares = float acres = float # capacitance farads = float nanofarads = float microfarads = float millifarads = float kilofarads = float # compound types radians_per_meter = float radians_per_second_per_volt = float units_per_second = float units_per_second_squared = float volt_seconds = float volt_seconds_squared = float volt_seconds_per_meter = float volt_seconds_squared_per_meter = float volt_seconds_per_feet = float volt_seconds_squared_per_feet = float volt_seconds_per_radian = float volt_seconds_squared_per_radian = float unit_seconds_squared_per_unit = float meters_per_second_squared_per_volt = float # charge coulombs = float nanocoulombs = float microcoulombs = float millicoulombs = float kilocoulombs = float ampere_hours = float nanoampere_hours = float microampere_hours = float milliampere_hours = float kiloampere_hours = float # concentration parts_per_million = float parts_per_billion = float parts_per_trillion = float percent = float # conductance siemens = float nanosiemens = float microsiemens = float millisiemens = float kilosiemens = float # current amperes = float nanoamperes = float microamperes = float milliamperes = float kiloamperes = float # data exabytes = float exabits = float # data transfer exabytes_per_second = float exabits_per_second = float # density kilograms_per_cubic_meter = float grams_per_milliliter = float kilograms_per_liter = float ounces_per_cubic_foot = float ounces_per_cubic_inch = float ounces_per_gallon = float pounds_per_cubic_foot = float pounds_per_cubic_inch = float pounds_per_gallon = float slugs_per_cubic_foot = float # energy joules = float nanojoules = float microjoules = float millijoules = float kilojoules = float calories = float nanocalories = float microcalories = float millicalories = float kilocalories = float kilowatt_hours = float watt_hours = float british_thermal_units = float british_thermal_units_iso = float british_thermal_units_59 = float therms = float foot_pounds = float # force newtons = float nanonewtons = float micronewtons = float millinewtons = float kilonewtons = float pounds = float dynes = float kiloponds = float poundals = float # frequency hertz = float nanohertz = float microhertz = float millihertz = float kilohertz = float # illuminance luxes = float nanoluxes = float microluxes = float milliluxes = float kiloluxes = float footcandles = float lumens_per_square_inch = float phots = float # inductance henries = float nanohenries = float microhenries = float millihenries = float kilohenries = float # length meters = float nanometers = float micrometers = float millimeters = float kilometers = float feet = float mils = float inches = float miles = float nauticalMiles = float astronicalUnits = float lightyears = float parsecs = float angstroms = float cubits = float fathoms = float chains = float furlongs = float hands = float leagues = float nauticalLeagues = float yards = float # luminous flux lumens = float nanolumens = float microlumens = float millilumens = float kilolumens = float # luminous intensity candelas = float nanocandelas = float microcandelas = float millicandelas = float kilocandelas = float # magnetic flux webers = float nanowebers = float microwebers = float milliwebers = float kilowebers = float maxwells = float # magnetic strength teslas = float nanoteslas = float microteslas = float milliteslas = float kiloteslas = float gauss = float # mass grams = float nanograms = float micrograms = float milligrams = float kilograms = float metric_tons = float pounds = float long_tons = float short_tons = float stone = float ounces = float carats = float slugs = float # moment of inertia kilogram_square_meters = float # power watts = float nanowatts = float microwatts = float milliwatts = float kilowatts = float horsepower = float # pressure pascals = float nanopascals = float micropascals = float millipascals = float kilopascals = float bars = float mbars = float atmospheres = float pounds_per_square_inch = float torrs = float # radiation becquerels = float nanobecquerels = float microbecquerels = float millibecquerels = float kilobecquerels = float grays = float nanograys = float micrograys = float milligrays = float kilograys = float sieverts = float nanosieverts = float microsieverts = float millisieverts = float kilosieverts = float curies = float rutherfords = float rads = float # resistance ohms = float nanoohms = float microohms = float milliohms = float kiloohms = float # solid angle steradians = float nanosteradians = float microsteradians = float millisteradians = float kilosteradians = float degrees_squared = float spats = float # substance moles = float # temperature kelvin = float celsius = float fahrenheit = float reaumur = float rankine = float # time seconds = float nanoseconds = float microseconds = float milliseconds = float kiloseconds = float minutes = float hours = float days = float weeks = float years = float julian_years = float gregorian_years = float # torque newton_meters = float foot_poundals = float inch_pounds = float meter_kilograms = float # velocity meters_per_second = float feet_per_second = float miles_per_hour = float kilometers_per_hour = float knots = float # voltage volts = float nanovolts = float microvolts = float millivolts = float kilovolts = float statvolts = float abvolts = float # volume cubic_meters = float cubic_millimeters = float cubic_kilometers = float liters = float nanoliters = float microliters = float milliliters = float kiloliters = float cubic_inches = float cubic_feet = float cubic_yards = float cubic_miles = float gallons = float quarts = float pints = float cups = float fluid_ounces = float barrels = float bushels = float cords = float cubic_fathoms = float tablespoons = float teaspoons = float pinches = float dashes = float drops = float fifths = float drams = float gills = float pecks = float sacks = float shots = float strikes = float