-
Notifications
You must be signed in to change notification settings - Fork 16.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Qplane auto disarm #6475
Qplane auto disarm #6475
Conversation
ArduPlane/Plane.h
Outdated
@@ -925,7 +925,7 @@ class Plane : public AP_HAL::HAL::Callbacks { | |||
bool geofence_stickmixing(void); | |||
void geofence_send_status(mavlink_channel_t chan); | |||
bool geofence_breached(void); | |||
void disarm_if_autoland_complete(); | |||
void disarm_if_autoland_complete(uint32_t timer); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can this just have a default argument value of 0? It's making the stuff in AP_Landing look really confusing, or at least in need of a constant.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was thinking about that but wasn't sure how the function pointers would handle it. Do you know?
Well, it's failing Travis. I think it's stuck right here. I don't know what unit "timeout=1200" is but that sounds like a long timeout. Before it was a hardcoded 5s but now it uses LAND_DISARMDELAY which defaults to 20s. Either that or the other checks are failing. |
@peterbarker how do I get the .bin logs from Travis from this PR? I can only find the nightly's at autotest.ardupilot.org |
@magicrub you can run the same test travis does locally for easier debugging. |
On Tue, 20 Jun 2017, Tom Pittenger wrote:
@peterbarker how do I get the .bin logs from Travis from this PR? I can only
find the nightly's at autotest.ardupilot.org
I don't believe we keep the logs around for travis.
If autotest is failing, running it should be as simple as sim_vehicle.py:
./Tools/autotest/autotest.py build.ArduPlane fly.ArduPlane
Do not run autotest.py without supplying arguments - unless you really
know what you're doing :-)
|
Does -j8 and -S99 go in front or behind those arguments? Also, shouldn't I be doing fly.Quadplane? |
On Tue, 20 Jun 2017, Tom Pittenger wrote:
Does -j8 and -S99 go in front or behind those arguments? Also, shouldn't I
No, it uses waf to build, so it will sort the parallelism.
be doing fly.Quadplane?
If that's the step that died :-)
You can also use `--gdb` and `--debug`
|
Just to clarify: Travis is failing because DISARMED never appears. |
Correct |
I'll be on a long plane flight tomorrow, I'll take a stab at this again. |
Hi. I was curious if you had any further progress with this particular item? |
ac41e58
to
39820f5
Compare
This should be fixed now. Would like @tridge 's review before merge. |
to actually be useful it will need more work than this. It would need changes to the mission logic so that it can continue the mission after a VTOL landing. |
Which is empty in most cases so it will trigger qrtl? Then what..? |
And normal fixed wing NAV_LAND doesn't increment the index. If it is allowed to move on to another item I'm afraid that will case more accidents with it immediately taking off. Only a delay command makes any sense after the qland command. |
indeed, and that is why the reasoning behind this arming change needs a re-think. If the aim is to get multi-takeoff missions then we need quite a large change in the code, both for fixed wing and quadplanes |
Perhaps, but meanwhile I don't see any disadvantage to allowing a delayed auto-disarm instead of forcing an instant disarm. |
ArduPlane/quadplane.cpp
Outdated
if (plane.landing.get_disarm_delay() <= 0 || | ||
(now - landing_detect.lower_limit_start_ms >= plane.landing.get_disarm_delay()*1000UL)) { | ||
// disarm immediately or after user-defined delay | ||
plane.disarm_motors(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i think we need to keep the load() of airspeed_cruise_cm, otherwise landing missions with airspeed changes won't reset correct airspeed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what stops this triggering when landing_detect.land_start_ms == 0?
have you flown this?
Hi, this is a very useful change for me as we would like to do drops of fragile cargo and would ideally like to be "Landed" to drop the cargo and then take-off again at 3 or 4 different locations. Is this something that is still being progressed and would you need anybody to test it either in SITL or for real, we would be happy to help... Thanks |
39820f5
to
5f3a20e
Compare
@mrthomasbarnard glad to hear you're interested in this! I ended up ignoring this because I couldn't argue for a good use-case so it was shot down in a dev call. However, the PR is still alive and I just rebased it so if you can flight test and/or share your use-case we'd love to hear about it! |
this is failing autotest because.. it's a change in behavior that isn't scripted. |
Implement LAND_DISARMDELAY param for quadplanes instead of always immediately disarming on land.
Fixes: http://discuss.ardupilot.org/t/quadplane-multiple-vtol-lands-vtol-take-offs-in-a-single-mission/18561/4
Needs some testing by someone who know how to use quadplanes in SITL. The only gotcha on this is that a quadplane is now using is_flying() before it auto-disarms.