Files
FtcTemplate/TeamCode/src/main/java/teamcode/RobotParams.java
Titan Robotics Club 5a3bb9474b Sync'd latest changes from IntoTheDeep.
Updated ftclib, trclib.
2024-12-24 02:37:08 -08:00

154 lines
8.2 KiB
Java

/*
* Copyright (c) 2023 Titan Robotics Club (http://www.titanrobotics.com)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package teamcode;
import android.os.Environment;
import teamcode.subsystems.RobotBase;
import trclib.drivebase.TrcDriveBase.DriveOrientation;
import trclib.driverio.TrcGameController.DriveMode;
import trclib.pathdrive.TrcPose2D;
/**
* This class contains robot constants and parameters.
*/
public class RobotParams
{
/**
* This class contains robot preferences. It enables/disables various robot features. This is especially useful
* during robot development where some subsystems may not be available or ready yet. By disabling unavailable
* subsystems, one can test the rest of the robot without the fear of code crashing when some subsystems are not
* found.
*/
public static class Preferences
{
// Global config
public static final RobotBase.RobotType robotType = RobotBase.RobotType.MecanumRobot;
public static final boolean inCompetition = false;
public static final boolean useTraceLog = true;
public static final boolean useLoopPerformanceMonitor = true;
public static final boolean useBatteryMonitor = false;
// Driver feedback
// Status Update: Status Update may affect robot loop time, don't do it when in competition.
public static final boolean doStatusUpdate = !inCompetition;
public static final boolean showSubsystems = true;
public static final boolean useBlinkinLED = false;
public static final boolean useGobildaLED = false;
public static final boolean useRumble = false;
// Vision
public static final boolean useVision = false;
public static final boolean useWebCam = false; // false to use Android phone camera.
public static final boolean useBuiltinCamBack = false; // For Android Phone as Robot Controller.
public static final boolean tuneColorBlobVision = false;
public static final boolean useLimelightVision = false;
public static final boolean useCameraStreamProcessor = false;
public static final boolean useAprilTagVision = false;
public static final boolean useColorBlobVision = false;
public static final boolean showVisionView = !inCompetition;
public static final boolean showVisionStat = false;
// Drive Base
public static final boolean useDriveBase = false;
public static final boolean usePinpointOdometry = false;
public static final boolean useSparkfunOTOS = false;
// Subsystems
public static final boolean useSubsystems = false;
} //class Preferences
/**
* This class contains miscellaneous robot info.
*/
public static class Robot
{
public static final String TEAM_FOLDER_PATH =
Environment.getExternalStorageDirectory().getPath() + "/FIRST/ftcTeam";
public static final String LOG_FOLDER_PATH = TEAM_FOLDER_PATH + "/tracelogs";
public static final String STEER_ZERO_CAL_FILE = TEAM_FOLDER_PATH + "/SteerZeroCalibration.txt";
public static final double DASHBOARD_UPDATE_INTERVAL = 0.2; // in msec
public static final String ROBOT_CODEBASE = "Robot2025";
// Robot Drive Parameters.
public static final DriveMode DRIVE_MODE = DriveMode.ArcadeMode;
public static final DriveOrientation DRIVE_ORIENTATION = DriveOrientation.ROBOT;
public static final double DRIVE_SLOW_SCALE = 0.3;
public static final double DRIVE_NORMAL_SCALE = 1.0;
public static final double TURN_SLOW_SCALE = 0.3;
public static final double TURN_NORMAL_SCALE = 0.6;
public static final double ROBOT_LENGTH = 18.0;
public static final double ROBOT_WIDTH = 18.0;
} //class Robot
/**
* This class contains season specific game element information.
*/
public static class Game
{
public static final boolean fieldIsMirrored = false;
// AprilTag locations.
public static final TrcPose2D[] APRILTAG_POSES = new TrcPose2D[] {
new TrcPose2D(0.0, 0.0, 0.0), // TagId 1
new TrcPose2D(0.0, 0.0, 0.0), // TagId 2
new TrcPose2D(0.0, 0.0, 0.0), // TagId 3
new TrcPose2D(0.0, 0.0, 0.0) // TagId 4
};
// Robot start locations.
// Game elapsed times.
public static final double AUTO_PERIOD = 30.0; // 30 seconds auto period
public static final double TELEOP_PERIOD = 120.0; // 2 minutes teleop period
public static final double PARKING_TIME = 10.0;
public static final double ENDGAME_DEADLINE = TELEOP_PERIOD - PARKING_TIME;
} //class Game
/**
* This class contains field dimension constants. Generally, these should not be changed.
*/
public static class Field
{
public static final double FULL_FIELD_INCHES = 141.24;
public static final double HALF_FIELD_INCHES = FULL_FIELD_INCHES/2.0;
public static final double FULL_TILE_INCHES = FULL_FIELD_INCHES/6.0;
} //class Field
/**
* This class contains Gobilda motor parameters.
*/
public static class Gobilda
{
//https://www.gobilda.com/5203-series-yellow-jacket-planetary-gear-motor-71-2-1-ratio-24mm-length-8mm-rex-shaft-84-rpm-3-3-5v-encoder/
public static final double MOTOR_5203_84_ENC_PPR =
(((1.0 + 46.0/17.0) * (1.0 + 46.0/17.0) * (1.0 + 46.0/11.0)) * 28.0);
public static final double MOTOR_5203_84_MAX_RPM = 84.0;
public static final double MOTOR_5203_84_MAX_VEL_PPS =
MOTOR_5203_84_ENC_PPR * MOTOR_5203_84_MAX_RPM / 60.0; // 2789.661 pps
//https://www.gobilda.com/5203-series-yellow-jacket-planetary-gear-motor-19-2-1-ratio-24mm-length-8mm-rex-shaft-312-rpm-3-3-5v-encoder/
public static final double MOTOR_5203_312_ENC_PPR = (((1.0 + 46.0/17.0)*(1.0 + 46.0/11.0))*28.0);
public static final double MOTOR_5203_312_MAX_RPM = 312.0;
public static final double MOTOR_5203_312_MAX_VEL_PPS =
MOTOR_5203_312_ENC_PPR * MOTOR_5203_312_MAX_RPM / 60.0; // 2795.9872 pps
//https://www.gobilda.com/5203-series-yellow-jacket-planetary-gear-motor-13-7-1-ratio-24mm-length-8mm-rex-shaft-435-rpm-3-3-5v-encoder/
public static final double MOTOR_5203_435_ENC_PPR = (((1.0 + 46.0/17.0)*(1.0 + 46.0/17.0))*28.0);
public static final double MOTOR_5203_435_MAX_RPM = 435.0;
public static final double MOTOR_5203_435_MAX_VEL_PPS =
MOTOR_5203_435_ENC_PPR * MOTOR_5203_435_MAX_RPM / 60.0; // 2787.9135 pps
} //class Gobilda
} //class RobotParams