Skip to content
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

Copter: Stand-By mode for use with multiple flight controllers running in parallel #12441

Merged
merged 4 commits into from
Oct 17, 2019

Conversation

lthall
Copy link
Contributor

@lthall lthall commented Sep 29, 2019

StandBy is the ability to have multiple flight controllers working together where only one of these is the controller in command (CIC). The "ride along" controllers can experience significant I-term build up as they may have different attitude solution compared to the CIC. The secondary controllers may also be placed in a more basic mode. For example, during an auto mission the secondary flight controller may be held in Loiter.

The functionality in this PR is designed to be a minimum impact standby functionality for ArduCopter.

The requirements of this capability are:

  • Remove I term build up
  • Remove integrated build up sources
  • Not trigger crash checks, parachute, or landing detectors.
  • Ensure the aircraft will still fly effectively in Stabilize, Alt Hold, Loiter and continue to stabilize the aircraft in other modes. This is to ensure the aircraft will continue to be controllable in the event that a secondary flight controller is made CIC without disabling the Standby state.

This will be the first introductory implementation of this functionality to facilitate development in this area.

@proficnc
Copy link
Contributor

Love it!
Thank you Leonard! This is absolutely awesome!

@lukezhqin
Copy link
Contributor

good! SO you guys want to add a redundand CPU architecture?

@amilcarlucas
Copy link
Contributor

I guess this is more a redundant CUBE architecture. I like it. A lot !!!

@proficnc
Copy link
Contributor

Not just Cube, but yes, multiple Autopilots allowing for true redundancy.

Leonard has done some awesome work in this area

@rmackay9 rmackay9 changed the title 20190927 stand by mode Copter: Stand-By mode for use with multiple flight controllers running in parallel Sep 29, 2019
@lthall
Copy link
Contributor Author

lthall commented Sep 30, 2019

@amilcarlucas There is no aspect of this that is hardware dependent. It will enable a variety of methods and approaches to be further developed. This patch provides the most basic functionality required to have an autopilot in an armed and flying state while not in control.

Copy link
Contributor

@rmackay9 rmackay9 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally looks pretty good. A few issues related to naming and formatting and then a couple of questions.

ArduCopter/Copter.h Show resolved Hide resolved
ArduCopter/crash_check.cpp Outdated Show resolved Hide resolved
ArduCopter/land_detector.cpp Outdated Show resolved Hide resolved
ArduCopter/Copter.cpp Outdated Show resolved Hide resolved
ArduCopter/stand_by.cpp Outdated Show resolved Hide resolved
libraries/AC_AttitudeControl/AC_PosControl.cpp Outdated Show resolved Hide resolved
libraries/AC_WPNav/AC_Loiter.cpp Outdated Show resolved Hide resolved
ArduCopter/stand_by.cpp Outdated Show resolved Hide resolved
@lthall
Copy link
Contributor Author

lthall commented Oct 8, 2019

For some reason this failed:
CI_BUILD_TARGET="sitltest-rover sitltest-sub sitltest-balancebot"

@peterbarker
Copy link
Contributor

peterbarker commented Oct 8, 2019 via email

@rmackay9 rmackay9 merged commit 05f1161 into ArduPilot:master Oct 17, 2019
@rmackay9
Copy link
Contributor

Merged, thanks!

@proficnc
Copy link
Contributor

Awesome!!! A new era in ardupilot begins!

@lthall lthall deleted the 20190927_StandByMode branch October 21, 2019 07:46
@Kiwa21
Copy link

Kiwa21 commented Nov 4, 2019

Can we have more info on this ? @proficnc @lthall
Should we expect a dual/tri cube architecture "soon" ?
Thanks

@GlidLov
Copy link

GlidLov commented Jan 3, 2020

Hi all
I'm very interested in the StandBy mode, looking forward to create a fully rendundant FC.
First, i must say what "real rendundant FC" means to me: a cluster of FCs where you can take apart one (phisically removing it) and system would still able to fly.
Now, my doubt is about architecture and thus wiring. Culprit here is connection to ESCs: as today, escs (most of them, at least) are controller by one single wire (abstracting comm protocol here) which has to be connected to an FC. Now, this leads to only one kind of system: a primary FC which has ESC connected, and a secondary FC which shares data with first one via mavlink (to ensure attitude solution is good, to be aware if the primary FC is working ok, etc). Then, when the second one is triggered, first one must release PWM outputs control to the second one, which will drive ESCs using part of first's HW.
However, this solution is inherently weak, because first FC must be still used somehow while second kicks in, and this makes this architecture not fully rendundant. A real rendundant one, would have a second set of PWM wires directly connected to the same ESC as first. Then also ESC must have a two-input discrimination system.
Other solution, which is even weaker maybe, is to implement an "ethernet/IP style" comm protocol to ESCS and making wires to escs all in common just like an ethernet network, which supports seamless plugging and unplugging nodes. Problem here would be protocol which normally has to be a strict real time thing. Packet based can't guarantee sync, reliability etc

So, do a working (on paper, at least) architecture has been shared already, on top of standby mode?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants