About the MAVLink navigation commands implementation and navigation accuracy

Hi, all. I am in a project group and we have a quadcopter with pixhawk 2.1 and a companion computer connected to it as augmentation.
I noticed that during sitl simulation(v3.3) and real test on the drone(v3.5.4), when using the navigation functions from dronekit (using GUIDED mode) that implements the MAVLink command MAV_CMD_NAV_WAYPOINT, the drone cannot reach the exact location of the waypoint and hangs around 10cm away from the waypoint without further approaching it. As our application needs some accurate actuation, I was wondering where the problem lies in this case and what direction can be looked into to solve it?
I have checked the waypoint radius parameter of this command, but setting it smaller or leaving it at the default 2m does not really help. On the real drone, an EMILD RTK GPS module is used and RTK fix is achieved, so accuracy should not be the problem. One thing I suppose is that after sending the command, if there is no update for some time, the command might get flushed or overwritten? In the current implementation, the navigation command is sent once and the remaining distance to the target location is polled, such that the next navigation command is not sent until the current waypoint location is reached.
Furthermore, our application is about accurate and subtle actuation based on computed trajectory, where the waypoints are position reference points w.r.t. the local frame. Empirically, which MAVLink command would be the best match?