ArduPilot / ardupilot

ArduPlane, ArduCopter, ArduRover, ArduSub source
http://ardupilot.org/
GNU General Public License v3.0
11.08k stars 17.65k forks source link

Copter: allow RTL without GPS #7617

Closed night-ghost closed 2 years ago

night-ghost commented 6 years ago

times are now vague, the GPS data can not only be muffled but also tampered with, and the existing mode of handling the loss of GPS (in auto and RTL mode) is landing - leading to the loss of the aircraft.

However, during the loss of GPS, we have quite a lot of information on board:

  1. the last valid coordinates of the aircraft
  2. coordinates of the house
  3. velocity vector
  4. we also have compass and barometer data.
  5. also we can remember relation betwen controls and grounspeed - throttle for plane and angle for copter

From these data, we can calculate the direction and distance to the starting point.

The offer is: when loss of GPS occures, instead of landing, to start moving along the magnetic azimuth in the direction of the take-off point, at a distance no more than the calculated distance to it, in the althold mode. High accuracy is not needed here, the goal of the mode is to get the device out of the jamming zone and allow to get reliable coordinates of the aircraft.

lthall commented 6 years ago

Australia is 30 meters from people or property and visual line of sight. So the aircraft should always be able to come directly back to the pilot without hitting anything. This is the 99% case (number pulled from my ass). There is another 1% that are both flying responsibly that a standard RTL could cause a problem. However those pilots are able to use the smart RTL or staging points to ensure safe automated landing in the event that the pilot loses control. Both of these forms of RTL do not add significant risk to a less experienced pilot and are extremely predictable.

To give one example of how what you are suggesting could cause an issue. The pilot is flying away and goes into an area of interference. The Pilot sees the interference rising as the number GPS satellites drop and they get RSSI messages. The start turn around and head back and gain some height to be safe. The slight increase in height pushes them further into the interference causing a failsafe as both RC and GPS is lost.

RTL without GPS is enabled. The aircraft reverses direction back into the interference ensuring that communication and GPS can not be re-established. The aircraft continues for 30 seconds at 10m/s hoping to emerge from the interference. Because the pilot turned around just before the failsafe happened the aircraft is now heading in the wrong direction. The aircraft travels 300m before attempting to land.

So the point is the proposed feature is unpredictable. Failsafe modes should always be extremely predictable with the focus on avoiding harm or damage to third parties.

To take this story to the silly extreme now (just for fun). The radio tower is 250 m behind. The aircraft hits the tower directly in the high gain mm-wave dish, denting the dish with a $250,000 replacement cost. The aircraft falls down the tower hitting the technician working on the tower. The technician fall to his death. And somewhere a baby drops their ice cream. I know this is ridiculously exaggerated but it is the general catch all for the pilot or the arducopter developers are charged with negligence or sued for damages.

So on the flip side. The only way this reaction could make any sense is if the aircraft used the smart RTL points to pick a point that it was at 5 seconds before. It could then travel towards that point for 5 seconds in an attempt to exit the interference. After 5 seconds the aircraft would then land as usual but now it is traveling at 10m/s instead of 0m/s. This would probably keep the aircraft in safe airspace and may move the aircraft 50m out of the interference.

Still a complex and relatively unpredictable response to protect against a situation that is extremely unlikely.

Some ideas have more negatives than positives.

night-ghost commented 6 years ago

The radio tower is 250 m behind.

this game we can play together.

In baseline conditions, the height of RTL_ALT was assumed to be safe - you break that assumption. While maintaining the assumption of safety of RTL_ALT, uncontrolled movement to the side on the same altitude remains safe, but landing becomes dangerous. So if the plane is near tower, got GPS failsafe and decides to land, it will getting into the same mm-wave dish.

lthall commented 6 years ago

Sorry, I don't understand what you said there.

In the same situation if it does an immediate land then it will descend and drift with the wind. So it will move down wind by a distance of the air speed times the time it takes to reach the ground. That could be more than 30m, it could even reach the tower in a strong wind. However, it would reach the tower at a much lower altitude with much lower energy, doing less damage and giving everybody more time to get out the way.

That is all very predictable.

I am not sure what the RTL_ALT has to do with anything unless you are suggesting that the aircraft should increase to RTL_ALT before attempting the RTL without GPS........ That would just increase the potential position error and increase the energy of the aircraft. If the pilot set RTL_Alt correctly then it would mean it missed the tower though. But that assumes the pilot intended to fly on the other side of the tower. The Pilot may have just intended to fly to the tower and therefore not increase the RTL_Alt to clear it.

