Robot Characterization Challenges

I’m pretty sure that all of the parameters have been entered correctly for the Robot Characterization Tool, but when the button to generate the project is pressed, nothing happens. Project Type is “Drivetrain”; Control Type is “CTRE”; Unit Type is “Inches”; and Units per Rotation is “18.84”. Below is the information from the body of the GUI:

{
# Ports for motors
# If doing drive test, treat this as the left side of the drivetrain
“motorPorts”: [3,4],
# Only if you are doing drive (leave empty “[]” if not)
“rightMotorPorts”: [5,6],
# Class names of motor controllers used.
# ‘WPI_TalonSRX’
# ‘WPI_VictorSPX’
# ‘WPI_TalonFX’
# If doing drive test, treat this as the left side of the drivetrain
“controllerTypes”: [‘WPI_TalonFX’]
# Only if you are doing drive (leave empty “[]” if not)
“rightControllerTypes”: [‘WPI_TalonFX’]
# Set motors to inverted or not
# If doing drive test, treat this as the left side of the drivetrain
“motorsInverted”: [False],
# Only if you are doing drive (leave empty “[]” if not)
“rightMotorsInverted”: [False],
# Encoder edges-per-revolution (NOT cycles per revolution!)
# For the CTRE Mag Encoder, use 4096 (4 * 1024 = 4096)
“encoderEPR”: 4096,
# Gearing accounts for the gearing between the encoder and the output shaft
“gearing”: 10.71,
# Encoder ports (leave empty “[]” if not needed)
# Specifying encoder ports indicates you want to use Rio-side encoders
# If doing drive test, treat this as the left side of the drivetrain
“encoderPorts”: [],
# Only if you are doing drive (leave empty “[]” if not)
“rightEncoderPorts”: [],
# Set to True if encoders need to be inverted
# If doing drive test, treat this as the left side of the drivetrain
“encoderInverted”: False,
# Only if you are doing drive (set to False if not needed)
“rightEncoderInverted”: False,
# ** The following is only if you are using a gyro for the DriveTrain test**
# Gyro type (one of “NavX”, “Pigeon”, “ADXRS450”, “AnalogGyro”, or “None”)
“gyroType”: “NavX”,
# Whatever you put into the constructor of your gyro
# Could be:
# “SPI.Port.kMXP” (MXP SPI port for NavX or ADXRS450),
# “SerialPort.Port.kMXP” (MXP Serial port for NavX),
# “I2C.Port.kOnboard” (Onboard I2C port for NavX),
# “0” (Pigeon CAN ID or AnalogGyro channel),
# “new WPI_TalonSRX(3)” (Pigeon on a Talon SRX),
# “” (NavX using default SPI, ADXRS450 using onboard CS0, or no gyro)
“gyroPort”: “SPI.Port.kMXP”,
}

See this post where I mention that you need to have the same number of elements in all of your array:

1 Like

I think that I have added them correctly, and no response. Here’s a dumb question, do I need to be connected to the robot to complete the process?

