Comments (5)
the odometry correction would not decay to identity, unless odometry was indeed perfect, but the tag detection was wrong... and the more tag detections you have, the more you can correct the tag orientation (which individually are often bad), thus slowly "fix" the initial bad tag orientation error.
from rtabmap.
Thanks @matlabbe, I really appreciate your response and help.
I think I'm starting to understand the issue here - odometry is assuming it starts at the origin (identity transform), which doesn't match the fact that I've set one of my arucos to be the origin (set the prior pose to 0,0,0,0,0,0). Eventually this could cause the decay I mention above, I think.
Is there any ability in rtabmap standalone to set the initial pose of the camera/robot in mapping mode? If I set it to be the correct transform relative to the tag I'm using as my map origin, that should lead to a consistent estimation (assuming everything else is correct), right? From this (
rtabmap/corelib/src/Rtabmap.cpp
Line 852 in a11ea29
Or perhaps I'm misunderstanding, the help text in Marker Detection says:
World prior locations of the markers. The map will be transformed in marker's world frame when a tag is detected.
I'm not understanding what that second sentence means, could you provide any clarification?
from rtabmap.
Odometry will always start at (0,0) in its odometry frame (i.e.: "odom -> base_link" would be Identity on startup). On the mapping side, the "map -> odom" transform will be Identity till a loop closure is detected.
Marker/Priors
parameter can be used to set a "world" coordinate to a tag. To include that prior when detecting a tag, we should set Optimizer/PriorsIgnored=false
. So for:
The map will be transformed in marker's world frame when a tag is detected.
it means that the initial pose of the camera will be Identity until a tag is detected. When the tag is detected, the graph will be transformed in tag's coordinate frame, so that "map->odom" will be updated to make the camera pose (map -> odom -> base_link) appears in tag's frame. For example: If you bringup the camera, move forward 1 meter along x axis (so that odom->base_link is now x=1, y=0), then detect a tag 1 meter away with a prior at (x=10 y=0), the "map -> odom" will be updated to( x=8, y=0), so that the camera pose in the map frame "map->odom->base_link" will be (x=9, y=0).
from rtabmap.
@matlabbe thanks for the clarification - the "map->odom->base_link" transform is what is computed in this example (https://github.com/introlab/rtabmap/wiki/Cplusplus-RGBD-Mapping) by odometryCorrection_*odom.pose()
, right?
from rtabmap.
Yes, map->odom
would be odometryCorrection_
, and odom->base_link
would be odom.pose()
.
from rtabmap.
Related Issues (20)
- how to SLAM on ceiling, anyone can help me ?? thank you so much QAQ ~ HOT 2
- Error while running HOT 1
- G2o Fatal error for optimizeBA() HOT 5
- rtabmap parameter problem in 0.21.4 HOT 2
- how to change 2d map when i navigate from 1f to 2f HOT 4
- Empty Gridmap and Octomap with recent integration of Gridmap HOT 2
- Received IMU doesn't have orientation set! It is ignored HOT 2
- many nodes are not optimized (negative weight) after mapping HOT 1
- Python3 Option with RTABMAP Issue HOT 4
- Support for Orbbec Femto cameras HOT 1
- what are these lines mean in graph view ? HOT 2
- how to merge multiple times SLAM db file with rgbd camera, 3d lidar and odometry ? HOT 4
- Localization Mode + MM: Add option to pre-optimize the full global graph once so that map origin doesn't change on retrieval
- how to fusion icp odometry and visual odometry into a fusion odometry? and some question need to reassure
- Change exported multiband filenames
- `cmake_modules/FindSqlite3.cmake` breaks transitive dependencies. HOT 2
- (iSAM2) GTSAM exception caught: Requested the BayesTree clique for a key that is not in the BayesTree HOT 1
- bad calib camera matrix HOT 3
- Continously updating the reconstructed cloud with the sensor field of view HOT 4
- Wiki: Installation iOS - add App Store link HOT 1
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.