Saturday, October 27, 2018

Ground Station Setup For Converged IoT Platform

Antenna Cluster Planning

The mission scenario sketch example is in the following picture. The small matchbox at the lower left corner is the base station. The modeling is made in Blender. And, based on the mission scenario, the transmitter/FPV antennas are arranged without internal interference or obscuring/blocking signal line of sight.

Transmitter Setup

FrSky R9M 900mhz Long Range module is chosen as a substitute of TBS micro module to save modification in the QX7 transmitter itself. 10-pin, 1-meter ribbon cable connects TX pins to module. Breadboard jumpers tethers the module.

The Frsky R9M module can be set to output 500mW using Taranis transmitter's regular power pins without external power source. The flight video shows long distance dive without any transmitter RF glitches, which would manifest itself in fail safe mode level free-fall aborting diving. 

This flight sequence rehearses the mission plan, diving from 333 feet east, 444 feet north, ground distance 555 feet, air distance 1000 feet, relative to ground station. 3 flips above the landing patch area. Level traversal between 333 feet east, 444 feet north, and 333 feet straight east.

Video Receiver Setup

The Hyper Tough cigarette power plug is specifically chosen because it has very tight fitting to fix a suspected cause of crash of pilot's knee knocking the plug during flight.

Retractable USB-micro cable powers to the FPV receiver. Its host plug breaks out on the chassis column and is accessible for quick disconnect after craft landing to reduce heating of the receiver.
The FPV receiver explicitly based on the RX 5808 module is chosen because experiments on the FXT Triversity receiver had video "blueouts". The real fault point, including all previous blackouts, is the FXT Triversity receiver, not the FPV goggles.
The video output pin 6 is soldered to the AV yellow cable for video on the PCB. Pin 3 is ground. The tail end of the AV cable and the row of pins, including the pin base are encased together by the clear mounting tape. The male plug of the AV cable goes to FPV goggles. On the True-D receiver, the casing groove is sanded down to level the surface with the clips. Then 2 Velcro strips sandwich the clips and the flattened surface together.

The alternative RJX receiver without casing uses the 3/4 inch velcro strip to wrap around the lower corner LED as an anchor, then it goes over the bottom side of the receiver and up. There are 3 mistakes in the following 2 pictures though. First, the black Velcro traps heat. White Velcro should be used. Second, the antenna plugs make a natural tilt angle for the velcro strip to slide down on the RF cavity cover, but during a maintance, pulling back the Velcro also pull open the RF cavity. The wrapping should stop at the edge of the RF cavity. Third, I left the receiver on the hot roof top of my car with full power on it between flights in a summer noon heat, and the blackouts reappeared when signal is weak and there should be white snowy noises. I should have the habit of disconnecting USB cable from the chassis column right after landing the craft.

The retractable USB coiling mechanism needs to be removed as the picture-in-picture below. The right angle SMA adapter for the mushroom antenna needs to reverse the polarity with the inner core pin stem on both sides because both the mushroom antenna and the receiver side has the inner core pin hole. The patch antenna with 9.4dBi is the directional antenna projecting the craft's diving trajectory. The 45 degree SMA adapter is essential in making the near vertical radiation pattern.

The receiver antennas allow quick release folding. Just loosen up the lower antenna's 90 angle connector with 5-6 counter-clockwise twists, then fold the upper antenna backward 90 degrees and fold the the lower antenna backward 180 degrees.

Mod FPV Googles For AV Input

The FatShark Velcro sticker does not need to be removed. Just use an art class knife to cut a cross on the 4 outer bore holes, and the Hypertough #1 driver can unscrew the screws. For the inner 2 shallow holes, one wedge of the crosscut needs to be sliced off to give room for the driver. Before mod grinding begins, tape over the optical cavity and the MicroSD opening to block saw dust.
The small diameter rotary disk will grind the glass fiber of the RF module. Hollow out the fiber glass between the top and bottom header leads first, then polish away the solder until the art class knife can slide in between the RF module and the main board from the left edge to the center.
To prepare the AV cable, stick a piece of transparent mounting tape on the main board to temporary fasten the cable and adjust the cable leads. The ground lead goes to pin 3; Signal wire goes to pin 6, same as diversity receiver's pin-out order. Stick a piece of paper underneath pin 1 and pin 2 of the RF module to block power supply to the module.

Use the 1mm milling bit to notch the SMA antenna hole for the AV cable and thread the cable through the hole before soldering as above picture-in-picture. Tape the cable one on top of the temporary mount and another next to the SMA antenna base after soldering. 
After reassembly, to adjust the fitting, use cuticle scissors to slash the cushion tube and the foam laterally. Real human faces are not completely symmetrical and I need to remove the left side cushion to align my pupils to the center. Also removing the side cushion sections flattens the curve.

The original Makerfire off-brand EV800D has good DVR video quality and is a alternative substitute. The original version has the circuit board seen in the picture on the right. The USB charging port is fragile and can easily break when USB plug dangles on the side. The picture on the right has the repairing Picoblade plug. We can modify a USB sync cable to terminate with any plug the picture-in-picture on the right.

The worst case noise interfering with FPV feed is with 12-16V direct battery power supply to the Caddx Turtle cameras (v1, v2, and Baby) in the following video if you watch the original feed video file (download it then watch it on a video player instead of watching it online with online player because online video servers process out the noises to save their internet bandwidth).

The FPV feed is clear of interference lines when using VTX03's 5V aux power, which filters out low frequency ripples. But, the voltage sensor of the camera only operates between 10.0 and 12.0 volts. Any voltage outside the range has the idle display of "12V".

The Wolfwhoop power supply, with 10uH inductor, has the video ripple level between direct battery power and VTX03's aux power. The direct battery power has the same level of ripple noise as the Bluesky 5V power supply, which has a 4.7uH inductor. This is because that the Caddx and Runcam split camera systems have a internal switching converter to generate 5V when power supply isn't 5V, and that buck converter has the same oscillator 4R7 inductor circuitry as the Bluesky 5V power supply.

The ripple noise can not be eliminated with a 10uH inductor LC filter because the ripple frequency is similar or lower than the 10uH inductor working frequency. The ripple noise can not be eliminated with a electrolyte audio A/C capacitor because the ripple frequency, around 1MHz is much higher than the electrolyte capacitor's audio working frequency. The runcam system consumes 600mA, and can not be powered by VTX03's aux power supply, which is limited to 360mA. For this reason, the run cam needs dual Wolfwhoop power supply in parallel.

In-Car Battery Charging

Fight batteries should be warmed/cooled with car vent using a gardening wire to hook up the charging plug before charging in cold/hot temperatures. 

When the car engine is offline, the car battery voltage has a slight drop, so the flight battery charger needs to be set to output 1.2A instead of the usual 2A, to prevent low voltage cut-off during charging, which can happen in the middle of a mission. The ToolkitRC charger has a continuous USB power output suitable for FPV goggles

Tuesday, October 16, 2018

Blade 180 - Oxy 210 Rotor Characteristics

Product source is ebay seller amain. Item "OXY2-081 OXY Heli Carbon Plastic Main Blade 210mm (Black) (2)"

The airfoil profile is (NASA predecessor)NACA0015. The symmetrical airfoil is generally known to have the center of pressure CP at quarter blade width from the leading edge during cruise flight when attack angle is smaller than 2-3 degrees in research paper. As shown in the picture below, the CP point is at 17.5mm/4 = 4.375mm from the leading edge but the bolting is at 4.3mm, so, when the attack angle is very small, it has perpetual pitch suppression. The research measurement also shows that the airfoil has perpetual up-pitching torque at cruise attack angle of 6 degrees because of "center of pressure moving forward of the quarter chord". 

When the mechanical margin of error is added between actuator servos and actual blade position, the blade angle shifts as the following time line.

This means that large slop gap can result in an unstable craft. And in the above example depiction, the slop should be improved from 3.2 degrees to 3 degrees to escape the perpetual pitch suppression slump. And to avoid over-correction, the slop needs to be smaller than 2.1 degrees.

Thursday, September 6, 2018

Converged IoT Platform Operating Notes

Stabilization Mode Precedence

The FD411/CC3D flight computer can have 3 operating characteristics, passthru-manual, accelerometer-attitude, and gyro-rate. But, manual mode is not operable as seen in this video.
0:01 tilt right and backward
0:02 attitude mode to rescue
0:03 tilt right and forward
0:04 to attitude mode
0:05 tilt left straight
0:06 attitude mode
0:08 tilt backward
0:09 attitude mode
0:10 tilt forward
0:11 attitude mode
0:25 landing approach too high
0:35 backing off far and fast
0:40 good landing approach
0:53 touch down.
So, the OpenTX transmitter should engage a stabilization mode before the takeoff. 

The problem of erratic, forceful PID Integral over-correction is common through out nearly all helicopter flight computers. Example of the same problem is with Blade 230, in the video on the right, during the spool-up, the error rolling to the right is at 0:14 . This is because the PIDs are tuned for flying in air, but the ground contacts force the craft attitude out of the planned flight envelope. To overcome this problem, we cancel the PID process and use passthru-manual mode during spool-up. The spool-up RPM should be controlled by the pilot by the throttle proportion to ensure safety, but it should not automatically, eagerly engage attitude-accelerameter stablization when the throttle position reaches spool-up. The reason and the alternatives are discussed in . The spool-up throttle channel setup is pictured below. 


The main FD411 flight software gives the passthru-manual mode a channel switch while in the single PID profile; the CC3D software's different flight characteristic modes share the PWM fractions with the passthru-manual mode.

