SAFMC 2023

SAFMC 2023
Jan-Apr 2023

c++
esp32
3dp
drones

Participated in Singapore Amazing Flying Competition (SAFMC) 2023 in Categories D1 (Semi-autonomous) and E (Swarm).

We achieved 2nd Runners Up for the search-and-rescue objectives in Cat E, and reached Quarterfinals with our custom 3D-printed gyroscope glove in Cat D1.

Search-and-rescue

Points were awarded for the number of drones that took off with a minimum number of drones. We decided to go with the DJI Tello drones because we had them in abundance.

We didn't have enough time to build 20+ custom swarm drones but the juniors eventually did in subsequent years!

The rough mission outline was to use the swarm to perform search-and-rescue operations.

There were many hiccups both before and during the competition, which included:

  • The poor precision of the Python SDK for the Tello drones
  • The instable airflow which resulted in the drones colliding with each other constantly

Ultimately we out-scored the other teams because we had more drones that took off successfully, and even managed to locate and secure a bonus point "survivor".

Semi-autonomous

There was a requirement to have a "semi-autonomous" drone, in that it had to be controlled in a manner that did not involve a conventional controller.

We decided to use a gyroscope glove to control the drone - also because we had a half-complete glove prototype that one of our team members had built.

Implementation

Our system uses an ESP32 microcontroller coupled with a BNO055 orientation sensor (an IMU with built-in sensor fusion) to track the precise movements of the pilot's hand.

The glove translates these hand gestures into standard SBUS signals that any drone flight controller can understand.

The core of our system has several key components:

  • The orientation sensor precisely tracks the glove's position in 3D space, measuring roll, pitch, and yaw.
  • We implemented a calibration system that zeros out the initial position, so the pilot can hold their hand in a natural "home" position when starting. This was a pain point for us.
  • Two buttons on the glove allow for altitude control (throttle)
  • We used a deadband system in the code to filter out small, unintentional hand tremors, ensuring smooth control.
  • The sensor data gets mapped from raw orientation values to standardized RC channel values between 1000-2000μs, which any drone can interpret.