Decision Module  1.0
ICRA2020 AI Challenge Northwestern Polytechnical University Aoxiang Team Strategy Code
blackboard_raw.h
Go to the documentation of this file.
1 #ifndef ROBORTS_DECISION_BLACKBOARD_H
2 #define ROBORTS_DECISION_BLACKBOARD_H
3 
4 #include <actionlib/client/simple_action_client.h>
5 #include <tf/tf.h>
6 #include <tf/transform_listener.h>
7 #include <ros/ros.h>
8 #include <geometry_msgs/PoseStamped.h>
9 
10 #include "roborts_msgs/ArmorDetectionAction.h"
11 
12 #include "io/io.h"
13 #include "../proto/decision.pb.h"
14 #include "costmap/costmap_interface.h"
15 #include "../../roborts_common/math/math.h"
16 #include "blackboard_common.h"
17 
18 
19 namespace roborts_decision {
20 
22  public:
23  typedef roborts_costmap::CostmapInterface CostMap;
24  typedef roborts_costmap::Costmap2D CostMap2D;
25 
26  explicit BlackboardRaw(const std::string &proto_file_path);
27  virtual ~BlackboardRaw();
28 
29  // Enemy
30  void ArmorDetectionFeedbackCallback(const roborts_msgs::ArmorDetectionFeedbackConstPtr &feedback);
31  geometry_msgs::PoseStamped GetEnemy() const;
32  bool IsEnemyDetected() const;
33 
34  // Goal
35  void GoalCallback(const geometry_msgs::PoseStamped::ConstPtr &goal);
36  geometry_msgs::PoseStamped GetGoal() const;
37  bool IsNewGoal();
38 
39  /*---------------------------------- Tools ------------------------------------------*/
40 
41  static double GetDistance(const geometry_msgs::PoseStamped &pose1,
42  const geometry_msgs::PoseStamped &pose2);
43  static double GetAngle(const geometry_msgs::PoseStamped &pose1,
44  const geometry_msgs::PoseStamped &pose2);
45 
46  // 方向向量转化四元数
47  static std::tuple<double,double,double,double> turnAngleToPose(double alpha, double beta, double gamma);
48 
49  // 方向向量转化水平方向角(-180-180)
50  static double vectorToHorizontalDirection(double dx, double dy);
51  // 方向向量转化竖直方向角(-90-90)
52  static double vectorToVerticalDirection(double dx, double dy, double dz);
53 
54  // n/x 函数模型
55  static double inverseRatioFunction(double x, double max = static_cast<double>(roborts_decision::data::MAX), double min = 0.0, double n = 1);
56 
57  // kx + b 函数模型
58  static double linearFunction(double x, double k = -1, double b = 1, double max = static_cast<double>(roborts_decision::data::MAX), double min = 0);
59 
60  // a^(k * x) + b 函数模型
61  static double exponentialFunction(double x, double k = -1, double a = exp(1), double b = 0, double min = 0);
62 
63  const geometry_msgs::PoseStamped GetChassisMapPose();
64  const geometry_msgs::PoseStamped GetGimbalMapPose();
65  const std::shared_ptr<CostMap> GetCostMap();
66  const CostMap2D* GetCostMap2D();
67  const unsigned char* GetCharMap();
68 
69  private:
70  void UpdateChassisPose();
71  void UpdateGimbalPose();
72 
73  //tf
74  std::shared_ptr<tf::TransformListener> tf_ptr_;
75 
76  //Enenmy detection
77  ros::Subscriber enemy_sub_;
78 
79  //Goal info
80  geometry_msgs::PoseStamped goal_;
81  bool new_goal_{};
82 
83  //Enemy info
84  actionlib::SimpleActionClient<roborts_msgs::ArmorDetectionAction> armor_detection_actionlib_client_;
85  roborts_msgs::ArmorDetectionGoal armor_detection_goal_;
86  geometry_msgs::PoseStamped enemy_pose_;
88 
89  //cost map
90  std::shared_ptr<CostMap> costmap_ptr_;
92  unsigned char* charmap_;
93 
94  // Chassis map pose.
95  geometry_msgs::PoseStamped chassis_map_pose_;
96 
97  // Gimbal map pose.
98  geometry_msgs::PoseStamped gimbal_map_pose_;
99 
100  // Chassis odom pose.
101  geometry_msgs::PoseStamped chassis_odom_pose_;
102 
103  // Gimbal odom pose.
104  geometry_msgs::PoseStamped gimbal_odom_pose_;
105 
106 };
107 } //namespace roborts_decision
108 #endif //ROBORTS_DECISION_BLACKBOARD_H
roborts_decision::BlackboardRaw::GetGimbalMapPose
const geometry_msgs::PoseStamped GetGimbalMapPose()
Definition: blackboard_raw.cpp:148
roborts_decision::BlackboardRaw::CostMap
roborts_costmap::CostmapInterface CostMap
Definition: blackboard_raw.h:23
roborts_decision::BlackboardRaw::GetCostMap2D
const CostMap2D * GetCostMap2D()
Definition: blackboard_raw.cpp:157
roborts_decision::BlackboardRaw::chassis_odom_pose_
geometry_msgs::PoseStamped chassis_odom_pose_
Definition: blackboard_raw.h:101
roborts_decision::BlackboardRaw::armor_detection_goal_
roborts_msgs::ArmorDetectionGoal armor_detection_goal_
Definition: blackboard_raw.h:85
roborts_decision::BlackboardRaw::charmap_
unsigned char * charmap_
Definition: blackboard_raw.h:92
roborts_decision::BlackboardRaw::IsEnemyDetected
bool IsEnemyDetected() const
Definition: blackboard_raw.cpp:100
roborts_decision::BlackboardRaw::gimbal_odom_pose_
geometry_msgs::PoseStamped gimbal_odom_pose_
Definition: blackboard_raw.h:104
roborts_decision::BlackboardRaw::GetChassisMapPose
const geometry_msgs::PoseStamped GetChassisMapPose()
Definition: blackboard_raw.cpp:143
roborts_decision::BlackboardRaw::inverseRatioFunction
static double inverseRatioFunction(double x, double max=static_cast< double >(roborts_decision::data::MAX), double min=0.0, double n=1)
Definition: blackboard_raw.cpp:225
roborts_decision::BlackboardRaw::vectorToVerticalDirection
static double vectorToVerticalDirection(double dx, double dy, double dz)
Definition: blackboard_raw.cpp:214
roborts_decision::BlackboardRaw::costmap_ptr_
std::shared_ptr< CostMap > costmap_ptr_
Definition: blackboard_raw.h:90
roborts_decision::BlackboardRaw::linearFunction
static double linearFunction(double x, double k=-1, double b=1, double max=static_cast< double >(roborts_decision::data::MAX), double min=0)
Definition: blackboard_raw.cpp:244
blackboard_common.h
roborts_decision::BlackboardRaw::GetCharMap
const unsigned char * GetCharMap()
Definition: blackboard_raw.cpp:161
roborts_decision::BlackboardRaw::GetDistance
static double GetDistance(const geometry_msgs::PoseStamped &pose1, const geometry_msgs::PoseStamped &pose2)
Definition: blackboard_raw.cpp:123
roborts_decision::data::MAX
constexpr static int MAX
最大数
Definition: blackboard_common.h:26
roborts_decision::BlackboardRaw::ArmorDetectionFeedbackCallback
void ArmorDetectionFeedbackCallback(const roborts_msgs::ArmorDetectionFeedbackConstPtr &feedback)
Definition: blackboard_raw.cpp:54
roborts_decision::BlackboardRaw::enemy_detected_
bool enemy_detected_
Definition: blackboard_raw.h:87
roborts_decision::BlackboardRaw::GetGoal
geometry_msgs::PoseStamped GetGoal() const
Definition: blackboard_raw.cpp:110
roborts_decision::BlackboardRaw::~BlackboardRaw
virtual ~BlackboardRaw()
Definition: blackboard_raw.cpp:50
roborts_decision::BlackboardRaw::UpdateGimbalPose
void UpdateGimbalPose()
Definition: blackboard_raw.cpp:181
roborts_decision::BlackboardRaw::costmap_2d_
CostMap2D * costmap_2d_
Definition: blackboard_raw.h:91
roborts_decision::BlackboardRaw::IsNewGoal
bool IsNewGoal()
Definition: blackboard_raw.cpp:114
roborts_decision
Definition: behavior_test_node.h:14
roborts_decision::BlackboardRaw::UpdateChassisPose
void UpdateChassisPose()
Definition: blackboard_raw.cpp:165
roborts_decision::BlackboardRaw::BlackboardRaw
BlackboardRaw(const std::string &proto_file_path)
Definition: blackboard_raw.cpp:9
roborts_decision::BlackboardRaw::armor_detection_actionlib_client_
actionlib::SimpleActionClient< roborts_msgs::ArmorDetectionAction > armor_detection_actionlib_client_
Definition: blackboard_raw.h:84
roborts_decision::BlackboardRaw
Definition: blackboard_raw.h:21
roborts_decision::BlackboardRaw::GetEnemy
geometry_msgs::PoseStamped GetEnemy() const
Definition: blackboard_raw.cpp:96
roborts_decision::BlackboardRaw::gimbal_map_pose_
geometry_msgs::PoseStamped gimbal_map_pose_
Definition: blackboard_raw.h:98
roborts_decision::BlackboardRaw::exponentialFunction
static double exponentialFunction(double x, double k=-1, double a=exp(1), double b=0, double min=0)
Definition: blackboard_raw.cpp:262
roborts_decision::BlackboardRaw::CostMap2D
roborts_costmap::Costmap2D CostMap2D
Definition: blackboard_raw.h:24
roborts_decision::BlackboardRaw::goal_
geometry_msgs::PoseStamped goal_
Definition: blackboard_raw.h:80
roborts_decision::BlackboardRaw::GetAngle
static double GetAngle(const geometry_msgs::PoseStamped &pose1, const geometry_msgs::PoseStamped &pose2)
Definition: blackboard_raw.cpp:132
roborts_decision::BlackboardRaw::GetCostMap
const std::shared_ptr< CostMap > GetCostMap()
Definition: blackboard_raw.cpp:153
roborts_decision::BlackboardRaw::chassis_map_pose_
geometry_msgs::PoseStamped chassis_map_pose_
Definition: blackboard_raw.h:95
roborts_decision::BlackboardRaw::vectorToHorizontalDirection
static double vectorToHorizontalDirection(double dx, double dy)
Definition: blackboard_raw.cpp:209
roborts_decision::BlackboardRaw::GoalCallback
void GoalCallback(const geometry_msgs::PoseStamped::ConstPtr &goal)
Definition: blackboard_raw.cpp:105
roborts_decision::BlackboardRaw::tf_ptr_
std::shared_ptr< tf::TransformListener > tf_ptr_
Definition: blackboard_raw.h:74
roborts_decision::BlackboardRaw::turnAngleToPose
static std::tuple< double, double, double, double > turnAngleToPose(double alpha, double beta, double gamma)
Definition: blackboard_raw.cpp:200
roborts_decision::BlackboardRaw::enemy_pose_
geometry_msgs::PoseStamped enemy_pose_
Definition: blackboard_raw.h:86
roborts_decision::BlackboardRaw::new_goal_
bool new_goal_
Definition: blackboard_raw.h:81
roborts_decision::BlackboardRaw::enemy_sub_
ros::Subscriber enemy_sub_
Definition: blackboard_raw.h:77