Why can't the craft level itself with just the accelerometer, avoiding gyro integration all together for the cyclic attitude control? Remember that accelerometer and gyroscope are physically the same device, the piezoelectric device, using Dr. Einstein's equivalence principle to detect acceleration equivalent of gravity. The counter acceleration from earth gives gyroscopic output dependent on boundary conditions for integration. The boundary condition is not consistent each time the MP6000 is powered up and each time the acceleration output is re-initiated because, as far as MP6000 is concerned, it is being propelled into sky and space at 9.8 m/s.s upward all the time. The result is certain bias shifts with each powering up of the craft and each time the pure-accelerometer mode is engaged. This extreme bias shift needs RC transmitter trimming the very extreme ends to counter balance it. This extreme bias shift occurs with both CC3D and FD411 setup. The cleaver math algorithm performed by CC3D and FD411 mixing gyro and accelerometer signals is the only solution for craft self-leveling control. 

To convert the fraction system to flight computer's PWM timing system, Betaflight/FD411 need to anchor the end points to the nearby 25 points of the 988us-to-2011us range, which is the range the OpenTX can reliably produce by FD411, as pictured below on the right; Librepilot/CC3D needs setting them to the 174us-1810us range because CC3D interprets the received signal with the formula 1.6 x ActualPWM - 1407 = interpreted value.

The actual PWM width (microsecond) as received and interpreted by the flight computer are
FD411       CC3D   
(-100.0+100)/200*(2011-989)+989 = 989
(   0.0+100)/200*(2011-989)+989 = 1500
( 100.0+100)/200*(2011-989)+989 = 2011
   (-100.0+100)/200*(1810-174)+174 = 174   
   (   0.0+100)/200*(1810-174)+174 = 992
   ( 100.0+100)/200*(1810-174)+174 = 1810

And we tie the SC switch up position to the spool-up throttle setting with the channel 6 SC switch as the picture below using a logical switch to stipulate the maximum spool-up throttle setting of -27. The -27 point gives the accelerameter-attitude mode RPM.

Checking swashplate leveling is needed after each hard landing and servo arm dislocating/re-positioning. To reduce pilot/operating error, we consistently use 3+1 profile-modes on flight computer and 3 modes on transmitter. to reduce pilot error and setting errors. There is no such thing of a reliable, field-improvised easy transmitter setup.

When the first mode is not skipped in the pre-prototype setting, as the lower cyan roll of the diagram below for CC3D, pilot may forget to switch to middle position when attempting to reduce time to takeoff to save battery life in the midst of enabling video recordings and operating other equipment. The result can be very bad crashes due to the high power applied for takeoff and the high speed drift of the manual mode. Video of this crash is on the upper right.

When transmitter and flight computer are out of sync, the takeoff can happen in gyro-rate mode. This happens even after a hand-tethered hovering test because the rate mode hovering can be successful without pilot knowing that the modes are out of sync, for that gyro-rate mode does have stabilization characteristics. Then the actual takeoff will, again, crash badly due to the high craft momentum nature of gyro-rate mode. Video of this gyro-rate mode takeoff is above on the right.  

Setting up 2 flight modes, in-field, in transmitter is also a bad idea. With FD411, we can be tempted to have a cruise-only mission with a single 2-position switch for aux3-channel7, for both arming and for accelerometer-attitude activation. In the field, you may think that the PWM for profile switching needs 40% weight to reach the 1250-1325 region at low position. And in that case, Betaflight would interpret the high position (2011-1500)*0.4+1500=1704, in gyro profile. So, you would take off at gyro-rate mode, surprised, confused, and crash, similar to the video above on the right.

CC3D has an alternative configuration to give stabilization precedence by arming the craft. But, we should not rely on transmitter disarming the craft to go into passthru-manual mode for swashplate maintenance. The craft is created by human and is equal to human, and it should be able to have a working mode that does not rely on human operated transmitter. The transmitter should be able to lose power at any time, and the passthru-manual mode should be fully functional. You may be tempted to workaround this problem by setting the craft to disarm itself whenever the transmitter loses signal, but this endangers the flight recovery after a brief signal loss because the disarmed craft will need re-arming midair to regain motor power, and re-arming loses the precious time in the middle of a crash landing. Humans created machines, but that doesn't mean that humans are superior to machine, and it doesn't mean that machines are superior to human. 

In the case of using arming to enter stabilization mode, the craft can not have swashplate maintenance once the craft has been armed after bootup; in the case of using independent aux channel to enter stabilization mode, the swashplate can be centered for checks and adjustments any time when transmitter is powered off. It is better when humans and machines can be independent of one another.

Indoor Hovering With RF Receiver With Proximity Cutoff

