Comments (5)
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.
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.
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.
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
andrgb_depth_type
s 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.
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 indata_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 isoffline_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)
- AWS ILLIXR- Failed to retrieve a framebuffer config HOT 4
- Kimera fails in dbg HOT 1
- riscv64 runtime issue HOT 4
- Lack of documentation on running ILLIXR on Jetson
- Required GPU specifications HOT 4
- Reduce dependency on OpenCV
- Header/include cleanup is needed
- Reduce or remove the use of environment variables to pass information between main and plugins
- ILLIXR should exit cleanly no matter what
- ILLIXR needs better error handling HOT 1
- eulerAngles is deprecated HOT 1
- Dependency handling for plugin loader
- Re-running CMake with different profile file results in old profile file being used
- Proper stereoscopic projection for gldemo and vkdemo
- Enable Headless Rendering in Vulkan HOT 1
- Running ILLIXR and set "enable_offload: true" crashes HOT 3
- Is ZED mini camera support deprecated? HOT 3
- Generate Guidelines and Proceedures
- Error running offload_vio plugins HOT 14
- Spdlog has issues with set_pattern with multiple threads
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 illixr.