Sunday, April 4, 2021

Build and Operation Alternatives

On-board Vision Neural Network

The Intel Movidius 2450 hardware accelerated vision neural network board in the AIY kit weighs 10.4 grams, as pictured on the right. The neural network board passes camera video through a ribbon bus pictured below on the right. The 1.6-gram 160-degree FOV camera is incompatible with the AIY board. Instead, we need to use the 3-gram camera in the AIY kit. The weight gain is 10.4+0.1+(3.0-1.6)=11.9 grams. 
Install https://github.com/thecognifly/YAMSPy in Pi for the neural AI to control the travel of the craft.

CC3D Flight Computer

CC3D has a helicopter graphical configuration interface, and we use its default servo sequence,
  1. first servo on the front
  2. second on the right
  3. the third on the left
, when looking down on the craft from above. This sequence, as well as the default 50/50 sharing of servo travel between collective and cylic control, are also used in our FD411 configuration.
The common alternative "3D" hobby helicopter collective pitch curve is shown as picure-in-picture here. This common alterative pitch curve can be used with F411 as well because, with betaflight, the negative pitch below the min_chedk=1385 is considered flying with a throttle cut-off. The entire CC3D configuration UAV file is downloadable here. The PIDs for rate mode have unnecessary RPM and temperature compensations for RPM3140 and cold climates, and the PIDs for tail don't have high wind resistance.

CC3D can have different PIDs for all 3 different modes, though we only utilize the switching on/off  accelerameter, as illustrated in the diagram on the right in comparison to Betaflight.  Betaflight has a single set of PIDs permeating all flights, and the 3 modes tuns on/off/mix the sensor/control inputs. 
The actual PWM width (microsecond) side-by-side comparison 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

CC3D versions higher(exclusive) than 16.09 has an alternative configuration to give stabilization precedence by arming the craft. But, we should not use it because we should not rely on transmitter disarming the craft to go into passthru-manual mode for swashplate maintenance. Remember, checking swashplate leveling is needed after each hard landing and servo arm clutch slipping/re-positioning. Also, 16.09 should be used because higher versions are underdevelopment. It is downloadable here, and it requires Windows10. 

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 neither does it 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. And that is the setup of both the build note's betaflight dump and CC3D UAV configuration.

The terminal speed diving with CC3D with PIDs conversion for CC3D is here in the video. 


The PID I term algorithm for the tail does not have a circular reset. Failsafe free fall video below at 0:03, which initially turns the craft to the right due to motor bell magnets dragging along the stater that is attached to the fuselage. Then the rewinding.
 
It is well known that servos accept PWM range 1ms to 2ms, or 1000us to 2000us. But, the consensus is that manufactures specify margin of error of 250us, while the signal differs less than 115us , typically below 50us, between CC3D and ESC when viewed in BLHeli configurator. 

CC3D flight computer also needs 3 layers of clear mounting tape at the front and 1 layer on the back, and another temporary scaffold strip on the craft's electronics bay floor rear edge. Fold the frame edge strip inward to affirm the attachment. 1 square inch of the mounting material is enough for either CC3D or F7Nano. 

There is no jig with CC3D because the CC3D Atom board is quite narrow, giving a large gap between the board and the frame wall. The first stage of the mounting only sticks the adhesive of the rear mount. Only peel off the backing of this adhesion at the first stage. The actual mounting pushes the USB plug against the inner wall of the main frame cavity while lowering the board gliding on the servo leads pressed onto the frame edge strip. The vertical strip's backing should stay on the mounting tape so that it allows slide freely until the rear mounting strip touches down on the cavity floor. The front mounting strip's backing film is not yet removed at this time, as pictured on the left. If the CC3D board is not aligned properly, abort the operation to replace the rear strip to start over. If all is aligned properly, continue on to the second stage of removing the backing film and mounting the front.


