I’m trying to control my quad copter indoor with scripts on Raspberry Pi. I’ve successfully mounted my quad with optical flow and a separate rangefinder, and I’ve made it to fly in loiter mode with my RC controller in GPS-denied conditions. And I followed the steps in The copter does not takeoff in Guided mode and EKF_GPS_TYPE = 3 (optical flow) , I am able to takeoff with my script!
But here comes the problem. Whenever the drone has took off, I would receive ‘EKF variance’ message from Mission Planner, and an ‘Err: EKF_CHECK-2’ was found in the log. The copter will then trigger the failsafe and switch to LAND.
I’m facing this issue with Copter-3.52 on my quad copter, and both Copter-3.52 and the latest Copter-3.6-dev with SITL (I disabled GPS and enable a virtual optical flow and a virtual rangefinder on SITL). I’ve also tried both EKF2 and EKF3, but the problem still exists.
Any help will be appreciated. Thank you!
Here’s a log of a bench test, and I did it without propellers. The first time I tried to arm the drone, lift it manually to tens of centimeters and then received an Err: EKF_CHECK-2. The second time I run the script, the drone simply arm and then receive an Err: EKF_CHECK-2 and disarmed.
Did you set EKF_GPS_TYPE -> 3 ?
Yes I did. And I believe that should be EK2_GPS_TYPE or EK3_GPS_TYPE in Copter-3.5. I had several successful flights with my RC controller before trying to control the drone with my Raspberry Pi.
Yes, I have. And I followed the configurations as you mentioned in it, but the problem still exists.
I am testing with SITL, and now I found something very weird:
If I start the SITL at
lng = 0, lat = 0 like this
./ArduCopter.elf --home 0,0,0,270 --model quad, then right click on the MissionPlanner map near
(0, 0), the copter behaves very well without any errors.
However, if the SITL was started at
lng = -35, lat = 149 (this location is in the SITL documentation) like this
./ArduCopter.elf --home -35,149,584,270 --model quad, the simulated copter will takeoff, but when it’s in the air, it will report an ‘EKF_CHECK-2’ error.
I’m sure I have set GPS_TYPE = 0, but it seems that the copter is still receiving position information. Is this caused by SITL? I will do another bench test on my real copter tomorrow.
Humm, maybe something has changed since, I could set home using right click from any locations on SITL without errors… Will have to check this one…
For the live test:
Just make sure you get your home fixed before arming. And I recommend you “walk” the quad around -like a square pattern- making sure it shows the same on display and the altitude is good as well. Thean take-off with radio in loiter and switch to guided and send some goto within the square you walked , then you can d land and try takeoff guided.
I had several tests on my real copter today, and it worked! There seems to be something wrong with my SITL.
And now I have another problem. How can I control the yaw in script with optical flow and rangefinder? I tried condition_yaw in Randy’s red-balloon finder, it works with SITL, but my real copter doesn’t respond to the command. Perhaps I should open another topic for this