Author: Saina Rezvani ([email protected], [email protected])
Presentation can be found Here
- updated firmware on D435i
- librealsense
- OpenCV (installation script is in the utility folder)
- Ceres
- Pangolin
- Camodocal (instrinsic calibration only and not as good as kalibr)
- Evo (trajectory visualization)
- realsense-ros (librealsense ros wrapper)
- ddynamic_reconfigure (realsense requirement)
- image_pipeline (decompressing images)
- Vins-Fusion
- Kalibr (calibration)
- code_util(requirement for imu_util)
- imu_util (imu calibration)
- robot_localization (EKF)
Realsense D435i and T265: In order to launch the realsense camera and imu, the camera should be installed on the robot and the launch files in the Realsense folder should be moved to the realsense-ros folder in catkin workspace
$ roslaunch realsense2_camera rs_camera_d435i_t265.launch
Launching joystick, wheel encoder, 3dm IMU:
$ drive
Launching vicon:
$ roslaunch vicon trakcer.launch
The file t265_rosbag_cmd.sh in the utility folder includes all the necessary topics for recording the d435i camera, the two imu topics, encoder, vicon and some other useful topics.
**Do not play the bag files when drive is running or else jackal will start to climb the desk
There are two bag files that have been recorded with the most updated version of firmware and linbrealsense. The links to them are:
-
Driving Jackal with its normal speed around vicon. This bag files include realsense cameras, imu, 3dm imu, vicon and wheel odometry
-
Driving Jackal with its highest speed around vicon. This bag files include realsense cameras, imu, 3dm imu, vicon and wheel odometry
-
The slow bag file mentioned above with certain transforms removed so it can be run with ekf
-
The fast bag file mentioned above with certain transforms removed so it can be run with ekf
For calibration, first the camera needs to be calibrated (instrinsic parameters) and then the camera and imu (extrinsic parameters).
Supported Projection Models:
- pinhole camera model (pinhole)
(intrinsics vector: [fu fv pu pv]) - omnidirectional camera model (omni)
(intrinsics vector: [xi fu fv pu pv]) - double sphere camera model (ds)
(intrinsics vector: [xi alpha fu fv pu pv]) - extended unified camera model (eucm)
(intrinsics vector: [alpha beta fu fv pu pv])
Supported Distortion Models:
- radial-tangential (radtan)
(distortion_coeffs: [k1 k2 r1 r2]) - equidistant (equi)
(distortion_coeffs: [k1 k2 k3 k4]) - fov (fov)
(distortion_coeffs: [w]) - none (none)
(distortion_coeffs: [])
Intrinsic calibration:
$ kalibr_calibrate_cameras --bag [filename.bag] --topics [TOPIC_0 ... TOPIC_N] --models [MODEL_0 ... MODEL_N] --target [target.yaml]
**The checkboard config/info file can be found at /Utility/checkboard_large.yaml
Extrinsic calibration:
$ kalibr_calibrate_imu_camera --bag [filename.bag] --cam [camchain.yaml] --imu [imu.yaml] --target [target.yaml]
**The D435i, T265 and 3dm intrinsic IMU calibration files can be found in the /Utility/imu_intrinsics
folder
**One possible error could be that the default syncronization tolarance is too low. In that case you can use the "--approx-sync" parameter with a value higher than 0.02 (default)
For more information refer to the imu_util and Kalibr's wiki pages.
For Running Vins-Fusion refer to the read me in the forked repo in my acount
Running EKF:
$ roslaunch jackal_odometry jackal_odometry.launch
Running EKF and Vins-Fusion:
$ rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/realsense_d435i/realsense_stereo_imu_config_3.yaml
$ roslaunch jackal_odometry jackal_odometry_vins.launch
**The rviz config file is in the rviz folder /EKF/rviz/ekf_config.rviz
and can be uploaded into rviz
For running the tum format, the text files can be generated with the /EKF/scripts/generate_txtfile_from_topic.py
and the following command: (more info on evo wiki page)
$ evo_traj tum traj_1.txt traj_2.txt --ref traj_3.txt --p
The script /EKF/scripts/createpath.py
can be used to visualize the vicon trajectory in rviz