To configure the ESC, we use Omnibus F4 computer's passthrough USB-to-UART connection. And we use BLHeli configurator on Chrome browser. The configurator is not listed in chrome web store, instead, google it "chrome web store blheli" and add it. To access USB tty device, chrome needs to be restarted as root user with command "google-chrome --no-sandbox", then browse chrome://apps to start the app. Alternatively, run chrome as regular user and
# chmod 777 /dev/ttyACM0
Safety precaution dictates that ESC battery power should be applied last after all connection/software are set up, and ESC battery power should be first one to be torn down after any configuration/software flashing. With that in mind, power on Omnibus computer by connecting micro USB cable, connect only the tail ESC's signal cable to a PWM out header of computer, which is on the 2nd to 5th rows. Start the app and click "Connect" with default baut rate and auto-detected tty port. The computer now goes into USB-to-UART adapter program. But, wait, there is sometimes a 1-minute delay for the program switch to occur. Now connect ESC's craft battery power, then click "Read Settings" to actually connect to the ESC computer. If the "Read Settings" button is not available, it is still in the 1-minute period. After flashing ESC, tear away ESC's craft battery power plug first, as the safety precaution. Then tear down software/other connections. If you don't tear away the power, when the program switches back to Beta Flight computer, the motor will spin up to compensate craft attitude orientation as a quadcopter motor.


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
4c4
<         <hardware serial="000000000000000000000000" type="3c" revision="a5"/>
---
>         <hardware serial="54ff6b064883545328241887" revision="2" type="4"/>
20,22c20,22
<             <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"/>

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.

We have to keep the CC3D internal arming signal high during failsafe, just like betaflight.


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.

Flywoo F745 Nano Flight Computer

The F745 software has a different bootup behavior from the "twitch" problem of F411 software. Due to some difficulties, the difference is persistent from version 4.2.0 through version 4.2.5,. The source code of 4.2.5 may show the branching between F411 and F745 of the difficulties.
When fixating the wires, avoid anchoring into the crevasses between the components because the stiff wires can easily damage the components, as illustrated in the picture above on the right. Each wire should be anchored by 2 points on the board to prevent ripping the solder pads. The first anchor is the threading through the tight exit holes.  The front wholes are the second anchor for GPS and RF receiver wires. Camera, VTX, Main M1, VBAT-, and S4 wires are glued to a chip flat surface as the second anchor. VBAT+ solder pad is too close to the fixture hole for effective glue anchoring, so its wire uses one extra loop-around on the exit hole as the second anchor. 

As pictured on the right, each board fixture whole is capable of allowing seven 1A (26 AWG) wires through, or five 1A wires plus 3 thin servo signal wires. As pictured above, the F745 does not have the flat surface of JST 1mm socket like that in the F411 board. So the rear mount is 3 layers of the clear mounting tape perforated by the array of signal output, with an extra layer of narrow strips front and aft the array of pins. The front mount has a piece of paper to cushion the barometer hole to prevent air sealing. The rear 3 servo signal points are soldered in-place after the board is mounted.
Use the F745 software version 4.2.5 with this configuration .
The Main M1 signal wire appears inadequately short in the pictures due to the alternative fixating of the wire through the bottom side of the board. It should have been on the top side, and there is a good anchoring area on the OSD chip on the top side. Also this alternative fixating makes eight 1A wires through the fixture hole, which is exceedingly tight and a difficult work.
The second behavior difference is the accelerometer startup. It requires accelerometer calibration in Betaflight Configuration, as shown in the screenshot here, to work correctly instead of the "set acc_calibration = 0,0,0,1" of HGLRC F411. 

