rm_control
Loading...
Searching...
No Matches
trigger_change_ui.h
Go to the documentation of this file.
1//
2// Created by llljjjqqq on 22-11-4.
3//
4#pragma once
5
8#include "std_msgs/String.h"
9
10namespace rm_referee
11{
12class TriggerChangeUi : public UiBase
13{
14public:
15 explicit TriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, const std::string& graph_name,
16 std::deque<Graph>* graph_queue, std::deque<Graph>* character_queue)
17 : UiBase(rpc_value, base, graph_queue, character_queue)
18 {
19 if (graph_name == "chassis")
20 graph_ = new Graph(rpc_value["config"], base_, 1);
21 else
22 graph_ = new Graph(rpc_value["config"], base_, id_++);
23 };
24 virtual void updateConfig(uint8_t main_mode, bool main_flag, uint8_t sub_mode = 0, bool sub_flag = false){};
25 void updateForQueue() override;
26 void updateForQueue(bool check_repeat);
27 void updateTwiceForQueue(bool check_repeat = true);
28};
29
31{
32public:
33 explicit TriggerChangeGroupUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, const std::string& graph_name,
34 std::deque<Graph>* graph_queue, std::deque<Graph>* character_queue)
35 : GroupUiBase(rpc_value, base, graph_queue, character_queue)
36 {
37 graph_name_ = graph_name;
38 };
39 virtual void updateConfig(uint8_t main_mode, bool main_flag, uint8_t sub_mode = 0, bool sub_flag = false){};
40 void updateForQueue() override;
41 void updateForQueue(bool check_repeat);
42 void updateTwiceForQueue(bool check_repeat = true);
43
44protected:
45 std::string graph_name_;
46};
47
49{
50public:
51 explicit ChassisTriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
52 std::deque<Graph>* character_queue)
53 : TriggerChangeUi(rpc_value, base, "chassis", graph_queue, character_queue)
54 {
56 graph_->setContent("raw");
57 else
58 graph_->setContent("follow");
59
60 if (rpc_value.hasMember("mode_change_threshold"))
61 mode_change_threshold_ = static_cast<double>(rpc_value["mode_change_threshold"]);
62 else
63 mode_change_threshold_ = 0.7;
64 }
65 void updateChassisCmdData(const rm_msgs::ChassisCmd::ConstPtr& data);
66 void updateManualCmdData(const rm_msgs::ManualToReferee::ConstPtr data) override;
67 void updateDbusData(const rm_msgs::DbusData::ConstPtr& data);
69 void checkModeChange();
70
71private:
72 void update() override;
73 void updateConfig(uint8_t main_mode, bool main_flag, uint8_t sub_mode = 0, bool sub_flag = false,
74 bool extra_flag = false);
75 void displayInCapacity();
76 std::string getChassisState(uint8_t mode);
77 uint8_t chassis_mode_, power_limit_state_, s_l_, s_r_, key_ctrl_, key_shift_, key_b_;
78 double mode_change_threshold_;
79};
80
82{
83public:
84 explicit HeroLegTriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
85 std::deque<Graph>* character_queue)
86 : TriggerChangeUi(rpc_value, base, "hero_leg_mode", graph_queue, character_queue)
87 {
88 graph_->setContent("DOWN");
90 }
91 void updateMode(uint8_t mode);
92
93private:
94 void update() override;
95 void updateConfig(uint8_t main_mode, bool main_flag, uint8_t sub_mode = 0, bool sub_flag = false) override;
96 std::string getHeroLegState(uint8_t mode);
97 uint8_t leg_mode_;
98};
99
101{
102public:
103 explicit ShooterTriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
104 std::deque<Graph>* character_queue)
105 : TriggerChangeUi(rpc_value, base, "shooter", graph_queue, character_queue)
106 {
107 graph_->setContent("0");
108 }
109 void updateShootStateData(const rm_msgs::ShootState::ConstPtr& data);
110 void updateManualCmdData(const rm_msgs::ManualToReferee::ConstPtr data) override;
111
112private:
113 void update() override;
114 void updateConfig(uint8_t main_mode, bool main_flag, uint8_t sub_mode = 0, bool sub_flag = false) override;
115 std::string getShooterState(uint8_t mode);
116 uint8_t shooter_mode_, shoot_frequency_;
117};
118
120{
121public:
122 explicit GimbalTriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
123 std::deque<Graph>* character_queue)
124 : TriggerChangeUi(rpc_value, base, "gimbal", graph_queue, character_queue)
125 {
126 graph_->setContent("0");
127 }
128 void updateGimbalCmdData(const rm_msgs::GimbalCmd ::ConstPtr& data);
129 void updateManualCmdData(const rm_msgs::ManualToReferee::ConstPtr data) override;
130
131private:
132 void update() override;
133 void updateConfig(uint8_t main_mode, bool main_flag, uint8_t sub_mode = 0, bool sub_flag = false) override;
134 std::string getGimbalState(uint8_t mode);
135 uint8_t gimbal_mode_, gimbal_eject_;
136};
137
139{
140public:
141 explicit TargetTriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
142 std::deque<Graph>* character_queue)
143 : TriggerChangeUi(rpc_value, base, "target", graph_queue, character_queue)
144 {
145 graph_->setContent("armor");
146 if (base_.robot_color_ == "red")
148 else
150 }
151 void updateShootStateData(const rm_msgs::ShootState::ConstPtr& data);
152 void updateManualCmdData(const rm_msgs::ManualToReferee::ConstPtr data) override;
153
154private:
155 void update() override;
156 void updateConfig(uint8_t main_mode, bool main_flag, uint8_t sub_mode = 0, bool sub_flag = false) override;
157 std::string getTargetState(uint8_t target, uint8_t armor_target);
158 uint8_t det_target_, shoot_frequency_, det_armor_target_, det_color_, gimbal_eject_;
159};
160
162{
163public:
164 explicit TargetViewAngleTriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
165 std::deque<Graph>* character_queue)
166 : TriggerChangeUi(rpc_value, base, "target_scale", graph_queue, character_queue)
167 {
168 }
169 void updateTrackID(int id);
170
171private:
172 void update() override;
173 void updateConfig(uint8_t main_mode, bool main_flag, uint8_t sub_mode = 0, bool sub_flag = false) override;
174 int track_id_;
175};
176
178{
179public:
180 explicit PolygonTriggerChangeGroupUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
181 std::deque<Graph>* character_queue)
182 : TriggerChangeGroupUi(rpc_value, base, "Polygon", graph_queue, character_queue)
183 {
184 ROS_ASSERT(rpc_value.hasMember("points"));
185 XmlRpc::XmlRpcValue config;
186
187 config["type"] = "line";
188
189 if (rpc_value["graph_config"].hasMember("color"))
190 config["color"] = rpc_value["graph_config"]["color"];
191 else
192 config["color"] = "cyan";
193 if (rpc_value["graph_config"].hasMember("width"))
194 config["width"] = rpc_value["graph_config"]["width"];
195 else
196 config["width"] = 2;
197 XmlRpc::XmlRpcValue points = rpc_value["points"];
198 config["start_position"].setSize(2);
199 config["end_position"].setSize(2);
200 for (int i = 1; i <= points.size(); i++)
201 {
202 if (i != points.size())
203 {
204 config["start_position"][0] = points[i - 1][0];
205 config["start_position"][1] = points[i - 1][1];
206 config["end_position"][0] = points[i][0];
207 config["end_position"][1] = points[i][1];
208 }
209 else
210 {
211 // Connect first and last point
212 config["start_position"][0] = points[i - 1][0];
213 config["start_position"][1] = points[i - 1][1];
214 config["end_position"][0] = points[0][0];
215 config["end_position"][1] = points[0][1];
216 }
217 graph_vector_.insert(
218 std::make_pair<std::string, Graph*>("graph_" + std::to_string(i), new Graph(config, base_, id_++)));
219 }
220 }
221 void update() override;
222};
223
225{
226public:
227 explicit CameraTriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
228 std::deque<Graph>* character_queue)
229 : TriggerChangeUi(rpc_value, base, "camera", graph_queue, character_queue)
230 {
231 if (rpc_value.hasMember("camera_name"))
232 {
233 XmlRpc::XmlRpcValue& data = rpc_value["camera_name"];
234 camera1_name_ = static_cast<std::string>(data["camera1_name"]);
235 camera2_name_ = static_cast<std::string>(data["camera2_name"]);
236 }
237 else
238 ROS_WARN("Camera config 's member 'camera_name' not defined.");
239 graph_->setContent("0");
240 }
241 void updateCameraName(const std_msgs::StringConstPtr& data);
242
243private:
244 void update() override;
245 void updateConfig(uint8_t main_mode = 0, bool main_flag = false, uint8_t sub_mode = 0, bool sub_flag = false) override;
246 std::string current_camera_{}, camera1_name_{}, camera2_name_{};
247};
248
250{
251public:
252 explicit StringTriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, const std::string& name,
253 std::deque<Graph>* graph_queue, std::deque<Graph>* character_queue)
254 : TriggerChangeUi(rpc_value, base, name, graph_queue, character_queue){};
255 void updateStringUiData(const std::string& data);
256
257private:
258 void update() override;
259 std::string data_;
260};
261
263{
264public:
265 explicit FrictionSpeedTriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
266 std::deque<Graph>* character_queue)
267 : TriggerChangeUi(rpc_value, base, "friction_speed", graph_queue, character_queue){};
268 void updateFrictionSpeedUiData(const rm_msgs::ShootCmdConstPtr& data);
269
270private:
271 void update() override;
272 double wheel_speed_;
273};
274
276{
277public:
278 explicit VisualizeStateTriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, const std::string& name,
279 std::deque<Graph>* graph_queue, std::deque<Graph>* character_queue)
280 : TriggerChangeGroupUi(rpc_value, base, name, graph_queue, character_queue)
281 {
282 if (rpc_value.hasMember("data"))
283 {
284 XmlRpc::XmlRpcValue& data = rpc_value["data"];
285 for (int i = 0; i < static_cast<int>(rpc_value["data"].size()); i++)
286 {
287 graph_vector_.insert(
288 std::pair<std::string, Graph*>(std::to_string(i), new Graph(data[i]["config"], base_, id_++)));
289 }
290 }
291 };
292 void updateUiColor(const std::vector<bool>& data);
293
294private:
295 void update() override;
296};
297
298} // namespace rm_referee
Definition data.h:120
std::string robot_color_
Definition data.h:127
int robot_id_
Definition data.h:125
Definition trigger_change_ui.h:225
void updateCameraName(const std_msgs::StringConstPtr &data)
Definition trigger_change_ui.cpp:440
CameraTriggerChangeUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:227
Definition trigger_change_ui.h:49
void updateDbusData(const rm_msgs::DbusData::ConstPtr &data)
Definition trigger_change_ui.cpp:218
void checkModeChange()
Definition trigger_change_ui.cpp:107
ChassisTriggerChangeUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:51
void updateChassisCmdData(const rm_msgs::ChassisCmd::ConstPtr &data)
Definition trigger_change_ui.cpp:207
void updateCapacityResetStatus()
Definition trigger_change_ui.cpp:227
void updateManualCmdData(const rm_msgs::ManualToReferee::ConstPtr data) override
Definition trigger_change_ui.cpp:213
Definition trigger_change_ui.h:263
FrictionSpeedTriggerChangeUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:265
void updateFrictionSpeedUiData(const rm_msgs::ShootCmdConstPtr &data)
Definition trigger_change_ui.cpp:478
Definition trigger_change_ui.h:120
void updateManualCmdData(const rm_msgs::ManualToReferee::ConstPtr data) override
Definition trigger_change_ui.cpp:342
void updateGimbalCmdData(const rm_msgs::GimbalCmd ::ConstPtr &data)
Definition trigger_change_ui.cpp:336
GimbalTriggerChangeUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:122
Definition graph.h:13
void setColor(const rm_referee::GraphColor &color)
Definition graph.h:34
void setContent(const std::string &content)
Definition graph.h:38
Definition ui_base.h:72
std::map< std::string, Graph * > graph_vector_
Definition ui_base.h:93
Definition trigger_change_ui.h:82
void updateMode(uint8_t mode)
Definition trigger_change_ui.cpp:232
HeroLegTriggerChangeUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:84
Definition trigger_change_ui.h:178
PolygonTriggerChangeGroupUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:180
void update() override
Definition trigger_change_ui.cpp:433
Definition trigger_change_ui.h:101
ShooterTriggerChangeUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:103
void updateShootStateData(const rm_msgs::ShootState::ConstPtr &data)
Definition trigger_change_ui.cpp:296
void updateManualCmdData(const rm_msgs::ManualToReferee::ConstPtr data) override
Definition trigger_change_ui.cpp:302
Definition trigger_change_ui.h:250
void updateStringUiData(const std::string &data)
Definition trigger_change_ui.cpp:464
StringTriggerChangeUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, const std::string &name, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:252
Definition trigger_change_ui.h:139
void updateManualCmdData(const rm_msgs::ManualToReferee::ConstPtr data) override
Definition trigger_change_ui.cpp:398
void updateShootStateData(const rm_msgs::ShootState::ConstPtr &data)
Definition trigger_change_ui.cpp:407
TargetTriggerChangeUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:141
Definition trigger_change_ui.h:162
void updateTrackID(int id)
Definition trigger_change_ui.cpp:427
TargetViewAngleTriggerChangeUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:164
Definition trigger_change_ui.h:31
TriggerChangeGroupUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, const std::string &graph_name, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:33
void updateTwiceForQueue(bool check_repeat=true)
Definition trigger_change_ui.cpp:60
void updateForQueue() override
Definition trigger_change_ui.cpp:33
std::string graph_name_
Definition trigger_change_ui.h:45
virtual void updateConfig(uint8_t main_mode, bool main_flag, uint8_t sub_mode=0, bool sub_flag=false)
Definition trigger_change_ui.h:39
Definition trigger_change_ui.h:13
TriggerChangeUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, const std::string &graph_name, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:15
void updateTwiceForQueue(bool check_repeat=true)
Definition trigger_change_ui.cpp:23
virtual void updateConfig(uint8_t main_mode, bool main_flag, uint8_t sub_mode=0, bool sub_flag=false)
Definition trigger_change_ui.h:24
void updateForQueue() override
Definition trigger_change_ui.cpp:9
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 trigger_change_ui.h:276
VisualizeStateTriggerChangeUi(XmlRpc::XmlRpcValue &rpc_value, Base &base, const std::string &name, std::deque< Graph > *graph_queue, std::deque< Graph > *character_queue)
Definition trigger_change_ui.h:278
Definition data.h:109
@ PINK
Definition protocol.h:166
@ YELLOW
Definition protocol.h:162
@ CYAN
Definition protocol.h:167
@ BLUE_ENGINEER
Definition protocol.h:124
@ RED_ENGINEER
Definition protocol.h:114