In the following video, XM+ receiver's LED starts out green, the transmitter antenna is shifted to create stronger radio coupling with the receiver at 0:01. The cutoff occurs at 0:02, the LED turns red, fail safe takes effect. The camera moves forward to zoom in to the receiver. The movement inadvertently shifts the transmitter antenna again , weakening the proximity coupling.  The cutoff is released at 0:07, and LED returns to green.

To avoid mid-air failure, the FrSky XM+ receiver requires putting transmitter on "range testing" mode before hovering in close proximity. This is not needed with Crossfire or R9M receiver, which does not have proximity cutff.  In the pre-prototype, the receiver sits on the pedestal as appropriate for the small, geared motor under 22mm diameter of stater, spaced across the cage. In production, when 4004  direct drive motor is used center in the cage, the receiver signal is severely jammed by the spinning motor. So, production build does not use the pedestal.

Acro+ And Rate Mode Throttle/Pitch Curves

For the acro+ and rate modes, to enhance the maneuverability on the expense of fuel efficiency, we set the hovering pitch to slightly lower than 5 degrees but higher than 4 degrees between the orange and green lift curves, so that the lift slope doesn't turn steep, which translates to harder hovering. Testing hovering with the new collective pitch has throttle point at 87 in 200 point scale when ESC is configured without governor. RPM of the new hovering pitch is 19% higher, 3107 versus 2607 of attitude mode. We may refer to these 2 different RPMs as 3100 and 2600, respectively, in further discussion for brevity.

According to NASA education page in build note, the square of the RPM growth 1.19x1.19=1.42 should require the inverse of this ratio of collective pitch because lift is proportional to pitch in overall trend in the NACA 0015 data sheet. So the new pitch angle in theory is 6.2/1.42=4.4 degrees. However, the Reynolds number changes with RPM, shifting from the aqua colored curve toward orange and green colored curves, suppressing lift coefficient at sub-6-degree angle but augmenting lift coefficient past 6 degree.
Hovering at 23 points, 23 points / 29.8points x 6.2 degrees = 4.8 degrees.

The maxium RPM of the 14 poles motor is 50,000/7 = 7143, so the hovering point is 200 x 3107 / 7143 = 87 . When you listen to the hovering RPM, 3107/60=51.9Hz, you hear 2 octaves higher harmonics multiplied by the 2 blades, 51.9x2x2x2=415.2Hz because this is the octave most people can hum and sing along. This frequency is the Baroque tuning frequency of A4 music note. The attitude mode hovering sound is conversely a F#4 note. These 2 pitches are the first 2 notes of the Dvorak New World symphony folk tune of the 1800s era, which means that you can validate the power-tran setup in the field just by humming the song and matching it to the tune of the craft switching between the 2 modes.

The collective pitch curve for diving should not be 0 because the helicopter's body provides drag and gives down cyclic pitch for the craft equivalent of elevator-down, as seen in the following video. The free fall from the antenna tip to the church spire, 0:08 to 0:19 is about 200m. The dive started next to the building , but the craft relented its position and drifted behind the building at the bottom of the dive.

To improve the dive precision, we will keep the lowest collective pitch at 8points x (6.2degrees/29.8points)=1.66 degrees to provide compensation, at the same time, using single rotor helicopter dynamics, converting collective pitch force to craft elevator tilting at high forward speed. Overall the curve goes from 8 points and increases 15 points every quarter of throttle range, ending in 53 points,  6.2 x 53 / 29.8 = 11 degrees.

The maximum throttle in acro+ mode climbing/punching should be smooth as the following video.
In summary, the difference between factory txt file and operating "diff all" output file is the 1 line addition of hardware ID and 3 lines of 3 servo PWM ranges
test@laptop201:~$ grep -v ^$ tmp.txt > tmp2.txt
test@laptop201:~$ diff Downloads/Converged-IoT.txt tmp2.txt
> mcu_id 006300543239510e34393435
< servo 2 1000 2000 1500 -100 -1
< servo 3 1000 2000 1500 100 -1
< servo 4 1000 2000 1500 -100 -1
> servo 2 1040 1960 1500 -100 -1
> servo 3 1050 1970 1510 -100 -1
> servo 4 988 1908 1448 100 -1

And, the difference between factory uav file and operating uav file is the 3 lines of 3 servo PWM ranges, plus 1 line difference of CC3D serial number. Example,
test@galliumos:~/Downloads$ diff Converged-IoT.uav /home/test/dive.uav
<         <hardware serial="000000000000000000000000" type="3c" revision="a5"/>
>         <hardware serial="54ff6b064883545328241887" revision="2" type="4"/>
<             <field values="2000,1000,2000,1000,2000,2000,1000,1000,1000,1000,1000,1000" name="ChannelMax"/>
<             <field values="1500,1500,1500,1000,1000,1000,1000,1000,1000,1000,1000,1000" name="ChannelNeutral"/>
<             <field values="1000,2000,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000" name="ChannelMin"/>
>             <field values="2057,1075,2000,1000,2000,2000,1000,1000,1000,1000,1000,1000" name="ChannelMax"/>
>             <field values="1565,1575,1500,1000,1000,1000,1000,1000,1000,1000,1000,1000" name="ChannelNeutral"/>
>             <field values="1057,2075,1000,1000,1000,1000,1000,1000,1000,1000,1000,1000" name="ChannelMin"/>

