Skip to main content

High Speed Videography for accurate Drone Rotor RPM estimation

So the notion that in order for me to proceed scientifically (and practically) towards the design of rotor dynamics identification algorithms that will run in real-time, I first need to model the effects of the rotor failure through experimentation.

The two best ways of the doing this are (1) Buy a +R2k Tachometer and record (probably by  recording the display) the speed of the propeller with a pre-determined PWM value. (2) Use the high speed capability of an action cam (such as GoPro) and some clever algorithms to compute the propeller RPM. The latter is the cheaper (and the geekier) option of the two.

The setup was such that contrast was created through the use of a black mat cloth on the setup table and painting the opposing blade of the propeller black and white (see below). A RGB (red-green-blue) adaptive algorithm was developed which would mitigate the occurrence of glares on the blade which would in turn give a false reading with the algorithm.

Each frame was analyzed by through creating a circular ring of data points around the center of the rotor (choosen through user input), then analyzing the RGB values distribution along the circumference in order to locate the position of the blade (see below). The generation of PWM commands was achieved through the use of an Arduino Uno script with allowed a 2 seconds delay between each command in order to generate enough data points for the estimation algorithm.


The computation of RPM was arrived (particularly at high RPM) through averaging the angular values for each frame (with the assumption that the blurring effect on on each subsequent frame is very similar) and then using the framerate (240 frames per second) to compute the revolutions per second. This was achieved and shown below.



The RPM measurements were then filtered using a Butterworth filter and a total variation diminishing algorithm which resulted in the results below. It does show that this method has great promise and the subsequent objective is then to model the dynamics using high order transfer functions (up to fourth order) for analysing the change in model parameters once the faults have been introduced.  Your comments are welcomed!


Comments

  1. such a nice piece of article. Thank you for sharing your knowledge. This is a very valuable thing you shared. good stuff!!Licensed Drone Videographer Dubai

    ReplyDelete

Post a Comment

Popular posts from this blog

Setting up the Tarot T4-3D gimbal on the Pixhawk 2.4.8 with Specktrum dx6 Gen2 toggle switch

So i took the challenge of setting up the Tarot gimbal not just for inherent stable video footage but also the flexibility of controlling it from the radio control. However, I encountered quite a few challenges which made me aware that I'm not the one only in this battle . It's quite clear that the setup of the Tarot gimbal using its own software is completely different from how it's been described in the Ardupilot/Arducopter webpage and in mission Planner. In Mission Planner and it's associated site makes one believe that it should be done through software, only to realize that in actual fact the setup is more complex than that.  After two evenings of trying various combinations, I realized the getting the pixhawk Aux channels to communicate with the T4 gimbal requires the following steps: - The Pixhawk Pin9 (Aux1) needed to be activated to pass through user-chosen channel from the transmitter. For the Dx6 Gen2 it was the channel 6, which can assigned the

Matlab to C/C++ code development - Some learning points

Over the last few years, the engineers at the company have invested both their time and sleepless nights in formulating a process for the development of Machine learning algorithms that will satisfy real-time constraints with minimal RAM usage. This is quite a tall task as per default, that would force one to do their development directly in C language. Although that seems like the right choice, the downside is the direct correlation of the debugging time with algorithm complexity.  Such a time could have been rather used in optimizing the algorithm within the MATLAB environment which has excellent tools for the analysis, plotting and debugging. So it was decided to rather learn the Code generation process with the hope that future algorithm could be designed in a similar fashion without the hassle of the compiler-specific run-time issues. The development of this machine learning algorithm would eventually be implemented in a 32bit, 160Mhz speed, 260KB RAM microcontroller.

The hard climb of innovation

For the last couple of months, our design team has been hard at work at detail development of our drone concept which we hope to make public early 2021. These have been unprecedented times with so many changes within our company: people moving countries, stuck at airports, universities closing and transitioning to online classes and exams; all in the space of one year! Nevertheless, one of the fundamental challenges facing the drone industry in developing countries next year, is how to operate within an environment where shipping of critical parts (amongst other things) has been disrupted due to the covid-19 pandemic. If the most critical items (propellers, batteries, sensors, etc. ) of the system are also associated with the longest lead time, this has a significant impact on the operating cost and service coverage that can be achieved. Unfortunately, there's no easy way of solving this issue except if it was envisioned as part of the development process. But this is seldom the ca