Oscillation during PrecLand with Visual Landing Targets (Video)

Hello all,

After tuning a bit, I’ve managed to land my drone(Copter-3.6.7) on visual targets within few centimeters.

I’m sending LANDING_TARGET messages with ~30Hz frequency via companion computer. I tried to add Kalman filter and increase the speed but since the internal PrecLand also has one, I thought it wouldn’t be logical to add extra prediction level so, I’m just sending measurements.

My problem is, I see oscillation in the pitch axis before getting close to the targets:

Unfortunately, the log of this flight is lost within the folder with lots of other logs but I can provide some info;

  • I’ve done AUTOTUNE with aggressive setting
  • PSC_POSXY_P 0.71
  • PSC_POSZ_P 1.0
  • Camera is simple rolling shutter webcam.
  • It also does huge angles to center landing area aggressively when altitude is higher and it’s away from the zone in x and y
  • I actually don’t have a problem with the current precision(mostly between 0 - 5 cm and I need this much),
  • Landed it with these parameters under 30 km/h (~16 knots) wind couple of times, it was beautiful :slight_smile:

Perhaps this behaviour is happening because of the hard mounted camera + aggressive settings. But I’ve never seen that somebody mounts it with a gimbal so, I’m not sure about what to do to fix oscillation without losing the precision and the wind resistance.

30 FPS is quite good for Precision Landing, the fastest FPS you can get, the lowest lag you induce in the control loop, resulting in less oscillations and overshoots.

@fnoop has achieved quite stable landing with a well tuned setup running at 50 + Fps., in case you missed it, take a look here:

Thanks a lot! I knew this repo and actually, I started using PrecLand with @fnoop 's advice.

…the fastest FPS you can get, the lowest lag you induce in the control loop, resulting in less oscillations and overshoots.

I saw this behaviour when I was using setpoints to land the drone with my old code (originally written for px4) and I couldn’t control the drone if I send setpoints at lower speeds than 50Hz.

I’m doing at 30Hz because of that my webcam operates at 30 fps. I haven’t touched landing codes for a while since it was landing well except the oscillation.

Recently, I bought a global shutter camera, but didn’t have a chance to try it on the drone yet. I can read detection speeds up to 120Hz with it on my PC. I expect my onboard computer to get ~60Hz at least, I’ll try it when I have time.

So I should work on the performance level rather than tuning Ardupilot parameters, to fix the oscillation? Because also, the drone rushes to the landing xy point in one fast move very aggressively, with a huge angle, just after receiving the first LANDING_TARGET message too.

Well, as I wrote on a related blog, I tuned my Precision Landing like an overloaded delivery truck… :wink:

…like an overloaded delivery truck

Haha :smiley:

I’d like to see that blog. Where is it? :slight_smile:

Also I see oscillation on pitch axis only, roll is very fine. Could it be still related to the lag? Maybe because of some physical spec of the copter, we see it on pitch only… I have no idea. I’ll try to find the log.

Yes a Log would help , I would make sure the balance of the drone is very neutal CoG (silding the battery) and that the power cable is not hanging on the back as I see in video as it is enough to induce oscillation.

As for the comments , I think it was in Gitter Channel https://gitter.im/ArduPilot/VisionProjects
Just do a search with: ''psycho wasp" :wink:

Oh, I’m aware of the invented term psycho wasp :slight_smile: I saw it somewhere.

I found the log but we’ve tried landing multiple times, so it’s a long one:

You should lower your px-py gain values and make sure they are symetrical, I am using QGC widget analyse tool to check these values live.

this was done woth openMV but you got the idea:

1 Like

I’m trying also to do the prec landing using ArilTags and OpenCam, but i don’t really know how to comunicate OpenCam with pixhawk, and how does it control the movement of the quad, I would apreciate any help :smile:

I think you need some documentation on Mavlink, pymavlink and dronekit.