Project Bird Fish - Free Flight Robotics

Considerate conservation and climate science is on the horizon. These robots are developed to work in multi-species flocks for GOOD!

Similar projects worth following
Non-rigid airfoils have enormous potential, but to date automated systems must be reliable and therefore tend to be low performance high loading airfoils. Like parachutes. Paragliding is an elegant form of flight along with other free flight methods. These vehicles have the highest payload-performance to aircraft weight/pack-volume of any aircraft or flight platform in the world. To this end. Development has been on-going since 2016 in various forms. To begin with at Autodesk Pier 9 where it was conceived, then within Free Flight Lab a non-profit research lab, then within a larger project called Monark we were able to flight test this concept at 18,000m using a high altitude balloon. The payload collected atmospheric data and flew to a waypoint 50km away. Work is on going on new versions un-related to past versions based on lessons learned.

Typical paragliders that human pilots fly have 6:1 -> 12:1 glide ratios. high performance sail planes are incredible with up to 70:1 glide ratio. I'm confident we will see cooperative free flight flocks in the near future. 

Full size paraglider wings carry 60-220kg. I fly a wing rated to 95kg, 105kg, and a tandem rated to 220kg. 

Typical Decent wings like speed wings and ram-foil parachutes are in the <3:1 area... with some exceptions. This limits operations mostly to waypoint tracking and arrival in a 4-D manner. This is still novel and unique. You can see groups like space-x and worldview successfully conduct these operations. What if you open much higher, what if you had the skills of a trained free flight pilot, and finally what if you could talk to your friends of all types to find out where the best lift is and what conditions are like elsewhere. 

A human pilot who is skilled, in the right place, on the right day, with the right mindset and gear can fly over 12hours and over 500km in a single flight. 

It is much easier to fly when you are observing the other creatures, bugs, birds, pilots around you. This naturally leads to a flock can always fly faster and farther.

What is the most simple form of this?  What is the most advanced, complex tech saturated form?

Think about a buttery fly Monarchs travel 1000s of miles. They do not fight the conditions. They time them well to travel far.  

This is what it looks like.. 4hours later many of these pilots were over 100km away from the start. 

On a different flight, this is the view down. I was above other pilots, and as you can see we crossed into land that had more agriculture. That directly changed our ability to fly. You can see the line... as we go from dry land to wet crops. Within the next 30min all pilots were on the ground. 


Flight tested.. With one error fixed.

plain - 9.94 kB - 01/10/2021 at 01:10



Latest version.. With lessons learned implemented

ino - 9.57 kB - 01/10/2021 at 01:10



taking 3d surface and making flat pattern

JPEG Image - 75.06 kB - 01/08/2021 at 00:07



Design of my own wing. cut files below are via exact flat. From 3d surfaces.

fusion - 7.62 MB - 01/08/2021 at 00:05



A Wing design cutfiles with seam allowance Fusion360 archive

fusion - 806.60 kB - 01/08/2021 at 00:00


