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

ArduCopter-Overly sensitive swashplate response to cyclic inputs for Dual heli frame #6977

Closed
bnsgeyer opened this issue Sep 19, 2017 · 3 comments
Assignees
Labels

Comments

@bnsgeyer
Copy link
Contributor

bnsgeyer commented Sep 19, 2017

Issue details

A dual heli frame was added to Copter 3.5 to support tandem rotor helicopters. It was noted in @frizensami post (https://discuss.ardupilot.org/t/tandem-helicopter-pid-tuning/17849) that tuning parameters for PID in pitch and roll seemed very low (1 order of magnitude smaller) when compared to single main rotor /tail rotor configurations. Recent, @PittRBM posted (https://discuss.ardupilot.org/t/dual-heli-frame-frame-class-11-problem/20972) an issue when setting up his transverse configuration using the 3.5 version dual heli frame that the swashplate was overly sensitive using the tuning parameters that he used in tuning his personal version of a copter 3.4 dual heli frame derived from the same user @fhedberg.
In comparing the motorsheli_single.cpp and the motorsheli_dual.cpp, I noticed an inconsistency in the code between the two files that I believe is causing this increased sensitivity.
In these lines of code there is a term that is divided by 0.45

float servo1_out = (_rollFactor[CH_1] * roll_out + _pitchFactor[CH_1] * pitch_out + _yawFactor[CH_1] * yaw_out)/0.45f + _collectiveFactor[CH_1] * collective_out_scaled;
float servo2_out = (_rollFactor[CH_2] * roll_out + _pitchFactor[CH_2] * pitch_out + _yawFactor[CH_2] * yaw_out)/0.45f + _collectiveFactor[CH_2] * collective_out_scaled;
float servo3_out = (_rollFactor[CH_3] * roll_out + _pitchFactor[CH_3] * pitch_out + _yawFactor[CH_3] * yaw_out)/0.45f + _collectiveFactor[CH_3] * collective_out_scaled;
float servo4_out = (_rollFactor[CH_4] * roll_out + _pitchFactor[CH_4] * pitch_out + _yawFactor[CH_4] * yaw_out)/0.45f + _collectiveFactor[CH_4] * collective2_out_scaled;
float servo5_out = (_rollFactor[CH_5] * roll_out + _pitchFactor[CH_5] * pitch_out + _yawFactor[CH_5] * yaw_out)/0.45f + _collectiveFactor[CH_5] * collective2_out_scaled;
float servo6_out = (_rollFactor[CH_6] * roll_out + _pitchFactor[CH_6] * pitch_out + _yawFactor[CH_6] * yaw_out)/0.45f + _collectiveFactor[CH_6] * collective2_out_scaled;

where in the Motorsheli_Single.cpp file the same expression is multiplied by 0.45.

float servo1_out = ((_rollFactor[CH_1] * roll_out) + (_pitchFactor[CH_1] * pitch_out))*0.45f + _collectiveFactor[CH_1] * coll_out_scaled;
float servo2_out = ((_rollFactor[CH_2] * roll_out) + (_pitchFactor[CH_2] * pitch_out))*0.45f + _collectiveFactor[CH_2] * coll_out_scaled;

I believe changing the expression to have it multiplied by 0.45 as is done in the heli_single frame will fix the oversensitivity of the cyclic in the heli_dual frame. By the way, I checked @PittRBM's repository for his version of Copter 3.4 with the Dual-Heli library which he is running on his synchropter and it also has the expression where it is multiplied by 0.45 like the Heli_single frame.

Version

latest Copter 3.5.X

Platform

[ ] All
[ ] AntennaTracker
[X] Copter
[ ] Plane
[ ] Rover
[ ] Submarine

Airframe type

helicoter tandem and transverse

Hardware type

Pixhawk

Logs

No logs

@

@bnsgeyer bnsgeyer changed the title Overly sensitive swashplate response to cyclic inputs for Dual heli frame ArduCopter-Overly sensitive swashplate response to cyclic inputs for Dual heli frame Sep 20, 2017
tridge added a commit to tridge/ardupilot that referenced this issue Oct 2, 2017
thanks to bnsgeyer for noicing this in issue ArduPilot#6977

this will break existing dual-heli setups, but there are so few people
flying them so far that I think it is a worthwhile change
@tridge
Copy link
Contributor

tridge commented Oct 2, 2017

you're absolutely right, thanks! I've created a PR for it here:
#7026

tridge added a commit that referenced this issue Oct 10, 2017
thanks to bnsgeyer for noicing this in issue #6977

this will break existing dual-heli setups, but there are so few people
flying them so far that I think it is a worthwhile change
@auturgy
Copy link
Contributor

auturgy commented Oct 15, 2017

Can this be closed?

@OXINARF
Copy link
Member

OXINARF commented Oct 18, 2017

Yep, fixed by #7026.

@OXINARF OXINARF closed this as completed Oct 18, 2017
ChrisBird pushed a commit to ChrisBird/ardupilot that referenced this issue Oct 29, 2017
thanks to bnsgeyer for noicing this in issue ArduPilot#6977

this will break existing dual-heli setups, but there are so few people
flying them so far that I think it is a worthwhile change
bnsgeyer pushed a commit to bnsgeyer/ardupilot that referenced this issue Nov 7, 2017
thanks to bnsgeyer for noicing this in issue ArduPilot#6977

this will break existing dual-heli setups, but there are so few people
flying them so far that I think it is a worthwhile change
rmackay9 pushed a commit that referenced this issue Nov 8, 2017
thanks to bnsgeyer for noicing this in issue #6977

this will break existing dual-heli setups, but there are so few people
flying them so far that I think it is a worthwhile change
rmackay9 pushed a commit that referenced this issue Nov 8, 2017
thanks to bnsgeyer for noicing this in issue #6977

this will break existing dual-heli setups, but there are so few people
flying them so far that I think it is a worthwhile change
fnoop pushed a commit to fnoop/ardupilot that referenced this issue Nov 26, 2017
thanks to bnsgeyer for noicing this in issue ArduPilot#6977

this will break existing dual-heli setups, but there are so few people
flying them so far that I think it is a worthwhile change
AlexeyBulatov pushed a commit to emlid/ardupilot that referenced this issue Jun 1, 2018
thanks to bnsgeyer for noicing this in issue ArduPilot#6977

this will break existing dual-heli setups, but there are so few people
flying them so far that I think it is a worthwhile change
AlexeyBulatov pushed a commit to emlid/ardupilot that referenced this issue Jul 2, 2018
thanks to bnsgeyer for noicing this in issue ArduPilot#6977

this will break existing dual-heli setups, but there are so few people
flying them so far that I think it is a worthwhile change
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants