Classes | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
AmclNode Class Reference

Classes

struct  TransformListenerWrapper
 

Public Member Functions

 AmclNode ()
 
int process ()
 
void runFromBag (const std::string &in_bag_fn, bool trigger_global_localization=false)
 Uses TF and LaserScan messages from bag file to drive AMCL instead. More...
 
void savePoseToServer ()
 
 ~AmclNode ()
 

Private Member Functions

void applyInitialPose ()
 
void checkLaserReceived (const ros::TimerEvent &event)
 
map_tconvertMap (const nav_msgs::OccupancyGrid &map_msg)
 
void freeMapDependentMemory ()
 
bool getOdomPose (tf::Stamped< tf::Pose > &pose, double &x, double &y, double &yaw, const ros::Time &t, const std::string &f)
 
double getYaw (tf::Pose &t)
 
bool globalLocalizationCallback (std_srvs::Empty::Request &req, std_srvs::Empty::Response &res)
 
void handleInitialPoseMessage (const geometry_msgs::PoseWithCovarianceStamped &msg)
 
void handleMapMessage (const nav_msgs::OccupancyGrid &msg)
 
void initialPoseReceived (const geometry_msgs::PoseWithCovarianceStampedConstPtr &msg)
 
void laserReceived (const sensor_msgs::LaserScanConstPtr &laser_scan)
 
void mapReceived (const nav_msgs::OccupancyGridConstPtr &msg)
 
bool nomotionUpdateCallback (std_srvs::Empty::Request &req, std_srvs::Empty::Response &res)
 
void reconfigureCB (amcl::AMCLConfig &config, uint32_t level)
 
void requestMap ()
 
bool setMapCallback (nav_msgs::SetMap::Request &req, nav_msgs::SetMap::Response &res)
 
void updatePoseFromServer ()
 

Static Private Member Functions

static pf_vector_t uniformPoseGenerator (void *arg)
 

Private Attributes

double a_thresh_
 
double alpha1_
 
double alpha2_
 
double alpha3_
 
double alpha4_
 
double alpha5_
 
double alpha_fast_
 
double alpha_slow_
 
ros::WallDuration bag_scan_period_
 
std::string base_frame_id_
 
double beam_skip_distance_
 
double beam_skip_error_threshold_
 
double beam_skip_threshold_
 
ros::Timer check_laser_timer_
 
ros::Duration cloud_pub_interval
 
boost::recursive_mutex configuration_mutex_
 
double d_thresh_
 
amcl::AMCLConfig default_config_
 
bool do_beamskip_
 
dynamic_reconfigure::Server< amcl::AMCLConfig > * dsrv_
 
bool first_map_only_
 
bool first_map_received_
 
bool first_reconfigure_call_
 
std::map< std::string, int > frame_to_laser_
 
std::string global_frame_id_
 
ros::ServiceServer global_loc_srv_
 
ros::Duration gui_publish_period
 
double init_cov_ [3]
 
double init_pose_ [3]
 
amcl_hyp_tinitial_pose_hyp_
 
ros::Subscriber initial_pose_sub_
 
ros::Subscriber initial_pose_sub_old_
 
double lambda_short_
 
AMCLLaserlaser_
 
ros::Duration laser_check_interval_
 
double laser_likelihood_max_dist_
 
double laser_max_range_
 
double laser_min_range_
 
laser_model_t laser_model_type_
 
tf::MessageFilter< sensor_msgs::LaserScan > * laser_scan_filter_
 
message_filters::Subscriber< sensor_msgs::LaserScan > * laser_scan_sub_
 
std::vector< AMCLLaser * > lasers_
 
std::vector< bool > lasers_update_
 
ros::Time last_cloud_pub_time
 
ros::Time last_laser_received_ts_
 
geometry_msgs::PoseWithCovarianceStamped last_published_pose
 
tf::Stamped< tf::Poselatest_odom_pose_
 
tf::Transform latest_tf_
 
bool latest_tf_valid_
 
bool m_force_update
 
map_tmap_
 
ros::Subscriber map_sub_
 
char * mapdata
 
int max_beams_
 
int max_particles_
 
int min_particles_
 
ros::NodeHandle nh_
 
ros::ServiceServer nomotion_update_srv_
 
AMCLOdomodom_
 
std::string odom_frame_id_
 
odom_model_t odom_model_type_
 
ros::Publisher particlecloud_pub_
 
pf_tpf_
 
double pf_err_
 
bool pf_init_
 
pf_vector_t pf_odom_pose_
 
double pf_z_
 
ros::Publisher pose_pub_
 
ros::NodeHandle private_nh_
 
int resample_count_
 
int resample_interval_
 
double resolution
 
ros::Time save_pose_last_time
 
