Skip to content

Commit 4bf9a58

Browse files
authored
Merge pull request #240 from GuraMumei/master
Update rm_referee and add new ui
2 parents dbfd050 + a829de8 commit 4bf9a58

File tree

10 files changed

+92
-17
lines changed

10 files changed

+92
-17
lines changed

rm_msgs/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ add_message_files(
8787
Buff.msg
8888
RadarToSentry.msg
8989
SentryCmd.msg
90+
VisualizeStateData.msg
9091
PowerManagementSampleAndStatusData.msg
9192
PowerManagementInitializationExceptionData.msg
9293
PowerManagementProcessStackOverflowData.msg
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
bool[] state

rm_msgs/srv/SetLimitVel.srv

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
float32 limit_vel
2+
float32 slide_window
23
---
34
float32 current_limit_vel
5+
float32 current_slide_window

rm_referee/include/rm_referee/common/data.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747
#include <tf2_ros/buffer.h>
4848
#include <tf2_ros/transform_listener.h>
4949
#include <tf2_geometry_msgs/tf2_geometry_msgs.h>
50+
#include "std_msgs/UInt32.h"
51+
#include "rm_msgs/VisualizeStateData.h"
5052

5153
#include "rm_referee/common/protocol.h"
5254

rm_referee/include/rm_referee/referee_base.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ class RefereeBase
6464
virtual void dronePoseCallBack(const geometry_msgs::PoseStampedConstPtr& data);
6565
virtual void shootCmdCallBack(const rm_msgs::ShootCmdConstPtr& data);
6666
virtual void radarToRefereeCallBack(const rm_msgs::RadarToSentryConstPtr& data);
67+
virtual void customizeDisplayCmdCallBack(const std_msgs::UInt32ConstPtr& data);
68+
virtual void visualizeStateDataCallBack(const rm_msgs::VisualizeStateDataConstPtr& data);
6769

6870
// send ui
6971
void sendSerialDataCallback();
@@ -94,6 +96,8 @@ class RefereeBase
9496
ros::Subscriber sentry_state_sub_;
9597
ros::Subscriber drone_pose_sub_;
9698
ros::Subscriber shoot_cmd_sub_;
99+
ros::Subscriber customize_display_cmd_sub_;
100+
ros::Subscriber visualize_state_data_sub_;
97101

98102
ChassisTriggerChangeUi* chassis_trigger_change_ui_{};
99103
ShooterTriggerChangeUi* shooter_trigger_change_ui_{};
@@ -120,14 +124,15 @@ class RefereeBase
120124
DroneTowardsTimeChangeGroupUi* drone_towards_time_change_group_ui_{};
121125
StringTriggerChangeUi *servo_mode_trigger_change_ui_{}, *stone_num_trigger_change_ui_{},
122126
*joint_temperature_trigger_change_ui_{}, *gripper_state_trigger_change_ui_{};
127+
VisualizeStateTriggerChangeUi* visualize_state_trigger_change_ui_{};
123128

124129
FixedUi* fixed_ui_{};
125130

126131
CoverFlashUi* cover_flash_ui_{};
127132
SpinFlashUi* spin_flash_ui_{};
128133
HeroHitFlashUi* hero_hit_flash_ui_{};
129134
ExceedBulletSpeedFlashUi* exceed_bullet_speed_flash_ui_{};
130-
EngineerActionFlashUi* engineer_action_flash_ui_{};
135+
CustomizeDisplayFlashUi* customize_display_flash_ui_{};
131136

132137
InteractiveSender* interactive_data_sender_{};
133138
CustomInfoSender* custom_info_sender{};

rm_referee/include/rm_referee/ui/flash_ui.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ class FlashGroupUi : public GroupUiBase
4040
std::string graph_name_;
4141
};
4242

43-
class EngineerActionFlashUi : public FlashGroupUi
43+
class CustomizeDisplayFlashUi : public FlashGroupUi
4444
{
4545
public:
46-
explicit EngineerActionFlashUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
47-
std::deque<Graph>* character_queue)
48-
: FlashGroupUi(rpc_value, base, "engineer_action", graph_queue, character_queue)
46+
explicit CustomizeDisplayFlashUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, std::deque<Graph>* graph_queue,
47+
std::deque<Graph>* character_queue)
48+
: FlashGroupUi(rpc_value, base, "customize_display", graph_queue, character_queue)
4949
{
5050
if (rpc_value.hasMember("data"))
5151
{
@@ -57,7 +57,7 @@ class EngineerActionFlashUi : public FlashGroupUi
5757
}
5858
}
5959
}
60-
void updateEngineerUiCmdData(const rm_msgs::EngineerUi::ConstPtr data, const ros::Time& last_get_data_time);
60+
void updateCmdData(const uint32_t& data);
6161

