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

Coaxial Helicopter Support #22083

Merged
merged 9 commits into from
Sep 28, 2023
Merged

Coaxial Helicopter Support #22083

merged 9 commits into from
Sep 28, 2023

Conversation

MaEtUgR
Copy link
Member

@MaEtUgR MaEtUgR commented Sep 14, 2023

Solved Problem

When working on a coaxial fixed collective pitch helicopter project I added back support in control allocation.

Solution

  • Add control allocation airframe (CA_AIRFRAME) 12 for coaxial helicopters.
  • Allow configuring 2 swash plate servos which is not enough for a normal helicopter with collective pitch but necessary to support the fixed collective pitch coaxial helicopters.
  • Adjust a copy of the helicopter allocation for the coaxial use case. These are separate commits to simplify the review of the history.
  • Refactor some spacing in the original helicopter allocation.

Changelog Entry

For release notes:

Feature: Add back support for coaxial helicopters with the new actuator allocation
Documentation: Need to add at least a paragraph to https://docs.px4.io/main/en/frames_helicopter/

Alternatives

We could also ...

Test coverage

This was successfully tested on two coaxial helicopter prototypes with fixed collective pitch propellers and two swash plate servos. There was no obvious issue with the allocation found.

Context

Coaxial helicopters were supported previously by PX4 with the old mixing system. I have never flown such a vehicle with the previous implementation but added back support.

FYI @ryanjAA

@MaEtUgR MaEtUgR requested a review from bkueng September 14, 2023 14:31
@MaEtUgR MaEtUgR self-assigned this Sep 14, 2023
@hamishwillee
Copy link
Contributor

Documentation: Need to add at least a paragraph to https://docs.px4.io/main/en/frames_helicopter/

You're my hero. It would be good to include a screenshot of the actuator setup, a build log. I'm not sure how much variation between coaxial helicopters is allowed but if there is some flexibility it would be good to state what that is - I mean "if I build a coaxial helicopter how different can it be from your one, and if it can be different by how much and in what ways before this all falls over.

Lastly, what special tuning is needed for helicopters in general, and this one in particular.

bkueng
bkueng previously approved these changes Sep 15, 2023
Copy link
Member

@bkueng bkueng left a comment

Choose a reason for hiding this comment

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

We could move the swash plate into a shared class, but this is fine for now.

px4_fmu-v5_stackcheck is slightly over:

/opt/gcc/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../../arm-none-eabi/bin/ld: region `FLASH_AXIM' overflowed by 589 bytes

This is required to support fixed pitch propeller helicopters that have
no collective but only cyclic pitch with two degrees of freedom and
hence only two servos.

The amount of thrust in the body z axis is then controlled using the
motor speed which makes particularly sense on coaxial helicopters
that need to control yaw with changing motor speeds already.
It's now just a copy of the helicopter such that changes get well
visible in the history.
This had to be done for the integrators to work at all.
@MaEtUgR MaEtUgR force-pushed the maetugr/coaxial-heli branch from 25beab9 to ff3458b Compare September 27, 2023 14:32
@bkueng bkueng merged commit 8ea04b0 into main Sep 28, 2023
@bkueng bkueng deleted the maetugr/coaxial-heli branch September 28, 2023 06:55
@DronecodeBot
Copy link

This pull request has been mentioned on Discussion Forum for PX4, Pixhawk, QGroundControl, MAVSDK, MAVLink. There might be relevant details there:

https://discuss.px4.io/t/px4-helicopter-support/34805/3

@DronecodeBot
Copy link

This pull request has been mentioned on Discussion Forum for PX4, Pixhawk, QGroundControl, MAVSDK, MAVLink. There might be relevant details there:

https://discuss.px4.io/t/unable-to-locate-airframe-15001-esky-big-lama-v4/31130/6

@bayetan
Copy link

bayetan commented Nov 4, 2024

I was very happy to see this solution but struggled to implement it in qGroundControl GUI. For others that might be looking as well, you'll have to goto "Parameters" and change "CA_AIRFRAME" to implement this solution.

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.

5 participants