{
# Ports for motors
# If doing drive test, treat this as the left side of the drivetrain
“motorPorts”: [3,4],
# Only if you are doing drive (leave empty “[]” if not)
“rightMotorPorts”: [5,6],
# Class names of motor controllers used.
# ‘WPI_TalonSRX’
# ‘WPI_VictorSPX’
# ‘WPI_TalonFX’
# If doing drive test, treat this as the left side of the drivetrain
“controllerTypes”: [‘WPI_TalonFX’,‘WPI_TalonFX’]
# Only if you are doing drive (leave empty “[]” if not)
“rightControllerTypes”: [‘WPI_TalonFX’,‘WPI_TalonFX’]
# Set motors to inverted or not
# If doing drive test, treat this as the left side of the drivetrain
“motorsInverted”: [False],
# Only if you are doing drive (leave empty “[]” if not)
“rightMotorsInverted”: [False],
# Encoder edges-per-revolution (NOT cycles per revolution!)
# For the CTRE Mag Encoder, use 4096 (4 * 1024 = 4096)
“encoderEPR”: 4096,
# Gearing accounts for the gearing between the encoder and the output shaft
“gearing”: 10.71,
# Encoder ports (leave empty “[]” if not needed)
# Specifying encoder ports indicates you want to use Rio-side encoders
# If doing drive test, treat this as the left side of the drivetrain
“encoderPorts”: [],
# Only if you are doing drive (leave empty “[]” if not)
“rightEncoderPorts”: [],
# Set to True if encoders need to be inverted
# If doing drive test, treat this as the left side of the drivetrain
“encoderInverted”: False,
# Only if you are doing drive (set to False if not needed)
“rightEncoderInverted”: False,
# ** The following is only if you are using a gyro for the DriveTrain test**
# Gyro type (one of “NavX”, “Pigeon”, “ADXRS450”, “AnalogGyro”, or “None”)
“gyroType”: “NavX”,
# Whatever you put into the constructor of your gyro
# Could be:
# “SPI.Port.kMXP” (MXP SPI port for NavX or ADXRS450),
# “SerialPort.Port.kMXP” (MXP Serial port for NavX),
# “I2C.Port.kOnboard” (Onboard I2C port for NavX),
# “0” (Pigeon CAN ID or AnalogGyro channel),
# “new WPI_TalonSRX(3)” (Pigeon on a Talon SRX),
# “” (NavX using default SPI, ADXRS450 using onboard CS0, or no gyro)
“gyroPort”: “SPI.Port.kMXP”,
}

It is all arrays. So motorsInverted, rightMotorsInverted too.

You don’t want to use 4096 for EPR either. Are you using a Mag Encoder or the encoder built into the Falcons?

I am assuming Falcons which as you can see here have 2048 EPR. Unfortunately due to a bug in frc-char you will have to use 2048*4= 8192 to get it to work properly.

Thank you for your help.

I hate to keep seeming dense, but are you saying that the word false needs to be entered twice so that it matches the number of entries for the speed controller?

{
# Ports for motors
# If doing drive test, treat this as the left side of the drivetrain
“motorPorts”: [3,4],
# Only if you are doing drive (leave empty “[]” if not)
“rightMotorPorts”: [5,6],
# Class names of motor controllers used.
# ‘WPI_TalonSRX’
# ‘WPI_VictorSPX’
# ‘WPI_TalonFX’
# If doing drive test, treat this as the left side of the drivetrain
“controllerTypes”: [‘WPI_TalonFX’,‘WPI_TalonFX’]
# Only if you are doing drive (leave empty “[]” if not)
“rightControllerTypes”: [‘WPI_TalonFX’,‘WPI_TalonFX’]
# Set motors to inverted or not
# If doing drive test, treat this as the left side of the drivetrain
“motorsInverted”: [False],
# Only if you are doing drive (leave empty “[]” if not)
“rightMotorsInverted”: [False],
# Encoder edges-per-revolution (NOT cycles per revolution!)
# For the CTRE Mag Encoder, use 4096 (4 * 1024 = 4096)
“encoderEPR”: 8192,
# Gearing accounts for the gearing between the encoder and the output shaft
“gearing”: 10.71,
# Encoder ports (leave empty “[]” if not needed)
# Specifying encoder ports indicates you want to use Rio-side encoders
# If doing drive test, treat this as the left side of the drivetrain
“encoderPorts”: [],
# Only if you are doing drive (leave empty “[]” if not)
“rightEncoderPorts”: [],
# Set to True if encoders need to be inverted
# If doing drive test, treat this as the left side of the drivetrain
“encoderInverted”: False,
# Only if you are doing drive (set to False if not needed)
“rightEncoderInverted”: False,
# ** The following is only if you are using a gyro for the DriveTrain test**
# Gyro type (one of “NavX”, “Pigeon”, “ADXRS450”, “AnalogGyro”, or “None”)
“gyroType”: “NavX”,
# Whatever you put into the constructor of your gyro
# Could be:
# “SPI.Port.kMXP” (MXP SPI port for NavX or ADXRS450),
# “SerialPort.Port.kMXP” (MXP Serial port for NavX),
# “I2C.Port.kOnboard” (Onboard I2C port for NavX),
# “0” (Pigeon CAN ID or AnalogGyro channel),
# “new WPI_TalonSRX(3)” (Pigeon on a Talon SRX),
# “” (NavX using default SPI, ADXRS450 using onboard CS0, or no gyro)
“gyroPort”: “SPI.Port.kMXP”,
}

