Close
0%
0%

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 of Free Flying flocks has been on-going since 2016 in various forms 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 descent 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 butterfly, Monarchs travel 1000s of miles. They do not fight the conditions. Or take a bigger engine. They use the environment and timing to travel far.  

photo: Small unit flying at Woodrat Mountain in Ruch, Oregon. 2020

I want to thank Yohan from https://hackaday.io/project/176621-r2home for the inspiration to post this work. The article on him got me to reach out and start to share lessons I learned so that he can be more successful, faster. He is super smart, motivated and talented. Thank you for getting me in gear and looking through files and folders to find failures.. videos and pictures. 

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. 

The ultimate goal is to have multiple vehicles coordinating together to do good for our planet, and our understanding of energy, mass and water exchange in atmosphere.

The high altitude drop was quite exciting. Here is a timing run down. 

Balloon Launch from Ground 00:13:28

Release at 18,000m (60,000ft) - Time Stamp 00:51:27 

Wing finally has enough air to open 9 seconds later (~400m free fall)- Time Stamp 51:36

Opens with twists, twisted until - Time Stamp 00:52:12

Untwisted in spiral maneuver, overspeed collapses - Duration 43 seconds. 

Exit and stable flyaway - Time Stamp 00:52:55

So over a minute of terror!!! hahah well not really it was a brave robot. 

If you do the math on that.. as an estimate the system needed to fall at 88.3m/s before the single surface wing had enough dynamic pressure to open at 18,000m.  If you go higher the air is thinner. I would like the system to be open and flying above 114,000ft so basically double the height. To demonstrate Martian explorer capability. 

Units need to communicate in a simple, low power way. One solution is LoRa and things like Meshtastic, another option while in the research phase is to use APRS. I have some ideas about how to create team logic and strategies for different types of sensing missions.  

One I always daydream about is full 3D time lapse of thunderstorm. Throw a couple into the fire and see what happens. Have a group that is flying big circuits around spaced out, all filming.. Would be incredible. 

TESTED_FLIGHTcontrolbirdfishv2_flightFixed.txt

Flight tested.. With one error fixed.

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

Download

controlParaSoundingv4.ino

Latest version.. With lessons learned implemented

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

Download

exactflat.jpg

taking 3d surface and making flat pattern

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

Preview
Download

quadwing.f3d

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

Download

celldxfs.f3d

A Wing design cutfiles with seam allowance Fusion360 archive

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

Download