The craft needs to be placed steadily with a slight tilt before clicking the Calibrate Accelerometer button. Adjust the tilt and make the calibration several times to find a calibration that allows the craft to hover with minimal drift. Then the RF control transmitter makes the trim for fine adjustment, as with F411 and CC3D flight computers. Without this extra step, the switch-on of the accelerometer during the takeoff procedure can frequently tip over the craft, as investigated in the video above on the right. This extra step must be done even if the craft flies without drift with "set acc_calibration = 0,0,0,1," as discussed in the investigation video. The overall difference between F411 and F745 flight computer configurations is here,
$ diff dump_all_converged_IoT_hglrc_fd411.txt dump_all_converged_IoT_flywoo_f7nano.txt
12,14c12,14
< board_name HGLRCF411
< manufacturer_id HGLR
< mcu_id 002000503439510f37393937
---
> board_name FLYWOOF745NANO
> manufacturer_id FLWO
> mcu_id 0044002a3135510731303738
17c17
< # name: HGLRCF411
---
> # name: F7NANO
... hardware pinout differences ommitted here...
270d273
< feature SOFTSERIAL
311,312c314,319
< serial 1 64 115200 57600 0 115200
< serial 30 2048 115200 57600 0 115200
---
> serial 1 64 115200 115200 0 115200
> serial 2 2048 115200 115200 0 115200
> serial 3 0 115200 57600 0 115200
> serial 4 0 115200 57600 0 115200
> serial 5 0 115200 57600 0 115200
> serial 6 0 115200 57600 0 115200
315,318c322,325
< led 0 0,0::C:0
< led 1 0,0::C:0
< led 2 0,0::C:0
< led 3 0,0::C:0
---
> led 0 6,6::CO:8
> led 1 7,6::CO:8
> led 2 8,6::CO:8
> led 3 9,6::CO:8
548c555
< set acc_calibration = 0,0,0,1
---
> set acc_calibration = 0,0,0,0
553,554c560,561
< set mag_bustype = SPI
< set mag_i2c_device = 0
---
> set mag_bustype = I2C
> set mag_i2c_device = 1
557c564
< set mag_hardware = AUTO
---
> set mag_hardware = NONE
560c567
  
< set baro_bustype = SPI
---
> set baro_bustype = I2C
562c569
< set baro_i2c_device = 0
---
> set baro_i2c_device = 1
609c616
< set blackbox_p_ratio = 32
---
> set blackbox_p_ratio = 16
909d915
< set system_hse_mhz = 8
913c919
< set cpu_overclock = 108MHZ
---
> set cpu_overclock = OFF
951c957
< set dashboard_i2c_bus = 0
---
> set dashboard_i2c_bus = 1
964c970
< set flash_spi_bus = 2
---
> set flash_spi_bus = 1
970c976
< set gyro_1_spibus = 1
---
> set gyro_1_spibus = 4
973c979
< set gyro_1_sensor_align = CW0FLIP
---
> set gyro_1_sensor_align = CW270
975,976c981,982
< set gyro_1_align_pitch = 1800
< set gyro_1_align_yaw = 0
---
> set gyro_1_align_pitch = 0
> set gyro_1_align_yaw = 2700
978c984
< set gyro_2_spibus = 1
---
> set gyro_2_spibus = 4
990a997,998
> set i2c4_pullup = OFF
> set i2c4_overclock = ON
1006c1014
< set name = HGLRCF411
---
> set name = F7NANO
  

14-Pole EMAX 2808 660KV Motor   

Below first 5 photos are of the same motor. The bell weighs 23.2  grams consistently. The modification to thin wire saves (30.6 + 23.2) -  52.8 = 1g. The 6th photo is of another motor. The stator weighs 52.8-23.2 = 29.6g to 28.7g with thinned lead wires, so 30.6g  to 29.7g with original wires. Worst case with stator trimming 30.6 + 23.2 = 53.8  grams.

   
The 2808 motor stater trimming needs a combination of drills and pre-cuts in contrast to 4004 motors that only need pre-cuts. The outer ring does not need rotary cuts; the pliers bend and pull out the ring sections individually. Trimming the 2808 motor stater saves 33.2 g+0.1 g - 30.6g = 2.7 grams. The trimming of the 2808 motor stator base is mandatory so that the anti-rotation zip tie can thread through beneath the base. So, overall, this alternative motor weighs between 52.8 and 53.8 grams. Looking back at the first picture of this discussion section, Carving out the excess base, trimming out excess wires, and removing the stock shaft save 2.7 + 1.7 + 2.4 = 6.8 grams, resulting in 60.6 - 6.8 = 53.8 grams. The excess wires weigh 1.7 grams. 
When clamping the shaft down the second time with the push rod assembly, use a 3/8-inch wrench socket with the 2808 motor, as shown below. The 4004 motor and 2808 motor are interchangeable, providing that the 2808 motor has a 0.5mm shaft protrusion at the bottom of the motor, as opposed to the 4004 motor's 2.8mm protrusion The difference of 2.8-0.5=2.3 mm, matching the motor height difference of 21.3-19=2.3 mm.

To understand tuning RPM in BLHeli Configurator for the 14-pole 2808 motor, consider increasing RPM by 50 from 2643 to 2693; the new scaling size 981, which produces 50000.0 / 7.0 * 74.0 / 200.0 * 1000.0 / 981.4 = 2693 RPM. So, a 19 PWM change produces a 50 RPM change, a 1 to 2.5 ratio. Also, with the small diameter of the 2808 motor with smaller torque, the fail-safe test video on the right successfully recovered RF control loss with a 2808 motor using ESC governor p-gain 0.5, the same value as the 4004 motor's high punching power setup.   


Tail Motor Alternatives

HGLRC 1106 kv2400, HGLRC Aeolus 1303.5 kv2400, and Happymodel EX1404 kv2750 are all interchangeable. The video on the right is with Aeolus 1303.5 kv2400.

Align300x Main Grips - 8.5g

They have the same arm span of 12mm as the Align250Pro's grips. They have the same radial bearing spacing and depth as Align250's. But they are longer and can accommodate a thrust bearing at the far side. Unless trimming the main blades, Align250's grip span is too short to accommodate any thrust bearing in-between or at the far side. 

The Align300x grips need to be paired with Align300x's hub because the feathering shaft's width is limited to 38.5mm in the market. Overall, this alternative adds a weight of (8.5+2.45-0.3)-(6.2+1.4)=3 grams.
 

Tail Servos For Swashplate

The substitute Spektrum 2070t servos add  6.5 grams even though the scale shows extra 7.5 grams. The calculation is 7.5g + 0.2g untrimmed left side servo rod - 0.6g brackets - 0.6g screws(3 on the servo arms and 4 on brackets) = 6.5g.
When using 2070t servos, the servo-swash links has an arm length of 13mm and 1000us servo travel of 83.3 degrees, both exaggerate the servo travel. 

The android protractor app in picture shows the turning angle at 119.6 degrees - 36.3 degrees = 83.3 degrees.

To compensate the exaggerated servo travel, the servo PWM range per direction needs to be attenuated to 500us x 12mm/13mm x 83.1degree/83.3degree =  460us .  The following video is with Spektrum 2070T servos on the cyclic swashplate performs with CC3D.

Two Alternative Action Cameras

 Runcam Thumb 1080p's video with Gyroflow stabilization is on the right. 

To use Insta360 Go, the battery is a 49-gram 4S 450mAh set up in the following pictures. The problem with Insta360 is that it has in-frame stabilization instead of open-source between-frame stabilization. In-frame stabilization looks great during the first 2 minutes of video footage but produces jello with 3140RPM and twitches with 2640RPM with timing/synchronization aliasing.

We cope with the minute synchronization error of the Insta360 Go with unique PID tuning (P=48, I=120, D=9, in this example video) to induce socillation that can compensates for the mentioned aliasing. But the coping strategy has yet to have a consistent outcome. One such PID benefits one craft but makes another craft worse. As we all know that collective-pitch helicopters should usually have D=0. Changing the camera mounting as the following pictures doesn't help.
Runcam Thumb Pro  - 13.2 grams. The camera weighs 16.485g. Removing the lens protector saves 1.550g; removing the lens protector and back cover saves 3.578g. The set includes a 4-pin PicoBlade connector with cable, but we only need 2 pins with 8cm cables, as weighed in the PicoBlade section as 0.3g. 16.485g - 3.578g + 0.3g = 13.2g .

Spool-up collective pitch angle can be tuned to a smaller angle 

But, wait, during spoolup, the flight mode is manual, the tail motor does not spin, so some negative collective, say -15 points, is required to produce friction between landing skid and the ground to prevent tail spinning. Remember, zero collective pitch doesn't mean zero torque. 
Also, if you tune it to very close to 0 points (0 degrees), say -1 point, betaflight min_check=1386 configuration needs to be raised to min_check=1500 , so that the craft can arm. Remember, whenever RF transmitter is turned on, the -23 points, or, the new -1 point, is activated. And you need to arm the craft at this -23 points or -1 points that is lower than min_check . However, if you actually set min_check to 1500, any slight touch of ANY stick toward low position triggers the stick command(s) as the first picture below because min_check applies to all sticks.
One possible solution for allowing near-zero-collective-pitch-spoolup is to enable computer stabilization during spoolup and disable stick functions all together. But disabling stick functions requires modifying source code of betaflight, and enabling computer stabilization on the ground defeats the purpose of the spoolup-manual mode. Another possibility is to set up the throttle channel 1 as the main motor PWM RF signal, but the flight stabilization features that are based on throttle channel 1's variation, such as "TPA" and "TPS", can not be used because the helicopter's main rotor RPM is a constant during the flight. 
From safety stand point of view, the negative spoolup pitch should be as far from the stick center as possible; from the operation stand point of view, the stick should be as close to the neutral collective pitch as possible.
The only viable possibility is to physically dial up the servo clutch so that PWM 1385 is the neutral position with zero collective pitch. And such alternative needs the collective pitch curve shifted down as above second and third pictures, but still the near-zero-collective-pitch-spoolup's tail spinning problem is not solved.

