aaa

Dependencies:   mbed BNO055_fusion Adafruit_GFX ros_lib_kinetic

myRos.cpp

Committer:
nakedt555
Date:
2018-12-07
Revision:
1:bdd17feaa4ce
Parent:
0:10f626cf3ec4
Child:
3:a45557a0dcb8

File content as of revision 1:bdd17feaa4ce:

#include "myRos.h"

bool ack_from_pc_;

//メンバ関数でないことに注意
void ack_from_pc_cb(const std_msgs::Empty& ack) {
    ack_from_pc_ = true;
}

void My_Ros::enable_initialize_amcl(){
    ack_from_pc_ = false;
}

void My_Ros::initialize(){
    ack_from_pc_ = false;
}

void My_Ros::court_color_publisher(){
    static std_msgs::Bool court_color;
    static ros::Publisher court_color_pub("nucleo/court_color", &court_color);
    
    static bool init_flag = false;
    if(init_flag == false){
        nh_.advertise(court_color_pub);    
        init_flag = true;
    }
   
    court_color.data = court_color_;
    court_color_pub.publish(&court_color);
}

void My_Ros::initial_pose_publisher(){
    static geometry_msgs::Point initial_pose;
    static ros::Publisher initial_pose_pub("nucleo/initial_point", &initial_pose);
    
    static bool init_flag = false;
    if(init_flag == false){
        nh_.advertise(initial_pose_pub);    
        init_flag = true;
    }
   
    initial_pose = initial_pose_.get_point_msgs();
    initial_pose_pub.publish(&initial_pose);
}

void My_Ros::pose_publisher(){
    static geometry_msgs::Point pose;
    static ros::Publisher pose_pub("nucleo/point", &pose);
    
    static bool init_flag = false;
    if(init_flag == false){
        nh_.advertise(pose_pub);    
        init_flag = true;
    }
   
    pose = pose_.get_point_msgs();
    pose_pub.publish(&pose);
}

//loopで回す
//
void My_Ros::set_amcl_parameter(){
     //Send initialize
    if(ack_from_pc_ == false){
        court_color_publisher();
        initial_pose_publisher();
    }
    
    //Send current position(odom -> base_footprint)
    pose_publisher();   
}

//This function run every 10 msec at main
void My_Ros::loop(){
    set_amcl_parameter();
    nh_.spinOnce();
}