Yes:
“motorsInverted”: [False, False],
“rightMotorsInverted”: [False, False],

1 Like

I appreciate your help. There may be something lacking my my installation of the tool. I’ve written it the way you suggested and I still get no characterization code in Java.

I understand it is a little particular but you just gotta follow the error messages you get when you try to generate the project.

In this case it looks like you removed the comma after:
“controllerTypes”: [‘WPI_TalonFX’,‘WPI_TalonFX’]
“rightControllerTypes”: [‘WPI_TalonFX’,‘WPI_TalonFX’]

All of the non commented lines need a comma after them.

1 Like

Well that did result in something. Thanks for the encouragement. I will look through the other post you referred to and see if I can resolve the new error.

image

Can you post the config you are using currently?

Do you see error output in the terminal window where you started frc-characterization?

{
# Ports for motors
# If doing drive test, treat this as the left side of the drivetrain
“motorPorts”: [3,4],
# Only if you are doing drive (leave empty “” if not)
“rightMotorPorts”: [5,6],
# Class names of motor controllers used.
# ‘WPI_TalonSRX’
# ‘WPI_VictorSPX’
# ‘WPI_TalonFX’
# If doing drive test, treat this as the left side of the drivetrain
“controllerTypes”: [‘WPI_TalonFX’,‘WPI_TalonFX’],
# Only if you are doing drive (leave empty “” if not)
“rightControllerTypes”: [‘WPI_TalonFX’,‘WPI_TalonFX’],
# Set motors to inverted or not
# If doing drive test, treat this as the left side of the drivetrain
“motorsInverted”: [False, False],
# Only if you are doing drive (leave empty “” if not)
“rightMotorsInverted”: [False, False],
# Encoder edges-per-revolution (NOT cycles per revolution!)
# For the CTRE Mag Encoder, use 4096 (4 * 1024 = 4096)
“encoderEPR”: 8192,
# Gearing accounts for the gearing between the encoder and the output shaft
“gearing”: 10.71,
# Encoder ports (leave empty “” if not needed)
# Specifying encoder ports indicates you want to use Rio-side encoders
# If doing drive test, treat this as the left side of the drivetrain
“encoderPorts”: ,
# Only if you are doing drive (leave empty “” if not)
“rightEncoderPorts”: ,
# Set to True if encoders need to be inverted
# If doing drive test, treat this as the left side of the drivetrain
“encoderInverted”: ,
# Only if you are doing drive (set to False if not needed)
“rightEncoderInverted”: [False,False],
# ** The following is only if you are using a gyro for the DriveTrain test**
# Gyro type (one of “NavX”, “Pigeon”, “ADXRS450”, “AnalogGyro”, or “None”)
“gyroType”: “NavX”,
# Whatever you put into the constructor of your gyro
# Could be:
# “SPI.Port.kMXP” (MXP SPI port for NavX or ADXRS450),
# “SerialPort.Port.kMXP” (MXP Serial port for NavX),
# “I2C.Port.kOnboard” (Onboard I2C port for NavX),
# “0” (Pigeon CAN ID or AnalogGyro channel),
# “new WPI_TalonSRX(3)” (Pigeon on a Talon SRX),
# “” (NavX using default SPI, ADXRS450 using onboard CS0, or no gyro)
“gyroPort”: “SPI.Port.kMXP”,
}

The second image is what comes up in the PowerShell app

@jdaming I think I see the problem. I started a new characterization tool and neglected to reset the parameters, like type of characterization project, units, and units per rotation.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.