17 #include <gtest/gtest.h> 21 template <
typename RNAVCLASS>
40 cerr <<
"**WARNING* Skipping tests since file cannot be found: '" << sFil <<
"'\n";
45 cfg.
write(
"CAbstractPTGBasedReactive",
"holonomic_method", sHoloMethod);
50 grid.
setSize(world_topleft.
x, world_rightbottom.
x, world_rightbottom.
y, world_topleft.
y, 0.10f );
55 const int xi0 = grid.
x2idx(block_obstacle_topleft.x), xi1 = grid.
x2idx(block_obstacle_rightbottom.x);
56 const int yi0 = grid.
y2idx(block_obstacle_rightbottom.y), yi1 = grid.
y2idx(block_obstacle_topleft.y);
58 for (
int xi = xi0; xi < xi1; xi++) {
59 for (
int yi = yi0; yi < yi1; yi++) {
73 this->setMinLoggingLevel(mrpt::utils::LVL_ERROR);
88 getCurrentPoseAndSpeeds(curPose, curVel, pose_tim, odomPose, pose_frame_id);
105 MyDummyRobotIF robot2nav_if(robot_simul, grid);
107 RNAVCLASS rnav(robot2nav_if,
false );
110 rnav.enableTimeLog(
false);
112 rnav.setMinLoggingLevel(mrpt::utils::LVL_DEBUG);
114 rnav.setMinLoggingLevel(mrpt::utils::LVL_ERROR);
119 rnav.setLogFileDirectory(sTmpDir);
120 rnav.enableLogFile(
true);
124 rnav.loadConfigFile(cfg);
136 unsigned int MAX_ITERS = 200;
137 for (
unsigned int i = 0; i < MAX_ITERS; i++)
141 rnav.navigationStep();
143 EXPECT_TRUE(rnav.getCurrentState() != CAbstractNavigator::NAV_ERROR);
144 if (rnav.getCurrentState() == CAbstractNavigator::IDLE)
151 EXPECT_TRUE(rnav.getCurrentState() == CAbstractNavigator::IDLE);
void clear()
Erase all the contents of the map.
uint64_t TTimeStamp
A system independent time type, it holds the the number of 100-nanosecond intervals since January 1...
const TPoint2D with_obs_bottomright(30, -10)
void setCell(int x, int y, float value)
Change the contents [0,1] of a cell, given its index.
#define MRPT_OVERRIDE
C++11 "override" for virtuals:
void simulateOneTimeStep(const double dt)
Runs the simulator during "dt" seconds.
const TPoint2D with_obs_topleft(-10, 10)
This class allows loading and storing values and vectors of different types from ".ini" files easily.
void discardSavingChanges()
Discard saving (current) changes to physical file upon destruction.
float targetAllowedDistance
(Default=0.5 meters) Allowed distance to target in order to end the navigation.
void run_rnav_test(const std::string &sFilename, const std::string &sHoloMethod, const TPoint2D &nav_target, const TPoint2D &world_topleft, const TPoint2D &world_rightbottom, const TPoint2D &block_obstacle_topleft=TPoint2D(0, 0), const TPoint2D &block_obstacle_rightbottom=TPoint2D(0, 0))
bool BASE_IMPEXP fileExists(const std::string &fileName)
Test if a given file (or directory) exists.
mrpt::system::TTimeStamp now()
A shortcut for system::getCurrentTime.
void laserScanSimulator(mrpt::obs::CObservation2DRangeScan &inout_Scan, const mrpt::poses::CPose2D &robotPose, float threshold=0.6f, size_t N=361, float noiseStd=0, unsigned int decimation=1, float angleNoiseStd=mrpt::utils::DEG2RAD(0)) const
Simulates a laser range scan into the current grid map.
A cloud of points in 2D or 3D, which can be built from a sequence of laser scans. ...
void clear()
Clear the contents of this container.
const mrpt::math::TPose2D & getCurrentGTPose() const
Returns the instantaneous, ground truth pose in world coordinates.
const TPoint2D no_obs_trg(2.0, 0.4)
std::string BASE_IMPEXP find_mrpt_shared_dir()
Finds the "[MRPT]/share/mrpt/" directory, if available in the system.
float maxRange
The maximum range allowed by the device, in meters (e.g. 80m, 50m,...)
2D twist: 2D velocity vector (vx,vy) + planar angular velocity (omega)
The struct for configuring navigation requests.
std::string BASE_IMPEXP getTempFileName()
Returns the name of a proposed temporary file name.
TEST(CReactiveNavigationSystem, no_obstacle_nav_VFF)
const TPoint2D no_obs_topleft(-10, 10)
CRobot2NavInterface implemented for a simulator object based on mrpt::kinematics::CVehicleSimul_DiffD...
Simulates the kinematics of a differential-driven planar mobile robot/vehicle, including odometry err...
const TPoint2D with_obs_trg(9.0, 4.0)
double DEG2RAD(const double x)
Degrees to radians.
GLsizei const GLchar ** string
mrpt::math::TPose2D target_coords
Coordinates of desired target location. Heading may be ignored by some reactive implementations.
const TPoint2D obs_br(5.0,-2.0)
See base class CAbstractPTGBasedReactive for a description and instructions of use.
A class for storing an occupancy grid map.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
A "CObservation"-derived class that represents a 2D range scan measurement (typically from a laser sc...
virtual void loadFromRangeScan(const mrpt::obs::CObservation2DRangeScan &rangeScan, const mrpt::poses::CPose3D *robotPose=NULL) MRPT_OVERRIDE
See CPointsMap::loadFromRangeScan()
const TPoint2D no_obs_bottomright(10, -10)
void write(const std::string §ion, const std::string &name, const data_t &value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle...
float aperture
The "aperture" or field-of-view of the range finder, in radians (typically M_PI = 180 degrees)...
A versatile "profiler" that logs the time spent within each pair of calls to enter(X)-leave(X), among other stats.
TargetInfo target
Navigation target.
void fill(float default_value=0.5f)
Fills all the cells with a default value.
TInsertionOptions insertionOptions
The options used when inserting observations in the map.
const TPoint2D obs_tl(4.0, 2.0)
See base class CAbstractPTGBasedReactive for a description and instructions of use.
void setSize(float x_min, float x_max, float y_min, float y_max, float resolution, float default_value=0.5f)
Change the size of gridmap, erasing all its previous contents.
int x2idx(float x) const
Transform a coordinate value into a cell index.
mrpt::poses::CPose3D sensorPose
The 6D pose of the sensor on the robot at the moment of starting the scan.
std::string BASE_IMPEXP extractFileDirectory(const std::string &filePath)
Extract the whole path (the directory) of a filename from a complete path plus name plus extension...
float minDistBetweenLaserPoints
The minimum distance between points (in 3D): If two points are too close, one of them is not inserted...