The point of my example was that the algorithm could easily head in completly the wrong direction if the pilot already started backing out of the dangerous area.

I am sorry but I didn't understand the point you were making in your last message.

night-ghost commented 6 years ago

I didn't understand the point you were making in your last message.

RTL_ALT is an altitude that we considered to be safe to return by a straight line, so there is no any obstacles, right?

So it is safe to do any maneuvers at this altitude, right?

But if aircraft starts to land, it will be at least altitude which already is not safe, and in the end this crazy meat grinder will be on the ground where children, cars and mm-wave dishes.

So I can't understand why you tell me that to land aircraft without GPS is safe and predictable, where to move aircraft on RTL_ALT terribly dreadfully dangerous.

However, it would reach the tower at a much lower altitude with much lower energy, doing less damage and giving everybody more time to get out the way.

The damaging factor of the copter is not the kinetic energy, but the rotating propellers. In this case, if you take care of safety, you must turn off the engines when GPS loss

lthall commented 6 years ago

No, you can't fly over people or property at any altitude and you are not supposed to exceed 400 ft. This is allowed if you are licensed and have permission. So RTL_ALT should be set to clear any obstacles you may encounter as you fly back to home.

So no RTL_ALT is not considered safe for any maneuvers. You must still keep your horizontal distance 30m from people and property to minimise the chance of the aircraft falling and hurting someone.

So by doing a no-GPS land can result in the :) child meat grinder :) but it will be the suspense style horror film style where the blades descend slowly rather than the sudden shock style film where it happens quickly.

As for predictability We have the decent rate (R), height (H) that the aircraft lost GPS and RX and wind speed (W). The aircraft will be grounded and safe in an approximate distance (D) where:

D = WxH/R.

At impact it will have a maximum ground speed of approximately W.

So from that we can calculate the maximum impact energy and danger radius (actually a down wind wedge). So a pilot can be informed and easily understand the risks of flying in a given set of conditions and environment. There are very few people that couldn't do this maths and understand this behaviour.

Can the kids end up in the meat grinder, yes. But given the predictability of the aircraft the pilot is in a position to know that the kids could end up in the meat grinder.

It is not true that kinetic energy is not a factor. I have been in the unfortunate position of having to do the risk assessments and there are detailed studies of exactly what kinetic energies and masses do to the human body. The risks are well studied and widely available.

With the current behaviour there is a serious risk of meat grinding in a down wind wedge up to D from the failsafe and very little risk of serious blunt force trauma.

The risks of the behaviour suggested here is far greater and far less predictable. You have the same meat grinder, you have a much larger radius and it is in all directions, and you have much higher potential/kinetic energy of impact.

Pedals2Paddles commented 6 years ago

The damaging factor of the copter is not the kinetic energy, but the rotating propellers. In this case, if you take care of safety, you must turn off the engines when GPS loss

Untrue. A 6lb+ copter falling out of the sky because you turned off the motors hitting someone in the head, or hitting a vehicle, or hitting a building, is extremely traumatic, possibly fatal. A copter descending slowly to a landing is noisy, slow, and predictable. People have plenty of opportunity to notice it and move away. And if they don't notice it, some lacerations are far less traumatic than a skull fracture. Suggesting that the motors should stop and drop like a brick would be extremely reckless.

night-ghost commented 6 years ago

Untrue

It was ironic if anyone did not understand.

It is not true that kinetic energy is not a factor.

all deadly/traumatic cases was caused by propellers, not by kinetic energy. Kinetic energy is more important for targets like cars.

But in general it's fun to observe the attraction for the ears of arguments to justify own position :)

Back to beginning: forest, lake and radio relay line. No kids, mm-wave dishes

lthall commented 6 years ago

I am glad you enjoyed my justification :)

Back to beginning: forest, lake and radio relay line. No kids, mm-wave dishes

If we were just designing this for you I would say fine, just sign here to say that you absolve me of all responsibility. Then I would give you my invoice and be on my way.

But you are just one of many hundreds of thousands of pilots and while there are no kids in your example there are kids in many many others. And we must consider the feature request in a much wider context than just the one that interests you.

As for no mm-wave dishes, true, no mm-wave dish but you do have a microwave dish at both ends of that radio relay line........

