#include <HumanoidLocalization.h>
 | 
| unsigned  | computeBeamStep (unsigned numBeams) const  | 
|   | 
| void  | constrainMotion (const tf::Pose &odomPose) | 
|   | 
| int  | filterUniform (const PointCloud &cloud_in, PointCloud &cloud_out, int numSamples) const  | 
|   | 
| double  | getCumParticleWeight () const  | 
|   | cumulative weight of all particles (=1 when normalized)  More...
  | 
|   | 
| bool  | getImuMsg (const ros::Time &stamp, ros::Time &imuStamp, double &angleX, double &angleY) const  | 
|   | 
| void  | initZRP (double &z, double &roll, double &pitch) | 
|   | 
| bool  | isAboveMotionThreshold (const tf::Pose &odomTransform) | 
|   | 
| bool  | localizeWithMeasurement (const PointCloud &pc_filtered, const std::vector< float > &ranges, double max_range) | 
|   | 
| bool  | lookupPoseHeight (const ros::Time &t, double &poseHeight) const  | 
|   | 
| double  | nEff () const  | 
|   | 
| void  | normalizeWeights () | 
|   | 
| void  | prepareGeneralPointCloud (const sensor_msgs::PointCloud2::ConstPtr &msg, PointCloud &pc, std::vector< float > &ranges) const  | 
|   | 
| void  | prepareLaserPointCloud (const sensor_msgs::LaserScanConstPtr &laser, PointCloud &pc, std::vector< float > &ranges) const  | 
|   | 
| void  | publishPoseEstimate (const ros::Time &time, bool publish_eval) | 
|   | 
| void  | reset () | 
|   | 
| void  | timerCallback (const ros::TimerEvent &e) | 
|   | 
| void  | toLogForm () | 
|   | 
| void  | voxelGridSampling (const PointCloud &pc, pcl::PointCloud< int > &sampledIndices, double searchRadius) const  | 
|   | 
Definition at line 82 of file HumanoidLocalization.h.
 
      
        
          | humanoid_localization::HumanoidLocalization::HumanoidLocalization  | 
          ( | 
          unsigned  | 
          randomSeed | ) | 
           | 
        
      
 
 
  
  
      
        
          | humanoid_localization::HumanoidLocalization::~HumanoidLocalization  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
