Jump to conversation
Unresolved conversations (8)
@ruffsl ruffsl Apr 8, 2020
@ToniRV , when using composed nodes, I don't think we'd be able to acquire the CLI args for the containing process that holds all the nodes. Thus we'll need a way to pass any current run time args for google flag/log using ROS parameters instead. Perhaps we could a ROS parameter for passing a directories path containing google flag files, like with the param path for yaml files. Or would there be would be a way to combine the two?
kimera_vio_ros/src/stereo_vio_node.cpp
@ruffsl ruffsl Apr 8, 2020
@ToniRV it would be nice if Kimera-VIO understood the `plumb_bob` type to be the same as `radtan`: * https://github.com/ros/common_msgs/blob/ea6c65e8846d9873b8d6e44435c52fb43d6093a3/sensor_msgs/include/sensor_msgs/distortion_models.h#L45 * https://github.com/ros/common_msgs/blob/ea6c65e8846d9873b8d6e44435c52fb43d6093a3/sensor_msgs/msg/CameraInfo.msg#L58 And also if Kimera-VIO library determined for itself whether to use or not the 6th order radial distortion term. Also would be cool if Kimera-VIO checked if all the distortion terms where zero, so no rectification would be necessary. Not sure if `cv::initUndistortRectifyMap` internally optimizes for that. Lots of times, ROS image topics will already be rectified to avoid each downstream image consuming node from having to duplicate the rectification. https://github.com/ros-perception/vision_opencv/blob/0bbebb73bea65eca856e732b919439853a04986b/image_geometry/src/pinhole_camera_model.cpp#L133-L148
...io_ros/src/interfaces/image_interface.cpp
@ruffsl ruffsl Apr 8, 2020
@ToniRV , In relation to https://github.com/MIT-SPARK/Kimera-VIO/issues/41 , I think if there was a way to convert twist.linear and twist.covariance of the odometry_msg (or velocity_body) into a different reference frame, the then the wrapper could do the abstraction of allowing the imu frame and base link frames to have a non-identity displacement transform. This would also be handy if the transform between the IMU and base-link was non-static, like on sterio-imu pan tilt unit. But it would be nice to keep such reference frame transform functaions down in the kimera-vio library for all wrappers to share.
..._ros/src/interfaces/backend_interface.cpp
@ruffsl ruffsl Apr 7, 2020
@ToniRV , Instead of inheriting from the `VIO::DataProviderInterface` class, It might be cleaner to replicate what was changed in the ROS1 wrapper and create a `data_provider_` filed: * https://github.com/MIT-SPARK/Kimera-VIO-ROS/blob/ec5f3d4325612b4526f81e3314bda1c38836ae59/src/KimeraVioRos.cpp#L36 However, sterio and imu child interfaces here wouldn't then be able to access the private vio callback functions: * https://github.com/MIT-SPARK/Kimera-VIO/blob/d677a3dedad2da605c84a4b7f51154cd7e38a98d/include/kimera-vio/dataprovider/DataProviderInterface.h#L77-L83 I tried creating a protected child class `VIO::DataProviderInterface`, and listing `BaseInterface` as a protected friend, but that workaround didn't seem to compile. It might of just have been my error in playing with the C++ classes.
...vio_ros/src/interfaces/base_interface.cpp
@ruffsl ruffsl Apr 7, 2020
@ToniRV Would 9DoF IMUs ever be supported? E.g. where a magnetometer's orientation reading can be used. Does GTSAM even have an IMU factor that can consider absolute orientation?
..._vio_ros/src/interfaces/imu_interface.cpp
@ruffsl ruffsl Apr 7, 2020
@ToniRV I saw a TODO comment in the KimeraVIO fronted when debugging https://github.com/MIT-SPARK/Kimera-VIO-ROS2/pull/5/commits/ec3586292209a953e671963e710ac84a6878f089 about the idea of removing the camera info argument from the frame callback. https://github.com/ruffsl/Kimera-VIO/blob/e5e799c631b7ae3b8d3afac323996a381297348b/src/dataprovider/EurocDataProvider.cpp#L147-L149 I just wanted to mention that keeping it might be nice for setups with changing extrinsic and intrinsic camera parameters. E.g. When the camera has automatic focus or zoom, or when the camera to imu tranform is non-static, like with a robot's or drone articulated head with pan tilt control, but the IMU in fixed in place at the center of the chassis. These changes could still be picked up and synchronized with the data per-frame by consciously subscribing to camera_info and tf topics.
...o_ros/src/interfaces/stereo_interface.cpp
@ruffsl ruffsl Apr 7, 2020
@ToniRV After the recent changes to the front end, it looks like vio_params_ has been made separate from VIO::DataProviderInterface class. This might make it easier to work with when using stuff like camera_info topics to init the extrinsic and intrinsic camera parameters, so thanks. However, it looks like it seeks a number of yaml files with hardcoded file names, like the left and right camera yamls, but also some new files that where never added to the realsense data set params folder that would include a reference to the default hyperparameters for that device: * https://github.com/MIT-SPARK/Kimera-VIO/tree/83e12698a5803dcb6e6111dbed25b7ef59c878bb/params/RealSense Could the reference params folder for the RealSense be updated to re-sync with the recent refactoring updtream?
...vio_ros/src/interfaces/base_interface.cpp
@ToniRV ToniRV Feb 20, 2020
@ruffsl this commit msg caught my eye, bcs I think I tried toCvShare, but last time I tried there was something in the code modifying the images (probably in the frontend, which I am heavily refactoring now) , just FYI
Outdated
...o_ros/src/interfaces/stereo_interface.cpp
ToniRV ruffsl
Resolved conversations (2)
@ruffsl ruffsl Mar 12, 2020
@ToniRV I think the latest changes in the `develop` branch from gtam have broken the build for Kimera_VIO, see 1859c10b2d463dbdde3f689de2a97f3865407622 . Do you know of the most recent commit suported by kimera. Gtsam hasn't had any recent releases, and the commit I pinned is from around January.
Outdated
install/underlay.repos
ruffsl ToniRV
@ruffsl ruffsl Mar 3, 2020
@ToniRV , I'm still having some issues with `No IMU data from last frame timestamp:` when using `parallel_run=true`. Any suggestions other than setting parallel_run to false. I'd like to keep `pipline_.spin()` in it's own async thread. ``` $ ros2 launch kimera_vio_ros kimera_ros_realsense.launch.xml [INFO] [launch]: All log files can be found below /home/ruffsl/.ros/log/2020-03-02-18-45-16-443174-dox-12704 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [kimera_vio_ros-1]: process started with pid [12715] [kimera_vio_ros-1] I0302 18:45:16.720127 12715 CameraParams.cpp:31] Parsing camera parameters for: left_cam [kimera_vio_ros-1] I0302 18:45:16.787691 12715 CameraParams.cpp:31] Parsing camera parameters for: right_cam [kimera_vio_ros-1] I0302 18:45:16.788328 12715 DataProviderInterface.cpp:96] Running dataset between frame 50 and frame 10000 [kimera_vio_ros-1] I0302 18:45:16.796392 12715 RegularVioBackEnd.cpp:113] Using Regular VIO backend. [kimera_vio_ros-1] I0302 18:45:17.805269 12734 PipelineModule.h:163] Module: Data Provider - Spinning. [kimera_vio_ros-1] W0302 18:45:17.817641 12734 DataProviderModule.cpp:97] No IMU data from last frame timestamp: 1583203517581242112 to timestamp: 1583203517614594304 [kimera_vio_ros-1] W0302 18:45:17.818171 12734 DataProviderModule.cpp:97] No IMU data from last frame timestamp: 1583203517581242112 to timestamp: 1583203517614594304 [kimera_vio_ros-1] W0302 18:45:17.818605 12734 DataProviderModule.cpp:97] No IMU data from last frame timestamp: 1583203517581242112 to timestamp: 1583203517614594304 ... ```
..._vio_ros/src/interfaces/imu_interface.cpp
ruffsl