Decision Module
1.0
ICRA2020 AI Challenge Northwestern Polytechnical University Aoxiang Team Strategy Code
|
Go to the documentation of this file.
5 #ifndef ROBORTS_ROBORTS_DECISION_BLACKBOARD_BLACKBOARD_H_
6 #define ROBORTS_ROBORTS_DECISION_BLACKBOARD_BLACKBOARD_H_
8 #include <roborts_msgs/RobotStatus.h>
10 #include <geometry_msgs/PoseStamped.h>
11 #include <geometry_msgs/Point32.h>
13 #include <std_msgs/Int32.h>
14 #include "roborts_msgs/BuffZoneStatus.h"
15 #include "roborts_msgs/GameSurvivor.h"
16 #include "roborts_msgs/OutpostDetected.h"
18 #include "../../roborts_common/math/math.h"
37 typedef std::shared_ptr<Blackboard>
Ptr;
39 explicit Blackboard(std::shared_ptr<MyRobot> &p_myrobot1,
40 std::shared_ptr<MyRobot> &p_myrobot2,
41 const ros::NodeHandle &nh = ros::NodeHandle(
"~"));
64 const std::shared_ptr<MyRobot> &
GetAnotherRobot(
const std::shared_ptr<MyRobot>& p_my_robot)
const;
79 std::vector<EnemyRobot>
GetDangerousOpp(
const std::shared_ptr<MyRobot> &p_my_robot);
85 const roborts_common::Point2D &another_partner_point);
92 roborts_common::Point2D
GetSpecificRunPoint(
const std::vector<PointValue> &running_interval,
93 std::shared_ptr<MyRobot> p_my_robot,
const roborts_common::Point2D &another_point);
108 double GetShootSpeed(
const std::shared_ptr<MyRobot>&p_my_robot,
const roborts_common::Point2D &enemy_pose);
115 roborts_common::Point2D another_point = roborts_common::Point2D(0,
123 const roborts_common::Polygon2D &area,
double value)
const;
130 const roborts_common::Point2D &partner_tar_point,
131 const std::shared_ptr<MyRobot> &me,
132 const std::shared_ptr<MyRobot> &partner)
const;
135 const std::shared_ptr<MyRobot> &p_my_robot,
136 const std::vector<std::vector<PointValue>> &security_matrix,
137 roborts_common::Point2D another_point);
150 const roborts_common::Polygon2D &
object,
151 const std::function<
double(
const roborts_common::Point2D &,
152 const roborts_common::Polygon2D &)>& fun);
155 std::vector<std::vector<PointValue>>
DiscretizeMap(
double discrete_unit)
const;
158 bool IsCollide(std::shared_ptr<MyRobot> p_my_robot)
const;
166 const roborts_common::Polygon2D &pose_polygon);
170 const roborts_common::Polygon2D &pose_polygon);
173 std::vector<PointValue>
CalculateSuitRunPoint(
const std::vector<std::vector<PointValue>> &potential_field);
177 const roborts_common::Polygon2D &polygon_2_d);
181 const roborts_common::Polygon2D &polygon_2_d)
const;
187 double PredictedDistance(
const roborts_common::Point2D &_point,
const std::shared_ptr<MyRobot>& p_my_robot);
190 roborts_common::Polygon2D
GetHomePolygon(
const std::shared_ptr<MyRobot> &p_my_robot)
const;
198 void WriteFile(std::string file_name, std::vector<std::vector<PointValue>> &map, roborts_common::Point2D &most_suitable_point);
228 std::string
LoadValue(
const std::string& value_name,
const std::string& target_name);
229 std::string
FindValueInFile(
const std::string& value_name,
const std::string& file_name);
230 bool UpdataValue(
const std::string &value_name,
const std::string &file_name,
const std::string &value);
231 bool AddValueInFile(
const std::string &value_name,
const std::string &value,
const std::string &file_path);
232 bool ChangeValueInFile(
const std::string& value_name,
const std::string& value,
const std::string& file_path);
238 #endif // ROBORTS_ROBORTS_DECISION_BLACKBOARD_BLACKBOARD_H_
double value
Definition: blackboard.h:30
double GetFortPotentialField(double distance, double direction)
Definition: blackboard.cpp:749
std::shared_ptr< MyRobot > p_my_robot2_
Definition: blackboard.h:221
const EnemyRobot & GetAnotherRobot(const EnemyRobot &enemy_robot)
Given an EnemyRobot, returns its companion.
Definition: blackboard.cpp:132
void UpdateDefenseAllPotentialField(std::vector< std::vector< PointValue >> &security_matrix)
Definition: blackboard.cpp:688
std::string FindValueInFile(const std::string &value_name, const std::string &file_name)
Definition: blackboard.cpp:1071
std::shared_ptr< Blackboard > Ptr
Definition: blackboard.h:37
std::vector< std::vector< PointValue > > DiscretizeMap(double discrete_unit) const
Definition: blackboard.cpp:621
void FindSafePoint(PointValue &safe_point, const std::shared_ptr< MyRobot > &p_my_robot, const std::vector< std::vector< PointValue >> &security_matrix, roborts_common::Point2D another_point)
Definition: blackboard.cpp:639
Definition: blackboard.h:35
void WriteFile(std::string file_name, std::vector< std::vector< PointValue >> &map, roborts_common::Point2D &most_suitable_point)
Definition: blackboard.cpp:1142
std::vector< roborts_common::Polygon2D > GetEnemyPolygon() const
Definition: blackboard.cpp:848
double PredictedDistance(const roborts_common::Point2D &_point, const std::shared_ptr< MyRobot > &p_my_robot)
Definition: blackboard.cpp:484
ros::NodeHandle nh_
Definition: blackboard.h:208
double CalculateEnemyToAttackPotentialField(const roborts_common::Point2D &pose_point, const roborts_common::Polygon2D &pose_polygon)
Definition: blackboard.cpp:428
Blackboard(std::shared_ptr< MyRobot > &p_myrobot1, std::shared_ptr< MyRobot > &p_myrobot2, const ros::NodeHandle &nh=ros::NodeHandle("~"))
Construct Blackboard using two MyRobot.
Definition: blackboard.cpp:19
double GetKeepDirectionSafeDistance() const
Get max safe distance.
Definition: blackboard.cpp:769
const std::shared_ptr< MyRobot > & GetMyRobot2()
Get number 2 of MyRobot.
Definition: blackboard.cpp:113
roborts_common::Point2D point
Definition: blackboard.h:29
bool IsCollide(std::shared_ptr< MyRobot > p_my_robot) const
Definition: blackboard.cpp:1184
std::vector< roborts_common::Polygon2D > GetHomePolygon()
Definition: blackboard.cpp:814
Blackboard(Blackboard &&)=delete
std::shared_ptr< MyRobot > p_my_robot1_
Definition: blackboard.h:220
double GetDistanceWithObstacles(const roborts_common::Point2D &pose, const roborts_common::Polygon2D &polygon_2_d)
Definition: blackboard.cpp:882
MyColor
Definition: blackboard_common.h:96
Definition: prediction_system.h:16
void UpdateAreaOfPotentialField(std::vector< std::vector< PointValue >> &security_matrix, const roborts_common::Polygon2D &area, double value) const
Definition: blackboard.cpp:1172
double defense_safe_value_
Definition: blackboard.h:233
const EnemyRobot & GetCloserEnemyRobot(const std::shared_ptr< MyRobot > &p_my_robot)
Get the EnemyRobot that closest to our robots.
Definition: blackboard.cpp:576
std::vector< PointValue > CalculateSuitRunPoint(const std::vector< std::vector< PointValue >> &potential_field)
Definition: blackboard.cpp:367
Blackboard(const Blackboard &)=delete
bool CanCooperatePartner(const roborts_common::Point2D &tar_point, const roborts_common::Point2D &partner_tar_point, const std::shared_ptr< MyRobot > &me, const std::shared_ptr< MyRobot > &partner) const
Definition: blackboard.cpp:913
EnemyRobot & GetEnemyRobot1()
Get number 1 of EnemyRobot.
Definition: blackboard.cpp:117
RobotBehavior
Basic action of robot.
Definition: blackboard_common.h:107
void UpdatePotentialField(std::vector< std::vector< PointValue >> &potential_field, const roborts_common::Polygon2D &object, const std::function< double(const roborts_common::Point2D &, const roborts_common::Polygon2D &)> &fun)
Definition: blackboard.cpp:736
ros::Subscriber color_sub_
Definition: blackboard.h:210
void OutpostDetectedCallback(const roborts_msgs::OutpostDetected::ConstPtr &msg)
Definition: blackboard.cpp:144
ros::Publisher is_collide_pub_
Definition: blackboard.h:212
std::shared_ptr< Field > field_
Definition: blackboard.h:218
void GameSurvivorCallback(const roborts_msgs::GameSurvivor::ConstPtr &msg)
Definition: blackboard.cpp:168
MyColor my_color_
Definition: blackboard.h:214
EnemyRobot & GetEnemyRobot2()
Get number 2 of EnemyRobot.
Definition: blackboard.cpp:121
roborts_common::Point2D GetSpecificRunPoint(const std::vector< PointValue > &running_interval, std::shared_ptr< MyRobot > p_my_robot, const roborts_common::Point2D &another_point)
Get the point to run to, used by GetAttackRunningPoint.
Definition: blackboard.cpp:465
EnemyRobot enemy_robot_1_
Definition: blackboard.h:216
std::string LoadValue(const std::string &value_name, const std::string &target_name)
Definition: blackboard.cpp:1019
static std::shared_ptr< Blackboard > p_blackboard_
Definition: blackboard.h:225
bool UpdataValue(const std::string &value_name, const std::string &file_name, const std::string &value)
Definition: blackboard.cpp:1044
ros::Subscriber outpose_camera_sub_
Definition: blackboard.h:209
std::vector< std::vector< PointValue > > UpdatePotentialFieldInAttack(const std::shared_ptr< MyRobot > &p_my_robot, const EnemyRobot &enemy_to_attack)
Definition: blackboard.cpp:399
void MyColorCallback(const roborts_msgs::RobotStatus::ConstPtr &msg)
Definition: blackboard.cpp:163
Definition: behavior_test_node.h:14
double GetPlacePotentialField(double distance)
Definition: blackboard.cpp:777
EnemyRobot enemy_robot_2_
Definition: blackboard.h:217
Definition: blackboard.h:28
static std::shared_ptr< Blackboard > GetBlackboard()
Create or get the single instance of Blackboard.
Definition: blackboard.cpp:79
const std::shared_ptr< MyRobot > & GetMyRobot1()
Get number 1 of MyRobot.
Definition: blackboard.cpp:109
roborts_common::Point2D GetDefenseRunningPoint(const std::shared_ptr< MyRobot > &p_my_robot, roborts_common::Point2D another_point=roborts_common::Point2D(0, 0))
Definition: blackboard.cpp:605
double GetWallPotentialField(double distance)
Definition: blackboard.cpp:793
MyColor GetMyColor() const
Get the color of MyRobot.
Definition: blackboard.cpp:140
void Update()
Update all the information. Need to be called on every frame.
Definition: blackboard.cpp:955
double CalculateEnemyAnotherPotentialField(const roborts_common::Point2D &pose_point, const roborts_common::Polygon2D &pose_polygon)
Definition: blackboard.cpp:448
roborts_common::Point2D GetAttackRunningPoint(const std::shared_ptr< MyRobot > &p_my_robot, const roborts_common::Point2D &another_partner_point)
Get the point to run when attacking.
Definition: blackboard.cpp:333
std::vector< EnemyRobot > GetDangerousOpp(const std::shared_ptr< MyRobot > &p_my_robot)
Get EnemyRobots that can attack us directly.
Definition: blackboard.cpp:252
double GetPointToEntityDistance(const roborts_common::Point2D &point_2_d, const roborts_common::Polygon2D &polygon_2_d) const
Definition: blackboard.cpp:999
double GetDefensePotentialFieldSafeValue() const
Definition: blackboard.cpp:900
const EnemyRobot & GetPrepareShootOpp(const std::shared_ptr< MyRobot > &my_robot)
Definition: blackboard.cpp:268
const EnemyRobot & GetEnemyRobotToAttack(const std::shared_ptr< MyRobot > &p_my_robot)
Use analytic hierarchy process to obtain robots that need to attack.
Definition: blackboard.cpp:497
bool ChangeValueInFile(const std::string &value_name, const std::string &value, const std::string &file_path)
Definition: blackboard.cpp:1116
PredictionSystem prediction_system_
Definition: blackboard.h:223
bool AddValueInFile(const std::string &value_name, const std::string &value, const std::string &file_path)
Definition: blackboard.cpp:1099
RobotBehavior GetCommonMoveType(const std::shared_ptr< MyRobot > &my_robot)
Whether the non-defensive run (spinning run) is obstacle avoidance run or run at a certain angle.
Definition: blackboard.cpp:242
double GetKeepDirectionEffectWithDistance(double distance, double angle=45) const
Obtain the damage percentage of a certain distance from the enemy and a certain deflection angle rela...
Definition: blackboard.cpp:981
ros::Subscriber game_survivor_sub_
Definition: blackboard.h:211
double GetShootSpeed(const std::shared_ptr< MyRobot > &p_my_robot, const roborts_common::Point2D &enemy_pose)
Definition: blackboard.cpp:990
Definition: enemy_robot.h:16
void NextDecisionCallBackDeprecated(const std_msgs::Int32::ConstPtr &msg)
Definition: blackboard.cpp:183