Tricopter always rolls hard right

I’m having problems getting a stable first flight with a tri-copter that I built from plans.

Hardware: Pixhawk
Software: ArduCopter 3.2.1
Radio: Spektrum DX8
Receiver: OrangeRx R620X + R110X satellite
uBlox GPS and Compass
ESC: HobbyKing 20A UBEC w/ SimonK firmware

History: My first flight attempt used the Spektrum satellite receiver. It immediately corkscrewed on takeoff, and I learned in a hurry that I needed to set RC7_REV to -1 because my tail gimbal servo was backwards.

Then I switched to the OrangeRX receiver + satellite as I wanted full range. It seemed my controller axes were set wrong, likely thanks to how Orange sends this via SBUS; I needed to set:

RCMAP_ROLL 2
RCMAP_PITCH 3
RCMAP_THROTTLE 1
RCMAP_YAW 4

Binding the radio with a full -150% negative throttle now results in proper RC failsafe. I then reset my radio to -100% / +100% on throttle, re-calibrated my radio and ESCs.

When trying to fly the copter in Stabilize mode, I now see that the left motor spins faster than the right, so when gently increasing the throttle, the left side lifts off first. It seems to want to roll 30-45 degrees right. This often causes it to crash on the ground. Adding full left aileron stick doesn’t counteract this at all. To try to see if it was applying a backwards correction, I duplicated the same test, but lifting the right leg by hand to start it in a left roll, the intention being to see if it would want to roll left. It didn’t; it still wanted to roll right.

I did an accelerometer re-calibration, and I’m still getting the same error. Giving it a burst of throttle to get it clear of the ground, I noticed that it appeared fairly stable in terms of pitch and yaw, but behaved as if it was commanded to roll 30-45 degrees right, and it would just fly right at high speed. Left aileron stick did nothing. I did not attempt controlling it with the rudder stick to steer it, but instead brought it down with throttle and crashed it.

This just seems weird. Even if something were mechanically wrong with the right motor, I’d think the software should see the large right roll and either decrease left motor speed or increase the right speed. I’m sure the props are all the same and all motors spin CCW. If a control were somehow reversed, I’d expect the copter to flip, but it doesn’t do that. If left to its own devices, it will just want to hold a constant right roll.

Looking at the log file for ATT, I see that when it is on the ground, it has a desired roll of 21, actual roll close to 0. After takeoff, desired roll shoots up to 45 and actual roll catches up with it. I thought the docs said these were tenths of degrees, but if they were whole degrees, then this definitely agrees with observed behavior. The log file shows an aborted flight, followed at the end by the flight in question. (And thanks to Google Earth, I can see exactly where it crashed into a small bridge!) I’m going to try to attach it.

I noted in the release notes possible problems with RCMAP. Could this be causing what I’m experiencing?

Any help would be greatly appreciated.

Ooops. The post title should read: Tricopter always rolls hard right.

It is too late to edit the post. I’d appreciate it if a mod could please change that.

I’m doing some more analysis on the logs, and I found that something seems to be wrong with the radio config, but something else is happening.

Right now, with the aileron stick centered, roll is 1503. Full left gives me 1930. Full right gives me 1078. I think this may be backwards.

Due to RCMAP, my roll channel is 2. As I applied throttle, my RCIN C2 reported 1513 (close to center). I noticed the left motor coming up, I began adding more left aileron stick until it was full, and RCIN C2 went to 1930. So I think I ended up commanding it to have full right roll.

Looking at ATT, it was only after I started adding “left” aileron that was likely being interpreted as “right” that desired roll went from 21.70 to 45.00. So I’m guessing my adding left aileron made things much worse, and I need to do something to change the direction.

But what I don’t understand is why desired roll was 21.70 with the aileron stick neutral. The tri-copter really wanted to take off with a strong right roll, and even if I kept the aileron stick centered, it would still have had problems.

