aaa
Dependencies: mbed BNO055_fusion Adafruit_GFX ros_lib_kinetic
Diff: odometry/odom.h
- Revision:
- 8:80708bacb5b5
- Parent:
- 6:20a32baeff79
- Child:
- 10:3b47050b1652
diff -r b240464868e8 -r 80708bacb5b5 odometry/odom.h --- a/odometry/odom.h Tue Dec 18 22:06:34 2018 +0000 +++ b/odometry/odom.h Thu Dec 20 20:54:35 2018 +0000 @@ -30,12 +30,9 @@ float offset_angle_; float actual_angle_; - - Vec3f world_; - Vec3f velocity_; - Vec3f world_velocity_; + Vec3f odom_; - //For amcl + //For ROS bool court_color_; Vec3f initialpose_; Vec3f drift_; @@ -43,6 +40,9 @@ //For TIM IT Ticker *it_tick; + //For OLED + bool enable_oled_; + public: //Constructor Odom(){ @@ -56,8 +56,16 @@ //Update world angle void update_angle(); - void reset_world(){ - world_ = Vec3f(0, 0, 0); + void reset_odom(){ + odom_.x(0.0); + odom_.y(0.0); + odom_.angle(0.0); + } + + void reset_drift(){ + drift_.x(0.0); + drift_.y(0.0); + drift_.angle(0.0); } //現在角度を0度に設定 @@ -69,8 +77,8 @@ bool get_court_color(){ return court_color_; } - Vec3f get_world(){ - return world_; + Vec3f get_odom(){ + return odom_; } Vec3f get_initialpose(){ return initialpose_; @@ -78,7 +86,10 @@ Vec3f get_drift(){ return drift_; } - + bool get_enable_oled(){ + return enable_oled_; + } + //Setter void set_court_color(bool court_color){ court_color_ = court_color; @@ -86,12 +97,12 @@ void set_initialpose(Vec3f initialpose){ initialpose_ = initialpose; } - void set_world(Vec3f world){ - world_ = world; - } void set_drift(Vec3f drift){ drift_ = drift; } + void set_enable_oled(bool enable_oled){ + enable_oled_ = enable_oled; + } private: void initialize(); @@ -115,8 +126,9 @@ odom_ = odom; } - void reset_pose(){ - odom_->reset_world(); + void reset_odometry(){ + odom_->reset_odom(); + odom_->reset_drift(); odom_->set_offset_angle_zero(); } @@ -124,28 +136,42 @@ bool get_court_color(){ return odom_->get_court_color(); } + Vec3f get_initial_pose(){ return odom_->get_initialpose(); } - Vec3f get_pose(){ - return odom_->get_world() + odom_->get_initialpose() + odom_->get_drift(); + Vec3f get_odom(){ + return odom_->get_odom(); } Vec3f get_drift(){ return odom_->get_drift(); } + Vec3f get_pose(){ + return get_initial_pose() + get_odom(); + } + Vec3f get_world(){ + return get_pose() + get_drift(); + } + + bool get_enable_oled(){ + return odom_->get_enable_oled(); + } + //Setter - void set_initial_pose(Vec3f initialpose){ - odom_->set_initialpose(initialpose); - } void set_court_color(bool court_color){ odom_->set_court_color(court_color); } - void set_pose(Vec3f pose){ - odom_->set_world(pose); + + void set_initial_pose(Vec3f initialpose){ + odom_->set_initialpose(initialpose);//CANから受け取った初期位置の情報を格納するためのメソッド } void set_drift(Vec3f drift){ - odom_->set_drift(drift); + odom_->set_drift(drift);//ROSからサブスクライブしたデータを格納するためのメソッド + } + + void set_enable_oled(bool enable_oled){ + odom_->set_enable_oled(enable_oled); } };