Nav2 Navigation Stack - rolling  main
ROS 2 Navigation Stack
Classes | Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
nav2_amcl::AmclNode Class Reference
Inheritance diagram for nav2_amcl::AmclNode:
Inheritance graph
[legend]
Collaboration diagram for nav2_amcl::AmclNode:
Collaboration graph
[legend]

Classes

struct  amcl_hyp_t
 
struct  Point2D
 

Public Member Functions

 AmclNode (const rclcpp::NodeOptions &options=rclcpp::NodeOptions())
 
- Public Member Functions inherited from nav2::LifecycleNode
 LifecycleNode (const std::string &node_name, const std::string &ns, const rclcpp::NodeOptions &options=rclcpp::NodeOptions())
 A lifecycle node constructor. More...
 
 LifecycleNode (const std::string &node_name, const rclcpp::NodeOptions &options=rclcpp::NodeOptions())
 A lifecycle node constructor with no namespace. More...
 
template<typename ParamType >
ParamType declare_or_get_parameter (const std::string &parameter_name, const ParamType &default_value, const ParameterDescriptor &parameter_descriptor=ParameterDescriptor())
 Declares or gets a parameter. If the parameter is already declared, returns its value; otherwise declares it and returns the default value. More...
 
template<typename MessageT , typename CallbackT >
nav2::Subscription< MessageT >::SharedPtr create_subscription (const std::string &topic_name, CallbackT &&callback, const rclcpp::QoS &qos=nav2::qos::StandardTopicQoS(), const rclcpp::CallbackGroup::SharedPtr &callback_group=nullptr)
 Create a subscription to a topic using Nav2 QoS profiles and SubscriptionOptions. More...
 
template<typename MessageT >
nav2::Publisher< MessageT >::SharedPtr create_publisher (const std::string &topic_name, const rclcpp::QoS &qos=nav2::qos::StandardTopicQoS(), const rclcpp::CallbackGroup::SharedPtr &callback_group=nullptr)
 Create a publisher to a topic using Nav2 QoS profiles and PublisherOptions. More...
 
template<typename ServiceT >
nav2::ServiceClient< ServiceT >::SharedPtr create_client (const std::string &service_name, bool use_internal_executor=false)
 Create a ServiceClient to interface with a service. More...
 
template<typename ServiceT >
nav2::ServiceServer< ServiceT >::SharedPtr create_service (const std::string &service_name, typename nav2::ServiceServer< ServiceT >::CallbackType cb, rclcpp::CallbackGroup::SharedPtr callback_group=nullptr)
 Create a ServiceServer to host with a service. More...
 
template<typename ActionT >
nav2::SimpleActionServer< ActionT >::SharedPtr create_action_server (const std::string &action_name, typename nav2::SimpleActionServer< ActionT >::ExecuteCallback execute_callback, typename nav2::SimpleActionServer< ActionT >::CompletionCallback compl_cb=nullptr, std::chrono::milliseconds server_timeout=std::chrono::milliseconds(500), bool spin_thread=false, const bool realtime=false)
 Create a SimpleActionServer to host with an action. More...
 
template<typename ActionT >
nav2::ActionClient< ActionT >::SharedPtr create_action_client (const std::string &action_name, rclcpp::CallbackGroup::SharedPtr callback_group=nullptr)
 Create a ActionClient to call an action using. More...
 
nav2::LifecycleNode::SharedPtr shared_from_this ()
 Get a shared pointer of this.
 
nav2::LifecycleNode::WeakPtr weak_from_this ()
 Get a shared pointer of this.
 
nav2::CallbackReturn on_error (const rclcpp_lifecycle::State &)
 Abstracted on_error state transition callback, since unimplemented as of 2020 in the managed ROS2 node state machine. More...
 
void autostart ()
 Automatically configure and active the node.
 
virtual void on_rcl_preshutdown ()
 Perform preshutdown activities before our Context is shutdown. Note that this is related to our Context's shutdown sequence, not the lifecycle node state machine.
 
void createBond ()
 Create bond connection to lifecycle manager.
 
void destroyBond ()
 Destroy bond connection to lifecycle manager.
 

Protected Member Functions

nav2::CallbackReturn on_configure (const rclcpp_lifecycle::State &state) override
 
nav2::CallbackReturn on_activate (const rclcpp_lifecycle::State &state) override
 
nav2::CallbackReturn on_deactivate (const rclcpp_lifecycle::State &state) override
 
nav2::CallbackReturn on_cleanup (const rclcpp_lifecycle::State &state) override
 
nav2::CallbackReturn on_shutdown (const rclcpp_lifecycle::State &state) override
 
rcl_interfaces::msg::SetParametersResult dynamicParametersCallback (std::vector< rclcpp::Parameter > parameters)
 Callback executed when a parameter change is detected. More...
 