6262
private:
6363
void display(const ros::Time& time) override;

rm_referee/include/rm_referee/ui/trigger_change_ui.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,4 +252,27 @@ class FrictionSpeedTriggerChangeUi : public TriggerChangeUi
252252
double wheel_speed_;
253253
};
254254

255+
class VisualizeStateTriggerChangeUi : public TriggerChangeGroupUi
256+
{
257+
public:
258+
explicit VisualizeStateTriggerChangeUi(XmlRpc::XmlRpcValue& rpc_value, Base& base, const std::string& name,
259+
std::deque<Graph>* graph_queue, std::deque<Graph>* character_queue)
260+
: TriggerChangeGroupUi(rpc_value, base, name, graph_queue, character_queue)
261+
{
262+
if (rpc_value.hasMember("data"))
263+
{
264+
XmlRpc::XmlRpcValue& data = rpc_value["data"];
265+
for (int i = 0; i < static_cast<int>(rpc_value["data"].size()); i++)
266+
{
267+
graph_vector_.insert(
268+
std::pair<std::string, Graph*>(std::to_string(i), new Graph(data[i]["config"], base_, id_++)));
269+
}
270+
}
271+
};
272+
void updateUiColor(const std::vector<bool>& data);
273+
274+
private:
275+
void update() override;
276+
};
277+
255278
} // namespace rm_referee

rm_referee/src/referee_base.cpp

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ RefereeBase::RefereeBase(ros::NodeHandle& nh, Base& base) : base_(base), nh_(nh)
5050
"/sentry_target_to_referee", 1, &RefereeBase::sentryAttackingTargetCallback, this);
5151
RefereeBase::radar_to_referee_sub_ =
5252
nh.subscribe<rm_msgs::RadarToSentry>("/radar_to_referee", 1, &RefereeBase::radarToRefereeCallBack, this);
53+
RefereeBase::customize_display_cmd_sub_ =
54+
nh.subscribe<std_msgs::UInt32>("/customize_display_ui", 1, &RefereeBase::customizeDisplayCmdCallBack, this);
55+
RefereeBase::visualize_state_data_sub_ =
56+
nh.subscribe<rm_msgs::VisualizeStateData>("/visualize_state", 1, &RefereeBase::visualizeStateDataCallBack, this);
5357

5458
XmlRpc::XmlRpcValue rpc_value;
5559
send_ui_queue_delay_ = getParam(nh, "send_ui_queue_delay", 0.15);
@@ -88,6 +92,9 @@ RefereeBase::RefereeBase(ros::NodeHandle& nh, Base& base) : base_(base), nh_(nh)
8892
if (rpc_value[i]["name"] == "stone")
8993
stone_num_trigger_change_ui_ =
9094
new StringTriggerChangeUi(rpc_value[i], base_, "stone_num", &graph_queue_, &character_queue_);
95+
if (rpc_value[i]["name"] == "visualize_state")
96+
visualize_state_trigger_change_ui_ =
97+
new VisualizeStateTriggerChangeUi(rpc_value[i], base_, "visualize_state", &graph_queue_, &character_queue_);
9198
}
9299