Dynamic Rotor Balancing And Setting

In build notes, we visually balanced the rotor for lower RPM 2607 to less than 0.03 grams precision, but the high RPM has imbalances not visible to the eyes. The first thing to take care of is the tightness of the rotor grips. For persistency, we set the blade draping angle to 80-90 degrees, as the video on the right shows. If the blades are over tightened, imbalance easily results in mechanical vibration. Then the mechanical vibration can be interpreted by PID loops and produce unprediectable flight characterristics. If the blades are too loose, PID loop actions are attenuated, resulting in requiring unpredictable, larger PID gains, such as the video on the right, where 40% extra PID gains are used on the cyclic controll.

Going from 2600 RPM to 3100 RPM requires fine tuning the rotor with hand tethered hovering. Here the test retains the original decal of the blades. 

  1. Fixed by cutting out a corner of 1 decal.
  2. When aggressively trimming the corner, it is over corrected and twitching reoccurs.
  3. Balance out the over correction by cutting the corner of the other decal.
  4. Moving on to removing the test decals. After removing all original decals, swinging re-occurs. So, the final fix use transparent scotch tape.

The conclusion is that one square centimeter tape makes all the difference. Thickness of tape 0.002-0.003inch = 0.005-0.0075cm, weight (assuming density 1g/cm-square) 0.005-0.0075 grams. This means acro mode needs precision balance 5 times higher than attitude mode.
But, weight, there are more problems. The warping of the 2 blades can be different when subjected to 3100 RPM's centrifugal force. The solution is to pick and match a pair that dynamically match the warping to each other. 

The match does not take blade ages into account. In the above example match, the older blade's color fades, but it is the best match picked out from 3 different sets of purchases. And the static warping mismatch is also disregarded. One warps up, the other warps down, but they balanced up when spun up to 3100 RPM. All the other blades from the 3 sets fail to match the lower blade in the picture. The only way to check the pairing is to spin them up to the full speed. And each pairing test needs to be checked with 2 different orientations of the grip installation. In the pictured example, only one orientation can produced a smooth spin. The other orientation always has vibration that can't be tuned out with scotch tape.

Takeoff Procedure Checklist

 The computerized equipment needs to be carefully integrated. Recent car models have computerized battery management and shuts electric circuit after 20-30 minutes of parking the car. If a base station video receiver is powered from a car and gets shut off in the middle of a flight, it poses a serious danger. The solution is to stop the car in N neutral gear and engage manual brake manually. But there are more safety problems that can be mitigated pre-flight. The video on the right is the confirmed tail failure due to prop ejection, which goes into left turn tail spin at 2:00 and continues until crash. There was no crash in the 11 minutes between 18:32 and 18:43 . It is distinguished from the radio loss free fall video in the Failsafe Setup section.

The correction for the tail prop ejection is for pilot to check the prop loose before every flight.

0. After arrival on site, put transmission on N gear (not D gear) and stop engine. Wire up ground station. Start FPV receiver and goggles and start recording.

1. Apply retaining torque on the craft's DFC bolts with a hex screw driver to probe any loose torquing.

2. Attempt to turn tail prop while holding tail motor to check detached adhesion. 

3. Power on goggles and start recording. This needs to happen before powering on craft because once you power on craft, there is a sense of urgency to take off ASAP to use maximum battery life, and you often forget to record the video footage that is valuable for locating craft after crash.

4. Plug in craft battery. Swashplate leveling check. As shown in previous topics, the transmitter needs to be ready for takeoff as soon as it is powered on, swashplate checking needs to be done while transmitter is off.

4. Check that FPV recording is in progress in the goggles. 

5. Check rough zero pitch and rough level of the swashplate. If not level and centered, dial servo arms to correct it.

6. Position the craft on takeoff surface. Blade should not be allowed to scrape grass, even with very insignificant thin twigs, because the initial spool up can bend the foldable hinges and throw off the rotor off balance and improperly dial the servo splines.

7. Put on FPV goggle. Turn on transmitter.  

8. Arm the craft.

9. Spool up the main rotor one click at a time to full hovering RPM at 1/8 stick. The craft should have no movement because the friction of the ground overcomes the main rotor torque, and the collective pitch is too low to counter craft weight that presses down the craft firmly on the ground. Slowly make the spool up so that the craft doesn't capsize due to unbalanced rotor with folded blades.

