---
# System prepended metadata

title: GVINS D455 and F9P configuration

---

# D455 and IMU configuration

## GNSS Configuration
**Selecting ucenter_config_f9p_gvins.txt, download and import to GNSS.**

![](https://hackmd.io/_uploads/S1xKM1y1a.png)

![](https://hackmd.io/_uploads/HJZAZJkJ6.png)

![](https://hackmd.io/_uploads/ByZR-kkya.png)

**Make sure you can output message from UBX-RXM-RAWX,UBX-RXM-SFRBX, UBX-NAV-PVT**

![](https://hackmd.io/_uploads/rkMAW1JJT.png)

![](https://hackmd.io/_uploads/rJGRZ1kyp.png)

**Dont forget to save config**

![](https://hackmd.io/_uploads/B1W0WJyJp.png)

**Config output frequence and baudrate finally.**
![](https://hackmd.io/_uploads/r1MAm11yT.png)

**I setup with freq: 60ms, baudrate: 921600**



## GVINS Configuration
you can create new instance(.yaml) and put below content in here: 
```bash!
[ROS_WS]/src/GVINS/config/[YOUR_CONFIG].yaml
```

```yaml!
%YAML:1.0
 
#common parameters
imu_topic: "/camera/imu"
image_topic: "/camera/color/image_raw"
output_dir: "/home/ubuntu/output/"
 
#camera calibration 
model_type: PINHOLE
camera_name: camera
image_width: 640
image_height: 480
# mirror_parameters:
#   xi: 1.8476540167437447
distortion_parameters:
    k1: -5.58381e-02
    k2: 6.70407e-02
    p1: -2.42111e-04
    p2: -2.12417e-02
projection_parameters:
    fx: 3.7958282470703125e+02
    fy: 3.793941955566406e+02
    cx: 3.1927392578125e+02
    cy: 2.471514129638672e+02
# gamma1: 385.5973815917969
# gamma2: 385.11065673828125
# u0: 324.7513122558594
# v0: 240.29359436035156
 
gnss_enable: 1
gnss_meas_topic: "/ublox_driver/range_meas"           # GNSS raw measurement topic
gnss_ephem_topic: "/ublox_driver/ephem"               # GPS, Galileo, BeiDou ephemeris
gnss_glo_ephem_topic: "/ublox_driver/glo_ephem"       # GLONASS ephemeris
gnss_iono_params_topic: "/ublox_driver/iono_params"   # GNSS broadcast ionospheric parameters
gnss_tp_info_topic: "/ublox_driver/time_pulse_info"   # PPS time info
gnss_elevation_thres: 30            # satellite elevation threshold (degree)
gnss_psr_std_thres: 2.0             # pseudo-range std threshold
gnss_dopp_std_thres: 2.0            # doppler std threshold
gnss_track_num_thres: 15            # number of satellite tracking epochs before entering estimator
gnss_ddt_sigma: 0.1

gnss_local_online_sync: 0                       # if perform online synchronization betwen GNSS and local time
local_trigger_info_topic: "/external_trigger"   # external trigger info of the local sensor, if `gnss_local_online_sync` is 1
gnss_local_time_diff: 17.9                      # difference between GNSS and local time (s), if `gnss_local_online_sync` is 0

gnss_iono_default_parameters: !!opencv-matrix
    rows: 1
    cols: 8
    dt: d
    data: [0.1118E-07,  0.2235E-07, -0.4172E-06,  0.6557E-06,
           0.1249E+06, -0.4424E+06,  0.1507E+07, -0.2621E+06]
 
# Extrinsic parameter between IMU and Camera.
estimate_extrinsic: 0   # 0  Have an accurate extrinsic parameters. We will trust the following imu^R_cam, imu^T_cam, don't change it.
                         # 1  Have an initial guess about extrinsic parameters. We will optimize around your initial guess.
                         # 2  Don't know anything about extrinsic parameters. You don't need to give R,T. We will try to calibrate it. Do some rotation movement at                      beginning.                        
 #If you choose 0 or 1, you should write down the following matrix.
 #Rotation from camera frame to imu frame, imu^R_cam
extrinsicRotation: !!opencv-matrix
    rows: 3
    cols: 3
    dt: d
    data: [0.999998, 0.000727753, -0.0018542,
           -0.000731598, 0.999998, -0.00207414,
           0.00185269, 0.00207549, 0.999996]
#Translation from camera frame to imu frame, imu^T_cam
extrinsicTranslation: !!opencv-matrix
    rows: 3
    cols: 1
    dt: d
    data: [-0.0591689, -6.45117e-05, 0.000440176]
 
#feature traker paprameters
max_cnt: 150            # max feature number in feature tracking
min_dist: 25            # min distance between two features 
freq: 10                # frequence (Hz) of publish tracking result. At least 10Hz for good estimation. If set 0, the frequence will be same as raw image 
F_threshold: 1.0        # ransac threshold (pixel)
show_track: 1           # publish tracking image as topic
equalize: 0             # if image is too dark or light, trun on equalize to find enough features
fisheye: 0              # if using fisheye, trun on it. A circle mask will be loaded to remove edge noisy points
 
#optimization parameters
max_solver_time: 0.04  # max solver itration time (ms), to guarantee real time
max_num_iterations: 8   # max solver itrations, to guarantee real time
keyframe_parallax: 10.0 # keyframe selection threshold (pixel)

#imu parameters       The more accurate parameters you provide, the better performance
acc_n: 1.3070468303711670e-02         # accelerometer measurement noise standard deviation. #0.2   0.04
gyr_n: 1.8698887111278477e-03         # gyroscope measurement noise standard deviation.     #0.05  0.004
acc_w: 3.6264256290488833e-04         # accelerometer bias random work noise standard deviation.  #0.02
gyr_w: 3.3803458569191471e-05       # gyroscope bias random work noise standard deviation.     #4.0e-5
g_norm: 9.794     # gravity magnitude
 
#unsynchronization parameters
estimate_td: 1                      # online estimate time offset between camera and imu
td: 0.00732677665793                             # initial value of time offset. unit: s. readed image clock + td = real image clock (IMU clock)
```

## Executing command

Open 4 terminal and type:

* start gvins
```bash
roslaunch gvins [YOUR_LAUNCHER].launch
```

* ros launch cmd of camera and imu
```bash
roslaunch realsense2_camera rs_camera.launch enable_gyro:=true enable_accel:=true unite_imu_method:=linear_interpolation enable_sync:=true color_width:=640 color_height:=480 enable_depth:=false enable_color:=true color_fps:=60
```

* ros launch cmd of ZED-F9P
```bash
roslaunch ublox_driver ublox_driver.launch
```

* Run rviz
```bash
rviz -d ~/catkin_ws/src/GVINS/config/gvins_rviz_config.rviz
```
