Comments (5)
Sorry for the delay! Been traveling.
Yes, so it looks to me like this is failing during the "Reprojection" phase. That's something I added strictly to the integrate script, since a bunch of people were working with unorganized clouds.
Basically, the TSDF algorithm assumes it is given a series of organized clouds (such that cloud(u,v) corresponds to pixel (u,v)). Since most average users were not happening to pass in clouds of this variety, I added a little trick to the script which synthetically re-roganized the cloud. It does this using the intrinsics of the sensor (focal length, center pixel) to backproject the points into pixel space. By default we use the intrinsics of a standard kinect sensor.
That leads to a few things:
- If your data is already organized, you can pass in the "--organized" flag to tell the script not to do this reprojection. BUT
- Regardless of whether it is organized, if reprojection is completely failing here it probably means the camera intrinsics (--fx,-- fy, --cx, --cy, --width, --height) are drastically different from what we expect them to be. You'll want those to be correct to get reasonable results from the TSDF.
- I'm still shocked that reprojection worked in literally 0 cases. This indicates to me that the clouds are extremely different from what we are expecting. I'd love to take a look at one and see.
When in doubt, I'd suggest hopping into integrate.cpp and looking at the for loop where it reprojects points. A printout or two there could help dramatically.
from cpu_tsdf.
Also worth noting: if your data is organized and you don't know the intrinsics, you can use my handy little get_intrinsics tool (src/prog/get_intrinsics.cpp) to get a reasonably good estimate
from cpu_tsdf.
Thanks for taking the time to response and explain why I might be seeing this. I shared the issue with @matlabbe the maintainer of RTAB_MAP and he implemented cpu_tsdf as a post processing step. he clearly understood the detail needed to integrate the libary directly into the application.
I think we can close, since the issue has been addressed and there is a working solution now... but if you want to see the organized pointcloud that rtabmap produces, can certainly share a dataset with you.
let me know, and thanks for following through!
from cpu_tsdf.
The problem was that RTAB-Map exported organized clouds, but in a different frame (e.g., map frame). CPU-TSDF seems to assume that organized clouds are in camera frame (which makes sense). I added new output frame option to RTAB-Map when exporting not assembled organized clouds so that they can be exported in camera frame (z forward, x right, y down). The Export poses action has been also updated to select in which frame we want the poses (here in camera frame). So if there are similar or future implementations similar to cpu-tsdf, we could get the data right!
cheers,
Mathieu
from cpu_tsdf.
Thanks so much @matlabbe!
from cpu_tsdf.
Related Issues (20)
- Coordinate frame of point cloud expected HOT 1
- Generated surface is offset by a voxel width HOT 4
- Example data for tests HOT 9
- integrateCloud segmentation faullt HOT 10
- cpu_tsdf cannot compile with pcl 1.8.1 HOT 8
- How to get the pose.txt.... HOT 2
- wrong include path HOT 2
- pcd file format HOT 8
- use of normal vectors HOT 3
- Linker Error with boost::program_options (Boost 1.57.0 & PCL 1.9.0) HOT 1
- build with pcl 1.8.1 failure HOT 6
- is the hpp file:tsdf_volume_octree.hpp any useful in this project? HOT 1
- complied error with pcl1.10
- This project depend on which version of pcl HOT 1
- Can't generate tsdf2mesh executable when I switch pcl version to pcl 1.10 HOT 1
- Core dumped when I run integrate HOT 1
- rtabmap+cputsdf+pcl1.8.1 HOT 2
- How to run my local data? HOT 12
- Output mesh seems wrong HOT 4
- How can it supports for multiple depth cameras ? 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 cpu_tsdf.