Change HallEffectAndPosition to proper naming
All of the templates assume the position variable is called encoder,
not position. I spent a while trying to figure out if the naming
should be the other way around, but I think 'encoder' is correct.
Change-Id: Icb0fa9a94bdea4ae3a43b947a073cc1f83ba5f4a
diff --git a/frc971/control_loops/control_loops.q b/frc971/control_loops/control_loops.q
index 0f248f1..03e93fd 100644
--- a/frc971/control_loops/control_loops.q
+++ b/frc971/control_loops/control_loops.q
@@ -132,7 +132,7 @@
// The current hall effect state.
bool current;
// The current encoder position.
- double position;
+ double encoder;
// The number of positive and negative edges we've seen on the hall effect
// sensor.
int32_t posedge_count;
diff --git a/frc971/control_loops/position_sensor_sim.cc b/frc971/control_loops/position_sensor_sim.cc
index d560228..97a96d5 100644
--- a/frc971/control_loops/position_sensor_sim.cc
+++ b/frc971/control_loops/position_sensor_sim.cc
@@ -175,7 +175,7 @@
void PositionSensorSimulator::GetSensorValues(HallEffectAndPosition *values) {
values->current = lower_index_edge_.current_index_segment() !=
upper_index_edge_.current_index_segment();
- values->position = current_position_ - start_position_;
+ values->encoder = current_position_ - start_position_;
values->posedge_count = posedge_count_;
values->negedge_count = negedge_count_;
diff --git a/frc971/control_loops/position_sensor_sim_test.cc b/frc971/control_loops/position_sensor_sim_test.cc
index e68feee..a4436ce 100644
--- a/frc971/control_loops/position_sensor_sim_test.cc
+++ b/frc971/control_loops/position_sensor_sim_test.cc
@@ -315,7 +315,7 @@
sim.MoveTo(0.25);
sim.GetSensorValues(&position);
EXPECT_TRUE(position.current);
- EXPECT_DOUBLE_EQ(0.50, position.position);
+ EXPECT_DOUBLE_EQ(0.50, position.encoder);
EXPECT_EQ(1, position.posedge_count);
EXPECT_EQ(0.25, position.posedge_value);
EXPECT_EQ(0, position.negedge_count);
@@ -325,7 +325,7 @@
sim.MoveTo(0.75);
sim.GetSensorValues(&position);
EXPECT_FALSE(position.current);
- EXPECT_DOUBLE_EQ(1.0, position.position);
+ EXPECT_DOUBLE_EQ(1.0, position.encoder);
EXPECT_EQ(1, position.posedge_count);
EXPECT_DOUBLE_EQ(0.25, position.posedge_value);
EXPECT_EQ(1, position.negedge_count);
@@ -335,7 +335,7 @@
sim.MoveTo(1.75);
sim.GetSensorValues(&position);
EXPECT_FALSE(position.current);
- EXPECT_DOUBLE_EQ(2.0, position.position);
+ EXPECT_DOUBLE_EQ(2.0, position.encoder);
EXPECT_EQ(2, position.posedge_count);
EXPECT_DOUBLE_EQ(1.25, position.posedge_value);
EXPECT_EQ(2, position.negedge_count);
@@ -345,7 +345,7 @@
sim.MoveTo(0.75);
sim.GetSensorValues(&position);
EXPECT_FALSE(position.current);
- EXPECT_DOUBLE_EQ(1.0, position.position);
+ EXPECT_DOUBLE_EQ(1.0, position.encoder);
EXPECT_EQ(3, position.posedge_count);
EXPECT_DOUBLE_EQ(1.75, position.posedge_value);
EXPECT_EQ(3, position.negedge_count);
@@ -355,7 +355,7 @@
sim.MoveTo(0.25);
sim.GetSensorValues(&position);
EXPECT_TRUE(position.current);
- EXPECT_DOUBLE_EQ(0.5, position.position);
+ EXPECT_DOUBLE_EQ(0.5, position.encoder);
EXPECT_EQ(4, position.posedge_count);
EXPECT_DOUBLE_EQ(0.75, position.posedge_value);
EXPECT_EQ(3, position.negedge_count);
@@ -365,7 +365,7 @@
sim.MoveTo(-0.25);
sim.GetSensorValues(&position);
EXPECT_FALSE(position.current);
- EXPECT_DOUBLE_EQ(0.0, position.position);
+ EXPECT_DOUBLE_EQ(0.0, position.encoder);
EXPECT_EQ(4, position.posedge_count);
EXPECT_DOUBLE_EQ(0.75, position.posedge_value);
EXPECT_EQ(4, position.negedge_count);
@@ -376,7 +376,7 @@
sim.MoveTo(-0.25 - i * 1.0e-6);
sim.GetSensorValues(&position);
EXPECT_FALSE(position.current);
- EXPECT_NEAR(-i * 1.0e-6, position.position, 1e-8);
+ EXPECT_NEAR(-i * 1.0e-6, position.encoder, 1e-8);
EXPECT_EQ(4, position.posedge_count);
EXPECT_DOUBLE_EQ(0.75, position.posedge_value);
EXPECT_EQ(4, position.negedge_count);
diff --git a/frc971/control_loops/profiled_subsystem.q b/frc971/control_loops/profiled_subsystem.q
index f89da14..3bcd6c2 100644
--- a/frc971/control_loops/profiled_subsystem.q
+++ b/frc971/control_loops/profiled_subsystem.q
@@ -40,6 +40,44 @@
.frc971.EstimatorState estimator_state;
};
+struct HallProfiledJointStatus {
+ // Is the subsystem zeroed?
+ bool zeroed;
+
+ // The state of the subsystem, if applicable. -1 otherwise.
+ int32_t state;
+
+ // If true, we have aborted.
+ bool estopped;
+
+ // Position of the joint.
+ float position;
+ // Velocity of the joint in units/second.
+ float velocity;
+ // Profiled goal position of the joint.
+ float goal_position;
+ // Profiled goal velocity of the joint in units/second.
+ float goal_velocity;
+ // Unprofiled goal position from absoulte zero of the joint.
+ float unprofiled_goal_position;
+ // Unprofiled goal velocity of the joint in units/second.
+ float unprofiled_goal_velocity;
+
+ // The estimated voltage error.
+ float voltage_error;
+
+ // The calculated velocity with delta x/delta t
+ float calculated_velocity;
+
+ // Components of the control loop output
+ float position_power;
+ float velocity_power;
+ float feedforwards_power;
+
+ // State of the estimator.
+ .frc971.HallEffectAndPositionEstimatorState estimator_state;
+};
+
struct AbsoluteProfiledJointStatus {
// Is the subsystem zeroed?
bool zeroed;
diff --git a/frc971/zeroing/zeroing.cc b/frc971/zeroing/zeroing.cc
index c2de2cb..14d26c9 100644
--- a/frc971/zeroing/zeroing.cc
+++ b/frc971/zeroing/zeroing.cc
@@ -173,10 +173,10 @@
// If we have a new posedge.
if (!info.current) {
if (last_hall_) {
- min_low_position_ = max_low_position_ = info.position;
+ min_low_position_ = max_low_position_ = info.encoder;
} else {
- min_low_position_ = ::std::min(min_low_position_, info.position);
- max_low_position_ = ::std::max(max_low_position_, info.position);
+ min_low_position_ = ::std::min(min_low_position_, info.encoder);
+ max_low_position_ = ::std::max(max_low_position_, info.encoder);
}
}
last_hall_ = info.current;
@@ -207,9 +207,9 @@
bool moving_backward = false;
if (constants_.zeroing_move_direction) {
- moving_backward = info.position > min_low_position_;
+ moving_backward = info.encoder > min_low_position_;
} else {
- moving_backward = info.position < max_low_position_;
+ moving_backward = info.encoder < max_low_position_;
}
// If there are no posedges to use or we don't have enough samples yet to
@@ -239,7 +239,7 @@
zeroed_ = true;
}
- position_ = info.position - offset_;
+ position_ = info.encoder - offset_;
}
HallEffectAndPositionZeroingEstimator::State