View all 29 files

  • Weather, The Invisible Force (sometimes)

    freeflightlab9 hours ago 0 comments

    Well Today I planned to make some videos of testing one of the newest units.. 

    After flying some RC planes in the field to warm up, all of the planes are 3d printed (https://www.eclipson-airplanes.com/airplanes)

    It started to rain, in fact my maiden flight of a plane was in the rain.. Super fun, but no paraglider flight testing.  

    The window we had was from 9-10am. 

    Weather.. I've devoted a lot of passion and energy since about 2010 into understanding our Earth's processes in greater detail. I like the limits of things, or to imagine where those limits might be.. 

    2008 - Started sailing by repairing hurricane damaged boats and testing them... 

    2010 - Refocus Carbon Cycle Project at International Space University

    2012 - Started Paragliding

    2015 - Anticip8  - Weather Analytics Company Startup Incubator - Singularity University

    2017 - Express 37' National Champions - Sailing.

    2018-2020 - Monark - Weather Analytics, GNSSRO, Global Sensing at Scale | Airbus, Acubed Innovation Center

    2020 - BBC Super Powered Eagles / PBS NOVA Eagle Power - Tandem Paragliding with Lloyd Buck 

    To me weather is a critical part of operating flying vehicles safely, and understanding it is the crux of getting global adoption of autonomy.

    You must consider to your fullest extent of skill possible/available all risks that are present, or in a different way, potential opportunities for performance gains.

     I love to sail and paraglide, both of these use no fuel, only sunlight and wind. Other vehicles can use this mindset to keep flying or to safely launch or land. 

    The topic of weather, and climate is difficult because it happens at various scales of time and dimension. Ok that sounds crazy, but how do I talk about the tiny flies that float in early morning sun around my plants in the same context as wind driven sea spray impacting the formation and trajectory of a hurricane. 

    This is also why it has been difficult to fully resolve the physics that go into computational analysis of weather and Earth processes. Things must be parameterized to be able to get an answer before the event occurs. Where is this limit.. 

    There is a great statement from the book '2081 A hopeful view of the Human Future' - Gerard K O'Neill

    -Von Neumann imagined that by the 1980s a very big electronic computer would be able to predict weather quite accurately. But weather prediction isn't a great deal better now than it was several decades ago. The atmosphere of Earth is enormous, a billion cubic miles in volume, and it reacts to sunlight, cloud cover, the exchange of heat with the oceans and the land, and even to the particles streaming off the sun. To make perfect predictions we'd need not only a computer of infinite speed and memory, but a system of sensing devices at every latitude, longitude, and altitude in the atmosphere, measuring at every moment the temperature, pressure, humidity, wind, airborne dust, and perhaps still other variables. In fact, measurements are only taken twice daily, and only at wildly scattered geographic locations. Over great areas of oceans, desert, and polar regions there are almost none at all. In reality, weather prediction can be affected more by a governmental decision to economize the number of air samples taken per day than by the advances in the speed and memory capacity of computers ------ 1980

    Since 1980 there have been significant improvements in both ends of sensing and forecast skill. We have not rea yet reached the limit of what is possible. Many "advanced" uav projects and high altitude platforms focus on the technical aspects of design, and offering capability to customers. We see this is difficult as Loon was just shut down. The difference between 1000 platforms, and 10 are how well do you understand your ability to navigate and maintain flight aloft. This skill is massively correlated to weather and environment. Groups like Perlan 2.0 and HAPS platforms...

    Read more »

  • Underloading Failures

    freeflightlab5 days ago 0 comments

    When something works.. sometimes I move on.. sometimes I skip things.. well loading was a big one. Ill let you learn through all the videos of me excited to go test, and fly and.. well. failing.. 

    All of these failures are mostly due to having the payload too light!! yeah i said it.. too light.... its like backwards airplane.. make things heavy and strong.. why.. because then you wont have to add batteries and steel to make it correct. 

    You will see 2 wings in this... the yellow is smaller than the white.. both.. i fail at... 


    After the first wings worked, I wanted to move right away to the larger higher performance ones. I totally underestimated the loading needed for them to fly properly. 

    Glide Test

  • Flying the creation!

    freeflightlab01/11/2021 at 23:45 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

    freeflightlab01/11/2021 at 19:51 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.

    Why? 

    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. 

    Packed 

  • 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() {
      Serial.begin(9600);
       Uart.begin(9600);
        
        myservo1.attach(3); //set servo 1 to pin 3 pwm level 1
        myservo2.attach(4); //set servo 2 to pin 4 pwm level 1
        
         
     delay(100);
      // Initialize the sensors. level2
      accel.begin();
      delay(10);
      mag.begin();
      delay(10);
      bmp.begin();
      delay(10);
      Serial.println("started");
      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;
      delay(10);
    
      sensors_event_t event; //level3
      bmp.getEvent(&event); //level3
      
      myservo1.write(pos1);
      myservo2.write(pos2);
    
       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 = Uart.read();
           //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){
      delay(50);
    myservo1.write(100);
    myservo2.write(pos2);
    Serial.print("right turn"); Serial.println();
    Serial.print("Goal");Serial.println();
    Serial.print(testalt);Serial.println();
    delay(45000);
    Serial.print("Hands Up");Serial.println();
    myservo1.write(pos1);
    myservo2.write(pos2);
    delay(20000);
    Serial.print("left turn");Serial.println();
    myservo1.write(pos1);
    myservo2.write(80);
    delay(45000);
    Serial.print("Hands Up");Serial.println();
    myservo1.write(pos1);
    myservo2.write(pos2);
    delay(20000);
    Serial.print("Distance to Goal: ");
        Serial.println(dist_calc);Serial.println();
    }
    
    //head for waypoint between release and waypoint
    
    while((gps.f_altitude()) > 500 && gps.f_altitude() < 16150 ){
    //while(testalt >15 && testalt < 1000){
      myservo1.write(pos1);
      myservo2.write(pos2);
      Serial.println();
    
    brng = brng1;
     
    //hands up for +/- 10 degrees on heading
      if(ERsplit < 180 && ERsplit > 160){
        turngain=1; 
       poscom1=pos1;
       poscom2 = pos2; 
       Serial.print("hands up");Serial.println();
    }
     if (ERsplit < 20 && ERsplit > 0){
       turngain=1; 
       poscom1=pos1;
       poscom2 = pos2;
        Serial.print("hands up");Serial.println();
       }
    
       //
    
    //small turn from +/- 10 to +/-45
      if(ERsplit < 160 && ERsplit > 135)
        turngain=0.4;
      if (ERsplit <45 && ERsplit >20)
        turngain=0.4;
        
    //medium...
    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 9 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. 

    There is an interesting lesson from another test.. What happens if you lose power.. Do you want to fly straight? Maybe.... 

    I'm not opposed to slow turns into the ground.. I did that by accident here. A switch that I was using to not have to plug batteries in each time, fried. Again... and I lost all power.. Luckily the power off configuration... had a bit of turn in how I adjusted the brakes.. just enough to make it not land in a tree!!!!!!! yipeeee!

View all instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

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