9 #ifndef CAbstractPTGBasedReactive_H
10 #define CAbstractPTGBasedReactive_H
109 virtual std::unique_ptr<TNavigationParams>
clone()
const override
111 return std::unique_ptr<TNavigationParams>(
345 const size_t ptg_idx, std::vector<double>& out_TPObstacles,
348 const bool eval_clearance) = 0;
371 const std::vector<double>& in_TPObstacles,
373 const std::vector<mrpt::math::TPose2D>& WS_Targets,
374 const std::vector<PTGTarget>& TP_Targets,
376 const bool this_is_PTG_continuation,
378 const unsigned int ptg_idx4weights,
388 const std::vector<mrpt::math::TPose2D>& relTargets,
int nSelectedPTG,
390 const bool best_is_NOP_cmdvel,
393 const double executionTimeValue,
const double tim_changeSpeed,
427 const std::vector<mrpt::math::TPose2D>& relTargets,
#define MRPT_MAKE_ALIGNED_OPERATOR_NEW
Put this macro inside any class with members that require {16,32,64}-byte memory alignment (e....
This class allows loading and storing values and vectors of different types from a configuration text...
This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
std::shared_ptr< CVehicleVelCmd > Ptr
std::shared_ptr< CPointCloudFilterBase > Ptr
A base class for holonomic reactive navigation methods.
Base class for reactive navigator systems based on TP-Space, with an arbitrary holonomic reactive met...
bool m_enableKeepLogRecords
See enableKeepLogRecords.
void setLogFileDirectory(const std::string &sDir)
Changes the prefix for new log files.
mrpt::math::LowPassFilter_IIR1 timoff_obstacles_avr
void STEP8_GenerateLogRecord(CLogFileRecord &newLogRec, const std::vector< mrpt::math::TPose2D > &relTargets, int nSelectedPTG, const mrpt::kinematics::CVehicleVelCmd::Ptr &new_vel_cmd, int nPTGs, const bool best_is_NOP_cmdvel, const math::TPose2D &rel_cur_pose_wrt_last_vel_cmd_NOP, const math::TPose2D &rel_pose_PTG_origin_wrt_sense_NOP, const double executionTimeValue, const double tim_changeSpeed, const mrpt::system::TTimeStamp &tim_start_iteration)
bool m_enableConsoleOutput
Enables / disables the console debug output.
virtual void loggingGetWSObstaclesAndShape(CLogFileRecord &out_log)=0
Generates a pointcloud of obstacles, and the robot shape, to be saved in the logging record for the c...
CLogFileRecord lastLogRecord
The last log.
void deleteHolonomicObjects()
Delete m_holonomicMethod.
void preDestructor()
To be called during children destructors to assure thread-safe destruction, and free of shared object...
virtual void STEP1_InitPTGs()=0
mrpt::nav::CMultiObjectiveMotionOptimizerBase::Ptr m_multiobjopt
mrpt::math::LowPassFilter_IIR1 timoff_curPoseAndSpeed_avr
virtual bool implementSenseObstacles(mrpt::system::TTimeStamp &obs_timestamp)=0
Return false on any fatal error.
virtual ~CAbstractPTGBasedReactive()
bool m_init_done
Whether loadConfigFile() has been called or not.
mrpt::system::TTimeStamp m_infoPerPTG_timestamp
mrpt::system::TTimeStamp m_WS_Obstacles_timestamp
mrpt::system::CTicTac totalExecutionTime
void build_movement_candidate(CParameterizedTrajectoryGenerator *ptg, const size_t indexPTG, const std::vector< mrpt::math::TPose2D > &relTargets, const mrpt::math::TPose2D &rel_pose_PTG_origin_wrt_sense, TInfoPerPTG &ipf, TCandidateMovementPTG &holonomicMovement, CLogFileRecord &newLogRec, const bool this_is_PTG_continuation, mrpt::nav::CAbstractHolonomicReactiveMethod &holoMethod, const mrpt::system::TTimeStamp tim_start_iteration, const TNavigationParams &navp=TNavigationParams(), const mrpt::math::TPose2D &relPoseVelCmd_NOP=mrpt::math::TPose2D(0, 0, 0))
virtual void saveConfigFile(mrpt::config::CConfigFileBase &c) const override
Saves all current options to a config file.
TAbstractPTGNavigatorParams params_abstract_ptg_navigator
mrpt::math::LowPassFilter_IIR1 timoff_sendVelCmd_avr
bool m_closing_navigator
Signal that the destructor has been called, so no more calls are accepted from other threads.
virtual void onStartNewNavigation() override
Called whenever a new navigation has been started.
bool m_PTGsMustBeReInitialized
std::unique_ptr< mrpt::io::CStream > m_logFile
void setHolonomicMethod(const std::string &method, const mrpt::config::CConfigFileBase &cfgBase)
Selects which one from the set of available holonomic methods will be used into transformed TP-Space,...
virtual void performNavigationStep() override
The main method for the navigator.
mrpt::system::CTicTac timerForExecutionPeriod
virtual size_t getPTG_count() const =0
Returns the number of different PTGs that have been setup.
void calc_move_candidate_scores(TCandidateMovementPTG &holonomicMovement, const std::vector< double > &in_TPObstacles, const mrpt::nav::ClearanceDiagram &in_clearance, const std::vector< mrpt::math::TPose2D > &WS_Targets, const std::vector< PTGTarget > &TP_Targets, CLogFileRecord::TInfoPerPTG &log, CLogFileRecord &newLogRec, const bool this_is_PTG_continuation, const mrpt::math::TPose2D &relPoseVelCmd_NOP, const unsigned int ptg_idx4weights, const mrpt::system::TTimeStamp tim_start_iteration, const mrpt::nav::CHolonomicLogFileRecord::Ptr &hlfr)
Scores holonomicMovement.
std::recursive_mutex m_critZoneLastLog
Critical zones.
mrpt::kinematics::CVehicleVelCmd::TVelCmdParams & changeCurrentRobotSpeedLimits()
Changes the current, global (honored for all PTGs) robot speed limits, via returning a reference to a...
mrpt::math::LowPassFilter_IIR1 tim_changeSpeed_avr
CAbstractPTGBasedReactive(CRobot2NavInterface &react_iterf_impl, bool enableConsoleOutput=true, bool enableLogFile=false, const std::string &logFileDirectory=std::string("./reactivenav.logs"))
Constructor.
mrpt::math::LowPassFilter_IIR1 meanExecutionTime
void initialize() override
Must be called for loading collision grids, or the first navigation command may last a long time to b...
bool STEP2_SenseObstacles()
virtual const CParameterizedTrajectoryGenerator * getPTG(size_t i) const =0
Gets the i'th PTG.
mrpt::system::CTicTac executionTime
double m_expr_var_num_paths
mrpt::kinematics::CVehicleVelCmd::Ptr m_last_vel_cmd
Last velocity commands.
std::vector< CAbstractHolonomicReactiveMethod::Ptr > m_holonomicMethod
The holonomic navigation algorithm (one object per PTG, so internal states are maintained)
double getTargetApproachSlowDownDistance() const
Returns this parameter for the first inner holonomic navigator instances [m] (should be the same in a...
const mrpt::system::CTimeLogger & getTimeLogger() const
Gives access to a const-ref to the internal time logger.
mrpt::system::CTicTac tictac
virtual CParameterizedTrajectoryGenerator * getPTG(size_t i)=0
Gets the i'th PTG.
virtual bool impl_waypoint_is_reachable(const mrpt::math::TPoint2D &wp_local_wrt_robot) const override
Implements the way to waypoint is free function in children classes: true must be returned if,...
void getLastLogRecord(CLogFileRecord &o)
Provides a copy of the last log record with information about execution.
void enableTimeLog(bool enable=true)
Enables/disables the detailed time logger (default:disabled upon construction) When enabled,...
double m_expr_var_k_target
std::vector< TInfoPerPTG > m_infoPerPTG
Temporary buffers for working with each PTG during a navigationStep()
virtual void STEP3_WSpaceToTPSpace(const size_t ptg_idx, std::vector< double > &out_TPObstacles, mrpt::nav::ClearanceDiagram &out_clearance, const mrpt::math::TPose2D &rel_pose_PTG_origin_wrt_sense, const bool eval_clearance)=0
Builds TP-Obstacles from Workspace obstacles for the given PTG.
TSentVelCmd m_lastSentVelCmd
std::unique_ptr< TNavigationParams > m_copy_prev_navParams
A copy of last-iteration navparams, used to detect changes.
mrpt::math::LowPassFilter_IIR1 meanExecutionPeriod
Runtime estimation of execution period of the method.
mrpt::system::CTimeLogger m_timelogger
A complete time logger.
void enableKeepLogRecords(bool enable=true)
Enables keeping an internal registry of navigation logs that can be queried with getLastLogRecord()
virtual void loadConfigFile(const mrpt::config::CConfigFileBase &c) override
Loads all params from a file.
mrpt::io::CStream * m_prev_logfile
The current log file stream, or nullptr if not being used.
mrpt::math::LowPassFilter_IIR1 meanTotalExecutionTime
void setTargetApproachSlowDownDistance(const double dist)
Changes this parameter in all inner holonomic navigator instances [m].
const mrpt::kinematics::CVehicleVelCmd::TVelCmdParams & getCurrentRobotSpeedLimits() const
Get the current, global (honored for all PTGs) robot speed limits.
std::string getLogFileDirectory() const
void enableLogFile(bool enable)
Enables/disables saving log files.
virtual double generate_vel_cmd(const TCandidateMovementPTG &in_movement, mrpt::kinematics::CVehicleVelCmd::Ptr &new_vel_cmd)
Return the [0,1] velocity scale of raw PTG cmd_vel.
std::string m_navlogfiles_dir
Default: "./reactivenav.logs".
mrpt::maps::CPointCloudFilterBase::Ptr m_WS_filter
Default: none.
std::shared_ptr< CHolonomicLogFileRecord > Ptr
A class for storing, saving and loading a reactive navigation log record for the CReactiveNavigationS...
std::shared_ptr< CMultiObjectiveMotionOptimizerBase > Ptr
This is the base class for any user-defined PTG.
The pure virtual interface between a real or simulated robot and any CAbstractNavigator-derived class...
This class extends CAbstractNavigator with the capability of following a list of waypoints.
Clearance information for one particular PTG and one set of obstacles.
A high-performance stopwatch, with typical resolution of nanoseconds.
A versatile "profiler" that logs the time spent within each pair of calls to enter(X)-leave(X),...
void enable(bool enabled=true)
GLsizei const GLchar ** string
mrpt::Clock::time_point TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1,...
Parameters that may be used by cmdVel_limits() in any derived classes.
1-order low-pass IIR filter.
Base for all high-level navigation commands.
The struct for configuring navigation requests.
int target_k
The discrete version of target_alpha.
double target_alpha
TP-Target.
bool valid_TP
For each PTG, whether target falls into the PTG domain.
mrpt::math::TPoint2D TP_Target
The Target, in TP-Space (x,y)
mrpt::kinematics::CVehicleVelCmd::TVelCmdParams robot_absolute_speed_limits
Params related to speed limits.
virtual void saveToConfigFile(mrpt::config::CConfigFileBase &c, const std::string &s) const override
This method saves the options to a ".ini"-like file or memory-stored string list.
double secure_distance_start
In normalized distances, the start and end of a ramp function that scales the velocity output from th...
double secure_distance_end
double min_normalized_free_space_for_ptg_continuation
Min normalized dist [0,1] after current pose in a PTG continuation to allow it.
virtual void loadFromConfigFile(const mrpt::config::CConfigFileBase &c, const std::string &s) override
This method load the options from a ".ini"-like file or memory-stored string list.
std::string ptg_cache_files_directory
(Default: ".")
std::string holonomic_method
C++ class name of the holonomic navigation method to run in the transformed TP-Space.
double max_dist_for_timebased_path_prediction
Max dist [meters] to use time-based path prediction for NOP evaluation.
bool enable_obstacle_filtering
bool evaluate_clearance
Default: false.
std::string motion_decider_method
C++ class name of the motion chooser.
double speedfilter_tau
Time constant (in seconds) for the low-pass filter applied to kinematic velocity commands (default=0:...
double max_distance_predicted_actual_path
Max distance [meters] to discard current PTG and issue a new vel cmd (default= 0.05)
TAbstractPTGNavigatorParams()
double ref_distance
Maximum distance up to obstacles will be considered (D_{max} in papers).
std::vector< PTGTarget > targets
std::vector< double > TP_Obstacles
One distance per discretized alpha value, describing the "polar plot" of TP obstacles.
ClearanceDiagram clearance
Clearance for each path.
The struct for configuring navigation requests to CAbstractPTGBasedReactive and derived classes.
virtual std::string getAsText() const override
Gets navigation params as a human-readable format.
virtual std::unique_ptr< TNavigationParams > clone() const override
std::vector< size_t > restrict_PTG_indices
(Default=empty) Optionally, a list of PTG indices can be sent such that the navigator will restrict i...
virtual bool isEqual(const CAbstractNavigator::TNavigationParamsBase &o) const override
int ptg_alpha_index
Path index for selected PTG.
double original_holo_eval
double speed_scale
[0,1] scale of the raw cmd_vel as generated by the PTG
int ptg_index
0-based index of used PTG
TRobotPoseVel poseVel
Robot pose & velocities and timestamp of when it was queried.
double colfreedist_move_k
TP-Obstacles in the move direction at the instant of picking this movement.
CParameterizedTrajectoryGenerator::TNavDynamicState ptg_dynState
mrpt::system::TTimeStamp tim_send_cmd_vel
Timestamp of when the cmd was sent.
The structure used to store all relevant information about each transformation into TP-Space.
Dynamic state that may affect the PTG path parameterization.
The struct for configuring navigation requests to CWaypointsNavigator and derived classes.
Stores a candidate movement in TP-Space-based navigation.