Underwater vehicle Position Control IMU data

Hello, I want to calculate the position based at closed area on the vx, vy, vz data in a submarine vehicle,
(starting position (0,0,0)

self.heading.value = int(msg[“hdg”]/100)
self.vx.value = msg[“vx”]
self.vy.value = msg[“vy”]
self.vz.value = msg[“vz”]

Note: I will use the velocity data from here.
The underwater vehicle is placed in the same way as the Pixhawk in (1).When it is set up as in (2), the coordinate system for vx, vy, vz is taken as follows (vx = north, vy = east, vz = positive down).
When making calculations, in my vehicle, which is set up like Pixhawk in (1), how can I do position-time calculations based on the vx, vy, vz data, and which coordinate system should I use for these calculations??
Do I need to necessary operations with transformation matrices to convert the coordinate system from (2) to (1)? Can you help me with the steps I should follow?

As a reference, I will be working on implementing a Kalman filter using these velocity data and ping2 measurement data, and I would like to observe error analyses.

Note: Necessary adjustments were made from QGroundControl to match Pixhawk in (1). (yaw 270).
pixhawk: Orange Cube plus
Qgroundcontrol version v4.2.8

Thank you…

Hi @Baydarakci,

I will preface this by noting that vehicle IMU data is typically too noisy to do position estimation.

The GLOBAL_POSITION_INT message is sent by the vehicle, if it has a suitable source of positioning information. For sending position estimates to the vehicle you’ll need to use GPS_INPUT or VISION_POSITION_ESTIMATE messages.

The sensor calibration process includes specifying the flight controller sensor orientations to the autopilot firmware, so the coordinate systems used by MAVLink messages should generally be independent of flight controller orientation.