Skip to content

VINS-Fusion, VINS-Fisheye, OpenVINS, EnVIO, ROVIO, S-MSCKF, ORB-SLAM2, NVIDIA Elbrus application of different sets of cameras and imu on different board including desktop and Jetson boards

License

Notifications You must be signed in to change notification settings

engcang/vins-application

 
 

Repository files navigation

VINS-application: Intel-D435i

  • Build Process and explanation here

Index

  1. Prerequisites
  1. Results

Requirements - SDK

click to see

● Necessary for basic use / ROS version - referred here and here

● Jetson boards: add -DFORCE_RSUSB_BACKEND=ON -DBUILD_WITH_CUDA=true

  $ sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
  $ sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
  $ git clone https://github.com/IntelRealSense/librealsense.git
  $ cd librealsense && mkdir build && cd build
  $ cmake .. -DCMAKE_BUILD_TYPE=Release
  $ sudo make uninstall && make clean
  $ time make -j8 && sudo make install

● Trouble shooting

  • DS5 group_devices is empty -> add CMake option
  $ cmake .. -DCMAKE_BUILD_TYPE=Release -DFORCE_RSUSB_BACKEND=ON
  • Failed to set power state error or UDEV-Rules are missing
  $ sudo cp [librealsense path]/config/99-realsense-libusb.rules /etc/udev/rules.d/99-realsense-libusb.rules && sudo udevadm control --reload-rules && udevadm trigger
  $ reboot

ROS package

click to see
  • Intel Realsense2 ROS here
$ cd ~/catkin_ws/src && wget https://github.com/intel-ros/realsense/archive/<$version>.zip
$ unzip realsense-<$version>.zip
$ cd ..
$ catkin build realsense2_camera -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release -j8
$ source ./devel/setup.bash
  • Trouble shooting "Could not find a package configuration file provided by "ddynamic_reconfigure"
    • $ sudo apt install ros-<distro>-ddynamic-reconfigure

Disable Emitter

click to see
  • Disable Emitter using /usr/local/bin/realsense-viewer, save the json file and

  • Check "controls-laserstate=off" in the .json file

  • import the json file at the rs_camera.launch file as figure.


IMU Calibration recommended here


Kalibr(calibration for cameras-IMU)

click to see

Remember to use pinhole-radtan model in Kalibr and pinhole model in VINS-Fusion
use linear_interpolation for unite_imu_method in realsense camera launch file

  • Used Kalibr as here for ZED-mini camera
  • a lot referred here for imu models, configuration, emitter disabling, and VIO result
  • First, calibrate cameras
$ kalibr_calibrate_cameras --bag Kalibr_data.bag --topics /camera/infra1/image_rect_raw /camera/infra2/image_rect_raw --models pinhole-radtan pinhole-radtan --target april_grid.yaml
  • Then, calibrate IMU with cameras
$ kalibr_calibrate_imu_camera --bag Kalibr_data.bag --cam camchain-Kalibr_data.yaml --imu imu-params.yaml --target april_grid.yaml
  • for imu-params.yaml, I used
#Accelerometers
accelerometer_noise_density: 0.001865   #Noise density (continuous-time)
accelerometer_random_walk:   0.0002   #Bias random walk

#Gyroscopes
gyroscope_noise_density:     0.0018685   #Noise density (continuous-time)
gyroscope_random_walk:       0.000004   #Bias random walk

rostopic:                    /camera/imu      #the IMU ROS topic
update_rate:                 400.0     #Hz (for discretization of the values above)

Results

  • Real World VINS(GPU+version, Stereo) with Intel D435i, on Xavier, max CPU clocked: youtube and youtube2 : screen
  • VINS-Fusion (Stereo) with Intel D435i and Pixhawk4 mini fused with T265 camera: here
  • VINS-Fusion (stereo) with Intel D435i and Pixhawk4 mini on 1km long underground tunnel: here

About

VINS-Fusion, VINS-Fisheye, OpenVINS, EnVIO, ROVIO, S-MSCKF, ORB-SLAM2, NVIDIA Elbrus application of different sets of cameras and imu on different board including desktop and Jetson boards

Topics

Resources

License

Stars

Watchers

Forks

Languages