Hello, I've got a problem with APM and Raptor 50 heli

I trying to set up APM on Raptor 50 with Glow engine. I connect my JR RC control to APM next variant:

 RC                             APM

 rx                           in      out 

1 trotle(pitch) ---->     3        3      

2  ailer          ---->     1        1

3 elevator      ---->     2        2

4 rudder        ---->     4        4

my transmitter sets up in "airoplane mode"

 The essence of the problem: I don't understand how set up the swash plate. On helicopter installed 90 degrees swash plate  I tried different variants of degrees setup. For example:

servo1  90      (aileron??)

servo2  0       (elevator??)

servo3  180    (pitch??) 

ailerons works normal, but elevator and pitch mix some strange.  

 please help me....

p.s. Sorry for bad English

Views: 3426

Reply to This

Replies to This Discussion

I will give it a go today, Robert has a good plan, I was waiting for 2.4 release before starting, it has the best chance of working well.  

Sweet! I look forward to seeing the results.

Here's what Randy said about the issue in another thread.


"It's not terribly difficult to get a non-mixed input working but it's lower down on the to-do list so it won't be done for a while.

In case someone else wants to have a try at it - there are separate routines in the Heli.pde for both turning the ccpm inputs from the RX into separate roll, pitch, yaw and collective commands and the opposite of turning these commands back into ccpm outputs to the servos.  The catch is that then we would need to have a new set-up routine to capture min + max servo values, servo direction, etc.  At the moment, the set-up only works for CCPM."


Sounds like the routines for setting up the servos is designed around CCPM. The unmixed swashplate setup will apparently need entirely new setup routines.


This is getting a little over my head. I don't have ArduPilot hardware yet myself. I just recently ordered my first setup, and I'll be waiting for it for a while because it's a new APM 2.0 preorder (should ship this next week I think, judging by the order numbers they're posting on their status updates). I've just been doing all my flying in HiL mode to get a feel for how the software is supposed to work, using a barebones Arduino Mega 2560 as the platform until I get the real hardware.


Once I get my own hardware and get to play with the real thing, I'll have more insight into how the software's put together, and hopefully I'll be more help.

@Chris, All,

     That comment was from the old ccpm set-up which was much more complicated and actually required you to send in mixed signals from the TX.  I.e. the TX had to be set-up in helicopter mode.  That's been changed now so the TX sends regular unmixed signals just like it does for the quad.  So the solution is easier now.

Alrighty that's good news. Any insights on the scaling factors and how they're applied to the outputs, and on how to incorporate the setup for setting pitch angles and all that good stuff? It seems like we should be able to decouple the outputs easily enough, but scaling them properly is much less clear up front.

Might be a strange question, but I wonder if anyone has an actual flow chart drawn up for the code flow. This isn't a super hard problem mathematically, but without knowing exactly what path has been taken to solve it, and with the actual code being so spread out across so many libraries, modding it is going to take a bunch of reverse engineering

The scaling is actually quite easy.  If I knew exactly what I had to scale TO, I'd be done in 1 hour. I just haven't got my head around that yet.  It's that RC_Channel library, it's not clear.  It's a good library I think, it's just not clear, needs commenting.

While working on latest ACM 2.4 pull from Git, I find this problem, 

How do you enable show line numbers in Arduino 23 relax MacOS IDE? I can't find the options.

I have a compile error, ArduCopter.cpp:6388:2: error: #endif without #if

but, Arducopter.pde only has ~ 2150 lines??

Any Ideas?

There are so many #if #endif   conditions to check...

That's strange Mark.  I would suggest pulling from the download section and try compiling from that.  The GIT is in a constant state of flux.  You never know what you're going to get.  You could have pulled while somebody was in the middle of checking in changes.

Thanks Robert, I wish it was that easy.

I started with clean code, all was compiling fine with my changes before I applied my unknown Vodoo? 

I must have deleted a #if statement some where?

Current compile errors from code for new Frame_Config = Heli_90_Frame  for Raptors etc.

I can probably fix all soon but, the 1st one, I have spent hours on !. 

I usually compile after a few changes but this error got by me.

ArduCopter.cpp:6691:2: error: #endif without #if
ArduCopter.cpp: In function 'void heli_reset_swash()':
Heli_90:64: error: 'heli_rollFactor' was not declared in this scope
Heli_90:74: error: 'heli_pitchFactor' was not declared in this scope
ArduCopter.cpp: In function 'void heli_init_swash()':
Heli_90:110: error: 'heli_pitchFactor' was not declared in this scope
Heli_90:114: error: 'heli_rollFactor' was not declared in this scope
Heli_90:128: error: 'heli_servo_out' was not declared in this scope
ArduCopter.cpp: In function 'void heli_move_swash(int, int, int, int)':
Heli_90:194: error: 'heli_rollFactor' was not declared in this scope
Heli_90:195: error: 'heli_pitchFactor' was not declared in this scope
Heli_90:207: error: 'heli_servo_out' was not declared in this scope
Heli_90:211: error: 'heli_servo_out_count' was not declared in this scope
ArduCopter.cpp: In function 'void init_motors_out()':
motors_quad:32: error: redefinition of 'void init_motors_out()'
Heli_90:250: error: 'void init_motors_out()' previously defined here
ArduCopter.cpp: In function 'void motors_output_enable()':
motors_quad:39: error: redefinition of 'void motors_output_enable()'
Heli_90:257: error: 'void motors_output_enable()' previously defined here
ArduCopter.cpp: In function 'void output_motors_armed()':
motors_quad:47: error: redefinition of 'void output_motors_armed()'
Heli_90:270: error: 'void output_motors_armed()' previously defined here
ArduCopter.cpp: In function 'void output_motors_disarmed()':
motors_quad:154: error: redefinition of 'void output_motors_disarmed()'
Log:1: error: 'void output_motors_disarmed()' previously defined here
ArduCopter.cpp: In function 'void output_motor_test()':
motors_quad:185: error: redefinition of 'void output_motor_test()'
Log:11: error: 'void output_motor_test()' previously defined here\

I don't think I can help you with that, from here.

I might as well mention this here.  I've created a remote clone of the Arducopter project which I'll be using for this work.  I don't know if maybe we should all use it to avoid duplicating work?


(I haven't made any changes yet).

But, I think that you got a good idea to start with.  What I propose is to change all instances in the code of "Heli_Frame" to "Heli_Frame_CCPM".  This will represent our current code.

Then we make a new #define, but I would prefer to call it "Heli_Frame_Mechanical_Mixed" or "Heli_Frame_H1".  I want to make sure it's very clear what is what.  Which is best?  I think that "Heli_90_Frame" could be confused with 90° CCPM mixing, which does exist.  Some helis have 4 swash servos at 90°.  Yes, this means it's overconstrained, but for some reason it is done.

I would not change existing HELI_FRAME just use it as is, less change is better /easy?

HELI_H1_FRAME  seems less descriptive than HELI_90_FRAME,  Maybe HELI_NORM_FRAME?

Or maybe CCPM_FRAME and NORM_FRAME fewer characters, but still descriptive.

I am aware of 90° CCPM, but It is a special case that requires no Pitch servo, but uses 4 servos for collective mix (more power to move swash plate) similar to 120° CCPM mixing but at 90° 

I found the missing "}"  that caused Error #1, Whoo!

A lot of times its called single servo, CCPM_FRAME ........ SINGLE_SERVO_FRAME....although its a bit long in the name :)


DIY Drones Monthly


Season Two of the Trust Time Trial (T3) Contest 
A list of all T3 contests is here. The current round, the Vertical Horizontal one, is here

© 2016   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service