How to Ignore vertical angle in proximity?

I am using a proximity sensor for obstacle avoidance in GPS modes, It can detect obstacles at >25m.
My issue is that when I fly it at low alts say 15m, The pitch movements detects ground as an obstacle and reacts to it.

How do I ignore the vertical angles? There is a parameter to ignore horizontal angles but not for vertical angles.

Thank you.

Hi @wkpatil,

This is one of the key issues we see if our existing proximity sensor based object avoidance. AP does not create an 3D map (aka SLAM) internally based on the proximity sensor data.

I think a solution could be to use ROS2 to create a point cloud and then somehow send a filtered version of that to ArduPilot. I think this is what the ModalAI VOXL cameras do although they use ROS1.

Another solution could be to try and use a 3D AI camera which internally compensates for the lean of the vehicle.

Both of these solutions require software development though.

FYI @rishabsingh3003

1 Like

@wkpatil as Randy says, low altitude has always been a tricky problem with OA.
We cannot yet explicitly ignore vertical angles. However, we have two options:

  1. PRX_IGN_GND: Which only works with downward facing rangefinder. It tries to correlate the measurement from Proximity Sensor to the reading of the altitude from the RangeFinder. This should theoretically work well for a “flat” surface below.

  2. If you are using Simple Avoidance, you can set AVOID_ALT_MIN to start avoidance after a certain height (again uses downward facing rangefinder)

If you upload a log with this issue, I maybe able to suggest something more (perhaps with some additional filtering via Lua scripts)

1 Like

I was glad to see this post as I was struggling with the same issue.

In conclusion, there are very few ways to compensate the value of the proximity sensor based on the aircraft attitude. This is because, as the good developers said above, Ardupilot’s obstacle avoidance function does not use the detected point cloud for mapping.

It can be mapped using a companion computer, but only if you can afford the additional expenditure (payload or payment) for a companion computer and have basic knowledge of SW development.

Alternatively, 3D sensors can be used, but these sensors are expensive and heavy for outdoor use and useful ranges.

A simple way to solve this problem is to stabilise the sensor with a simple single-axis stabiliser. This stabiliser can be implemented with a 3D printer and a servomotor, and it works quite well.

KakaoTalk_20240513_203332416 (1)

1 Like