10. Continue throttling up to 1/4 stick. The craft should tilt on the cyclic axis and tail wag is expected. 

11. Between 1/4 and 1/2 stick, the craft will lift off with side way movements because the ground friction is suddenly releases. So, pilot should concentrate on the cyclic stick correction during this lift off. The lift off happens around 40% throttle stick even though the craft hovers at 50% half stick due to ground effect boosting lift efficiency. 

Failsafe Setup

Failsafe Mode free fall video below at 0:03, which initially turns the craft to the right due to sudden zeroing of collective angle/torque while tail prop momentum continues the right turn motion for a few seconds until tail prop stops, then the zero main torque produces left turn spin.
We have to keep the betaflight-CC3D internal arming signal high during failsafe because it is the reason the flight was recovered at 0:18 . Further more, to prevent accidental disarming mid-flight, , arming signal from the radio transmitter needs to be also stay high during most of the flight with any mode-PID-profile switch position when throttle position is not zero. 

The Failsafe flight characteristic is predictable in the failsafe test video because we set all servos to fixed 0 collective and motor to 0 throttle in Converged-IoT.uav . The predictable behavior allows recovery at 0:18 .

Landing Procedure

Acro+ and rate mode landing often results in capsizing due to the drifting nature of the rate mode as seen in the last few seconds of the video on the right when the pseudo touch down at 1:43 has a remaining altitude, maybe 1 foot, and the drift scraped the grass at 1:45 resulting in capsizing.

Aborting landing in rate/acro+ mode also often results in crash due to altitude drop with the big maneuvering nature of rate mode. Rate mode spot landing is often nearly impossible even fly line of sight. Here in the following video, the landing approach, trying to avoid the fence, is deemed to high at 0:05 in the video here below,
and the go-around at 0:06 results in steep increase in craft speed and altitude drop, resulting in crash. Seemingly smooth touchdown in rate mode can still capsize due to the general high speed approaching to the target in the last video on the right.
Forgetting about switching to attitude mode can occur during high work load situations such as combating high wind while locating a obstacle'd landing patch impromptu.
Flipping SwitchC to attitude mode for final approach should be trained into the pilot's reflex because attitude mode landing is appropriate in nearly all circumstances even the most unlikely ones, such as the following example.

And the PIDs, already configured with our production Converged-IoT.uav is as the following screenshot. CC3D setting attitude mode response at 180 degrees, which is the maximum, means that full elevator stick will pitch the craft 90 degree vertical relative to the ground. Rate and acro+ modes response 1000 degrees/s is the maximum in the "Insane" responsiveness region. All those mean that CC3D has full unlimited control of the craft, and the transmitter needs to scale it down or stipulate it for human piloting, like the  exponent setting in the following picture.

The trick to have near 100% success landing is to trim the aileron and elevator stick in attitude mode indoors to near zero drift. The trim for attitude mode is to compensate the imprecise/inaccurate attitude mode accelerometer leveling. In rate mode and acro+ mode, the accelerometer is not used, Outer Loop zero'd, so the trim is not appropriate. To achieve switching off the trim, the flight mode setting needs  to be as the picture on above, which switches off any trimming when SwitchC is in rate mode or acro+ mode.

High wind landing is often risky. In the following landing approach, I first tilted the head of the craft down so that I could see obstacles around the landing patch on the ground. I continued to keep the head down so that the camera points toward the ground from 0:12 to 0:22 while descending. I ended up facing wind and away from the landing patch because the wind is blowing toward the fence. I flew blindly because I was facing away from the fence and landing patch from 0:22 to 0:30 during final approach. I ripped off the FPV goggles at 0:32 to try to land line-of-sight, but I didn't have the training to fly LOS when the craft flies toward me at the landing target. I was disoriented at 0:37. It crashed.
The appropriate approach planning should be exercised to reduce the risk of landing in high wind as the following table.
This is the most favorable condition. Same with landing an airplane. The head wind slows down the craft. The craft elevator tilts downward to resist the wind. At the same time, the FPV camera points toward the ground for clear view of obstacles.

With crosswind, unlike an airplane, the drone does not need to change approach heading because the drone flies side ways just as fast as flying forward. So, the craft tilts side ways and forward at the same time  FPV camera points toward the ground for clear view of obstacles.

With tailwind, without changing approach heading, the craft needs to tilt its head up, pointing FPV camera toward the sky resulting in blind landing. If the pilot heads toward the wind to tilt the FPV camera down to see the ground, he is facing away from the landing patch flying backward blindly as seen in previous crash landing video. The solution is to change heading and convert the tailwind to cross wind. The field of view of the camera only approaches 180 degrees and less, so the side way approach needs a slight forward movement, and the craft lands slightly off the landing target.

With tailwind and slight crosswind, the heading should be perpendicular to the wind and heading toward the crosswind component of the wind. The landing target is with in the field of view of the camera. The craft tilts toward the ground to resist the crosswind at the same time the FPV camera points toward the ground for clear view of obstacles.

