Class SingleJointedArmSim

    • Constructor Detail

      • SingleJointedArmSim

        public SingleJointedArmSim​(LinearSystem<N2,​N1,​N1> plant,
                                   DCMotor gearbox,
                                   double gearing,
                                   double armLengthMeters,
                                   double minAngleRads,
                                   double maxAngleRads,
                                   double armMassKg,
                                   boolean simulateGravity)
        Creates a simulated arm mechanism.
        Parameters:
        plant - The linear system that represents the arm.
        gearbox - The type of and number of motors in the arm gearbox.
        gearing - The gearing of the arm (numbers greater than 1 represent reductions).
        armLengthMeters - The length of the arm.
        minAngleRads - The minimum angle that the arm is capable of.
        maxAngleRads - The maximum angle that the arm is capable of.
        armMassKg - The mass of the arm.
        simulateGravity - Whether gravity should be simulated or not.
      • SingleJointedArmSim

        public SingleJointedArmSim​(LinearSystem<N2,​N1,​N1> plant,
                                   DCMotor gearbox,
                                   double gearing,
                                   double armLengthMeters,
                                   double minAngleRads,
                                   double maxAngleRads,
                                   double armMassKg,
                                   boolean simulateGravity,
                                   Matrix<N1,​N1> measurementStdDevs)
        Creates a simulated arm mechanism.
        Parameters:
        plant - The linear system that represents the arm.
        gearbox - The type of and number of motors in the arm gearbox.
        gearing - The gearing of the arm (numbers greater than 1 represent reductions).
        armLengthMeters - The length of the arm.
        minAngleRads - The minimum angle that the arm is capable of.
        maxAngleRads - The maximum angle that the arm is capable of.
        armMassKg - The mass of the arm.
        simulateGravity - Whether gravity should be simulated or not.
        measurementStdDevs - The standard deviations of the measurements.
      • SingleJointedArmSim

        public SingleJointedArmSim​(DCMotor gearbox,
                                   double gearing,
                                   double jKgMetersSquared,
                                   double armLengthMeters,
                                   double minAngleRads,
                                   double maxAngleRads,
                                   double armMassKg,
                                   boolean simulateGravity)
        Creates a simulated arm mechanism.
        Parameters:
        gearbox - The type of and number of motors in the arm gearbox.
        gearing - The gearing of the arm (numbers greater than 1 represent reductions).
        jKgMetersSquared - The moment of inertia of the arm, can be calculated from CAD software.
        armLengthMeters - The length of the arm.
        minAngleRads - The minimum angle that the arm is capable of.
        maxAngleRads - The maximum angle that the arm is capable of.
        armMassKg - The mass of the arm.
        simulateGravity - Whether gravity should be simulated or not.
      • SingleJointedArmSim

        public SingleJointedArmSim​(DCMotor gearbox,
                                   double gearing,
                                   double jKgMetersSquared,
                                   double armLengthMeters,
                                   double minAngleRads,
                                   double maxAngleRads,
                                   double armMassKg,
                                   boolean simulateGravity,
                                   Matrix<N1,​N1> measurementStdDevs)
        Creates a simulated arm mechanism.
        Parameters:
        gearbox - The type of and number of motors in the arm gearbox.
        gearing - The gearing of the arm (numbers greater than 1 represent reductions).
        jKgMetersSquared - The moment of inertia of the arm; can be calculated from CAD software.
        armLengthMeters - The length of the arm.
        minAngleRads - The minimum angle that the arm is capable of.
        maxAngleRads - The maximum angle that the arm is capable of.
        armMassKg - The mass of the arm.
        simulateGravity - Whether gravity should be simulated or not.
        measurementStdDevs - The standard deviations of the measurements.
    • Method Detail

      • wouldHitLowerLimit

        public boolean wouldHitLowerLimit​(double currentAngleRads)
        Returns whether the arm would hit the lower limit.
        Parameters:
        currentAngleRads - The current arm height.
        Returns:
        Whether the arm would hit the lower limit.
      • wouldHitUpperLimit

        public boolean wouldHitUpperLimit​(double currentAngleRads)
        Returns whether the arm would hit the upper limit.
        Parameters:
        currentAngleRads - The current arm height.
        Returns:
        Whether the arm would hit the upper limit.
      • hasHitLowerLimit

        public boolean hasHitLowerLimit()
        Returns whether the arm has hit the lower limit.
        Returns:
        Whether the arm has hit the lower limit.
      • hasHitUpperLimit

        public boolean hasHitUpperLimit()
        Returns whether the arm has hit the upper limit.
        Returns:
        Whether the arm has hit the upper limit.
      • getAngleRads

        public double getAngleRads()
        Returns the current arm angle.
        Returns:
        The current arm angle.
      • getVelocityRadPerSec

        public double getVelocityRadPerSec()
        Returns the current arm velocity.
        Returns:
        The current arm velocity.
      • setInputVoltage

        public void setInputVoltage​(double volts)
        Sets the input voltage for the arm.
        Parameters:
        volts - The input voltage.
      • estimateMOI

        public static double estimateMOI​(double lengthMeters,
                                         double massKg)
        Calculates a rough estimate of the moment of inertia of an arm given its length and mass.
        Parameters:
        lengthMeters - The length of the arm.
        massKg - The mass of the arm.
        Returns:
        The calculated moment of inertia.
      • updateX

        protected Matrix<N2,​N1updateX​(Matrix<N2,​N1> currentXhat,
                                              Matrix<N1,​N1> u,
                                              double dtSeconds)
        Updates the state of the arm.
        Overrides:
        updateX in class LinearSystemSim<N2,​N1,​N1>
        Parameters:
        currentXhat - The current state estimate.
        u - The system inputs (voltage).
        dtSeconds - The time difference between controller updates.
        Returns:
        The new state.