Giter Site home page Giter Site logo

Comments (5)

sdmiller avatar sdmiller commented on July 30, 2024

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.

sdmiller avatar sdmiller commented on July 30, 2024

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.

eric-schleicher avatar eric-schleicher commented on July 30, 2024

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.

matlabbe avatar matlabbe commented on July 30, 2024

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.

eric-schleicher avatar eric-schleicher commented on July 30, 2024

Thanks so much @matlabbe!

from cpu_tsdf.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.