rm_control
Loading...
Searching...
No Matches
flash_ui.h
Go to the documentation of this file.
1//
2// Created by llljjjqqq on 22-11-4.
3//
4
5#pragma once
6
8
9#include <rm_msgs/PowerManagementSampleAndStatusData.h>
10
11namespace rm_referee
12{
13class FlashUi : public UiBase
14{
15public:
16 explicit FlashUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, const std::string& graph_name,
17 std::deque<Graph>* graph_queue, std::deque<Graph>* character_queue)
18 : UiBase(rpc_value, base, graph_queue, character_queue)
19 {
20 graph_ = new Graph(rpc_value["config"], base_, id_++);
21 }
22 virtual void display(const ros::Time& time){};
23 virtual void updateConfig(){};
24 void updateFlashUiForQueue(const ros::Time& time, bool state, bool once);
25};
26
28{
29public:
30 explicit FlashGroupUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, const std::string& graph_name,
31 std::deque<Graph>* graph_queue, std::deque<Graph>* character_queue)
32 : GroupUiBase(rpc_value, base, graph_queue, character_queue)
33 {
34 graph_name_ = graph_name;
35 }
36 virtual void display(const ros::Time& time){};
37 virtual void updateConfig(){};
38 void updateFlashUiForQueue(const ros::Time& time, bool state, bool once);
39 void updateFlashUiForQueue(const ros::Time& time, bool state, bool once, Graph* graph);
40
41protected:
42 std::string graph_name_;
43};
44
46{
47public:
48 explicit CustomizeDisplayFlashUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
49 std::deque<Graph>* character_queue)
50 : FlashGroupUi(rpc_value, base, "customize_display", graph_queue, character_queue)
51 {
52 if (rpc_value.hasMember("data"))
53 {
54 XmlRpc::XmlRpcValue& data = rpc_value["data"];
55 for (int i = 0; i < static_cast<int>(rpc_value["data"].size()); i++)
56 {
57 graph_vector_.insert(std::pair<std::string, Graph*>(std::to_string(static_cast<int>(data[i]["flag"])),
58 new Graph(data[i]["config"], base_, id_++)));
59 }
60 }
61 }
62 void updateCmdData(const uint32_t& data);
63
64private:
65 void display(const ros::Time& time) override;
66 uint32_t symbol_;
67};
68
69class CoverFlashUi : public FlashUi
70{
71public:
72 explicit CoverFlashUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
73 std::deque<Graph>* character_queue)
74 : FlashUi(rpc_value, base, "cover", graph_queue, character_queue){};
75 void updateManualCmdData(const rm_msgs::ManualToReferee::ConstPtr data, const ros::Time& last_get_data_time) override;
76
77private:
78 void display(const ros::Time& time) override;
79
80 uint8_t cover_state_;
81};
82
83class SpinFlashUi : public FlashUi
84{
85public:
86 explicit SpinFlashUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
87 std::deque<Graph>* character_queue)
88 : FlashUi(rpc_value, base, "spin", graph_queue, character_queue){};
89 void updateChassisCmdData(const rm_msgs::ChassisCmd::ConstPtr data, const ros::Time& last_get_data_time);
90
91private:
92 void display(const ros::Time& time) override;
93 uint8_t chassis_mode_;
94};
95
96class DeployFlashUi : public FlashUi
97{
98public:
99 explicit DeployFlashUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
100 std::deque<Graph>* character_queue)
101 : FlashUi(rpc_value, base, "deploy", graph_queue, character_queue){};
102 void updateAllowDeployFire(bool flag);
103 void updateChassisCmdData(const rm_msgs::ChassisCmd::ConstPtr& data);
104 void updateChassisVelData(const geometry_msgs::Twist::ConstPtr& data);
105
106private:
107 void display(const ros::Time& time) override;
108 uint8_t chassis_mode_;
109 double angular_z_{ 0. };
110 bool allow_deploy_fire_{ false };
111};
112
114{
115public:
116 explicit HeroHitFlashUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
117 std::deque<Graph>* character_queue)
118 : FlashGroupUi(rpc_value, base, " hero_hit", graph_queue, character_queue)
119 {
120 graph_vector_.insert(std::pair<std::string, Graph*>("1", new Graph(rpc_value["config"], base_, id_++)));
121 graph_vector_.insert(std::pair<std::string, Graph*>("2", new Graph(rpc_value["config"], base_, id_++)));
122 for (auto it : graph_vector_)
123 {
124 if (it.first == "1")
125 {
126 it.second->setStartX(960 + 50);
127 it.second->setStartY(540 + 50);
128 it.second->setEndX(960 - 50);
129 it.second->setEndY(540 - 50);
130 }
131 else if (it.first == "2")
132 {
133 it.second->setStartX(960 - 50);
134 it.second->setStartY(540 + 50);
135 it.second->setEndX(960 + 50);
136 it.second->setEndY(540 - 50);
137 }
138 }
139 }
140 void updateHittingConfig(const rm_msgs::GameRobotHp& msg);
141
142private:
143 void display(const ros::Time& time) override;
144 bool hitted_;
145 rm_msgs::GameRobotHp last_hp_msg_;
146};
147
149{
150public:
151 explicit ExceedBulletSpeedFlashUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
152 std::deque<Graph>* character_queue)
153 : FlashUi(rpc_value, base, "exceed_bullet_speed", graph_queue, character_queue)
154 {
155 }
156 void updateShootData(const rm_msgs::ShootData& msg);
157
158private:
159 void display(const ros::Time& time) override;
160 rm_msgs::ShootData shoot_data_;
161};
162
163class BurstFlashUi : public FlashUi
164{
165public:
166 explicit BurstFlashUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
167 std::deque<Graph>* character_queue)
168 : FlashUi(rpc_value, base, "burst", graph_queue, character_queue)
169 {
170 }
171 void updateBurstTimeData(const rm_msgs::ManualToReferee::ConstPtr& data);
172
173private:
174 void display(const ros::Time& time) override;
175 ros::Time start_burst_time_;
176};
177
179{
180public:
181 explicit CapacityRunOutFlashUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
182 std::deque<Graph>* character_queue)
183 : FlashUi(rpc_value, base, "capacity_run_out", graph_queue, character_queue)
184 {
185 // Defaults assume capacity_remain_charge is normalized to [0, 1].
186 threshold_low_ = 0.2;
187 threshold_high_ = 0.4;
188 if (rpc_value.hasMember("data"))
189 {
190 XmlRpc::XmlRpcValue& data = rpc_value["data"];
191 try
192 {
193 if (data.hasMember("threshold_low"))
194 threshold_low_ = static_cast<double>(data["threshold_low"]);
195 if (data.hasMember("threshold_high"))
196 threshold_high_ = static_cast<double>(data["threshold_high"]);
197 if (data.hasMember("threshold"))
198 {
199 threshold_low_ = static_cast<double>(data["threshold"]);
200 threshold_high_ = threshold_low_;
201 }
202 }
203 catch (XmlRpc::XmlRpcException&)
204 {
205 // Keep defaults.
206 }
207 }
208 if (threshold_high_ < threshold_low_)
209 threshold_high_ = threshold_low_;
210
211 // Warning text should be configured via YAML (config.content).
212 if (!rpc_value.hasMember("config") || !rpc_value["config"].hasMember("start_position"))
213 {
214 // Screen center-ish and slightly upper.
215 graph_->setStartX(760);
216 graph_->setStartY(320);
217 }
218 }
219
220 void updateCapacityData(const rm_msgs::PowerManagementSampleAndStatusData& data, const ros::Time& last_get_data_time);
221
222private:
223 void display(const ros::Time& time) override;
224
225 double threshold_low_{ 0.20 };
226 double threshold_high_{ 0.30 };
227 bool low_state_{ false };
228 bool has_state_{ false };
229};
230} // namespace rm_referee
Definition data.h:120
Definition flash_ui.h:164
BurstFlashUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition flash_ui.h:166
Definition flash_ui.h:179
CapacityRunOutFlashUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition flash_ui.h:181
Definition flash_ui.h:70
CoverFlashUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition flash_ui.h:72
Definition flash_ui.h:46
CustomizeDisplayFlashUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition flash_ui.h:48
Definition flash_ui.h:97
DeployFlashUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition flash_ui.h:99
Definition flash_ui.h:149
ExceedBulletSpeedFlashUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition flash_ui.h:151
Definition flash_ui.h:28
std::string graph_name_
Definition flash_ui.h:42
virtual void display(const ros::Time &time)
Definition flash_ui.h:36
virtual void updateConfig()
Definition flash_ui.h:37
void updateFlashUiForQueue(const ros::Time &time, bool state, bool once)
Definition flash_ui.cpp:38
FlashGroupUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, const std::string &graph_name, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition flash_ui.h:30
Definition flash_ui.h:14
virtual void updateConfig()
Definition flash_ui.h:23
virtual void display(const ros::Time &time)
Definition flash_ui.h:22
void updateFlashUiForQueue(const ros::Time &time, bool state, bool once)
Definition flash_ui.cpp:9
FlashUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, const std::string &graph_name, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition flash_ui.h:16
Definition graph.h:13
Definition ui_base.h:72
Definition flash_ui.h:114
HeroHitFlashUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition flash_ui.h:116
Definition flash_ui.h:84
SpinFlashUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition flash_ui.h:86
Definition ui_base.h:20
Graph * graph_
Definition ui_base.h:59
static int id_
Definition ui_base.h:60
Base & base_
Definition ui_base.h:58
Definition data.h:109