void mapReceived (const nav_msgs::msg::OccupancyGrid::SharedPtr msg)
 
void handleMapMessage (const nav_msgs::msg::OccupancyGrid &msg)
 
void createFreeSpaceVector ()
 
void freeMapDependentMemory ()
 
map_tconvertMap (const nav_msgs::msg::OccupancyGrid &map_msg)
 
void initTransforms ()
 
void initMessageFilters ()
 
void initPubSub ()
 
void initialPoseReceived (geometry_msgs::msg::PoseWithCovarianceStamped::SharedPtr msg)
 
void laserReceived (sensor_msgs::msg::LaserScan::ConstSharedPtr laser_scan)
 
void initServices ()
 
void globalLocalizationCallback (const std::shared_ptr< rmw_request_id_t > request_header, const std::shared_ptr< std_srvs::srv::Empty::Request > request, std::shared_ptr< std_srvs::srv::Empty::Response > response)
 
void initialPoseReceivedSrv (const std::shared_ptr< rmw_request_id_t > request_header, const std::shared_ptr< nav2_msgs::srv::SetInitialPose::Request > request, std::shared_ptr< nav2_msgs::srv::SetInitialPose::Response > response)
 
void nomotionUpdateCallback (const std::shared_ptr< rmw_request_id_t > request_header, const std::shared_ptr< std_srvs::srv::Empty::Request > request, std::shared_ptr< std_srvs::srv::Empty::Response > response)
 
void initOdometry ()
 
bool getOdomPose (geometry_msgs::msg::PoseStamped &pose, double &x, double &y, double &yaw, const rclcpp::Time &sensor_timestamp, const std::string &frame_id)
 
void initParticleFilter ()
 
void initLaserScan ()
 
nav2_amcl::LasercreateLaserObject ()
 
bool checkElapsedTime (std::chrono::seconds check_interval, rclcpp::Time last_time)
 
bool addNewScanner (int &laser_index, const sensor_msgs::msg::LaserScan::ConstSharedPtr &laser_scan, const std::string &laser_scan_frame_id, geometry_msgs::msg::PoseStamped &laser_pose)
 
bool shouldUpdateFilter (const pf_vector_t pose, pf_vector_t &delta)
 
bool updateFilter (const int &laser_index, const sensor_msgs::msg::LaserScan::ConstSharedPtr &laser_scan, const pf_vector_t &pose)
 
void publishParticleCloud (const pf_sample_set_t *set)
 
bool getMaxWeightHyp (std::vector< amcl_hyp_t > &hyps, amcl_hyp_t &max_weight_hyps, int &max_weight_hyp)
 
void publishAmclPose (const sensor_msgs::msg::LaserScan::ConstSharedPtr &laser_scan, const std::vector< amcl_hyp_t > &hyps, const int &max_weight_hyp)
 
void calculateMaptoOdomTransform (const sensor_msgs::msg::LaserScan::ConstSharedPtr &laser_scan, const std::vector< amcl_hyp_t > &hyps, const int &max_weight_hyp)
 
void sendMapToOdomTransform (const tf2::TimePoint &transform_expiration)
 
void handleInitialPose (geometry_msgs::msg::PoseWithCovarianceStamped &msg)
 
void initParameters ()
 
- Protected Member Functions inherited from nav2::LifecycleNode
void printLifecycleNodeNotification ()
 Print notifications for lifecycle node.
 
void register_rcl_preshutdown_callback ()
 
void runCleanups ()
 

Static Protected Member Functions

static pf_vector_t uniformPoseGenerator (void *arg)
 

Protected Attributes

rclcpp::node_interfaces::OnSetParametersCallbackHandle::SharedPtr dyn_params_handler_
 
std::atomic< bool > active_ {false}
 
rclcpp::CallbackGroup::SharedPtr callback_group_
 
rclcpp::executors::SingleThreadedExecutor::SharedPtr executor_
 
std::unique_ptr< nav2::NodeThreadexecutor_thread_
 
map_tmap_ {nullptr}
 
bool first_map_only_ {true}
 
std::atomic< bool > first_map_received_ {false}
 
amcl_hyp_tinitial_pose_hyp_
 
std::recursive_mutex mutex_
 
nav2::Subscription< nav_msgs::msg::OccupancyGrid >::ConstSharedPtr map_sub_
 
std::shared_ptr< tf2_ros::TransformBroadcaster > tf_broadcaster_
 
std::shared_ptr< tf2_ros::TransformListener > tf_listener_
 
std::shared_ptr< tf2_ros::Buffer > tf_buffer_
 
bool sent_first_transform_ {false}
 
bool latest_tf_valid_ {false}
 
tf2::Transform latest_tf_
 
std::unique_ptr< message_filters::Subscriber< sensor_msgs::msg::LaserScan, rclcpp_lifecycle::LifecycleNode > > laser_scan_sub_
 
