Add a sent too fast check for simulation and shm
Returns an error if more than queue_size (frequency *
channel_storage_duration) messages were sent in one
channel_storage_duration.
Signed-off-by: Eric Schmiedeberg <eric.schmiedeberg@bluerivertech.com>
Change-Id: Ie41205ba37b66930d8a9082f2d85d7dc3388e3bf
diff --git a/y2020/control_loops/drivetrain/localizer_test.cc b/y2020/control_loops/drivetrain/localizer_test.cc
index cc04428..f0bcd88 100644
--- a/y2020/control_loops/drivetrain/localizer_test.cc
+++ b/y2020/control_loops/drivetrain/localizer_test.cc
@@ -603,7 +603,7 @@
// Tests that we don't blow up if we stop getting updates for an extended period
// of time and fall behind on fetching fron the cameras.
TEST_F(LocalizedDrivetrainTest, FetchersHandleTimeGap) {
- set_enable_cameras(true);
+ set_enable_cameras(false);
set_send_delay(std::chrono::seconds(0));
event_loop_factory()->set_network_delay(std::chrono::nanoseconds(1));
test_event_loop_
diff --git a/y2020/control_loops/superstructure/superstructure_lib_test.cc b/y2020/control_loops/superstructure/superstructure_lib_test.cc
index 1bbf42b..b13263a 100644
--- a/y2020/control_loops/superstructure/superstructure_lib_test.cc
+++ b/y2020/control_loops/superstructure/superstructure_lib_test.cc
@@ -686,8 +686,7 @@
goal_builder.add_turret(turret_offset);
goal_builder.add_shooter(shooter_offset);
- ASSERT_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
RunFor(chrono::seconds(10));
VerifyNearGoal();
@@ -733,8 +732,7 @@
goal_builder.add_turret(turret_offset);
goal_builder.add_shooter(shooter_offset);
- ASSERT_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
// Give it a lot of time to get there.
@@ -775,8 +773,7 @@
goal_builder.add_turret(turret_offset);
goal_builder.add_shooter(shooter_offset);
- ASSERT_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
RunFor(chrono::seconds(8));
VerifyNearGoal();
@@ -810,8 +807,7 @@
goal_builder.add_turret(turret_offset);
goal_builder.add_shooter(shooter_offset);
- ASSERT_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
superstructure_plant_.set_peak_hood_velocity(23.0);
// 30 hz sin wave on the hood causes acceleration to be ignored.
@@ -865,8 +861,7 @@
goal_builder.add_shooter(shooter_offset);
goal_builder.add_shooting(true);
- ASSERT_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
// In the beginning, the finisher and accelerator should not be ready
@@ -911,8 +906,7 @@
goal_builder.add_intake(intake_offset);
goal_builder.add_shooter(shooter_offset);
- ASSERT_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
// Give it a lot of time to get there.
@@ -961,8 +955,7 @@
goal_builder.add_climber_voltage(-10.0);
goal_builder.add_turret(turret_offset);
- ASSERT_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
// The turret needs to move out of the way first. This takes some time.
@@ -986,8 +979,7 @@
goal_builder.add_climber_voltage(10.0);
goal_builder.add_turret(turret_offset);
- ASSERT_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
RunFor(chrono::seconds(1));
@@ -1175,6 +1167,8 @@
"y2020.control_loops.superstructure.Status");
reader_.RemapLoggedChannel("/superstructure",
"y2020.control_loops.superstructure.Output");
+ reader_.RemapLoggedChannel("/drivetrain",
+ "frc971.control_loops.drivetrain.Status");
reader_.Register();
roborio_ = aos::configuration::GetNode(reader_.configuration(), "roborio");
@@ -1221,32 +1215,27 @@
constexpr double kShotDistance = 2.5;
const auto target = turret::OuterPortPose(aos::Alliance::kRed);
- // There was no target when this log was taken so send a position within range
- // of the interpolation table.
- test_event_loop_->AddPhasedLoop(
- [&](int) {
- auto builder = drivetrain_status_sender_.MakeBuilder();
+ // There was no target when this log was taken, so send a position within
+ // range of the interpolation table.
+ {
+ auto builder = drivetrain_status_sender_.MakeBuilder();
- const auto localizer_offset =
- builder
- .MakeBuilder<
- frc971::control_loops::drivetrain::LocalizerState>()
- .Finish();
+ const auto localizer_offset =
+ builder.MakeBuilder<frc971::control_loops::drivetrain::LocalizerState>()
+ .Finish();
- auto drivetrain_status_builder =
- builder.MakeBuilder<DrivetrainStatus>();
+ auto drivetrain_status_builder = builder.MakeBuilder<DrivetrainStatus>();
- // Set the robot up at kShotAngle off from the target, kShotDistance
- // away.
- drivetrain_status_builder.add_x(target.abs_pos().x() +
- std::cos(kShotAngle) * kShotDistance);
- drivetrain_status_builder.add_y(target.abs_pos().y() +
- std::sin(kShotAngle) * kShotDistance);
- drivetrain_status_builder.add_localizer(localizer_offset);
+ // Set the robot up at kShotAngle off from the target, kShotDistance
+ // away.
+ drivetrain_status_builder.add_x(target.abs_pos().x() +
+ std::cos(kShotAngle) * kShotDistance);
+ drivetrain_status_builder.add_y(target.abs_pos().y() +
+ std::sin(kShotAngle) * kShotDistance);
+ drivetrain_status_builder.add_localizer(localizer_offset);
- builder.CheckOk(builder.Send(drivetrain_status_builder.Finish()));
- },
- frc971::controls::kLoopFrequency);
+ builder.CheckOk(builder.Send(drivetrain_status_builder.Finish()));
+ }
reader_.event_loop_factory()->Run();
@@ -1289,8 +1278,7 @@
goal_builder.add_turret_tracking(true);
- ASSERT_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ ASSERT_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
{
@@ -1347,8 +1335,7 @@
goal_builder.add_shooter(shooter_goal);
goal_builder.add_hood(hood_offset);
- CHECK_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ CHECK_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
RunFor(chrono::seconds(10));
@@ -1415,8 +1402,7 @@
goal_builder.add_shooter_tracking(true);
goal_builder.add_hood_tracking(true);
- CHECK_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ CHECK_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
RunFor(chrono::seconds(10));
@@ -1486,8 +1472,7 @@
goal_builder.add_shooter_tracking(true);
goal_builder.add_hood_tracking(true);
- CHECK_EQ(builder.Send(goal_builder.Finish()),
- aos::RawSender::Error::kOk);
+ CHECK_EQ(builder.Send(goal_builder.Finish()), aos::RawSender::Error::kOk);
}
RunFor(chrono::seconds(10));