ros::Duration save_pose_period
 
bool selective_resampling_
 
bool sent_first_transform_
 
ros::ServiceServer set_map_srv_
 
double sigma_hit_
 
int sx
 
int sy
 
TransformListenerWrappertf_
 
bool tf_broadcast_
 
tf::TransformBroadcastertfb_
 
ros::Duration transform_tolerance_
 
bool use_map_topic_
 
double z_hit_
 
double z_max_
 
double z_rand_
 
double z_short_
 

Static Private Attributes

static std::vector< std::pair< int, int > > free_space_indices
 

Detailed Description

Definition at line 110 of file amcl_node.cpp.

Constructor & Destructor Documentation

AmclNode::AmclNode ( )

Definition at line 327 of file amcl_node.cpp.

AmclNode::~AmclNode ( )

Definition at line 961 of file amcl_node.cpp.

Member Function Documentation

void AmclNode::applyInitialPose ( )
private

If initial_pose_hyp_ and map_ are both non-null, apply the initial pose to the particle filter state. initial_pose_hyp_ is deleted and set to NULL after it is used.

Definition at line 1546 of file amcl_node.cpp.

void AmclNode::checkLaserReceived ( const ros::TimerEvent event)
private

Definition at line 783 of file amcl_node.cpp.

map_t * AmclNode::convertMap ( const nav_msgs::OccupancyGrid &  map_msg)
private

Convert an OccupancyGrid map message into the internal representation. This allocates a map_t and returns it.

Definition at line 935 of file amcl_node.cpp.

void AmclNode::freeMapDependentMemory ( )
private

Definition at line 914 of file amcl_node.cpp.

bool AmclNode::getOdomPose ( tf::Stamped< tf::Pose > &  pose,
double &  x,
double &  y,
double &  yaw,
const ros::Time t,
const std::string &  f 
)
private

Definition at line 973 of file amcl_node.cpp.

double AmclNode::getYaw ( tf::Pose t)
private

Definition at line 1450 of file amcl_node.cpp.

bool AmclNode::globalLocalizationCallback ( std_srvs::Empty::Request &  req,
std_srvs::Empty::Response &  res 
)
private

Definition at line 1037 of file amcl_node.cpp.

void AmclNode::handleInitialPoseMessage ( const geometry_msgs::PoseWithCovarianceStamped &  msg)
private

Definition at line 1464 of file amcl_node.cpp.

void AmclNode::handleMapMessage ( const nav_msgs::OccupancyGrid &  msg)
private

Definition at line 825 of file amcl_node.cpp.

void AmclNode::initialPoseReceived ( const geometry_msgs::PoseWithCovarianceStampedConstPtr &  msg)
private

Definition at line 1458 of file amcl_node.cpp.

void AmclNode::laserReceived ( const sensor_msgs::LaserScanConstPtr &  laser_scan)
private

Definition at line 1073 of file amcl_node.cpp.

void AmclNode::mapReceived ( const nav_msgs::OccupancyGridConstPtr &  msg)
private

Definition at line 813 of file amcl_node.cpp.

bool AmclNode::nomotionUpdateCallback ( std_srvs::Empty::Request &  req,
std_srvs::Empty::Response &  res 
)
private

Definition at line 1054 of file amcl_node.cpp.

int AmclNode::process ( )
void AmclNode::reconfigureCB ( amcl::AMCLConfig &  config,
uint32_t  level 
)
private

Definition at line 479 of file amcl_node.cpp.

void AmclNode::requestMap ( )
private

Definition at line 795 of file amcl_node.cpp.

void AmclNode::runFromBag ( const std::string &  in_bag_fn,
bool  trigger_global_localization = false 
)

Uses TF and LaserScan messages from bag file to drive AMCL instead.

Parameters
in_bag_fninput bagfile
trigger_global_localizationwhether to trigger global localization before starting to process the bagfile

Definition at line 625 of file amcl_node.cpp.

void AmclNode::savePoseToServer ( )

Definition at line 718 of file amcl_node.cpp.

bool AmclNode::setMapCallback ( nav_msgs::SetMap::Request &  req,
nav_msgs::SetMap::Response &  res 
)
private

Definition at line 1063 of file amcl_node.cpp.

pf_vector_t AmclNode::uniformPoseGenerator ( void *  arg)
staticprivate

Definition at line 999 of file amcl_node.cpp.

void AmclNode::updatePoseFromServer ( )
private

Definition at line 740 of file amcl_node.cpp.

Member Data Documentation

double AmclNode::a_thresh_
private

Definition at line 206 of file amcl_node.cpp.

double AmclNode::alpha1_
private

Definition at line 255 of file amcl_node.cpp.

double AmclNode::alpha2_
private

