Your code looks good, so not sure. You can send me the code archived to dronedojoforum@gmail.com and I can try running it.
What are some of the marker positions reported at the apex and soon after the land command?
What if you try the velocity command using y rather than x, or different velocities?
send_local_ned_velocity(0,.5,0)
I’ve experimented using different gazebo parameters to stress the system, such as changing wind speed, which can push the drone off enough that it cannot find the aruco. You might want to verify it’s not high.

