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
diff --git a/y2017/control_loops/superstructure/column/column.cc b/y2017/control_loops/superstructure/column/column.cc
index aaca601..8a3644e 100644
--- a/y2017/control_loops/superstructure/column/column.cc
+++ b/y2017/control_loops/superstructure/column/column.cc
@@ -118,19 +118,19 @@
}
turret_last_position_ = turret_position();
- Y_ << new_position.indexer.position, new_position.turret.position;
+ Y_ << new_position.indexer.encoder, new_position.turret.encoder;
Y_ += offset_;
loop_->Correct(Y_);
- indexer_history_[indexer_history_position_] = new_position.indexer.position;
+ indexer_history_[indexer_history_position_] = new_position.indexer.encoder;
indexer_history_position_ = (indexer_history_position_ + 1) % kHistoryLength;
indexer_dt_velocity_ =
- (new_position.indexer.position - indexer_last_position_) /
+ (new_position.indexer.encoder - indexer_last_position_) /
chrono::duration_cast<chrono::duration<double>>(
::aos::controls::kLoopFrequency)
.count();
- indexer_last_position_ = new_position.indexer.position;
+ indexer_last_position_ = new_position.indexer.encoder;
stuck_indexer_detector_->Correct(Y_);
diff --git a/y2017/control_loops/superstructure/column/column_zeroing.cc b/y2017/control_loops/superstructure/column/column_zeroing.cc
index e26d33e..d5a378c 100644
--- a/y2017/control_loops/superstructure/column/column_zeroing.cc
+++ b/y2017/control_loops/superstructure/column/column_zeroing.cc
@@ -38,8 +38,8 @@
indexer_offset_ = indexer_.offset();
// Compute the current turret position.
- const double current_turret = indexer_offset_ + position.indexer.position +
- turret_.offset() + position.turret.position;
+ const double current_turret = indexer_offset_ + position.indexer.encoder +
+ turret_.offset() + position.turret.encoder;
// Now, we can compute the turret position which is closest to 0 radians
// (within +- M_PI).
@@ -47,14 +47,14 @@
::frc971::zeroing::Wrap(0.0, current_turret, M_PI * 2.0);
// Now, compute the actual turret offset.
- turret_offset_ = adjusted_turret - position.turret.position -
- (indexer_offset_ + position.indexer.position);
+ turret_offset_ = adjusted_turret - position.turret.encoder -
+ (indexer_offset_ + position.indexer.encoder);
offset_ready_ = true;
// If we are close enough to 0, we are zeroed. Otherwise, we don't know
// which revolution we are on and need more info. We will always report the
// turret position as within +- M_PI from 0 with the provided offset.
- if (::std::abs(position.indexer.position + position.turret.position +
+ if (::std::abs(position.indexer.encoder + position.turret.encoder +
indexer_offset_ + turret_offset_) <
turret_zeroed_distance_) {
zeroed_ = true;
diff --git a/y2017/control_loops/superstructure/superstructure_lib_test.cc b/y2017/control_loops/superstructure/superstructure_lib_test.cc
index d538dc8..894f99d 100644
--- a/y2017/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2017/control_loops/superstructure/superstructure_lib_test.cc
@@ -1066,7 +1066,7 @@
superstructure_queue_.position.FetchLatest();
ASSERT_TRUE(superstructure_queue_.position.get() != nullptr);
const double indexer_position =
- superstructure_queue_.position->column.indexer.position;
+ superstructure_queue_.position->column.indexer.encoder;
// Now, unstick it.
superstructure_plant_.set_freeze_indexer(false);
@@ -1094,7 +1094,7 @@
superstructure_queue_.position.FetchLatest();
ASSERT_TRUE(superstructure_queue_.position.get() != nullptr);
const double unstuck_indexer_position =
- superstructure_queue_.position->column.indexer.position;
+ superstructure_queue_.position->column.indexer.encoder;
EXPECT_LT(unstuck_indexer_position, indexer_position - 0.1);
// Now, verify that everything works as expected.
diff --git a/y2017/wpilib_interface.cc b/y2017/wpilib_interface.cc
index 01184fa..12f3313 100644
--- a/y2017/wpilib_interface.cc
+++ b/y2017/wpilib_interface.cc
@@ -453,7 +453,7 @@
double encoder_counts_per_revolution, double encoder_ratio,
bool reverse) {
const double multiplier = reverse ? -1.0 : 1.0;
- position->position =
+ position->encoder =
multiplier * encoder_translate(counter.polled_encoder(),
encoder_counts_per_revolution,
encoder_ratio);