Anyway, it has been fun but I think I have explained pretty clearly why I don't think this is a good idea and why I would actively not support including it. It is only my opinion though, it wouldn't be the first time things have been included that I strongly disagree with. All part of an open source project.

night-ghost commented 6 years ago

while there are no kids in your example there are kids in many many others

some countries have banned flights in general - so we honor their laws, so project is closed and all free, sure? Or maybe it's better to let the pilot decide what is permissible in his case and what is not?

but you do have a microwave dish at both ends of that radio relay line........

sure, that's why even FC in plastic case died in 1st copter. But people can't to see the microwave field, and it's unrealistic to get a map of relay lines for an ordinary person, so one have to send the copters to the bottom to understand what happens. The last of the drowned ones had floats, so we could to get the logs and to see that GPS, radio and telemetry gone in one time.

why I would actively not support including it

do not want to help - go away and do not bother (C) Russian proverb. Yes this is open source and I already maintain my fork, so it will be one more additional feature. As with SafeRTL - you have 100points of return path, I have >4000 :-p

Naterater commented 6 years ago

I guess I'm still not understanding why attempting a RTL is more dangerous than the other options (landing/AltHold). Obviously this would be an advanced feature that is set to land by default.

All of this "safety" discussion is going nowhere. It's obviously situation-specific. If the same ardupilot is going to support the all different shapes and sizes of aircraft in many environments, then it needs to be adaptable. This is a feature that makes it adaptable and applicable to a wide context.

Set the default parameter to what you consider safe and allow advanced users to change it with a warning if necessary. I think a significant number of them would implement this feature.

night-ghost commented 6 years ago

I'm still not understanding why attempting a RTL is more dangerous than the only option (landing)

sure. See discussion about safety of RTL_ALT. if it comes to that, then the return in a straight line at the height specified by the user is much more dangerous - set 1 meter and into the crowd...

Scenario: Climb up to RTL_ALT. Set a bank 30 degrees for some time, keeping altitude. If no GPS then bank to opposte direction for same time, then land. No additional horisontal speed, no need to maintain position. And warning to user by big red letters - DANGEROUS

night-ghost commented 6 years ago

please **** the fountain

@rmackay9

Randy, you definitely do not know the Russian classics. Kozma Prutkov: "if you found a fountain - shut it!". But Google translator, which I use when lazily to think, seems to have translated not quite as it should. Or in Russian: Козьма Прутков: "если ты нашел фонтан - заткни его!"

lthall commented 6 years ago

All of this "safety" discussion is going nowhere. It's obviously situation-specific. If the same ardupilot is going to support the all different shapes and sizes of aircraft in many environments, then it needs to be adaptable. This is a feature that makes it adaptable and applicable to a wide context.

Yeh, I know. Because nobody is having a discussion. There have been no counter arguments to what I presented and no demonstration that this feature could meet the standards I set out. The only argument is I want it and everybody else can turn it off. Every developer knows this is not a practical approach.

I am going to close this feature request as it is going nowhere. (excuse the joke)

If a developer wants do build this feature, test this feature, demonstrate that it is a sensible approach and convince the rest of the Dev team it is worth supporting for the rest of the life of the code the feel free to open it again, but for now I am closing it.

rmackay9 commented 6 years ago

It is definitely possible to add another option to the failsafes to attempt another behaviour that others may or may not want. So I think ardupilot is "adaptable" as @Naterater suggests.

I actually think we should leave this issue open. I agree it's not going anywhere until a developer attempts it. I don't think any of the core developers think the "aim home and fly" method is going to work but others can come, read this discussion and see the reasoning and try themselves if they like.

I don't think it s worth arguing further whether it the "aim home and fly" will work or not. Someone (perhaps the person who believes it it most - @night-ghost) should try it and report back.

lthall commented 6 years ago

No problems Randy.

night-ghost commented 6 years ago

perhaps the person who believes it it most - @night-ghost

I would like to, but I'm still not very good at the high-level logic of Copter. So, I have not yet found a mechanism for switching to the landing mode when the GPS is lost

lordneeko commented 6 years ago

@night-ghost If you don't understand these articles, then you won't ever understand why this feature won't be considered until it is perfectly safe. The life (or well-being) of the pilot and craft is inconsequential to the life of the innocent by-stander.

