ArduPilot / ardupilot

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

AP_MotorsHeli Rework Roadmap #23691

Open MattKear opened 1 year ago

MattKear commented 1 year ago

Through recent use and digging through AP_MotorsHeli it is evident that there are a number of issues that need addressing and number of features that could make user setup a lot easier. This Issue defines a list of all issues and impovements and provides a means to keep track of what is going on and when. Please add to this as realted issues are found.

Rework Required These are reworks that will bring heli motors more into line with conventions of the rest of the code base. These do not change functionaility.

Feature Improvements These are improvements that we really ought to be doing but not currently

New Features These add new functionaility

bnsgeyer commented 1 year ago

@IamPete1 @Gone4Dirt a lot of this is great stuff and completely necessary. I really appreciate the help. I have one comment and one concern. I want to comment on rework required item regarding the limit cyclic angle in both axes on dual heli’s. Longitudinal cyclic is not limited because it is not used for control of a dual Heli. I agree that it should be included because I intend to implement longitudinal cyclic control in the future.

My concern is with the future enhancements item regarding the use of the servo min and max for swashplate set up. Be sure you understand how the swashplate Servo output is determined and why we fix the min and max servo positions to 1000 and 2000. Also, make sure you understand my server linearization feature. This not only eliminates binding in four servo swashplates, but also provides a linear relationship with a collective angle. You’ll have to convince me that what you’re doing is better than what’s there already.

thanks again for your efforts in the Motors heli’s library. I appreciate the help.

MattKear commented 1 year ago

@bnsgeyer no problem, happy to be able to help out :-)

Regarding limit cyclic angle: Understood on your point. To add clarification on where this is comming from: We were setting up a coax heli (dual_mode == Intermeshing) which does use cyclic for both roll and pitch control. This useage of only limiting pitch output: https://github.com/ArduPilot/ardupilot/blob/a43680e88246bd2fa4b3f57b84318fccc7b2ae79/libraries/AP_Motors/AP_MotorsHeli_Dual.cpp#L519-L528 Gives the issue i describe above. We now do not have the ability to set a cyclic range in roll and therefore must set the pitch limited cyclic range to match (if we want symetrical control).

Regarding servo min max concern. Yes I totally agree, we need to understand why things were previously done in the past before changing them. I propose we have a call to chat this through.

bnsgeyer commented 1 year ago

@Gone4Dirt good catch. I was thinking strictly of tandem. The library will need to treat pitch and roll the same regardless of dual heli type.