Definition at line 255 of file amcl_node.cpp.

double AmclNode::alpha3_
private

Definition at line 255 of file amcl_node.cpp.

double AmclNode::alpha4_
private

Definition at line 255 of file amcl_node.cpp.

double AmclNode::alpha5_
private

Definition at line 255 of file amcl_node.cpp.

double AmclNode::alpha_fast_
private

Definition at line 256 of file amcl_node.cpp.

double AmclNode::alpha_slow_
private

Definition at line 256 of file amcl_node.cpp.

ros::WallDuration AmclNode::bag_scan_period_
private

Definition at line 222 of file amcl_node.cpp.

std::string AmclNode::base_frame_id_
private

Definition at line 177 of file amcl_node.cpp.

double AmclNode::beam_skip_distance_
private

Definition at line 260 of file amcl_node.cpp.

double AmclNode::beam_skip_error_threshold_
private

Definition at line 260 of file amcl_node.cpp.

double AmclNode::beam_skip_threshold_
private

Definition at line 260 of file amcl_node.cpp.

ros::Timer AmclNode::check_laser_timer_
private

Definition at line 252 of file amcl_node.cpp.

ros::Duration AmclNode::cloud_pub_interval
private

Definition at line 218 of file amcl_node.cpp.

boost::recursive_mutex AmclNode::configuration_mutex_
private

Definition at line 249 of file amcl_node.cpp.

double AmclNode::d_thresh_
private

Definition at line 206 of file amcl_node.cpp.

amcl::AMCLConfig AmclNode::default_config_
private

Definition at line 251 of file amcl_node.cpp.

bool AmclNode::do_beamskip_
private

Definition at line 259 of file amcl_node.cpp.

dynamic_reconfigure::Server<amcl::AMCLConfig>* AmclNode::dsrv_
private

Definition at line 250 of file amcl_node.cpp.

bool AmclNode::first_map_only_
private

Definition at line 181 of file amcl_node.cpp.

bool AmclNode::first_map_received_
private

Definition at line 246 of file amcl_node.cpp.

bool AmclNode::first_reconfigure_call_
private

Definition at line 247 of file amcl_node.cpp.

std::map< std::string, int > AmclNode::frame_to_laser_
private

Definition at line 199 of file amcl_node.cpp.

std::vector< std::pair< int, int > > AmclNode::free_space_indices
staticprivate

Definition at line 147 of file amcl_node.cpp.

std::string AmclNode::global_frame_id_
private

Definition at line 178 of file amcl_node.cpp.

ros::ServiceServer AmclNode::global_loc_srv_
private

Definition at line 239 of file amcl_node.cpp.

ros::Duration AmclNode::gui_publish_period
private

Definition at line 183 of file amcl_node.cpp.

double AmclNode::init_cov_[3]
private

Definition at line 264 of file amcl_node.cpp.

double AmclNode::init_pose_[3]
private

Definition at line 263 of file amcl_node.cpp.

amcl_hyp_t* AmclNode::initial_pose_hyp_
private

Definition at line 245 of file amcl_node.cpp.

ros::Subscriber AmclNode::initial_pose_sub_
private

Definition at line 196 of file amcl_node.cpp.

ros::Subscriber AmclNode::initial_pose_sub_old_
private

Definition at line 242 of file amcl_node.cpp.

double AmclNode::lambda_short_
private

Definition at line 257 of file amcl_node.cpp.

AMCLLaser* AmclNode::laser_
private

Definition at line 216 of file amcl_node.cpp.

ros::Duration AmclNode::laser_check_interval_
private

Definition at line 272 of file amcl_node.cpp.

double AmclNode::laser_likelihood_max_dist_
private

Definition at line 261 of file amcl_node.cpp.

double AmclNode::laser_max_range_
private

Definition at line 210 of file amcl_node.cpp.

double AmclNode::laser_min_range_
private

Definition at line 209 of file amcl_node.cpp.

laser_model_t AmclNode::laser_model_type_
private

Definition at line 265 of file amcl_node.cpp.

tf::MessageFilter<sensor_msgs::LaserScan>* AmclNode::laser_scan_filter_
private

Definition at line 195 of file amcl_node.cpp.

message_filters::Subscriber<sensor_msgs::LaserScan>* AmclNode::laser_scan_sub_
private

Definition at line 194 of file amcl_node.cpp.

std::vector< AMCLLaser* > AmclNode::lasers_
private

Definition at line 197 of file amcl_node.cpp.

std::vector< bool > AmclNode::lasers_update_
private

Definition at line 198 of file amcl_node.cpp.

ros::Time AmclNode::last_cloud_pub_time
private

Definition at line 219 of file amcl_node.cpp.

ros::Time AmclNode::last_laser_received_ts_
private

