Comments (3)
Humm, I may know what is going on. The out of bound error may happen here:
rtabmap/corelib/src/Rtabmap.cpp
Line 3542 in 33b875e
Hypotheses:
- The map has been created with landmarks and
Optimizer/LandmarksIgnored=false
, so the optimized graph will contain landmark poses. - In localization mode, after setting
Optimizer/LandmarksIgnored=true
, the landmark links are somewhat still used but internal graph optimization is ignoring them, so after local graph optimization the landmarks are ignored andoptPoses
won't contain landmark ids anymore.
Possible solution could be to add && !_graphOptimizer->landmarksIgnored()
to this if
:
rtabmap/corelib/src/Rtabmap.cpp
Line 3134 in 33b875e
I'll try to reproduce in simulation and test if the above could fix it.
from rtabmap.
If I use GTSAM then this is the error
[ INFO] (2024-02-29 18:09:59.549) Rtabmap.cpp:2992::process() Landmark 400 observed again! Seen the first time by node 112. [FATAL] (2024-02-29 18:09:59.549) OptimizerGTSAM.cpp:144::optimize() Condition (uContains(poses, rootId)) not met! terminate called after throwing an instance of 'UException' what(): [FATAL] (2024-02-29 18:09:59.549) OptimizerGTSAM.cpp:144::optimize() Condition (uContains(poses, rootId)) not met!
from rtabmap.
I found out that the std map out of range happened in this for loop
Transform newOptPoseInv = optPoses.at(signature->id()).inverse();
for(std::multimap<int, Link>::iterator iter=localizationLinks.begin(); iter!=localizationLinks.end(); ++iter)
{
if(!_localizationSmoothing)
{
// Add original link without optimization
UDEBUG("Adding new odom cache constraint %d->%d (%s)",
iter->second.from(), iter->second.to(), iter->second.transform().prettyPrint().c_str());
}
else
{
// Adjust with optimized poses, this will smooth the localization
Transform newT = newOptPoseInv * optPoses.at(iter->first);
UDEBUG("Adjusted localization link %d->%d after optimization", iter->second.from(), iter->second.to());
UDEBUG("from %s", iter->second.transform().prettyPrint().c_str());
UDEBUG(" to %s", newT.prettyPrint().c_str());
iter->second.setTransform(newT);
// Update link in the referred signatures
if(iter->first > 0)
_memory->updateLink(iter->second, false);
}
_odomCacheConstraints.insert(std::make_pair(signature->id(), iter->second));
}
from rtabmap.
Related Issues (20)
- RGBD and 2d lidar fusion HOT 1
- Memory::createSignature() Decimated data may not be valid if features are not re-extracted and Feature2D's grid cols/rows are set HOT 1
- Unable to launch GUI on Raspberry Pi 5 HOT 4
- We received odometry message, but we cannot get the corresponding TF world->camera_depth_optical_frame at data stamp 0.449000s (odom msg stamp is 0.481000s). Make sure TF of odometry is also published to get more accurate pose estimation. This warning is only printed once. HOT 2
- yaml-cpp::yaml-cpp target missing when building with libpointmatcher (ROS2 Jazzy)
- ROS2 Jazzy release
- Graph Reduction: visual words not referenced by any nodes in WM or LTM are still saved to database
- Coordinate Frame for iPad Pro HOT 1
- DbViewer: Crash when PyMatcher (SuperGlue) is initializing HOT 1
- What represents pose in signature and where are global poses are stored? HOT 4
- VelodyneLaserScan: PointCloud2 missing one or more required fields! (x,y,ring) after run rtabmap with localization HOT 1
- localization delay time too long when moving. how to increase the publish frequency. please help me !!!! HOT 11
- iOS: Memory usage HOT 3
- it is possible to increase the frequency of map -> icp_odom/odom to 200 or more!!! or increase the frequency of localization. i can't do path follow on the correct path. HOT 2
- what is the best mono-vio in rtabmap for indoor environment recently? HOT 2
- Rtabmap on Android devices HOT 2
- Build error eigen Plugins
- GTSAM’s Dogleg optimizer does not correct loop closing errors.
- [Feature-Request] VDBFusion Integration
- Export 3D clouds as obj crash
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rtabmap.