std::unique_ptr< tf2_ros::MessageFilter< sensor_msgs::msg::LaserScan > > laser_scan_filter_
 
message_filters::Connection laser_scan_connection_
 
nav2::Subscription< geometry_msgs::msg::PoseWithCovarianceStamped >::ConstSharedPtr initial_pose_sub_
 
nav2::Publisher< geometry_msgs::msg::PoseWithCovarianceStamped >::SharedPtr pose_pub_
 
nav2::Publisher< nav2_msgs::msg::ParticleCloud >::SharedPtr particle_cloud_pub_
 
nav2::ServiceServer< std_srvs::srv::Empty >::SharedPtr global_loc_srv_
 
nav2::ServiceServer< nav2_msgs::srv::SetInitialPose >::SharedPtr initial_guess_srv_
 
nav2::ServiceServer< std_srvs::srv::Empty >::SharedPtr nomotion_update_srv_
 
std::atomic< bool > force_update_ {false}
 
std::shared_ptr< nav2_amcl::MotionModelmotion_model_
 
geometry_msgs::msg::PoseStamped latest_odom_pose_
 
geometry_msgs::msg::PoseWithCovarianceStamped last_published_pose_
 
double init_pose_ [3]
 
double init_cov_ [3]
 
pluginlib::ClassLoader< nav2_amcl::MotionModelplugin_loader_
 
std::atomic< bool > first_pose_sent_
 
pf_tpf_ {nullptr}
 
bool pf_init_
 
pf_vector_t pf_odom_pose_
 
int resample_count_ {0}
 
int scan_error_count_ {0}
 
std::vector< nav2_amcl::Laser * > lasers_
 
std::vector< bool > lasers_update_
 
std::map< std::string, int > frame_to_laser_
 
rclcpp::Time last_laser_received_ts_
 
rclcpp::Time last_time_printed_msg_
 
bool init_pose_received_on_inactive {false}
 
bool initial_pose_is_known_ {false}
 
bool set_initial_pose_ {false}
 
bool always_reset_initial_pose_
 
double initial_pose_x_
 
double initial_pose_y_
 
double initial_pose_z_
 
double initial_pose_yaw_
 
double alpha1_
 
double alpha2_
 
double alpha3_
 
double alpha4_
 
double alpha5_
 
std::string base_frame_id_
 
double beam_skip_distance_
 
double beam_skip_error_threshold_
 
double beam_skip_threshold_
 
bool do_beamskip_
 
std::string global_frame_id_
 
double lambda_short_
 
double laser_likelihood_max_dist_
 
double laser_max_range_
 
double laser_min_range_
 
std::string sensor_model_type_
 
int max_beams_
 
int max_particles_
 
int min_particles_
 
std::string odom_frame_id_
 
double pf_err_
 
double pf_z_
 
double alpha_fast_
 
double alpha_slow_
 
int resample_interval_
 
std::string robot_model_type_
 
tf2::Duration save_pose_period_
 
double sigma_hit_
 
bool tf_broadcast_
 
tf2::Duration transform_tolerance_
 
double a_thresh_
 
double d_thresh_
 
double z_hit_
 
double z_max_
 
double z_short_
 
double z_rand_
 
std::string scan_topic_ {"scan"}
 
std::string map_topic_ {"map"}
 
bool freespace_downsampling_ = false
 
- Protected Attributes inherited from nav2::LifecycleNode
std::unique_ptr< rclcpp::PreShutdownCallbackHandle > rcl_preshutdown_cb_handle_ {nullptr}
 
std::shared_ptr< bond::Bond > bond_ {nullptr}
 
double bond_heartbeat_period {0.1}
 
rclcpp::TimerBase::SharedPtr autostart_timer_
 

Static Protected Attributes

static std::vector< Point2Dfree_space_indices
 

Additional Inherited Members

- Public Types inherited from nav2::LifecycleNode
using SharedPtr = std::shared_ptr< nav2::LifecycleNode >
 
using WeakPtr = std::weak_ptr< nav2::LifecycleNode >
 
using SharedConstPointer = std::shared_ptr< const nav2::LifecycleNode >
 

Detailed Description

Definition at line 59 of file amcl_node.hpp.

Member Function Documentation

◆ dynamicParametersCallback()

rcl_interfaces::msg::SetParametersResult nav2_amcl::AmclNode::dynamicParametersCallback ( std::vector< rclcpp::Parameter >  parameters)
protected

Callback executed when a parameter change is detected.

Parameters
eventParameterEvent message

Definition at line 994 of file amcl_node.cpp.

Member Data Documentation

◆ plugin_loader_

pluginlib::ClassLoader<nav2_amcl::MotionModel> nav2_amcl::AmclNode::plugin_loader_
protected
Initial value:
{"nav2_amcl",
"nav2_amcl::MotionModel"}

Definition at line 254 of file amcl_node.hpp.


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