Definition at line 271 of file amcl_node.cpp.

geometry_msgs::PoseWithCovarianceStamped AmclNode::last_published_pose
private

Definition at line 187 of file amcl_node.cpp.

tf::Stamped<tf::Pose> AmclNode::latest_odom_pose_
private

Definition at line 174 of file amcl_node.cpp.

tf::Transform AmclNode::latest_tf_
private

Definition at line 140 of file amcl_node.cpp.

bool AmclNode::latest_tf_valid_
private

Definition at line 141 of file amcl_node.cpp.

bool AmclNode::m_force_update
private

Definition at line 213 of file amcl_node.cpp.

map_t* AmclNode::map_
private

Definition at line 189 of file amcl_node.cpp.

ros::Subscriber AmclNode::map_sub_
private

Definition at line 243 of file amcl_node.cpp.

char* AmclNode::mapdata
private

Definition at line 190 of file amcl_node.cpp.

int AmclNode::max_beams_
private

Definition at line 254 of file amcl_node.cpp.

int AmclNode::max_particles_
private

Definition at line 254 of file amcl_node.cpp.

int AmclNode::min_particles_
private

Definition at line 254 of file amcl_node.cpp.

ros::NodeHandle AmclNode::nh_
private

Definition at line 235 of file amcl_node.cpp.

ros::ServiceServer AmclNode::nomotion_update_srv_
private

Definition at line 240 of file amcl_node.cpp.

AMCLOdom* AmclNode::odom_
private

Definition at line 215 of file amcl_node.cpp.

std::string AmclNode::odom_frame_id_
private

Definition at line 171 of file amcl_node.cpp.

odom_model_t AmclNode::odom_model_type_
private

Definition at line 262 of file amcl_node.cpp.

ros::Publisher AmclNode::particlecloud_pub_
private

Definition at line 238 of file amcl_node.cpp.

pf_t* AmclNode::pf_
private

Definition at line 202 of file amcl_node.cpp.

double AmclNode::pf_err_
private

Definition at line 203 of file amcl_node.cpp.

bool AmclNode::pf_init_
private

Definition at line 204 of file amcl_node.cpp.

pf_vector_t AmclNode::pf_odom_pose_
private

Definition at line 205 of file amcl_node.cpp.

double AmclNode::pf_z_
private

Definition at line 203 of file amcl_node.cpp.

ros::Publisher AmclNode::pose_pub_
private

Definition at line 237 of file amcl_node.cpp.

ros::NodeHandle AmclNode::private_nh_
private

Definition at line 236 of file amcl_node.cpp.

int AmclNode::resample_count_
private

Definition at line 208 of file amcl_node.cpp.

int AmclNode::resample_interval_
private

Definition at line 207 of file amcl_node.cpp.

double AmclNode::resolution
private

Definition at line 192 of file amcl_node.cpp.

ros::Time AmclNode::save_pose_last_time
private

Definition at line 184 of file amcl_node.cpp.

ros::Duration AmclNode::save_pose_period
private

Definition at line 185 of file amcl_node.cpp.

bool AmclNode::selective_resampling_
private

Definition at line 267 of file amcl_node.cpp.

bool AmclNode::sent_first_transform_
private

Definition at line 138 of file amcl_node.cpp.

ros::ServiceServer AmclNode::set_map_srv_
private

Definition at line 241 of file amcl_node.cpp.

double AmclNode::sigma_hit_
private

Definition at line 257 of file amcl_node.cpp.

int AmclNode::sx
private

Definition at line 191 of file amcl_node.cpp.

int AmclNode::sy
private

Definition at line 191 of file amcl_node.cpp.

TransformListenerWrapper* AmclNode::tf_
private

Definition at line 136 of file amcl_node.cpp.

bool AmclNode::tf_broadcast_
private

Definition at line 266 of file amcl_node.cpp.

tf::TransformBroadcaster* AmclNode::tfb_
private

Definition at line 128 of file amcl_node.cpp.

ros::Duration AmclNode::transform_tolerance_
private

Definition at line 233 of file amcl_node.cpp.

bool AmclNode::use_map_topic_
private

Definition at line 180 of file amcl_node.cpp.

double AmclNode::z_hit_
private

Definition at line 257 of file amcl_node.cpp.

double AmclNode::z_max_
private

Definition at line 257 of file amcl_node.cpp.

double AmclNode::z_rand_
private

Definition at line 257 of file amcl_node.cpp.

double AmclNode::z_short_
private

Definition at line 257 of file amcl_node.cpp.


The documentation for this class was generated from the following file:


amcl
Author(s): Brian P. Gerkey, contradict@gmail.com
autogenerated on Thu Jan 21 2021 04:05:36