It is possible to automatically disengage pilot's RPM spoolup

We can use a logical switch in the RF controller to automatically switch on the accelerameter(attitude) mode as soon as the throttle goes higher than -26 (74 out of the 200 points) of 1/4 throttle stick position. But this means that accelerameter(attitude) mode can be downgraded to manual spoolup mode during flight when throttle stick is lower than the 1/4 position. This is due to the fact that logical switches don't have direction awareness whether a craft is taking off or landing. So, pilot would end up needing to be trained to avoid lowering stick to lower than 1/4 position when the craft is in the air in attitude mode in this alternative setup, which can be difficult. One possibility is to use a manual mode throttle curve that reaches spoolup at 1/8 stick. But, still, pilots needs the extra training to avoid lowering stick to 1/8 position. And, the 1/8 position spoolup makes the stick very sensitive to the touch during spoolup. 

It is possible to tune the spool-up sensitivity

The 1/4 position full spool up can be changed to 1/8 position with the 9-point throttle curve, which the rotor RPM becomes very touchy and sensitive. 

False Alternative Kalman Filter

Neither HGLRC FD411 nor CC3D has the main development branch with Kalman filter. Frequency domain engineering is still the mainstay in the foreseeable future. This is a false alternative.

Four Alternative Battery Packs

650mAh is an alternative that needs alteration of the main frame, trimming out the battery bay ceiling beam, which severely weakens the crash resistance and is unsuitable for adrenaline proximity diving. The crazepony 2S batteries are lighter, 2 packs joined by the trimmed powering wires, not the charging wires.
The GNB packs are heavier and 1mm taller. And the lower jaw of the battery cage needs to be ground 45 degrees at the opening. When the back is installed into the battery compartment, the upper pack is stopped at the wall stud inside the main frame. The pack build uses 18cm of clear tape. The GNB 4S 650mAH, pictured below, does not need the grinding of the main frame.
The RDQ 525mAH, pictured on the right, has the same dimensions as GNB 520mAH but is 0.4 grams heavier.

 The XT30 connector can be substituted with EC2 connectors

 without adding weight, but EC2 needs clamping tools. 



For the FrSky XM Plus receiver with a repairing replacement antenna, 

the replacement is about 1 inch longer and it coils around the boom stick for 1 turn. 

The screw retainers design

This should not be used because the loose screw retainer results in the following crash video. The punch-up was unusually weak, the shaft was free-spinning in the rotor hub's hub when the dive has a sudden elevator-down indicating the hub shifted. 




After the crash with the screw-on retainer, the hub is found to be free rotating, and the shaft has been ground thinner by the retainer screws. The following picture's green line is the original retainer screw's position. The red line marks the new elevation of the retainer screws after the crash
The repairing requires that the shaft be evenly thinned around the fault point as shown in red circle in above picture so that the retainer screws will not slips to the thinned area by previous damages. Failure to smooth out the repair surface results in more slips and failures in the following video.

All in all, screw-on retaining hub is not to be trusted. Bolted-in hub is the way to go.

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 option 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,


High-wind FPV landing is risky. 

In the above 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.

Voltage Monitoring Alternatives 

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.

Terminal Speed Diving And High-G Pull-Up With 3S


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, which are all already implemented in the base build,
  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.
Dampener
The Rakonkeli CNC delrin dampener is compatible with the 180CFG hub.



Main Shaft Collar Alternatives

Oxy2 0.6g; EFlight BSR 0.5g; Microheli Blade 130x 0.1g
The Blade mCPX main shaft is 3mm in diameter and is not a replacement for our IoT build.