93100
ui_nh.getParam("time_change", rpc_value);
@@ -148,17 +155,16 @@ RefereeBase::RefereeBase(ros::NodeHandle& nh, Base& base) : base_(base), nh_(nh)
148155
if (rpc_value[i]["name"] == "exceed_bullet_speed")
149156
exceed_bullet_speed_flash_ui_ =
150157
new ExceedBulletSpeedFlashUi(rpc_value[i], base_, &graph_queue_, &character_queue_);
151-
if (rpc_value[i]["name"] == "engineer_action")
152-
engineer_action_flash_ui_ = new EngineerActionFlashUi(rpc_value[i], base_, &graph_queue_, &character_queue_);
158+
if (rpc_value[i]["name"] == "customize_display")
159+
customize_display_flash_ui_ =
160+
new CustomizeDisplayFlashUi(rpc_value[i], base_, &graph_queue_, &character_queue_);
153161
}
154162
}
155163
if (nh.hasParam("interactive_data"))
156164
{
157165
nh.getParam("interactive_data", rpc_value);
158166
for (int i = 0; i < rpc_value.size(); i++)
159167
{
160-
// if (rpc_value[i]["name"] == "enemy_hero_state")
161-
// enemy_hero_state_sender_ = new CustomInfoSender(rpc_value[i], base_);
162168
if (rpc_value[i]["name"] == "custom_info")
163169
custom_info_sender = new CustomInfoSender(rpc_value[i], base_);
164170
if (rpc_value[i]["name"] == "bullet_num_share")
@@ -247,6 +253,8 @@ void RefereeBase::addUi()
247253
target_distance_time_change_ui_->addForQueue();
248254
if (friend_bullets_time_change_group_ui_)
249255
friend_bullets_time_change_group_ui_->addForQueue();
256+
if (visualize_state_trigger_change_ui_)
257+
visualize_state_trigger_change_ui_->addForQueue();
250258
add_ui_times_++;
251259
}
252260

@@ -453,8 +461,8 @@ void RefereeBase::engineerUiDataCallback(const rm_msgs::EngineerUi::ConstPtr& da
453461
stone_num_trigger_change_ui_->updateStringUiData(std::to_string(data->stone_num));
454462
if (servo_mode_trigger_change_ui_ && !is_adding_)
455463
servo_mode_trigger_change_ui_->updateStringUiData(data->control_mode);
456-
if (engineer_action_flash_ui_ && !is_adding_)
457-
engineer_action_flash_ui_->updateEngineerUiCmdData(data, ros::Time::now());
464+
if (customize_display_flash_ui_ && !is_adding_)
465+
customize_display_flash_ui_->updateCmdData(data->symbol);
458466
}
459467
void RefereeBase::manualDataCallBack(const rm_msgs::ManualToReferee::ConstPtr& data)
460468
{
@@ -585,4 +593,21 @@ void RefereeBase::radarToRefereeCallBack(const rm_msgs::RadarToSentryConstPtr& d
585593
radar_to_sentry_->updateRadarToSentryData(data);
586594
}
587595

596+
void RefereeBase::customizeDisplayCmdCallBack(const std_msgs::UInt32ConstPtr& data)
597+
{
598+
if (customize_display_flash_ui_ && !is_adding_)
599+
customize_display_flash_ui_->updateCmdData(data->data);
600+
}
601+
602+
void RefereeBase::visualizeStateDataCallBack(const rm_msgs::VisualizeStateDataConstPtr& data)
603+
{
604+
if (visualize_state_trigger_change_ui_ && !is_adding_)
605+
{
606+
std::vector<bool> state;
607+
for (auto state_data : data->state)
608+
state.push_back(state_data);
609+
visualize_state_trigger_change_ui_->updateUiColor(state);
610+
}
611+
}
612+
588613
} // namespace rm_referee

rm_referee/src/ui/flash_ui.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,14 +122,13 @@ void FlashGroupUi::updateFlashUiForQueue(const ros::Time& time, bool state, bool
122122
graph_queue_->push_back(*graph);
123123
}
124124

125-
void EngineerActionFlashUi::updateEngineerUiCmdData(const rm_msgs::EngineerUi::ConstPtr data,
126-
const ros::Time& last_get_data_time)
125+
void CustomizeDisplayFlashUi::updateCmdData(const uint32_t& data)
127126
{
128-
symbol_ = data->symbol;
129-
display(last_get_data_time);
127+
symbol_ = data;
128+
display(ros::Time::now());
130129
}
131130

132-
void EngineerActionFlashUi::display(const ros::Time& time)
131+
void CustomizeDisplayFlashUi::display(const ros::Time& time)
133132
{
134133
for (auto graph : graph_vector_)
135134
{

rm_referee/src/ui/trigger_change_ui.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,4 +450,21 @@ void FrictionSpeedTriggerChangeUi::update()
450450
updateForQueue(true);
451451
}
452452

453+
void VisualizeStateTriggerChangeUi::updateUiColor(const std::vector<bool>& data)
454+
{
455+
for (int i = 0; i < static_cast<int>(data.size()); i++)
456+
{
457+
graph_vector_.find(std::to_string(i))
458+
->second->setColor(data[i] ? rm_referee::GraphColor::GREEN : rm_referee::GraphColor::PINK);
459+
}
460+
update();
461+
}
462+
463+
void VisualizeStateTriggerChangeUi::update()
464+
{
465+
for (auto graph : graph_vector_)
466+
graph.second->setOperation(rm_referee::GraphOperation::UPDATE);
467+
updateForQueue(true);
468+
}
469+
453470
} // namespace rm_referee

0 commit comments

Comments
 (0)