ArduPilot / ardupilot

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

Quadplane: Octo "I" Configuration Support #10809

Closed 1iggy2 closed 5 years ago

1iggy2 commented 5 years ago

### Feature request

Is your feature request related to a problem? Please describe. There is not an option for an Octo I (as in India) configuration of motors in the Copter/Quadplane Q_FRAME_TYPE. I see there is an H configuration but due to the geometry that won't be compatible.

Describe the solution you'd like I'd like to see the addition of an Octo I class or an ability to rotate the Octo H class. Or an option in MissionPlanner to create custom layouts of motor placements.

Describe alternatives you've considered I was looking for a guide to create my own custom frame class (https://github.com/ArduPilot/ardupilot/issues/908) but I did not succeed in finding it. I am not able to alter the Quadplane's geometry.

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

Thank you

auturgy commented 5 years ago

Octo “I” will be dynamically the same as Octo “X”. Please try that.

1iggy2 commented 5 years ago

Octo “I” will be dynamically the same as Octo “X”. Please try that.

That was my assumption, our project team had a safety check with an adviser and they said for a craft of our size (10lbs, 32 inch width, 20.5 inch length) that is not a good assumption. I should have included that information originally. Does that change anything?

Here is an image of our hover rig, out of page and to the right is forward. HoverRig

auturgy commented 5 years ago

Doesn’t change a thing.

Regards,

James

On 14 Mar 2019, at 12:27 pm, 1iggy2 notifications@github.com wrote:

Octo “I” will be dynamically the same as Octo “X”. Please try that.

That was my assumption, our project team had a safety check with an adviser and they said for a craft of our size (10lbs, 32 inch width, 20.5 inch length) that is not a good assumption. I should have included that information originally. Does that change anything?

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or mute the thread.

1iggy2 commented 5 years ago

Doesn’t change a thing. Regards, James On 14 Mar 2019, at 12:27 pm, 1iggy2 @.***> wrote: Octo “I” will be dynamically the same as Octo “X”. Please try that. That was my assumption, our project team had a safety check with an adviser and they said for a craft of our size (10lbs, 32 inch width, 20.5 inch length) that is not a good assumption. I should have included that information originally. Does that change anything? — You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or mute the thread.

Hello, I was going through the process of writing my own configuration. Our safety adviser is concerned that the craft will not be able to balance the moments if the configuration is not set for our layout. I edited it here (https://github.com/1iggy2/ardupilot/blob/master/libraries/AP_Motors/AP_MotorsMatrix.cpp) lines 657-666. Is that the only edit I needed to make to include the new frame type? Also how do I compile the library into a file I can flash onto the Holybro Pixhawk 4 and how do I flash it onto the board. Currently my plan is to use QGroundControl to flash custom firmware. What file type does it need to be and how do I compile the code into that file type?

Sorry to be a bother about this, Cameron

auturgy commented 5 years ago

I can argue with your supervisor another time :) The most succinct way to answer your questions is https://discuss.ardupilot.org/t/custom-motor-mixing-calculator/38035 And have a look at the related videos Chris uploaded to his YouTube (iforce2d).

Regards,

James

On 17 Mar 2019, at 6:13 am, 1iggy2 notifications@github.com wrote:

Doesn’t change a thing. Regards, James … On 14 Mar 2019, at 12:27 pm, 1iggy2 @.***> wrote: Octo “I” will be dynamically the same as Octo “X”. Please try that. That was my assumption, our project team had a safety check with an adviser and they said for a craft of our size (10lbs, 32 inch width, 20.5 inch length) that is not a good assumption. I should have included that information originally. Does that change anything? — You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or mute the thread.

Hello, I was going through the process of writing my own configuration. Our safety adviser is concerned that the craft will not be able to balance the moments if the configuration is not set for our layout. I edited it here (https://github.com/1iggy2/ardupilot/blob/master/libraries/AP_Motors/AP_MotorsMatrix.cpp) lines 657-666. Is that the only edit I needed to make to include the new frame type? Also how do I compile the library into a file I can flash onto the Holybro Pixhawk 4 and how do I flash it onto the board. Currently my plan is to use QGroundControl to flash custom firmware. What file type does it need to be and how do I compile the code into that file type?

Sorry to be a bother about this, Cameron

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or mute the thread.

rmackay9 commented 5 years ago

Is it really the same as an X though? I suspect an X will work fine but it does look like an H that's been rotated 90 degrees. I suspect you may be able to swap the roll and pitch factors of an H to get what you're looking for.

auturgy commented 5 years ago

The only difference between X and H is yaw response (frame twist countering the desired response), so motor directions are reversed. Geometric asymmetry is dealt with by separating roll and pitch gains. Hence a H rotated 90deg is dynamically a stretched X: an X with different pitch and roll gains. What we probably should clarify is that ArduPilot H is actually a sideways H (motor arms lateral not longitudinal), so “capital I” is probably ArduPilot H. http://ardupilot.org/copter/docs/frame-type-configuration.html

Regards,

James

On 18 Mar 2019, at 10:43 am, Randy Mackay notifications@github.com wrote:

Is it really the same as an X though? I suspect an X will work fine but it does look like an H that's been rotated 90 degrees. I suspect you may be able to swap the roll and pitch factors of an H to get what you're looking for.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or mute the thread.

rmackay9 commented 5 years ago

Wow, I have never seen that wiki page (at least not recently). We need to get rid of those motor order diagrams and instead refer people to this page.

The X and H are the same (except for yaw) for a quad but not for an OctoCopter..

1iggy2 commented 5 years ago

Wow, I have never seen that wiki page (at least not recently). We need to get rid of those motor order diagrams and instead refer people to this page.

The X and H are the same (except for yaw) for a quad but not for an OctoCopter..

So rmackay9 you are claiming that the assumption of X being the same as H is not a good one. If you see where I forked the code here you can see how I added the functionality I desire. If I build and flash that code to our controller will Mission Planner's full parameter list show an option for that configuration? If not I will replace the H configuration with our desired code. My team is working on figuring out how to build the code. I've noticed the ArduPilot wiki link for building the code is sort of lacking. Can you help us with compiling the code by either explaining it or pointing us to a good resource? We will have to edit the code in some way to turn off two of the vertical motors in the beginning of the transition from vertical to horizontal flight due to some aerodynamic interferences. Would you point me to the location of the transition code also, if you don't mind. I plan on digging but if you happen to know you can save me some solid time. Thanks for hopping in here to help also, it's amazing to be able to communicate with the lead developer of the program.

Sorry for all the requests, Cameron