ArduPilot / ardupilot

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

Copter: support horizontal thruster motors #10117

Open rmackay9 opened 5 years ago

rmackay9 commented 5 years ago

Support adding motors to provide additional horizontal thrust to allow the vehicle to move horizontally without leaning.

P.S. I thought we had an issue here in the issues list for this request but I can't find.

auturgy commented 5 years ago

Is there a specific use case? It can already be done in plane via qassist

rmackay9 commented 5 years ago

@auturgy, This is apparently helpful in cases where a large camera is intended to always be downward facing but is too large to be easily mounted on a 2-axis or 3-axis gimbal.

There was a long justification somewhere about whether it is more efficient to use these horizontal booster motors to control position rather than leaning and the conclusion (from my point of view) was that it is actually less efficient to have horizontal booster motors.

auturgy commented 5 years ago

Ok. It could be tested (either in sitl or with a physical vehicle) via quadplane, by setting the qassist speed to an unachievable value. Practically, I think the use case you describe needs a gimbal regardless, as nature rarely provides zero wind.

Regards,

James

On 26 Dec 2018, at 7:00 pm, Randy Mackay notifications@github.com wrote:

@auturgy, This is apparently helpful in cases where a large camera is intended to always be downward facing but is too large to be easily mounted on a 2-axis or 3-axis gimbal. There was a long justification about whether it is more efficient and the conclusion (from my point of view in any case) was that it is actually less efficient.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

IamPete1 commented 5 years ago

As mentioned plane does this already, rather than using Q-assist I would just set the transition speed very high so it can never transition to a forward flight mode. The booster motor gain is controlled by the Q_VFWD_GAIN parameter.

I think this brings up the slow converging of the codes. Plane is doing more and more things that copter has and this would start bringing plane things to copter. Some big merging of codes would be a huge job, maybe it is better to just keep duplicating functionality for the time being.

Naterater commented 5 years ago

Pythagorean theorem proves that 2 motors 90-degrees from each other is less efficient. A mode with a constant pitch/roll angle might be worth it. I guess I don't see the practical gain of having constant lean angle for any application. Instead, mount your camera at a 15-degree pitch up when the craft is neutral so that the camera is NADIR during forward flight.

bnsgeyer commented 5 years ago

I have been working on a 3.7 version of compound heli which uses two forward facing tailrotors to not only provide directional control and torque balance but also provide thrust for high speed flight. Haven’t figured out whether this will be more efficient but that is part of why I’m doing it. I had this type of heli flying for the better part of 2 years before I had a drivetrain failure and it crashed. I got the electronic mixing to work for manual modes but never implemented a control scheme for auto or loiter modes. I started working on a way to incorporate the thruster into the position controller. So I made a compound heli model in real flight which lets me test my thruster control logic. I got side tracked with some other stuff and hadn’t got back to it. Here is the link to my branch. https://github.com/bnsgeyer/ardupilot/commits/compound_heli_3.7

lvale commented 5 years ago

There was a long justification somewhere about whether it is more efficient to use these horizontal booster motors to control position rather than leaning and the conclusion (from my point of view) was that it is actually less efficient to have horizontal booster motors.

so, if we follow this concept to the end (copter and possibility of positioning) we'll end up with a 6DOF vehicle like ArduSub, but with large props.....

bnsgeyer commented 5 years ago

For Heli's, my intent is to only use forward thrust.
My general design concept is to have an RC aux function available for forward thrust which is mapped to the motors library, forward_in, variable. that is very straight forward and easy to do. the harder part is how to integrate it in non-manual modes. for any mode where the pitch and roll stick inputs from the user command pitch and roll attitude or rate, then the forward thruster is controlled by the RC aux input channel. I have decided to integrate the thruster into the position controller for modes where either the user pitch and roll input commands speed or auto/guided mode. Right now I just have the accel to lean angle method pushing a command to the forward thruster instead of pitching the aircraft for x acceleration. I will need to add a PID for the forward thrust to close the loop on acceleration. I may do some sort of sharing between lean angle and forward thruster for accel where the forward thruster is only used to bring pitch attitude back to zero over the long term.

SwiftGust commented 4 years ago

@bnsgeyer Few years back, I did work on small compound helicopter using coax-copter frame and there is failed attempt PR of my very primitive code https://github.com/ArduPilot/ardupilot/pull/6529 back then I enabled use of forward thruster with AC_PosControl inherited AC_PosControl_Compound class adding proportional controller for the single forward thruster.

With that code I was able to fly compound helicopter in takeoff -> waypoint navs -> land in Auto mode. This primitive code maybe helpful on non-maual control modes integration. https://github.com/SwiftGust/ardupilot/blob/354d6383a75a8e1c71739f1654ab802bd986ec5b/libraries/AC_AttitudeControl/AC_PosControl_Compound.cpp#L178-L213

bnsgeyer commented 4 years ago

@SwiftGust Thanks for pointing me to your method for integration of the thruster to non-manual modes. Truthfully I've been pretty busy, so I'm not sure when I will get back to this. I really need to get another compound heli built so I can finish the integration into non-manual modes.

rmackay9 commented 3 years ago

I've re-opened this because I don't think we have a general solution to allow users to connect a horizontally facing motor/propeller. I'm happy to be corrected but if so then we should enhance the wiki to explain how this can be done.

This issue is linked from the "booster motor" wiki page here https://ardupilot.org/copter/docs/booster-motor.html