Source code for frc_rekt.gearbox

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""Gearbox model.

Models a gearbox on an frc robot.

"""

import logging
import pandas as pd
import numpy as np

from frc_rekt.motor import Motor

# Pandas options
pd.set_option('max_rows', 121)
pd.set_option('max_columns', 132)
pd.set_option('expand_frame_repr', False)

# just a convenience, so we dont have to type np.poly.poly
POLY = np.polynomial.polynomial


[docs]class Gearbox(object): # pylint: disable=too-few-public-methods """Model of a Gearbox.""" def __init__(self, motors=None, gears=None, efficiency=0.8): """Gearbox. :param motors: The motors attached to the gearbox :type motors: list :param gears: The gears in the gearbox :type gears: list :param efficiency: The efficiency of the gearbox :type efficiency: float """ self._logger = logging.getLogger(__name__) # store diameter in meters self._gears = gears if not self._gears: self._gears = [(14, 50), (16, 48)] self._motors = motors if not self._motors: self._motors = [Motor(), Motor(), Motor()] self._efficiency = efficiency self._logger.debug('%s created', str(self)) @property def mechanical_advantage(self): """Gearbox mechanical advantage.""" mechanical_advantage = 1.0 for gear_pair in self._gears: mechanical_advantage = mechanical_advantage * ( float(gear_pair[1]) / float(gear_pair[0])) return mechanical_advantage