View all 29 files

  • Flying the creation!

    freeflightlab4 days ago 0 comments

    Ok here is some flying footage. Of both the big servo and small servo units. As well as the center EDF Mario Bullet version3

  • EDF vs. Pusher Fan

    freeflightlab4 days ago 0 comments

    The goal of the project is free flight, so why mess around with motors. Well Simplicity. keep everything simple... simple... i hope.. simple.. 

    I could either keep flying a two part system. Drop drone, drop plane, bridge, building, paraglider.... 

    Or.. just fly up.. and test things with the throttle off. So.. 1 system it is.. can we keep it simple? 

    can we share it in a way that it is simple for others?? ugh... we will see. 

    what is the right thing to use... a large prop!!!! pusher... yea.. that is.. but why am I using EDF.... 

    EDF are more power hungry and less efficient.


    For Simplicity.

    For Safety.

    The goal is that anyone could handle, launch and recover. 

    In the end I needed to increase loading for the wings to work anyway, so extra batteries was not an issue. 

    I'm using 2 - 3S 1500mAh batteries. Sometimes I plug them in together for long flight times, other times just one at a time. 

    The original model I tested did have a pusher. It worked great. It also chopped lines... at least once. 

    I have tried at least 3 sizes from 55mm to over 80mm. The large ones are loud and power hungry. 

    Small ones are sorta not super efficient, but do the job. So what is the thrust vector?! Right now its perpendicular to "vertical" along the X axis. 

    I have tried models pitching it down up to 10 degrees. It also requires finding the sweet spot of thrust, to moment.. to climb efficiently. 

    Well Id like to adjust it from where it is.. Mainly because it pitches back the system, and if the loading is not enough a stall will occur. To take care of this I add a bit of speed system just as I get off the ground. 

    I took it out today to test fly and get re-familiar with the unit so I can write these logs better. 

    To add to the fun. Bob was flying. He landed so perfectly. no flipping. Full brakes. Flare to ready to fly again. Congrats Bob.. well done. 

  • Deployment Bag - Dbag

    freeflightlab01/08/2021 at 17:59 0 comments

    Learning from what works. What do humans do to jump out of things with paragliders and high aspect ratio wings.. its not like a parachute. One must avoid cravats and the lines are thinner. Not meant for shock inflation. 

    I based my design directly off of the JUSTAcro D-Bag designed by Pal Takats. I also used his packing method.  

    First drawing.

    Made it out of paper next.

    Outside of bag. Note attachment points Velcro direction. Flaps. And reinforcements on the line keeper flap

    View of inside portion of bag. 


  • Automation Code for Flying Paragliders

    freeflightlab01/08/2021 at 17:16 0 comments

    //level 6 heading based turn
    #include <PWMServo.h> //level 1
    #include <i2c_t3.h> //level 2
    #include <Adafruit_10DOF.h> //level2
    #include <Adafruit_Sensor.h> //level2
    #include <Adafruit_LSM303_U.h> //level2
    #include <Adafruit_BMP085_U.h> //level2
    #include <Adafruit_Simple_AHRS.h> //level2
    #include <TinyGPS.h> //level4
    PWMServo myservo1;  // level 1 create servo object servo1
    PWMServo myservo2;  // level 1 create servo object servo2
    TinyGPS gps; //level 4
    // Create sensor instances. //level2
    Adafruit_LSM303_Accel_Unified accel(30301); 
    Adafruit_LSM303_Mag_Unified   mag(30302);
    Adafruit_BMP085_Unified       bmp(18001);
    // Create simple AHRS algorithm using the above sensors. //level2
    Adafruit_Simple_AHRS          ahrs(&accel, &mag);
    //  LEVEL 2 Update this with the correct SLP for accurate altitude measurements
    float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;
    HardwareSerial Uart = HardwareSerial(); //level4
    int pos1 = 140;
    int pos2 = 50;
    float poscom1 = pos1;
    float poscom2 = pos2;
    int n = 0;
    int xint=0;
    int loopcnt=100;
    int turnlevel=50;
    float heador = 0;
    float headorOLD = 0;
    float latgoal=37.362081;
    float longgoal=-120.993190;
    float brng = 0;
    float brng1 = 0;
    float turngain = .25;
    float dist_calc = 0;
    float ERRORhead = 1; // difference between heading and bearing
    float ERabs = 1; 
    float ERsplit=1;
    //Use for Testing Altitude based logic! yea it mostly works
    float testalt= 600; //meters
    unsigned long course = 0;
    void gpsdump(TinyGPS &gps);
    void printFloat(double f, int digits = 2);
    void setup() {
        myservo1.attach(3); //set servo 1 to pin 3 pwm level 1
        myservo2.attach(4); //set servo 2 to pin 4 pwm level 1
      // Initialize the sensors. level2
      Serial.print("Servo1 Position, ");Serial.println(pos1);//level1
      Serial.print("Servo2 Position, ");Serial.println(pos2);//level1
      Serial.println("10 DOF Board AHRS Starting"); Serial.println("");//level2
    void loop() {
      sensors_vec_t   orientation;
      sensors_event_t event; //level3
      bmp.getEvent(&event); //level3
       bool newdata = false; //level4
      unsigned long start = millis(); //level4
       // Every 5 seconds we print an update //level4
      while (millis() - start < 5000) {
        if (Uart.available()) {
          char c =;
           //Serial.print(c);  // uncomment to see raw GPS data
          if (gps.encode(c)) {
            newdata = true;
            //break;  // uncomment to print new data immediately!
    //turn circles when near waypoint
    while(gps.f_altitude() < 500 && dist_calc < 1){
    //while(testalt<15 && dist_calc < 0.8){
    Serial.print("right turn"); Serial.println();
    Serial.print("Hands Up");Serial.println();
    Serial.print("left turn");Serial.println();
    Serial.print("Hands Up");Serial.println();
    Serial.print("Distance to Goal: ");
    //head for waypoint between release and waypoint
    while((gps.f_altitude()) > 500 && gps.f_altitude() < 16150 ){
    //while(testalt >15 && testalt < 1000){
    brng = brng1;
    //hands up for +/- 10 degrees on heading
      if(ERsplit < 180 && ERsplit > 160){
       poscom2 = pos2; 
       Serial.print("hands up");Serial.println();
     if (ERsplit < 20 && ERsplit > 0){
       poscom2 = pos2;
        Serial.print("hands up");Serial.println();
    //small turn from +/- 10 to +/-45
      if(ERsplit < 160 && ERsplit > 135)
      if (ERsplit <45 && ERsplit >20)
    Read more »

  • Development Platform - BirdFish 1

    freeflightlab01/08/2021 at 04:19 0 comments

    The first design was born out of urgency. After some lessons learned. I CAD'd up the foam design so that it could be 3d-printed and shared. 

    Limiting support material at first was a goal, but then.. well.. I totally abandoned it. I needed interfaces where I needed them, and strength where I needed it.. Oh how I wish I had the time and patience for elegance.. Well here you go. 

    One thing I wanted to add was a speed system. This is an accelerator, that changes the angle of incidence of the wing relative to the robot pilot. The effect is that the system flies faster. The glide is reduced, but the Freedom of Movement is increased in situations with headwind. I made small pullies with even smaller bearings, why? because i tried to find tiny bearings! it was awesome. 

    One thing that was discovered primarily due to scaling up the wings, was that when loading was increased the original 9g servos just didnt have enough torque to steer. This also was noted when flying at Pacifica, California in 20mph of wind. 

    More POWER! I added larger servos, but in doing so a number of issues popped up. 

    1. The noise was so loud because of the constraining of the airflow on the EDF

    2. The control arms needed a redesign. 

    3. More power use. 

    4. there was an unexpected unplanned benefit from undersizing the servos.. In high speed high load situations.. the wing.. well wouldnt spin or stall due to input.. When flying lightly loaded this was a characteristic that was noted often. The limited torque would mean almost no displacement for the servo.. In 30mph of wind.. thats perfectly fine.. 

    5. My issue with 4 is that its not controlled.  

    These units are to understand the wings. Not for the free flight side of things, but its not everyday that you can deploy from a balloon, or you must have a UAV or other method, building, bridge etc. I did not have these. 

    Speed system on the single surface, helped but also led to many frontal collapses.. In the end.. Im not sure it is the right fit. Also it was critical to not induce any torque from the speed system, or the pilot would rotate and the thrust vector would change. This could be used as an advantage, but I choose to reduce it to near zero. 

    The idea was to build these out to be super reliable. share with the world. Get students and universities developing the software further. Work on modes and automation, as well as fleet management, deployment and collection. 

    How do you create a process everyone has access to. Well. To tune the brakes. I figured I need load in some direction at minimum. So I hung the whole thing from my ceiling. This gave me a great starting point that I later adjusted. 

    I was able to get four models in the hands of pilots for good, and at least three more test pilots trained up. It was really fun. Once everything worked. One VIP aspect was a switch to not have to pull the XT60 each time.. since. that. for me.. um breaks things.. models that are delicate to be specific. Well the high amps of the EDF fried the switch and wings were almost lost in terrible places... 

  • Thin Air

    freeflightlab01/08/2021 at 00:47 0 comments

    This is slightly out of order, but will allow the reader to understand some of the context for the current work.

    For the automated paraglider. The single most challenging part was finishing before our launch date... then after that, i'd say the falling with no air.... This was expected, but to what extent was not known at the time. The goal was to prepare the deployment bag in a way that there was a high probability of success. The design of the robot had a wide riser separation, approaching the limit of what was a good idea.. This allowed for the robot to naturally untwist, if twists occured.... They DID.. here is a moment of silence before some brief chaos. 

  • Early Work at Pier 9

    freeflightlab01/08/2021 at 00:45 0 comments

    The early work started with making my own wing. That was hard. I then went with getting an off the shelf wing. I will return to wing design, but I realized it was more critical to nail the full chain of events. 

View all 7 project logs

  • 1
    55mm EDF Testing Unit - Small Servo

    (under construction. pictures of a unit with big servos. note the blocking effect... fixed... but not in this one. crash more.. then it will be fixed. )

    1. Print 

    2. Remove Support Material

    3. Using silicone glue in EDF. 

    4. Screw In Servos for Arms. 

    5. Cut length of carbon fiber or wooden rod for the riser attachments. 

    6. If using a switch (I keep frying them... so be careful) Install switch. 

    7. Using double sided tape. Mount Receiver, ESC.

    8. (Optional) If adding speed system. Build Turning Blocks. 

    9. Attach two lines that are too long to the servo arms on the speed system. 

    10. Attach wing to base. 

    11. Connect electronics to transmitter. Power on. Get zero position and find out if the EDF is wired the right direction, if not. swap two wires to the ESC. 

    12.  Attach Control Arms to Servos in the "up" Neutral position.

    13. Hang unit upside down. Adjust brake line length. 

    14. Run speed system lines to cascade attachment on the A risers. (most front) Tighten to where at neutral speed system, there is almost no slack. 

    15. Clean up wires and tape in battery pack. 

    16. Go fly. 

  • 2
    Tuning the brakes

    So.. You have it working. it flies. mostly. 

    Depending on battery and servos. You will need to adjust some things to get it flying well. 

    When you fully deflect the right or left. the wing should just break into spin. 

    When you fully bring both arms down it should just break away into full stall. Establish a stable back fly. 

    With hands full up. There should be no deflection of the trailing edge. 

    I need to get someone to help film this. Stand by... 

View all instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates