Coder Social home page Coder Social logo

Camera/IMU Calibration Files about illixr HOT 5 OPEN

illixr avatar illixr commented on July 21, 2024
Camera/IMU Calibration Files

from illixr.

Comments (5)

charmoniumQ avatar charmoniumQ commented on July 21, 2024

I believe the camera plugin (ZED, Realsense, offline_imu_cam) should synchronously publish the camera parameters that it knows about SLAM implementation should synchronously listen for that.

Some parameters will still have to come from a config file. For example, offline_imu_cam can be used with a variety of cameras (not just EuRoC).

The plugin hardcodes parameters it knows and uses #198 to override and publishes to SLAM.

from illixr.

ltstein avatar ltstein commented on July 21, 2024

Is there any consensus on whether this is read in or published by the camera plugin? This feature would be crucial for new hardware experiments, such as supporting #280 or enhancing existing camera plugins.

from illixr.

mhuzai avatar mhuzai commented on July 21, 2024

Some initial thoughts:

  • For datasets, we should have a config file and read from it; e.g., like that of OpenVINS or that of Kimera-VIO (the IMU file is in the same folder). I personally like Kimera's yaml better.
  • For live sensors, we should either query the parameters from the API (for factory defaults; e.g., with RealSense) or read from a config file (in case we do our own calibration; e.g., like ZED).
  • The cleanest way of supporting both of the above is to have the camera/offline_imu_cam plugin get the parameters (config or API), and publish them on SB for consumption by the rest of the system. We'll have to define an interface for this.

from illixr.

ltstein avatar ltstein commented on July 21, 2024

Putting down some ideas for feedback:

  • Pull in something like the camera params parser code for reading the yaml.
    Are there issues/objections to using this as a starting point?
  • configure a format for the params as well as a writer in data_format.hpp Initially would probably just mimic the yaml layout and iterate from there.
  • imu_cam_type and rgb_depth_types would publish this data synchronously with their frames or perhaps as part of setup to limit overhead?
  • Consumers of the cam topics would need to be modified to utilize this feed internally.

from illixr.

mhuzai avatar mhuzai commented on July 21, 2024

Thanks for looking into this!

  • Kimera has a BSD license, so no issues in using that code as a reference. That being said, using some kind of standard YAML library (if one exists) might be better for maintainability.
  • Yup, starting point would probably be a struct consisting of something along the lines of Eigen matrices for intrinsics and extrinsics, and floats for IMU parameters. I would suggest making something like sensor_params_format.hpp and then including it in data_format.hpp.
  • Sensor calibration will not change during execution (online calibration is internal to the VIO/SLAM), so publishing the parameters with each image would be excessive. This should just be a one time thing at system startup. My recommendation would be to make a new service (not a plugin) that reads the parameters from file or from the sensor API in its constructor, and then plugins can query the info using the service. The complication here is that if we're using a live sensor, the service would have to repeat the sensor code to get the information. The alternative is offline_imu_cam or the sensor publishing the info on a dedicated topic at startup.
  • Tying in with the above point, consumers of imu_cam that care about calibration only need calibration data at startup, and so should query the info in the constructor.

from illixr.

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.