virtual   | 
  
 
 
  
  
      
        
          | unsigned humanoid_localization::HumanoidLocalization::computeBeamStep  | 
          ( | 
          unsigned  | 
          numBeams | ) | 
           const | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::constrainMotion  | 
          ( | 
          const tf::Pose &  | 
          odomPose | ) | 
           | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::filterGroundPlane  | 
          ( | 
          const PointCloud &  | 
          pc,  | 
         
        
           | 
           | 
          PointCloud &  | 
          ground,  | 
         
        
           | 
           | 
          PointCloud &  | 
          nonground,  | 
         
        
           | 
           | 
          double  | 
          groundFilterDistance,  | 
         
        
           | 
           | 
          double  | 
          groundFilterAngle,  | 
         
        
           | 
           | 
          double  | 
          groundFilterPlaneDistance  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
 
  
  
      
        
          | int humanoid_localization::HumanoidLocalization::filterUniform  | 
          ( | 
          const PointCloud &  | 
          cloud_in,  | 
         
        
           | 
           | 
          PointCloud &  | 
          cloud_out,  | 
         
        
           | 
           | 
          int  | 
          numSamples  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
protected   | 
  
 
 
      
        
          | unsigned humanoid_localization::HumanoidLocalization::getBestParticleIdx  | 
          ( | 
           | ) | 
           const | 
        
      
 
 
      
        
          | tf::Pose humanoid_localization::HumanoidLocalization::getBestParticlePose  | 
          ( | 
           | ) | 
           const | 
        
      
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::getCumParticleWeight  | 
          ( | 
           | ) | 
           const | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::getImuMsg  | 
          ( | 
          const ros::Time &  | 
          stamp,  | 
         
        
           | 
           | 
          ros::Time &  | 
          imuStamp,  | 
         
        
           | 
           | 
          double &  | 
          angleX,  | 
         
        
           | 
           | 
          double &  | 
          angleY  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
protected   | 
  
 
Returns the IMU message with stamp closest to a given stamp. 
- Parameters
 - 
  
    | [in] | stamp | Timestamp to search.  | 
    | [out] | imuStamp | Stamp of closest IMU message (or interpolation of two IMU messages).  | 
    | [out] | angleX | Interpolated roll angle.  | 
    | [out] | angleY | Interpolated pitch angle.  | 
  
   
- Returns
 - Success. 
 
Definition at line 880 of file HumanoidLocalization.cpp.
 
 
      
        
          | tf::Pose humanoid_localization::HumanoidLocalization::getMeanParticlePose  | 
          ( | 
           | ) | 
           const | 
        
      
 
 
      
        
          | tf::Pose humanoid_localization::HumanoidLocalization::getParticlePose  | 
          ( | 
          unsigned  | 
          particleIdx | ) | 
           const | 
        
      
 
 
      
        
          | bool humanoid_localization::HumanoidLocalization::globalLocalizationCallback  | 
          ( | 
          std_srvs::Empty::Request &  | 
          req,  | 
        
        
           | 
           | 
          std_srvs::Empty::Response &  | 
          res  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
 
      
        
          | void humanoid_localization::HumanoidLocalization::imuCallback  | 
          ( | 
          const sensor_msgs::ImuConstPtr &  | 
          msg | ) | 
           | 
        
      
 
 
      
        
          | void humanoid_localization::HumanoidLocalization::initGlobal  | 
          ( | 
           | ) | 
           | 
        
      
 
 
      
        
          | void humanoid_localization::HumanoidLocalization::initPoseCallback  | 
          ( | 
          const geometry_msgs::PoseWithCovarianceStampedConstPtr &  | 
          msg | ) | 
           | 
        
      
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::initZRP  | 
          ( | 
          double &  | 
          z,  | 
         
        
           | 
           | 
          double &  | 
          roll,  | 
         
        
           | 
           | 
          double &  | 
          pitch  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
protected   | 
  
 
Initializes z, roll and pitch values either from parameters or fromo real (odom) values 
Definition at line 290 of file HumanoidLocalization.cpp.
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::isAboveMotionThreshold  | 
          ( | 
          const tf::Pose &  | 
          odomTransform | ) | 
           | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::laserCallback  | 
          ( | 
          const sensor_msgs::LaserScanConstPtr &  | 
          msg | ) | 
           | 
         
       
   | 
  
virtual   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::localizeWithMeasurement  | 
          ( | 
          const PointCloud &  | 
          pc_filtered,  | 
         
        
           | 
           | 
          const std::vector< float > &  | 
          ranges,  | 
         
        
           | 
           | 
          double  | 
          max_range  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::lookupPoseHeight  | 
          ( | 
          const ros::Time &  | 
          t,  | 
         
        
           | 
           | 
          double &  | 
          poseHeight  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::nEff  | 
          ( | 
           | ) | 
           const | 
         
       
   | 
  
protected   | 
  
 
nEff - returns the number of effective particles = 1/sum(w_i^2)
Needed for selective resampling (Doucet 98, Arulampalam 01), when nEff < n/2 
Definition at line 1354 of file HumanoidLocalization.cpp.
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::normalizeWeights  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
protected   | 
  
 
Normalizes the weights and transforms from log to normal scale m_minWeight gives the lower bound for weight (normal scale). No adjustment will be done for minWeight = 0 (default) 
Definition at line 1098 of file HumanoidLocalization.cpp.
 
 
      
        
          | void humanoid_localization::HumanoidLocalization::pauseLocalizationCallback  | 
          ( | 
          const std_msgs::BoolConstPtr &  | 
          msg | ) | 
           | 
        
      
 
 
      
        
          | bool humanoid_localization::HumanoidLocalization::pauseLocalizationSrvCallback  | 
          ( | 
          std_srvs::Empty::Request &  | 
          req,  | 
        
        
           | 
           | 
          std_srvs::Empty::Response &  | 
          res  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::pointCloudCallback  | 
          ( | 
          const sensor_msgs::PointCloud2::ConstPtr &  | 
          msg | ) | 
           | 
         
       
   | 
  
virtual   | 
  
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::prepareGeneralPointCloud  | 
          ( | 
          const sensor_msgs::PointCloud2::ConstPtr &  | 
          msg,  | 
         
        
           | 
           | 
          PointCloud &  | 
          pc,  | 
         
        
           | 
           | 
          std::vector< float > &  | 
          ranges  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
protected   | 
  
 
Prepares a PointCloud msg to be integrated into the observations model. Filters near range, floor and subsamples a sparse point cloud (out of m_numSensorBeams points) 
Definition at line 688 of file HumanoidLocalization.cpp.
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::prepareLaserPointCloud  | 
          ( | 
          const sensor_msgs::LaserScanConstPtr &  | 
          laser,  | 
         
        
           | 
           | 
          PointCloud &  | 
          pc,  | 
         
        
           | 
           | 
          std::vector< float > &  | 
          ranges  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
protected   | 
  
 
Prepares a LaserScan msg to be integrated into the observations model. Filters near range measurements out and creates a sparse point cloud (out of m_numSensorBeams points) 
Definition at line 496 of file HumanoidLocalization.cpp.
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::publishPoseEstimate  | 
          ( | 
          const ros::Time &  | 
          time,  | 
         
        
           | 
           | 
          bool  | 
          publish_eval  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
protected   | 
  
 
 
      
        
          | void humanoid_localization::HumanoidLocalization::resample  | 
          ( | 
          unsigned  | 
          numParticles = 0 | ) | 
           | 
        
      
 
Importance sampling from m_particles according to weights, resets weight to 1/numParticles. Uses low variance sampling
- Parameters
 - 
  
    | numParticles | how many particles to sample, 0 (default): keep size of particle distribution  | 
  
   
Definition at line 1169 of file HumanoidLocalization.cpp.
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::reset  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
protected   | 
  
 
 
      
        
          | bool humanoid_localization::HumanoidLocalization::resumeLocalizationSrvCallback  | 
          ( | 
          std_srvs::Empty::Request &  | 
          req,  | 
        
        
           | 
           | 
          std_srvs::Empty::Response &  | 
          res  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::timerCallback  | 
          ( | 
          const ros::TimerEvent &  | 
          e | ) | 
           | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::toLogForm  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | void humanoid_localization::HumanoidLocalization::voxelGridSampling  | 
          ( | 
          const PointCloud &  | 
          pc,  | 
         
        
           | 
           | 
          pcl::PointCloud< int > &  | 
          sampledIndices,  | 
         
        
           | 
           | 
          double  | 
          searchRadius  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | std::string humanoid_localization::HumanoidLocalization::m_baseFootprintId | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | std::string humanoid_localization::HumanoidLocalization::m_baseFrameId | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_bestParticleAsMean | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | int humanoid_localization::HumanoidLocalization::m_bestParticleIdx | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | ros::Publisher humanoid_localization::HumanoidLocalization::m_bestPosePub | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_constrainMotionRP | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_constrainMotionZ | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | ros::Publisher humanoid_localization::HumanoidLocalization::m_filteredPointCloudPub | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_filterMaxRange | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_filterMinRange | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | std::string humanoid_localization::HumanoidLocalization::m_globalFrameId | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_groundFilterAngle | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_groundFilterDistance | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_groundFilterPlaneDistance | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_groundFilterPointCloud | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_headPitchRotationLastScan | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_headYawRotationLastScan | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_initFromTruepose | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_initGlobal | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_initialized | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | Vector6d humanoid_localization::HumanoidLocalization::m_initNoiseStd | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | Vector6d humanoid_localization::HumanoidLocalization::m_initPose | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | tf::MessageFilter<geometry_msgs::PoseWithCovarianceStamped>* humanoid_localization::HumanoidLocalization::m_initPoseFilter | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_initPoseRealZRP | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | tf::MessageFilter<sensor_msgs::LaserScan>* humanoid_localization::HumanoidLocalization::m_laserFilter | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | boost::circular_buffer<sensor_msgs::Imu> humanoid_localization::HumanoidLocalization::m_lastIMUMsgBuffer | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | ros::Time humanoid_localization::HumanoidLocalization::m_lastLaserTime | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | tf::Pose humanoid_localization::HumanoidLocalization::m_lastLocalizedPose | 
         
       
   | 
  
protected   | 
  
 
sensor data last integrated at this odom pose, to check if moved enough since then 
Definition at line 284 of file HumanoidLocalization.h.
 
 
  
  
      
        
          | ros::Time humanoid_localization::HumanoidLocalization::m_lastPointCloudTime | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_minParticleWeight | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_nEffFactor | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | int humanoid_localization::HumanoidLocalization::m_numParticles | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_observationThresholdHeadPitchRot | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_observationThresholdHeadYawRot | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_observationThresholdRot | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_observationThresholdTrans | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | std::string humanoid_localization::HumanoidLocalization::m_odomFrameId | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | tf::Pose humanoid_localization::HumanoidLocalization::m_odomPose | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | Particles humanoid_localization::HumanoidLocalization::m_particles | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_paused | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | ros::Subscriber humanoid_localization::HumanoidLocalization::m_pauseIntegrationSub | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | tf::MessageFilter<sensor_msgs::PointCloud2>* humanoid_localization::HumanoidLocalization::m_pointCloudFilter | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | geometry_msgs::PoseArray humanoid_localization::HumanoidLocalization::m_poseArray | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | ros::Publisher humanoid_localization::HumanoidLocalization::m_poseArrayPub | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | ros::Publisher humanoid_localization::HumanoidLocalization::m_poseEvalPub | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | ros::Publisher humanoid_localization::HumanoidLocalization::m_poseOdomPub | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | ros::Publisher humanoid_localization::HumanoidLocalization::m_poseTruePub | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_receivedSensorData | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | EngineT humanoid_localization::HumanoidLocalization::m_rngEngine | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_sensorSampleDist | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_sensorSampleDistGroundFactor | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_syncedTruepose | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | std::string humanoid_localization::HumanoidLocalization::m_targetFrameId | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_temporalSamplingRange | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | ros::Timer humanoid_localization::HumanoidLocalization::m_timer | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_timerPeriod | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | double humanoid_localization::HumanoidLocalization::m_transformTolerance | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_useIMU | 
         
       
   | 
  
protected   | 
  
 
True = use IMU for initialization and observation models, false = use orientation from odometry. 
Definition at line 292 of file HumanoidLocalization.h.
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_useRaycasting | 
         
       
   | 
  
protected   | 
  
 
 
  
  
      
        
          | bool humanoid_localization::HumanoidLocalization::m_useTimer | 
         
       
   | 
  
protected   | 
  
 
 
The documentation for this class was generated from the following files: