mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 01:20:25 +08:00
Fixed all -Wtype-limits warnings
This commit is contained in:
@@ -219,7 +219,7 @@ private:
|
||||
bool hasColor_;
|
||||
float rangeMax_;
|
||||
bool rayTracing_;
|
||||
unsigned int emptyFloodFillDepth_;
|
||||
unsigned int emptyFloodFillDepth_;
|
||||
};
|
||||
|
||||
} /* namespace rtabmap */
|
||||
|
||||
@@ -4753,7 +4753,7 @@ void Rtabmap::setMemoryThreshold(int maxMemoryAllowed)
|
||||
{
|
||||
//must be positive, 0 mean inf memory allowed (no memory limit)
|
||||
_maxMemoryAllowed = maxMemoryAllowed;
|
||||
if(_maxMemoryAllowed < 0)
|
||||
if(maxMemoryAllowed < 0)
|
||||
{
|
||||
ULOGGER_WARN("maxMemoryAllowed < 0, then setting it to 0 (inf).");
|
||||
_maxMemoryAllowed = 0;
|
||||
|
||||
@@ -66,7 +66,7 @@ void OccupancyGrid::setMap(const cv::Mat & map, float xMin, float yMin, float ce
|
||||
{
|
||||
for(int j=0; j<map_.cols; ++j)
|
||||
{
|
||||
const char value = map_.at<char>(i,j);
|
||||
const char value = map_.at<signed char>(i,j);
|
||||
float * info = mapInfo_.ptr<float>(i,j);
|
||||
if(value == 0)
|
||||
{
|
||||
@@ -116,15 +116,15 @@ cv::Mat OccupancyGrid::getMap(float & xMin, float & yMin) const
|
||||
const float * info = mapInfo_.ptr<float>(i, j);
|
||||
if(info[3] == 0.0f)
|
||||
{
|
||||
map.at<char>(i, j) = -1; // unknown
|
||||
map.at<signed char>(i, j) = -1; // unknown
|
||||
}
|
||||
else if(info[3] >= occThr)
|
||||
{
|
||||
map.at<char>(i, j) = 100; // unknown
|
||||
map.at<signed char>(i, j) = 100; // unknown
|
||||
}
|
||||
else
|
||||
{
|
||||
map.at<char>(i, j) = 0; // empty
|
||||
map.at<signed char>(i, j) = 0; // empty
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -155,11 +155,11 @@ cv::Mat OccupancyGrid::getProbMap(float & xMin, float & yMin) const
|
||||
const float * info = mapInfo_.ptr<float>(i, j);
|
||||
if(info[3] == 0.0f)
|
||||
{
|
||||
map.at<char>(i, j) = -1; // unknown
|
||||
map.at<signed char>(i, j) = -1; // unknown
|
||||
}
|
||||
else
|
||||
{
|
||||
map.at<char>(i, j) = char(probability(info[3])*100.0f); // empty
|
||||
map.at<signed char>(i, j) = char(probability(info[3])*100.0f); // empty
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -447,7 +447,7 @@ void OccupancyGrid::assemble(const std::list<std::pair<int, Transform> > & newPo
|
||||
UASSERT_MSG(pt.y >=0 && pt.y < map.rows && pt.x >= 0 && pt.x < map.cols,
|
||||
uFormat("%d: pt=(%d,%d) map=%dx%d rawPt=(%f,%f) xMin=%f yMin=%f channels=%dvs%d",
|
||||
kter->first, pt.x, pt.y, map.cols, map.rows, ptf[0], ptf[1], xMin, yMin, iter->second.channels(), mapInfo.channels()-1).c_str());
|
||||
char & value = map.at<char>(pt.y, pt.x);
|
||||
signed char & value = map.at<signed char>(pt.y, pt.x);
|
||||
if(value != -2)
|
||||
{
|
||||
float * info = mapInfo.ptr<float>(pt.y, pt.x);
|
||||
@@ -523,7 +523,7 @@ void OccupancyGrid::assemble(const std::list<std::pair<int, Transform> > & newPo
|
||||
for(int j=ptBegin.y; j<ptEnd.y; ++j)
|
||||
{
|
||||
UASSERT(j < map.rows && i < map.cols);
|
||||
char & value = map.at<char>(j, i);
|
||||
signed char & value = map.at<signed char>(j, i);
|
||||
float * info = mapInfo.ptr<float>(j, i);
|
||||
int nodeId = (int)info[0];
|
||||
if(value != -1)
|
||||
@@ -573,7 +573,7 @@ void OccupancyGrid::assemble(const std::list<std::pair<int, Transform> > & newPo
|
||||
UASSERT_MSG(pt.y>=0 && pt.y < map.rows && pt.x>=0 && pt.x < map.cols,
|
||||
uFormat("%d: pt=(%d,%d) map=%dx%d rawPt=(%f,%f) xMin=%f yMin=%f channels=%dvs%d",
|
||||
kter->first, pt.x, pt.y, map.cols, map.rows, ptf[0], ptf[1], xMin, yMin, jter->second.channels(), mapInfo.channels()-1).c_str());
|
||||
char & value = map.at<char>(pt.y, pt.x);
|
||||
signed char & value = map.at<signed char>(pt.y, pt.x);
|
||||
if(value != -2)
|
||||
{
|
||||
float * info = mapInfo.ptr<float>(pt.y, pt.x);
|
||||
@@ -638,7 +638,7 @@ void OccupancyGrid::assemble(const std::list<std::pair<int, Transform> > & newPo
|
||||
{
|
||||
for(int j=1; j<map.cols-1; ++j)
|
||||
{
|
||||
char & value = map.at<char>(i, j);
|
||||
signed char & value = map.at<signed char>(i, j);
|
||||
if(value == -2)
|
||||
{
|
||||
value = 0;
|
||||
|
||||
@@ -320,7 +320,7 @@ OctoMap::OctoMap(const LocalGridCache * cache, const ParametersMap & parameters)
|
||||
Parameters::parse(parameters, Parameters::kGridRayTracing(), rayTracing_);
|
||||
|
||||
Parameters::parse(parameters, Parameters::kGridGlobalFloodFillDepth(), emptyFloodFillDepth_);
|
||||
UASSERT(emptyFloodFillDepth_>=0 && emptyFloodFillDepth_<=16);
|
||||
UASSERT(emptyFloodFillDepth_<=16);
|
||||
|
||||
UDEBUG("rangeMax_ =%f", rangeMax_);
|
||||
UDEBUG("rayTracing_ =%s", rayTracing_?"true":"false");
|
||||
|
||||
@@ -359,7 +359,7 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
cv::Point2i pt((ptf[0]-xMin)/cellSize, (ptf[1]-yMin)/cellSize);
|
||||
UASSERT_MSG(pt.y>0 && pt.y<map.rows && pt.x>0 && pt.x<map.cols,
|
||||
uFormat("id=%d, map min=(%f, %f) max=(%f,%f) map=%dx%d pt=(%d,%d)", kter->first, xMin, yMin, xMax, yMax, map.cols, map.rows, pt.x, pt.y).c_str());
|
||||
char & value = map.at<char>(pt.y, pt.x);
|
||||
signed char & value = map.at<signed char>(pt.y, pt.x);
|
||||
if(value != -2)
|
||||
{
|
||||
value = 0; // free space
|
||||
@@ -385,7 +385,7 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
{
|
||||
for(int j=ptBegin.y; j<ptEnd.y; ++j)
|
||||
{
|
||||
map.at<char>(j, i) = -2; // free space (footprint)
|
||||
map.at<signed char>(j, i) = -2; // free space (footprint)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -398,7 +398,7 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
cv::Point2i pt((ptf[0]-xMin)/cellSize, (ptf[1]-yMin)/cellSize);
|
||||
UASSERT_MSG(pt.y>0 && pt.y<map.rows && pt.x>0 && pt.x<map.cols,
|
||||
uFormat("id=%d: map min=(%f, %f) max=(%f,%f) map=%dx%d pt=(%d,%d)", kter->first, xMin, yMin, xMax, yMax, map.cols, map.rows, pt.x, pt.y).c_str());
|
||||
char & value = map.at<char>(pt.y, pt.x);
|
||||
signed char & value = map.at<signed char>(pt.y, pt.x);
|
||||
if(value != -2)
|
||||
{
|
||||
value = 100; // obstacles
|
||||
@@ -416,44 +416,44 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
{
|
||||
for(int j=0; j<map.cols; ++j)
|
||||
{
|
||||
if(map.at<char>(i, j) == -2)
|
||||
if(map.at<signed char>(i, j) == -2)
|
||||
{
|
||||
updatedMap.at<char>(i, j) = 0;
|
||||
updatedMap.at<signed char>(i, j) = 0;
|
||||
}
|
||||
|
||||
if(i >=2 && i<map.rows-2 && j>=2 && j<map.cols-2)
|
||||
{
|
||||
if(map.at<char>(i, j) == -1 &&
|
||||
map.at<char>(i+1, j) != -1 &&
|
||||
map.at<char>(i-1, j) != -1 &&
|
||||
map.at<char>(i, j+1) != -1 &&
|
||||
map.at<char>(i, j-1) != -1)
|
||||
if(map.at<signed char>(i, j) == -1 &&
|
||||
map.at<signed char>(i+1, j) != -1 &&
|
||||
map.at<signed char>(i-1, j) != -1 &&
|
||||
map.at<signed char>(i, j+1) != -1 &&
|
||||
map.at<signed char>(i, j-1) != -1)
|
||||
{
|
||||
updatedMap.at<char>(i, j) = 0;
|
||||
updatedMap.at<signed char>(i, j) = 0;
|
||||
}
|
||||
else if(map.at<char>(i, j) == 100)
|
||||
else if(map.at<signed char>(i, j) == 100)
|
||||
{
|
||||
// obstacle/empty/unknown -> remove empty
|
||||
// unknown/empty/obstacle -> remove empty
|
||||
if((map.at<char>(i-1, j) == 0 || map.at<char>(i-1, j) == -2) &&
|
||||
map.at<char>(i-2, j) == -1)
|
||||
if((map.at<signed char>(i-1, j) == 0 || map.at<signed char>(i-1, j) == -2) &&
|
||||
map.at<signed char>(i-2, j) == -1)
|
||||
{
|
||||
updatedMap.at<char>(i-1, j) = -1;
|
||||
updatedMap.at<signed char>(i-1, j) = -1;
|
||||
}
|
||||
else if((map.at<char>(i+1, j) == 0 || map.at<char>(i+1, j) == -2) &&
|
||||
map.at<char>(i+2, j) == -1)
|
||||
else if((map.at<signed char>(i+1, j) == 0 || map.at<signed char>(i+1, j) == -2) &&
|
||||
map.at<signed char>(i+2, j) == -1)
|
||||
{
|
||||
updatedMap.at<char>(i+1, j) = -1;
|
||||
updatedMap.at<signed char>(i+1, j) = -1;
|
||||
}
|
||||
if((map.at<char>(i, j-1) == 0 || map.at<char>(i, j-1) == -2) &&
|
||||
map.at<char>(i, j-2) == -1)
|
||||
if((map.at<signed char>(i, j-1) == 0 || map.at<signed char>(i, j-1) == -2) &&
|
||||
map.at<signed char>(i, j-2) == -1)
|
||||
{
|
||||
updatedMap.at<char>(i, j-1) = -1;
|
||||
updatedMap.at<signed char>(i, j-1) = -1;
|
||||
}
|
||||
else if((map.at<char>(i, j+1) == 0 || map.at<char>(i, j+1) == -2) &&
|
||||
map.at<char>(i, j+2) == -1)
|
||||
else if((map.at<signed char>(i, j+1) == 0 || map.at<signed char>(i, j+1) == -2) &&
|
||||
map.at<signed char>(i, j+2) == -1)
|
||||
{
|
||||
updatedMap.at<char>(i, j+1) = -1;
|
||||
updatedMap.at<signed char>(i, j+1) = -1;
|
||||
}
|
||||
|
||||
if(erode)
|
||||
@@ -461,18 +461,18 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
obstacleIndices.push_back(std::make_pair(i, j));
|
||||
}
|
||||
}
|
||||
else if(map.at<char>(i, j) == 0)
|
||||
else if(map.at<signed char>(i, j) == 0)
|
||||
{
|
||||
// obstacle/empty/obstacle -> remove empty
|
||||
if(map.at<char>(i-1, j) == 100 &&
|
||||
map.at<char>(i+1, j) == 100)
|
||||
if(map.at<signed char>(i-1, j) == 100 &&
|
||||
map.at<signed char>(i+1, j) == 100)
|
||||
{
|
||||
updatedMap.at<char>(i, j) = -1;
|
||||
updatedMap.at<signed char>(i, j) = -1;
|
||||
}
|
||||
else if(map.at<char>(i, j-1) == 100 &&
|
||||
map.at<char>(i, j+1) == 100)
|
||||
else if(map.at<signed char>(i, j-1) == 100 &&
|
||||
map.at<signed char>(i, j+1) == 100)
|
||||
{
|
||||
updatedMap.at<char>(i, j) = -1;
|
||||
updatedMap.at<signed char>(i, j) = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -490,16 +490,16 @@ cv::Mat create2DMapFromOccupancyLocalMaps(
|
||||
{
|
||||
int i = iter->first;
|
||||
int j = iter->second;
|
||||
int touchEmpty = (map.at<char>(i+1, j) == 0?1:0) +
|
||||
(map.at<char>(i-1, j) == 0?1:0) +
|
||||
(map.at<char>(i, j+1) == 0?1:0) +
|
||||
(map.at<char>(i, j-1) == 0?1:0);
|
||||
if(touchEmpty>=3 && map.at<char>(i+1, j) != -1 &&
|
||||
map.at<char>(i-1, j) != -1 &&
|
||||
map.at<char>(i, j+1) != -1 &&
|
||||
map.at<char>(i, j-1) != -1)
|
||||
int touchEmpty = (map.at<signed char>(i+1, j) == 0?1:0) +
|
||||
(map.at<signed char>(i-1, j) == 0?1:0) +
|
||||
(map.at<signed char>(i, j+1) == 0?1:0) +
|
||||
(map.at<signed char>(i, j-1) == 0?1:0);
|
||||
if(touchEmpty>=3 && map.at<signed char>(i+1, j) != -1 &&
|
||||
map.at<signed char>(i-1, j) != -1 &&
|
||||
map.at<signed char>(i, j+1) != -1 &&
|
||||
map.at<signed char>(i, j-1) != -1)
|
||||
{
|
||||
erodedMap.at<char>(i, j) = 0; // empty
|
||||
erodedMap.at<signed char>(i, j) = 0; // empty
|
||||
}
|
||||
}
|
||||
map = erodedMap;
|
||||
@@ -677,7 +677,7 @@ cv::Mat create2DMap(const std::map<int, Transform> & poses,
|
||||
cv::Point2i end((ptr[0]-xMin)/cellSize, (ptr[1]-yMin)/cellSize);
|
||||
if(end!=start)
|
||||
{
|
||||
map.at<char>(end.y, end.x) = 100; // obstacle
|
||||
map.at<signed char>(end.y, end.x) = 100; // obstacle
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -703,7 +703,7 @@ cv::Mat create2DMap(const std::map<int, Transform> & poses,
|
||||
cv::Point2i end((pt[0]-xMin)/cellSize, (pt[1]-yMin)/cellSize);
|
||||
if(end!=start)
|
||||
{
|
||||
if(localScans.size() > 1 || map.at<char>(end.y, end.x) != 0)
|
||||
if(localScans.size() > 1 || map.at<signed char>(end.y, end.x) != 0)
|
||||
{
|
||||
rayTrace(start, end, map, true); // trace free space
|
||||
}
|
||||
@@ -730,12 +730,12 @@ cv::Mat create2DMap(const std::map<int, Transform> & poses,
|
||||
cv::Point2i end((pt[0]-xMin)/cellSize, (pt[1]-yMin)/cellSize);
|
||||
if(end!=start)
|
||||
{
|
||||
if(localScans.size() > 1 || map.at<char>(end.y, end.x) != 0)
|
||||
if(localScans.size() > 1 || map.at<signed char>(end.y, end.x) != 0)
|
||||
{
|
||||
rayTrace(start, end, map, true); // trace free space
|
||||
if(map.at<char>(end.y, end.x) == -1)
|
||||
if(map.at<signed char>(end.y, end.x) == -1)
|
||||
{
|
||||
map.at<char>(end.y, end.x) = 0; // empty
|
||||
map.at<signed char>(end.y, end.x) = 0; // empty
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -879,14 +879,14 @@ void rayTrace(const cv::Point2i & start, const cv::Point2i & end, cv::Mat & grid
|
||||
|
||||
for(int y = lowerbound; y<=(int)upperbound; ++y)
|
||||
{
|
||||
char * v;
|
||||
signed char * v;
|
||||
if(swapped)
|
||||
{
|
||||
v = &grid.at<char>(x, y);
|
||||
v = &grid.at<signed char>(x, y);
|
||||
}
|
||||
else
|
||||
{
|
||||
v = &grid.at<char>(y, x);
|
||||
v = &grid.at<signed char>(y, x);
|
||||
}
|
||||
if(*v == 100 && stopOnObstacle)
|
||||
{
|
||||
@@ -909,7 +909,7 @@ cv::Mat convertMap2Image8U(const cv::Mat & map8S, bool pgmFormat)
|
||||
{
|
||||
for (int j = 0; j < map8S.cols; ++j)
|
||||
{
|
||||
char v = pgmFormat?map8S.at<char>((map8S.rows-1)-i, j):map8S.at<char>(i, j);
|
||||
signed char v = pgmFormat?map8S.at<signed char>((map8S.rows-1)-i, j):map8S.at<signed char>(i, j);
|
||||
unsigned char gray;
|
||||
if(v == 0)
|
||||
{
|
||||
@@ -950,7 +950,7 @@ cv::Mat convertImage8U2Map(const cv::Mat & map8U, bool pgmFormat)
|
||||
{
|
||||
for (int j = 0; j < map8U.cols; ++j)
|
||||
{
|
||||
unsigned char v = pgmFormat?map8U.at<char>((map8U.rows-1)-i, j):map8U.at<char>(i, j);
|
||||
unsigned char v = pgmFormat?map8U.at<signed char>((map8U.rows-1)-i, j):map8U.at<signed char>(i, j);
|
||||
char occupancy;
|
||||
if(pgmFormat)
|
||||
{
|
||||
@@ -987,7 +987,7 @@ cv::Mat convertImage8U2Map(const cv::Mat & map8U, bool pgmFormat)
|
||||
}
|
||||
}
|
||||
|
||||
map8S.at<char>(i, j) = occupancy;
|
||||
map8S.at<signed char>(i, j) = occupancy;
|
||||
}
|
||||
}
|
||||
return map8S;
|
||||
@@ -1001,20 +1001,20 @@ cv::Mat erodeMap(const cv::Mat & map)
|
||||
{
|
||||
for(int j=0; j<map.cols; ++j)
|
||||
{
|
||||
if(map.at<char>(i, j) == 100)
|
||||
if(map.at<signed char>(i, j) == 100)
|
||||
{
|
||||
// remove obstacles which touch at least 3 empty cells but not unknown cells
|
||||
int touchEmpty = (map.at<char>(i+1, j) == 0?1:0) +
|
||||
(map.at<char>(i-1, j) == 0?1:0) +
|
||||
(map.at<char>(i, j+1) == 0?1:0) +
|
||||
(map.at<char>(i, j-1) == 0?1:0);
|
||||
int touchEmpty = (map.at<signed char>(i+1, j) == 0?1:0) +
|
||||
(map.at<signed char>(i-1, j) == 0?1:0) +
|
||||
(map.at<signed char>(i, j+1) == 0?1:0) +
|
||||
(map.at<signed char>(i, j-1) == 0?1:0);
|
||||
|
||||
if(touchEmpty>=3 && map.at<char>(i+1, j) != -1 &&
|
||||
map.at<char>(i-1, j) != -1 &&
|
||||
map.at<char>(i, j+1) != -1 &&
|
||||
map.at<char>(i, j-1) != -1)
|
||||
if(touchEmpty>=3 && map.at<signed char>(i+1, j) != -1 &&
|
||||
map.at<signed char>(i-1, j) != -1 &&
|
||||
map.at<signed char>(i, j+1) != -1 &&
|
||||
map.at<signed char>(i, j-1) != -1)
|
||||
{
|
||||
erodedMap.at<char>(i, j) = 0; // empty
|
||||
erodedMap.at<signed char>(i, j) = 0; // empty
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user