24#include "modules/common_msgs/control_msgs/control_cmd.pb.h"
42 chassis_msg.ParseFromString(msg.
content);
45 if (IsNoisy(steer_per)) {
49 EnqueueMessage(steer_per);
52 AINFO <<
"swerve trigger is pulled: " << msg.
time <<
" - "
59bool SwerveTrigger::IsNoisy(
const float steer)
const {
63 const float pre_steer_mps =
64 (current_steer_queue_.empty() ? 0.0f : current_steer_queue_.back());
65 return fabs(pre_steer_mps - steer) > noisy_diff_;
68bool SwerveTrigger::IsSwerve()
const {
69 if (current_steer_queue_.size() < queue_size_ ||
70 history_steer_queue_.size() < queue_size_) {
74 (history_total_ - current_total_) /
static_cast<float>(queue_size_);
75 return delta > max_delta_;
79void SwerveTrigger::EnqueueMessage(
const float steer) {
80 current_steer_queue_.emplace_back(steer);
81 current_total_ += steer;
82 if (current_steer_queue_.size() > queue_size_) {
83 const float current_front = current_steer_queue_.front();
84 current_steer_queue_.pop_front();
85 current_total_ -= current_front;
87 history_steer_queue_.emplace_back(current_front);
88 history_total_ += current_front;
89 if (history_steer_queue_.size() > queue_size_) {
90 history_total_ -= history_steer_queue_.front();
91 history_steer_queue_.pop_front();
void Pull(const cyber::record::RecordMessage &msg) override
std::unique_ptr< Trigger > trigger_obj_
void TriggerIt(const uint64_t msg_time) const
std::string trigger_name_
constexpr float MIN_STEER_PER
constexpr float MAX_STEER_PER
optional float steering_percentage
Basic data struct of record message.
std::string content
The content of the message.
uint64_t time
The time (nanosecond) of the message.
std::string channel_name
The channel name of the message.