http://www.dailymail.co.uk/news/article-462038/How-Spitfire-hero-sacrificed-save-airshow-crowds.html "The father of three made a last-minute diversion when he realised the emergency landing strip was full of people..."

https://www.cnn.com/2016/06/02/politics/military-plane-crash/index.html "he was maneuvering so he wouldn't hit any houses. "He made a conscious effort to direct his aircraft away from some of the local neighborhoods."

There are MANY more I could find. As MANY have said, if this can be proven to be safe and reliable, then it could go in. So, I add my agreement to previous comments, PRs are welcome!

I recommend closure.

rmackay9 commented 6 years ago

Let's not fire up this conversation again. If someone wants to implement it then they're welcome to and we can see how well it works. No need to argue if nobody's actually going to write it.

umer936 commented 6 years ago

So I stumbled upon this issue and believe there's enough information to RTL without GPS. I also see the value in this as someone could be flying over a lake or have taken off from a not-moving boat. Having a parameter to change RTL from LAND/LOITER/RTL without GPS (and without a companion computer) could be useful.

In Texas Aerial Robotics, we were able to navigate using Optical Flow in Guided without GPS. We initialized the EKF origin and home positions manually (sending to Pixhawk2 from a Jetson TX2) to 0,0,0 prior to takeoff and were able to navigate to waypoints. Sending 0,0,2 as the waypoint, then issuing a LAND works just fine in our testing.

The relevant code is here: https://github.com/Texas-Aerial-Robotics/Controls-ROS/blob/master/src/setHome.cpp and here: https://github.com/Texas-Aerial-Robotics/Controls-ROS/blob/master/src/followWithScan.cpp

Don't know how best to implement this in ArduCopter, but it can definitely be done.

rmackay9 commented 6 years ago

@umer936, txs for sharing.

If there's an optical flow attached and it's working then AP should be able to fly all autonomous missions (including RTL). I have tested RTL with optical flow only (there's a video on my youtube channel) and it seems to work as long as the vehicle isn't too high. I think this issue is more about the case where we don't have any additional sensors.. just trying to dead reckon back to home which is very difficult.

DangerD1024 commented 2 years ago

Any update with that? I need drone to fly by home direction using compass if GPS will fail, we have war in Ukraine, i need to make this ASAP! After loosing GPS, just start flying to home direction by compass until GPS is back

pavloblindnology commented 2 years ago

Any update with that? I need drone to fly by home direction using compass if GPS will fail, we have war in Ukraine, i need to make this ASAP! After loosing GPS, just start flying to home direction by compass until GPS is back

There have been 2 solutions added since your question:

  1. Lua script for dead-reckoning home (discussion #20614). Doesn't account for wind drift.
  2. Allow dead-reckoning (e.g. in your case - RTL after GPS loss) if wind estimation is enabled (discussion #20729). Accounts for wind drift.

Both are not yet released.

lthall commented 2 years ago

Any update with that? I need drone to fly by home direction using compass if GPS will fail, we have war in Ukraine, i need to make this ASAP!

@DangerD1024 and @pavloblindnology ArduPilot does not support weaponized systems. Please refer to: https://ardupilot.org/dev/docs/developer-code-of-conduct.html#

lordneeko commented 2 years ago

Any update with that? I need drone to fly by home direction using compass if GPS will fail, we have war in Ukraine, i need to make this ASAP!

@DangerD1024 and @pavloblindnology ArduPilot does not support weaponized systems. Please refer to: https://ardupilot.org/dev/docs/developer-code-of-conduct.html#

Totally an inappropriate comment. The commenter above did not say anything about weaponization. He just mentioned that they needed it in Ukraine during the war. He could need it for finding survivors for all you know. Get off your high horse. This is a legitimate feature request.

That said it appears that @pavloblindnology provided an adequate response that could be employed by @DangerD1024

lthall commented 2 years ago

@lordneeko It is inappropriate to turn the ArduPilot Git issues list into a support forum for an active war zone, much less one that is generating regular video's showing drones being used to kill people.

lthall commented 2 years ago

Issue closed to minimise public exposure.

pavloblindnology commented 2 years ago

@lthall It is inappropriate to make judgements about what goal is behind someone's comments. Didn't mentioned any weapon, just 2 features connected to this issue's topic. Regarding moral principles - please, don't. Whether you like it or not, AP was, is and will be used for weaponized systems. Moreover, you'll use it first when war will come to your home.