Multi-Modal Transforming Drone Arm (MMTDA): A versatile Solution for Aerial, Terrestrial, and Aquatic Environments

1. Introduction & Background of MMTDA

Drones have been widely used in various industries, including aerial photography, surveillance, and surveying. However, as most drones are designed primarily for aerial operations, they are limited in their functionality, especially when it comes to tasks that require operation in other environments, such as aquatic or terrestrial environments. For example, search and rescue missions in coastal areas or marine environments require drones to be able to land on the water and navigate underwater to search for survivors. Similarly, in agricultural applications, drones may need to land on crops or fields to collect samples or perform soil analysis. To overcome these limitations, researchers and engineers have been exploring the development of multi-modal drones that can operate in multiple environments using a single mechanism. The concept of transforming drone arms has emerged as a potential solution to enable multi-modal drone operation. By developing a transforming drone arm that can switch between different modes of operation, drones can be adapted to a wider range of applications and environments. However, designing and implementing a transforming drone arm presents several challenges, including the need for a lightweight and compact mechanism that can withstand variable conditions. In this project, we aim to address these challenges and develop a transforming drone arm that can enable multi-modal drone operation for a range of applications.

2. Design Process of MMTDA

2.1 Drone Mechanism & Model Design

To simplify the mechanism, we will only focus on one arm of the quadcopter in the following explanation.

This arm consists of three bars: one fixed bar and two moving bars. Additionally, there are three gears: two gears attached to each of the moving bars and one main gear which drives the force that changes the configuration of all four arms simultaneously. Each of the sub-gears is subject to the main gear, which is responsible for driving their motion.

The motor plate, which connects to the three bars, holds the propeller motor. The input to the system comes from the main motor, which is controlled by a servo motor. However, for the sake of simplicity in this project, it was manually operated with a crank. The output is the two other gears. The vectors of the two moving bars are determined by their lengths and the initial configuration of the gears they are connected to. As a result, the motor configuration (i.e., the direction of the propeller) is governed by the end position of the two moving bars.The Solidworks CAD model of the quadcopter is shown below.

Figure 1. Aerial Configuration
Figure 2. Terrestrial Configuration
Figure 3. Aquatic Configuration
2.2 Drone Component Selection
  • Arduino Microcontroller
  • Brushless Motors
  • Lipo Battery Pack
  • Battery Charger
  • 40 AMP Electronic Speed Control (ESC)
  • Transmitter/Receiver *Replaced with potentiometer and joystick
  • Power Distribution Board
  • IMU Sensor
  • Propellers

To build our transforming drone with the ability to operate in the air, on land, and underwater, we carefully selected a range of components to ensure reliability, performance, and cost-effectiveness. The most critical components for our drone include brushless motors, 40 Amp ESCs, a potentiometer, joystick, Lipo battery pack, battery charger, power distribution board, propellers, and an Arduino microcontroller.

We chose brushless motors for the propellers due to their durability, high efficiency, and low maintenance needs. To control the speed of our motors, we selected 40 Amp ESCs, which are efficient and able to handle the high current demands of our motors.

To control the drone’s movement, we included an IMU sensor to send the orientation of the drone to the Arduino microcontroller to compensate speed in each of the motors for stabilization – prevent the drone from flipping. Additionally, we selected a Lipo battery pack to power the drone, which is lightweight and can provide a high power-to-weight ratio. A battery charger was also included to charge the battery and ensure optimal performance.

To distribute power to the ESCs and motors, we selected a power distribution board that enables us to connect all of the components in a neat and organized manner. We also included an Arduino microcontroller, which allows us to program and automate various functions of the drone, such as stabilization, navigation, and control. Finally, we chose propellers that are specifically designed for our motors to ensure optimal performance and stability.

Overall, our selection of components was driven by a balance of performance, reliability, and cost-effectiveness, ensuring that our transforming drone can operate seamlessly in a range of environments, while also offering programmable and customizable functionality through the inclusion of the Arduino microcontroller.

More information about our materials are detailed in the Bill of Materials in the Appendix section.

3. Kinematic Analysis of MMTDA

Each of the bars is calculated based on the mechanical properties of the frame of the quadcopter we use. For the calculations, we simplified the prerequisite values considering the limitation of the chassis shown below.

Figure 1. Prerequisite Value Calculations
  1. The coordinate system is centered at the midpoint of the two moving gears.
  2. The end point of the fixed bar is set based on its length of 200mm and position in θ = 45° & φ = 10° in the spherical coordinate system.
  3. The radius coordinate of the gears’ (In the code ‘disks’) which is mounted on the gear located on the bottom of the body frame with two moving bars.
  4. For the motor plates the distance between the three nodes(otherwise the end point of the moving gears’ location in the plate body coordinate) for connecting each of the three bars.
Figure 2. Initial Values of the Variables

Since all four propeller motors have the same configuration and are driven by the main motor, their configurations can be easily controlled by analyzing just one motor from the arm in this code.