When crosswind mixed with headwind, no heading changes needed because there is no tailwind component to force the pilot to tilt the craft and the FPV camera toward the sky. This is the first and second condition combined. And not heading change needed for either component of the wind.

 To summarize, the montage of 36 screens of created/edited pages after installing OpenTX 2.3.10 is here below. The whole-transmitter-receiver configurations are in the first 2 rows and need to be reconfigured ever time a new transmitter or receiver is added. The whole-transmitter configuration page 2, 4, and 5 can be skipped because they are file browsers, global functions, and PWM alteration pages. The per-model configuration page 3, 4, and 5 are skipped because they pertain to non-computerized helicopter setups.

It is worth noting that the 36 pages don't need to be set up at once. For a hand-launched hovering test, one single mixer page is all that's needed to map singular throttle/pitch curves, assign fixed accelerometer profile, and add singular arming channel mix. As pictured on the right, the bare minimum pages serve the bottom rows for each mixer. When launch-from-ground and gyro/profile are needed later in the build, the other mix is then added on top of the bottom row for each mixer. Then the bottom rows are given the constriction switch (physical or logical) position.

Video Monitoring

pi@raspberrypi:~$ uname -a
Linux raspberrypi 5.4.51+ #1333 Mon Aug 10 16:38:02 BST 2020 armv6l GNU/Linux
pi@raspberrypi:~$ cat .bash_profile
sh /home/pi/
pi@raspberrypi:~$ cat /home/pi/
raspivid -t 0 -rot 180 -b 1700000 -w 640 -h 360 -o - | gst-launch-1.0 -v fdsrc ! 'video/x-h264,width=640,height=360' ! h264parse ! queue ! rtph264pay config-interval=1 pt=96 ! gdppay ! udpsink host = port=9000

Voltage Monitoring In-Flight

It can be inferred in the following video that Caddx Turtle's voltage OSD shows the voltage is floored to the nearest 0.5 volt. The 10+ second dive starts at 3:59 , and the on-board HD video here,
However, either Caddx Turtle or Runcam Split's voltage range is 10-13V. There is no 4S voltage monitoring.

FPV Fishbowl Optical Illusion

As an illustration, a 30-frame-per-second FPV feed in a tail-spin situation has the following 3 consecutive frames,

, and the craft appears to move from the left side of the road to the ball park on the right side of the road more than 210 feet between 2 frames of 0.033 seconds illustrated in the satellite photo on the right.

In the third frame to the camera failure, the camera points toward the south east corner of the park; in the second to the last frame, the camera points toward near straight north.
The apparent mach-6 hypersonic movement optical illusion needs to be re-fitted into pilot's mental picture for the craft's actual movement. Due to the near-170 degree wide angle lens of either Goqotomo or Caddx Turtle, the camera can display overlapping objects after craft turning 160 degrees. In the above first and second frame, the area at the overlap of line of sight is the actual position of the craft. In the last frame, the battery pack is seen thrown off the craft, and the craft crashed on to the right curb of the road as circle-highlighted in the satellite photo. The craft's actual position is closer to the right curb of the road on the peripheral of the thrid and second frame than it appears.

All objects in the FPV feed are "squeezed" toward the center of the screen from all angles, and the pilot needs to know that the craft is actually positioned closer to the objects on the peripheral of the screen than they appear. This is the same principle of wide angle rear mirrors where car manufacturers put the warning "Objects in mirror are closer than they appear". For the actual footage of the flight leading to the tail spin in the video on the right, in which the same principle applies.

At exactly 1:00 mark, the craft appears to be outside of the ball park over the row of pine trees lining the south side street on the peripheral of the screen, but, the craft is actually closer to the pine trees, likely right above them. 12 seconds later, at 1:12 mark, the apparent position of the craft has moved the improbable 1000 feet to the north west side of the curved road, even though the actual position is still in the confine of the park because the view is exactly the same as the third frame to the camera failure video picture frame. Between 1:34 mark and 1:35 mark, the craft appears to move the impossible 600 feet from the south east side outside the park to the curved road side crash landing point all within 1 second. The reality is that the craft moved from near the center of the park to the curb of the road, 80 feet at most, within 1 second.

The conclusion is that the craft has been within the confine of the ball park all though out the entire flight doing very small maneuvers. The technique of tilting the camera can produce explosive high speed craft flight visual effects simply by distorting the pictures.

FPV Feed Flight Path Tracking

The raw FPV DVR recorded mp4 of the tail-spin crash with fishbowl optical illusion is saved at googledrive .
When viewed in Android MX Player or the EV800D set, the last 3 frames used to track down the wreckage is not available frame-by-frame. A laptop with desktop Avidemux software is needed to step in the last 3 frames. Avidemux installation for Ubuntu laptops is the 2-step procedure seen in .