I’m going to say you have some sort of issue with your RC mapping or a mixing issue. If you look at the attached plot of a portion of your log, the green line is your left motor and the red line is your right motor. So when the green is larger than the red, the tricopter will roll to the left. This is what the Pixhawk is sending to the motors.

Now the blue line is the channel 1 RC input the Pixhawk is seeing fed to it. You’ve posted that your channel 1 is the throttle, but the plot doesn’t show it acting like a throttle input. It acts more like a roll control. When it increases the right roll is commanded and they track very well. Also a throttle input usually shows a lot of up and down as a pilot adjust. That’s not present here.

So, I’d look to see if your RC Tx is doing any mixing and double check your RC mapping.

The way I’d approach troubleshooting this is to take the props off and hook the tricopter up to Mission Planner. I’d bring the motors up to a modest idle then input strong rolls and pitches. You should see the appropriate motors speed up and slow down. I’d guess you’ll see something reversed. And at the same time look in Mission Planner to see what the actual PWM values are.

Thanks for the reply. I can say, though, that C1 matches exactly what I remember doing with the throttle stick. I slowly increased the throttle, and when it looked like the copter was going to topple over, I gave it a lot more throttle so it would get airborne. Once it started flying away rapidly to the right due to the roll, I brought the throttle down in an attempt to land it before it got away. Unfortunately a small bridge got in the way…So I never tried to level it out.

While I’m thinking it likely that the aileron stick is reversed, and the full left aileron I gave it translated into full right roll, I’m very concerned that ATT shows a desired roll of 21 degrees with the aileron stick neutral. I will give it a try without props, which would confirm if the aileron stick is reversed.

I suggest you plot the three values I did, Chan1, Chan2 and C1 and have a close look at the result. You may change your mind. If you look at the image I posted, it only shows a small portion of C1, which is supposedly your throttle input to the Pixhawk. Notice that it stays EXACTLY at mid-position when it’s not otherwise deflected. And when it is deflected your motor differential tracks precisely with it. That’s extremely suspicious in itself.

What you don’t see in the image, but can if you look at the plot yourself, is that C1 never starts up from zero as a throttle signal would. It starts at mid-position. That’s an aileron control signature.

OtherHand, thanks for taking a look at this. I went back and examined the chart. It seems that for some reason, you are plotting C1 on the left axis and the other parameters on the right axis. C1 starts off around 1085, which is the lower limit, not the middle. Due to a scaling issue with the chart, though, it is drawing it in the middle.

Also, I did a props off test. My throttle stick definitely controls all three of them. (And, in the radio calibration screen of MP, moving the throttle stick causes the throttle channel to move.) But because the AP wants the left to spin faster, the right prop stays at a minimum speed. You have to increase the throttle past a certain point before the right prop starts spinning any faster than the minimum. If you plot RCOUT Chan4, the tail, it likewise moves with C1, which I’d expect if it were the throttle.

I did some more research and I see other people with the same problem. The common factor seems to be RCMAP. If you’ve got a Spektrum and are using OrangeRX with SBUS output, the channels get swapped. You can’t fix it on the Spektrum, so RCMAP is the only option.

http://ardupilot.com/forum/viewtopic.php?f=100&t=12692 - This person noted a strong right roll. The solution seemed to be hard-wiring the channels and avoiding RCMAP.

http://ardupilot.com/forum/viewtopic.php?f=100&t=10828 - This person had a strong right roll. Note: the graph shows a desired right roll of around 22 degrees, which is exactly what I saw. The solution seemed to be using a PPM encoder and getting rid of RCMAP.

I originally tried my copter using a Spektrum satellite. I didn’t notice the right roll. The tail servo direction was backwards. It went into a flat spin. If this roll problem were present I’d have thought it would flip, and I didn’t see that.

If at all possible, I’d really prefer not to use a PPM encoder. I’d also prefer not to use a single Spektrum satellite, as that isn’t a full range solution. Is there any way to make RCMAP work?