Figure 3. Plots of Calculations
(The original code that generated this result graph has been attached to the Appendix.)

The optimized result indicates that the two bars (l_1, l_2) should be 234mm in length, respectively. Additionally, the distance between the end points of the two moving bars should be 59.76mm.

With these design specifications, the motion of the final model is as follows.

Figure 4. Animated GIF of Propeller Arm Motion

4. Manufacturing & Assembly of MMTDA

The drone hardware can be broken down into three separate components: electronics, chassis, and mechanism.

1) Electronics

The electrical components are off-the-shelf products, with no manufacturing involved. However, some assembly is required for the electronics. This involves soldering the ESCs and battery connections to the power distribution board, and connecting the signal wires from the ESCs to the Arduino to receive motor speed commands. A number of electrical connections are made between the individual components and the flight controller (Arduino). For more details on the electronics and software, please refer to the relevant section.

2) Chassis

The chassis consists of two sheets of wood that are laser-cut, with the top and bottom face separated by wooden dowels to allow space for the mechanism to turn. The dowels are securely glued and screwed into the wooden boards. Due to time constraints, only one arm utilizes the mechanism, while the other three arms are fixed 3D-printed pieces that are screwed in directly to the chassis board. The electronics boards are also screwed directly into the wooden chassis plates, with the motors mounted at the end of each arm using 3D-printed motor mount plates. The ESCs and their wiring are zip-tied to the arms, while the battery is secured to the wooden chassis plate to allow for easy removal.

3) Mechanism
Figure 2. Bearing and Connectors

The mechanism is made up of 3D-printed components, with the exception of wooden dowels used to create the pin joints. These wooden dowels are inserted between two coupling pieces and hot glued at both ends to allow for pin joint rotation. Screws are then used to fasten the joints to the wooden chassis or to the motor mount plate. Gears are also fixed to the bottom chassis plate using wooden dowels, which allow for a single rotary input to move the motor plate. For more details on the mechanism configuration, please refer to the relevant section. All printed parts were either of PLA or PETG filament, and were printed on either the CraftBots or Raise3D Pro printers.

5. Electronics & Software

Electronics List
  • (4) 2200KV Brushless Outrunner Motor

  • (4) 30A Electronic Speed Controllers (ESC)

  • (1) Matek V3.1 Power Distribution Board (PDB)

  • (1) Tattu LiPo Battery Pack 2300mAh 11.1V 45C 3S

  • (1) Elegoo Uno R3 (Arduino) Board

  • (1) JoyStick 

  • (2) Potentiometer

  • (1) MPU 6050 3 Axis Accelerometer Gyroscope Module

Electronics Configuration
Figure 1. Electronics Attached to Drone

The Elegoo Uno R3 board is programmed to function as the flight controller, with the MPU 6050 sensor connected directly to the board. To simplify the setup, all four Electronic Speed Controllers (ESCs) and the LiPo battery connection are soldered to the Power Distribution Board (PDB). Power is drawn from the PDB to power the boards.

The ESCs, which control the motor speed and power transfer, are connected directly to the motors. The speed of each motor is determined by the signal wires from the respective ESCs connected to the Arduino board. The motor’s rotational direction is determined by the connection to the ESCs; to reverse the direction of rotation, simply flip any two connections to change the motor phase.

Figure 2. Drone Propeller Rotation Directions
Figure 3. Drone Orientation

To achieve lift-off, it is necessary for the two adjacent motors to rotate in opposite directions. Although a remote transmitter/receiver had been ordered for controlling the drone, the receiver component did not arrive in time for the demo deadline. As a result, a joystick was used instead, connected to the Arduino board via a long cable, to provide commands for roll and pitch. Similarly, potentiometers were connected to the Arduino board, with one controlling the thrust and the other controlling the yaw.

6. Software

Regarding the software, we started with an Arduino code package [1] and ran the ESC calibration routine without significant modifications. We simplified the code used to control the drone considerably. Essentially, the code identifies the pins corresponding to the inputs/outputs, calibrates the MPU 6050 sensor based on the drone’s initial configuration, converts sensor readings into positional information (roll, pitch, and yaw), determines motor speed commands based on inputs received, computes corrections to inputs with PID controllers (roll, pitch, and yaw), adjusts motor speed commands based on error corrections, and sends the motor commands to the ESCs.

The original code used input durations to determine the strength of inputs and, consequently, motor speeds. We modified the code to map joystick and potentiometer positions directly to motor speeds, removing some of the elegance from the code in favor of a simpler mapping. We also modified the arm/disarm logic of the code to work with the roll and pitch inputs associated with the joystick. However, we left alone the portion that computes and translates sensor readings and the PID portion that computes error adjustments. Unfortunately, we were unable to tune the PID gains due to the prototype’s structural instability, but telemetry confirmed that the error adjustments made were in the correct directions (but with incorrect magnitude).