Terminal Speed Diving And High-G Pull-Up

On pull-up, with pre-prototype build of 3S battery and diving at RPM 2607, pull-up with maximum 1666us PWM on ESC and full pitch, airfoil operates as the following diagram.
The 34 degree effective collective pitch has extremely high drag results in collapsed RPM. The airfoil operating point moves towards the wrong corner of the lift curve never to recover the RPM. Crash experiments below with 2 incidences, the first dive starts at 1:00 mark.  In either case, full throttle is applied at the same time of leveling the craft by virtue of high-velocity pitch-up mechanism.

A workaround for the weak power plant is to maintain the diving collective pitch for a few seconds,  after angling the craft for pull-out. as the following airfoil operation diagram.

In such a self-imposed flight-envelope, at 23 degrees effective angle of attack, the lift slows down the descent enough that the airfoil operating moves to the normal operation region, as the following video, which holds back throttle for 3 seconds at the bottom of the dive after leveling the craft to horizontal. This dive still used RPM 2607.

And with RPM 2607, I can only eliminate the swinging motion by diving with 20 degrees off the vertical line. Terminal vertical speed is 20m/s, as seen in urban diving video, which is significant to the rotor head wind speed, at 42%, 20 to 48 m/s that is calculated in build notes.

The comprehensive solution is a 3-part solution, 
  1. 4S battery pack for diving. This eliminates most problems between power plant and the operating curve of airfoil.
  2. Use cyclic to level the craft, not collective. Collective leveling just means to prop wash the PID loops, which the resetting in video looks ugly. Cyclic-then-collective sequencing gives craft a chance to slow down before the next move.
  3. Use RPM 3125, as implicated in build note, to reserve more kinetic energy against the effective pitch resistance. The higher RPM also beats down the terminal vertical speed slightly better, 56 to 20 m/s . And you got highly vertical and high precision dives. 

Tuning Rotor RPM

As little as extra 3% RPM is noticeable in the video here, (RPM 3215 versus 3125)

This happens because BLHeli ESCs have dithering error margins, and dithering is a necessary feature to avoid motor oscillations/vibrations. All these mean that a good tachometer, such as Android's Headspeed Tachometer, is needed for tuning precision flights. But the PWM marginal error doubles affects on PID loops by servo outputs. When a board needs 2% throttle correction, the transmitter likely needs 4 points change on the throttle curves. We add to the mixer page of OpenTX to add/subtract up to 10 points by a potentiometer.
Weather temperature and pressure deviates air density from normal condition by 7+2%. According to NASA education page, density affects lift linearly. RPM tuning should linearly counter the air density change even though RPM speed changes the lift by the square power, as explained in build notes.
In the Headspeed App, the attitude mode, 85 point RPM fluctuates and has extra 2% elevated RPM due to dithering of the ESC. The -5 point RPM has flat value on target by calculation, 6250x80/200=2500. The +5 point RPM is dithered downward by 1.5% at 6250x103.5/200=3234.

Using Servos With High I-Gain

The high I-gain of the E-Fligh S-60 slows servo response time to gain precision.
For terminal speed divings that need fast PID loops adjustments, the solution is to use 194% P gains in CC3D to buy time for the servo in a dedicated, special "dive mode", which should be meticulously applied before the diving or during the long dive by turning the the switch lever to the middle position. The diving with the S-60 servos is the video below. The pilot needs to be trained to flip the mode switch all the way down back to normal acro mode between 0:28 and 0:30 to produce a seamless video. Because this switching has a very small window time, the normal acro mode is set up to be at the low extreme end of the 3 position switch in the Converged-IoT.uav , so that the switching back action can be swift.

Alternatively, the video with extra 94% gain with vibrations can be edited out post-production, as the following,

The alternative Spektrum H2070T servo does not have the high-I-gain problem and is fully compatible with Emax 9051 servo, as shown in the video here,

Transmitter Setup Wizard 

Betaflight does not have a wizard for transmitter setup, and the throttle low limit is the same as other channel's low limit. We manually set all channels' low PWM to 989us even though they can produce 988us PWM because arming code dictates that throttle needs to be lower than the channel's low limit. In LibrePilot wizard, the Collective input value is not isolated when the wizard collects Throttle input value, resulting in a mix-up of the 2 inputs. Our production Converged-IoT.uav has the fix. It was fixed by manual entering channel numbers after wizard finished its work. The arming dictates that throttle channel needs to be no higher than, neutral level PWM, but low limit needs to be lower than neutral. Librepilot has individual channels' low limits, so, we set low limit to 0 to satisfy the second condition. And we set the neutral to 174 because the throttle output to ESC is scaled from neutral to high. In either case, setting the throttle point closest to actual TX signal's low point gives most precise RPM output.