Jumper Xiake 800 Flight Controller

I’m having reset/brown out issues as well using DJI air unit with the built in sbus. I see your issue was a tilt servo then the other started acting up? Maybe I’ll try unplugging one to see if that solves the issue and if it does replace both tilt servos. What about the wing servos? Are they the same as the tilt ones? Does the tilt servos seem low quality?

I recommend checking them with a servo tester. I got yesterday my third & last ordered Xiake. One of the tilt servos sounded rough. I checked it with the servo tester & it was fine. The FC might have an issue…

Small information: 4000mah lion packs will fit with the 3d printed canopy. I didn’t check handling in flight & cg.

1 Like

I also bought this interesting VTOL aircraft. But because I am Ardupilot newbie and and because of the missing documentation I have now the following problems:

  1. I want to connect the AVATAR WALKSNAIL HD FPV system and I can’t get the OSD to work. Which parameters do I have to set on which serial port (is there maybe already a Serial Port overview)?

  2. Through the different attempts I messed up the original parameter set (and unfortunately didn’t make a backup before). Could someone please send me the original parameter set?

1 Like

Hi Martin,

here is my original parameter set.

Cheers,

Nick
Xiake 800 Factory Parameters.param (21.7 KB)

1 Like

I think serial 2 is the right port. Maybe this will work for you: DJI Air Unit O3 and MSP DisplayPort OSD - #5 by accek

Hi Nick,

thanks a lot - I will start again with this.

Regards,
Martin

I am now unsure, because there is the talk of Arduplane 4.3.x, but I have on the XIAKE only the version 4.2.2.

Clearly is time to update the firmware.

Can I move the GPS out of the battery bay to give me more room and onto the fuselage or do I need to keep it center mass?

Is there anyway to log this with the FC if that’s causing that? I’m not that knowledgeable about ardupilot

You can move it out. The original design had it on one wing tip

Yes, there is the possibility. See Logs — Plane documentation

Ok, but where to get the right firmware??

The firmware is here probably not the problem. Maybe hardware or wiring. Did you let the servos exercise with a servo tester?

These wing servos don’t sound good? Jumper 800 vtol wing servos don’t sound right. Is that causing my brown out? - YouTube

The servo doesn’t strike be as sounding particular bad. I think mine sound similar to yours.

1 Like

Apologies for not giving an update for a while. A fair bit has happened with my efforts on this plane, and there are still considerable problems. Key issues:

  • the MCU on the JumperXiake800 is not a STM32F405, which is what the ArduPilot firmware build is expecting, but a CKS32F405, a clone of the ST part. More on that later
  • the lack of the compass can lead to incorrect yaw initialisation on transition, especially if there is any significant wind. That can lead to very bad roll/pitch estimation and a crash.

Yaw Estimation
I did my first transition flight a couple of weeks ago and it didn’t go well. There was about 5 knots wind for the transition, and the plane had significant sideslip in the transition. This led the EKF3 GSF yaw estimator to get a bad pitch estimate:


Often ArduPilot users underestimate the importance of a yaw source to a roll and pitch estimate. The yaw is needed as the state estimator (no matter whether it is an EKF or some other estimator type, such as DCM) need to correct the accelerometer readings for the forces caused by accelerations. The primary source of these corrections is the GPS velocity. The GPS velocity is in earth frame (ie. it tells you the amount of North, East and Down velocity). The correction needs to be made in body frame (Front, Right, Down components). To apply the GPS velocity corrections you need to rotate the velocity from earth frame to body frame. That requires a yaw.
Normally ArduPilot gets yaw from one of 4 sources:

  • a compass
  • a GPS-yaw setup (two GPS antennas spaced far enough apart with the right sort of GPS module to support yaw estimation, this requires expensive GPS modules)
  • an inertial yaw estimate called GSF (Gaussian Sum Filter) that comes GPS velocity with IMU data to estimate yaw
  • a yaw estimate directly from GPS velocity that assumes the vehicle has zero sideslip

We do of course support fixed wing aircraft without compasses and a lot of people use them, but a normal fixed wing aircraft can make a pretty strong assumption about zero-sideslip which allows for fairly reliable yaw estimation. A quadplane in hover doesn’t have that, so when the JumperXiake does it’s takeoff and forward transition the only option for the initial yaw estimate is the GSF. The GSF relies on good quality IMU and GPS velocity data. Unfortunately the Jumper uses a fairly low quality IMU (a MPU6000) with a low quality GPS and the GSF estimate can take quite a long time to converge properly.
Note that this isn’t just a problem with the 4.3 firmware. If I look at one of the logs that was on my JumperXiake from it’s test flight by Jumper before shipping you can see a significant roll/pitch estimation issue:


that is about a 10 degree roll estimate discrepancy between EKF3 and DCM. The wind estimate in the log shows low wind.

STM32 vs CKS32 MCU
After the problems I documented earlier with brownouts due to problems with the tilt servos Jumper offered to send me replacement servos (thanks @tinyspot !).
When they arrived I found it was a much bigger box than I had expected, and in fact included a full replacement airframe! Very generous of Jumper.
Given the yaw issues, I setup the replacement plane with a compass, using a Matek M8 GPS. While setting it up I kept getting watchdog resets and spent about two days trying to find the cause. The results didn’t make any sense as I kept getting hard faults in the SPI thread that handles the MPU6000, but it seemed to depend on memory allocation in other threads. This sort of thing is normally a sign of a memory corruption bug, but I didn’t manage to track it down.
It was at this point I opened up the flight controller on the first plane and found this:


The significance of this is that the MCU is not an STM32F405 which is what ArduPilot on this aircraft is built for, but a CKS32F405. CKS is a clone STM32 maker (see http://www.cksmcu.com/en/index.html ) and unfortunately their MCUs are not quite the same as the STM32 they copy. Given the very odd behaviour I’m seeing I suspect that the hard fault I’m seeing is a result of a subtle difference between the STM32F405 and the CKS32F405. My best guess is it relates to some properly of the CCM memory.
Unfortunately there are no english language datasheets or reference manuals for the CKS32F405. It isn’t even listed as an available product on the english version of their website.
I wonder also if the reboots with the tilt servo problems are also related to the CKS32, for example a different MCU brownout handling setup?
Right now I’m a bit stuck on this plane. One thing I can strongly recommend is that if you have one of these planes that you only fly it in very low wind. The plane itself can probably handle quite a bit of wind, but each flight will be a lottery on the yaw estimation if there is significant wind, and if the yaw estimation is bad then you can get very bad roll and pitch estimates, which is very likely to lead to a crash.

13 Likes

Many thanks, @tridge. When I ordered one, as a precaution I ordered a Matek F405 VTOL and some small compass modules (call it a gut feeling). I was planning on rolling the dice with the stock flight controller for a while, but from your work, I will upgrade the flight controller before flying it.

3 Likes

Waiting for a version w/o a Flight Controller and GPS module. Got plenty of good stuff to install. How about it @tinyspot ?

2 Likes