To roll the drone, the two motors on the left or right of the axis must spin faster than the two on the opposite side. To pitch the drone, the same concept applies, with the two rear or front motors spinning faster than the opposing pair. To yaw the aircraft, the two motors spinning CCW must spin faster than the two spinning CW, or vice versa, depending on the desired yaw direction.

References: 

[1] https://github.com/lobodol Retrieved [4/18/2023]

7. Final Prototype of MMTDA

Figure 1. Completed Drone
Figure 2. Drone Preparing for Test Flight

During the flight, we observed a delay in the automatic adjustment which made it difficult to maintain the balance while flying. To address this issue, we could improve the robustness of the hardware and compensate for any delays through wireless control. This would allow for real-time adjustments to be made more effectively, resulting in a smoother and more stable flight.

8. Conclusions & Future Work of MMTDA

As a proof of concept, we successfully demonstrated the functionality of the prototype drone using the current electronics and software configuration for the final project. Our future work will focus on enhancing the drone’s performance and stability. To accomplish this, we have ordered an off-the-shelf drone frame and a fully functional remote controller with a receiver. Our aim is to update the code and optimize the PID gains to achieve stable flight with the prebuilt frame, replacing the joystick and potentiometers with the new remote controller. Once we have verified that the software and electronics are functioning correctly with the prebuilt frame, we will transfer them to a custom-built frame that incorporates the necessary mechanical upgrades. Our ultimate goal is to tune the PID gains to the revised custom frame, ensuring optimal performance and stability during flight.

9. Appendix of MMTDA

9.1 Bill of Materials
ItemDescription
MotorsMotors for the propellers, outside site because it was the most reasonable cost for waterproof motors
40 Amp ESCElectronic speed controllers
Transmitter/RecieverTo send/receive inputs to drone
Lipo battery packTo power the drone
Battery ChargerTo charge the battery
Power distribution boardTo distribute power to ESCs and motors
PropellersTo generate lift and thrust required to keep the drone in the air
9.2 Code: Analyzing the Arm Length for the Motor

%% Reset
clc, clear all
%% Presetting
% All values corresponding to the first quadrant propeller arm.
% _____ Lengths [mm] _____
   % _____ Links _____
   l_fix = 200; % Fixed link
   l_1 = zeros(100,1);
   l_2 = zeros(100,1);
   l_1_matrix = zeros(100, 1);
  
   % _____ Disks [radius] _____
   l_d1 = 15; % Disk 1
   l_d2 = 15; % Disk 2
   l_dd = 30; % Distance between two disks
   % _____ Height of the propeller from the bottom of the drone _____
   h_p = 50;
   % _____ Distance between end tip of the links
   k = zeros(100,1);
% _____ Angles (Sperical: [theta, phi]) [deg] _____
  
   % _____ Disks configuration _____
   theta_dd = [135, 0];
   % _____ Links configuration _____
   p_e_l_fix = [45, 10];
   % p_link_1 = [];
   % p_link_2 = [];
   % _____ Turning angle of disks _____
   t_d1 = 225;
   t_d2 = t_d1 + 120; % Phase shift of 120 degrees between ‘disk 1’ and ‘disk 2’
       while t_d2 >= 270
           t_d2 = t_d2 -360;
       end
% _____ Position vector _____
   % _____ Origin point _____
       % The origin is located on the line connecting centers of the two disks.
       p_ori = [0; 0; 0]; % Origin
   % _____ Disks _____
      
       % _____ Center of the disks _____
       p_c_d1 = [ cosd(theta_dd(1)) * ( l_d1 + l_dd/2 ) ; sind(theta_dd(1)) * ( l_d1 + l_dd/2 ) ;  0 ];
       p_c_d2 = [ cosd(theta_dd(1) + 180) * ( l_d2 + l_dd/2 ) ; sind(theta_dd(1) + 180) * ( l_d2 + l_dd/2 ) ; 0 ];
       % _____ End point of the disks _____
       p_e_d1 = [ p_c_d1(1) + l_d1 * cosd(t_d1); p_c_d1(2) + l_d1 * sind(t_d1); p_c_d1(3) ];
       p_e_d2 = [ p_c_d2(1) + l_d2 * cosd(t_d2); p_c_d2(2) + l_d2 * sind(t_d2); p_c_d2(3) ];
      
   % _____ Links _____
  
       % _____ Fixed link _____
       p_e_l_fix = end_vec_a(l_fix, p_ori, p_e_l_fix);
       % _____ Moving link _____
       p_link_1 = [];
       p_link_2 = [];
  
   % _____ Error _____
   error = zeros(100,1);
%% Composite 3 by 3 matrices vector of each link
% Column 1: Positional vector of starting point of the link [x, y, z]
% Column 2: Positional vector of ending point of the link [x, y, z]
% Column 3: Angles[ existence of the angle( 0 or 1 ), theta, phi]
%% Loop for the matching x, y, and z deviation in the cycle

Similar Posts