Merge changes I07cddd54,Ib68aa460,I68643447,I37406f09,Ia0f9d41c
* changes:
Increase number of senders on timing report
Use the second catapult motor in pwm
Add climber zeroing
Add intake zeroing constants
Update sensor numbers in wpilib_interface
diff --git a/y2024/constants.h b/y2024/constants.h
index 0dce685..9923660 100644
--- a/y2024/constants.h
+++ b/y2024/constants.h
@@ -81,8 +81,9 @@
return 16 * 0.25 * 0.0254;
}
- static constexpr double kClimberEncoderMetersPerRevolution() {
- return kClimberEncoderRatio() * kClimberPotMetersPerRevolution();
+ static constexpr double kClimberEncoderMetersPerRadian() {
+ return kClimberEncoderRatio() * kClimberPotMetersPerRevolution() / 2.0 /
+ M_PI;
}
static constexpr double kClimberPotMetersPerVolt() {
@@ -121,8 +122,8 @@
static constexpr double kExtendPotMetersPerRevolution() {
return 36 * 0.005 * kExtendEncoderRatio();
}
- static constexpr double kExtendEncoderMetersPerRevolution() {
- return kExtendPotMetersPerRevolution();
+ static constexpr double kExtendEncoderMetersPerRadian() {
+ return kExtendPotMetersPerRevolution() / 2.0 / M_PI;
}
static constexpr double kExtendPotMetersPerVolt() {
return kExtendPotMetersPerRevolution() * (5.0 /*turns*/ / 5.0 /*volts*/);
diff --git a/y2024/constants/971.json b/y2024/constants/971.json
index ec59033..34962af 100644
--- a/y2024/constants/971.json
+++ b/y2024/constants/971.json
@@ -14,18 +14,18 @@
"robot": {
{% set _ = intake_pivot_zero.update(
{
- "measured_absolute_position" : 0.0
+ "measured_absolute_position" : 2.99648178674155
}
) %}
"intake_constants": {{ intake_pivot_zero | tojson(indent=2)}},
"climber_constants": {
{% set _ = climber_zero.update(
{
- "measured_absolute_position" : 0.0
+ "measured_absolute_position" : 0.0102739460232857
}
) %}
"zeroing_constants": {{ climber_zero | tojson(indent=2)}},
- "potentiometer_offset": 0.0
+ "potentiometer_offset": {{ -0.935529777248618 + 1.83632555414775 }}
},
"catapult_constants": {
{% set _ = catapult_zero.update(
diff --git a/y2024/constants/common.jinja2 b/y2024/constants/common.jinja2
index e132993..2d36c78 100644
--- a/y2024/constants/common.jinja2
+++ b/y2024/constants/common.jinja2
@@ -4,12 +4,16 @@
{# Intake #}
{# we do this here so we keep the encoder ratio in plaintext and also keep the math we're using. #}
-{% set intake_pivot_encoder_ratio = (24.0 / 15.0) %}
+{% set intake_pivot_encoder_ratio = (15.0 / 24.0) %}
+
+{% set intake_upper = 2.1 %}
+{% set intake_lower = 0.1 %}
{%
set intake_pivot_zero = {
"average_filter_size": zeroing_sample_size,
"one_revolution_distance": pi * 2.0 * intake_pivot_encoder_ratio,
+ "middle_position": (intake_upper + intake_lower) / 2,
"zeroing_threshold": 0.0005,
"moving_buffer_size": 20,
"allowable_encoder_error": 0.9
@@ -29,7 +33,7 @@
%}
{% set climber_encoder_ratio = (16.0 / 60.0) %}
-{% set climber_radius = 16.0 * 0.25 / 2.0 / pi %}
+{% set climber_radius = 16.0 * 0.25 * 0.0254 %}
{%
set climber_zero = {
"average_filter_size": zeroing_sample_size,
diff --git a/y2024/constants/common.json b/y2024/constants/common.json
index 6117c93..282b3c7 100644
--- a/y2024/constants/common.json
+++ b/y2024/constants/common.json
@@ -1,3 +1,5 @@
+{% from 'y2024/constants/common.jinja2' import intake_upper, intake_lower %}
+
"common": {
"target_map": {% include 'y2024/vision/maps/target_map.json' %},
"shooter_interpolation_table": [
@@ -25,8 +27,8 @@
"intaking": 12.0
},
"intake_pivot_set_points": {
- "extended": 1.5,
- "retracted": 0.5
+ "extended": 0.1,
+ "retracted": 2.0
},
"intake_pivot": {
"zeroing_voltage": 3.0,
@@ -40,10 +42,10 @@
"max_acceleration": 30.0
},
"range": {
- "lower_hard": -0.85,
- "upper_hard": 1.85,
- "lower": -0.400,
- "upper": 1.57
+ "lower_hard": 0.0,
+ "upper_hard": 2.1,
+ "lower": {{ intake_lower }},
+ "upper": {{ intake_upper }}
},
"loop": {% include 'y2024/control_loops/superstructure/intake_pivot/integral_intake_pivot_plant.json' %}
},
diff --git a/y2024/wpilib_interface.cc b/y2024/wpilib_interface.cc
index 6e75387..16fb182 100644
--- a/y2024/wpilib_interface.cc
+++ b/y2024/wpilib_interface.cc
@@ -78,7 +78,7 @@
constexpr double kMaxBringupPower = 12.0;
double climber_pot_translate(double voltage) {
- return voltage * Values::kClimberPotMetersPerVolt();
+ return -1 * voltage * Values::kClimberPotMetersPerVolt();
}
double extend_pot_translate(double voltage) {
@@ -166,15 +166,15 @@
CopyPosition(climber_encoder_, builder->add_climber(),
Values::kClimberEncoderCountsPerRevolution(),
- Values::kClimberEncoderMetersPerRevolution(),
- climber_pot_translate, true,
+ Values::kClimberEncoderMetersPerRadian(),
+ climber_pot_translate, false,
robot_constants_->robot()
->climber_constants()
->potentiometer_offset());
CopyPosition(extend_encoder_, builder->add_extend(),
- Values::kClimberEncoderCountsPerRevolution(),
- Values::kClimberEncoderMetersPerRevolution(),
+ Values::kExtendEncoderCountsPerRevolution(),
+ Values::kExtendEncoderMetersPerRadian(),
extend_pot_translate, true,
robot_constants_->robot()
->extend_constants()
@@ -209,7 +209,7 @@
SendDrivetrainPosition(drivetrain_position_sender_.MakeStaticBuilder(),
drivetrain_velocity_translate,
- constants::Values::DrivetrainEncoderToMeters, false,
+ constants::Values::DrivetrainEncoderToMeters, true,
false);
{
@@ -363,7 +363,7 @@
void Write(const superstructure::Output &output) override {
WritePwm(output.catapult_voltage(), catapult_kraken_one_.get());
- WritePwm(output.catapult_voltage(), catapult_kraken_one_.get());
+ WritePwm(output.catapult_voltage(), catapult_kraken_two_.get());
}
template <typename T>
@@ -392,6 +392,8 @@
&constant_fetcher_event_loop);
const Constants *robot_constants = &constants_fetcher.constants();
+ AddLoop(&constant_fetcher_event_loop);
+
// Thread 1.
::aos::ShmEventLoop joystick_sender_event_loop(&config.message());
::frc971::wpilib::JoystickSender joystick_sender(
@@ -407,27 +409,28 @@
::aos::ShmEventLoop sensor_reader_event_loop(&config.message());
SensorReader sensor_reader(&sensor_reader_event_loop, robot_constants);
sensor_reader.set_pwm_trigger(true);
- sensor_reader.set_drivetrain_left_encoder(make_encoder(1));
- sensor_reader.set_drivetrain_right_encoder(make_encoder(0));
- sensor_reader.set_yaw_rate_input(make_unique<frc::DigitalInput>(0));
- // TODO: (niko) change values once robot is wired
- sensor_reader.set_intake_pivot(make_encoder(4),
- make_unique<frc::DigitalInput>(4));
- sensor_reader.set_transfer_beambreak(make_unique<frc::DigitalInput>(7));
+ sensor_reader.set_drivetrain_left_encoder(
+ std::make_unique<frc::Encoder>(6, 7));
+ sensor_reader.set_drivetrain_right_encoder(
+ std::make_unique<frc::Encoder>(8, 9));
+ sensor_reader.set_yaw_rate_input(make_unique<frc::DigitalInput>(25));
+ sensor_reader.set_intake_pivot(make_encoder(3),
+ make_unique<frc::DigitalInput>(3));
+ sensor_reader.set_transfer_beambreak(make_unique<frc::DigitalInput>(23));
sensor_reader.set_climber(make_encoder(5),
make_unique<frc::DigitalInput>(5),
make_unique<frc::AnalogInput>(5));
- sensor_reader.set_extend(make_encoder(7), make_unique<frc::DigitalInput>(7),
- make_unique<frc::AnalogInput>(7));
- sensor_reader.set_catapult(make_encoder(2),
- make_unique<frc::DigitalInput>(2),
- make_unique<frc::AnalogInput>(2));
- sensor_reader.set_turret(make_encoder(3), make_unique<frc::DigitalInput>(3),
- make_unique<frc::AnalogInput>(3));
- sensor_reader.set_altitude(make_encoder(6),
- make_unique<frc::DigitalInput>(6),
- make_unique<frc::AnalogInput>(6));
+ sensor_reader.set_extend(make_encoder(4), make_unique<frc::DigitalInput>(4),
+ make_unique<frc::AnalogInput>(4));
+ sensor_reader.set_catapult(make_encoder(0),
+ make_unique<frc::DigitalInput>(0),
+ make_unique<frc::AnalogInput>(0));
+ sensor_reader.set_turret(make_encoder(2), make_unique<frc::DigitalInput>(2),
+ make_unique<frc::AnalogInput>(2));
+ sensor_reader.set_altitude(make_encoder(1),
+ make_unique<frc::DigitalInput>(1),
+ make_unique<frc::AnalogInput>(1));
AddLoop(&sensor_reader_event_loop);
@@ -678,7 +681,7 @@
SuperstructurePWMWriter superstructure_pwm_writer(&pwm_event_loop);
superstructure_pwm_writer.set_catapult_kraken_one(
make_unique<frc::TalonFX>(0));
- superstructure_pwm_writer.set_catapult_kraken_one(
+ superstructure_pwm_writer.set_catapult_kraken_two(
make_unique<frc::TalonFX>(1));
AddLoop(&pwm_event_loop);
diff --git a/y2024/y2024_roborio.json b/y2024/y2024_roborio.json
index b78daef..5ddb254 100644
--- a/y2024/y2024_roborio.json
+++ b/y2024/y2024_roborio.json
@@ -35,7 +35,7 @@
"type": "aos.timing.Report",
"source_node": "roborio",
"frequency": 50,
- "num_senders": 20,
+ "num_senders": 30,
"max_size": 8192
},
{