Difference between revisions of "Drone Meteorite Searching"
(→Computer things) |
(→Conducting the survey) |
||
(21 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
== Main Survey Data Collection == | == Main Survey Data Collection == | ||
− | === Drone Image Survey Requirements === | + | |
+ | |||
+ | === Survey strategy - Preparation Prior to Fieldtrip=== | ||
+ | |||
+ | When the data is processed, the oldest images are somewhat prioritised. | ||
+ | Hence the higher priority/probability areas should be surveyed first. | ||
+ | |||
+ | The simplest way to achieve this is to use Google Earth to cut the search area polygon into 5-20 smaller polygons, depending on the size of the survey: | ||
+ | |||
+ | * Import the kmz/kml fall line bounds that are output by the darkflight calculations | ||
+ | * Adjust the transparency to ~30-40 percent and change the color (pick your favourite), this will allow you to keep the background visible so you know if you planned flights cover the entire fall zone | ||
+ | * Move the cursor back and forth across the fall zone, while monitoring the ground elevation in the bottom corner of the screen, make a mental note of any major elevation shifts or gradual inclines across the fall zone | ||
+ | * Using the polygon tool, draw a ~1 km x 1 km box at one end of the fall zone | ||
+ | * If there is an elevation shift or difference of more than 5 m, tailor the shape such that the elevation does not change by more than 5 m within the polygon | ||
+ | * Repeat drawing polygons until the entire fall zone is covered, make sure to overlap the polygons by 30 m. Try not to make the polygons too elongated (no more than a 10:1 ratio for longest:shortest axes). | ||
+ | * To save each polygon to a kml, right click on its entry under ‘Places’ (a tab menu on the left side of Google Earth), and Rename it. Try to use a naming convention that makes sense, such as the name of the fall site, and general relative direction, and a sequence number that will sort them by survey priority. | ||
+ | ** BoreZ_03_FarEast | ||
+ | ** BoreZ_01_East | ||
+ | ** BoreZ_03_MiddleNorth ... etc | ||
+ | * Once renamed, right click again and select ‘Save Place As…’, which should show you a filesave dialog window. Make sure to save as a .kml | ||
+ | |||
+ | === Upload to the drone flight controller === | ||
+ | * Once all are saved, copy the kmls to the micro-SD card that will slot into the M300 smart controller, make sure to save another set of copies in the trip log directory. | ||
+ | * convert the .kml files into flightplans on the M300 smart controller | ||
+ | ** TODO This section needs to be redone by Seamus once I have the flight controller in hand, I want to be more specific about the sub menu details and names | ||
+ | ** With the .kml-loaded micro-SD card inserted into the smart controller, create a new flight "from kml" | ||
+ | ** Ensure the survey is an altitude between 25-30 m, with 15 % overlap, if you notice that windspeeds are less than 11 m/s, overlap can be reduced to 10 % | ||
+ | ** TODO Check: Image capture based on equal time (@Seamus what does this mean?). Other things? | ||
+ | ** ANSWER TO ABOVE QUESTION: I think, if you tell the drone to capture images based on distance, it will stop to take an image, rather than set a course and speed and snap images without stopping, some other details I have to double check and add to the list | ||
+ | |||
+ | === Conducting the survey === | ||
+ | '''One person should always be monitoring the drone during flight, this is their only job, this is a critical point of failure even though it is boring. This is also the only part of the process that could be dangerous as the drone could collide with crewed aircraft, people on the ground, or power lines (fire hazard)''' | ||
+ | * Every pass across the current flight zone you should look up to visually check the altitude and clearance above any obstacles | ||
+ | ** A previous error was encountered when the survey height was less than 30 m, the drone’s height would begin to drop over the course of the flight and the barometer sensor would not register the change, only the ventral ultrasonic sensors. TODO: to check, but hopefully RTK surveying will help maintain proper altitude. | ||
+ | * The smart controller volume should be loud enough to just make out the image capture sound effect every ~1 to 2 seconds, this will help inform you if the drone is behaving properly | ||
+ | * The drone pilot should rotate out with another pilot after 2 flights to keep them alert, rotating out between each flight is acceptable | ||
+ | * When the drone batteries are below 20% you should wait until it has completed a pass across the fall zone and is on the side closer to you to recall the drone | ||
+ | * recall the drone by pressing and holding the ‘home’ button on the controller (the controller should start beeping) | ||
+ | * monitoring its return | ||
+ | * DO NOT STEP OVER THE DRONE WHEN IT IS ON THE GROUND, WALK AROUND | ||
+ | * swap out the SD card after every flight (TODO Hadrien question for Seamus: WHY? when the data upload already has a backlog, not changing the SD card would return the drone to flight quicker. Also less handling and plugging in of SD card reduces the chances of data corruption.) | ||
+ | * ANSWER TO ABOVE QUESTION: To ensure the drone is imaging properly, we should add a step/script at some point (we've talked in the past) to automatically check the focus. If there is a major malfunction, we can catch it after 1 flight rather than waiting multiple and realizing there was an issue that started 2 or 3 flights before. Swapping the SD card takes 20-30 sec and happens parallel to the battery swap, time saved would be negligible. | ||
+ | |||
+ | === General Drone Image Survey Requirements === | ||
+ | This section is aimed for surveys not conducted as part of DFN operations. | ||
* Ground resolution: 2 mm /pixel | * Ground resolution: 2 mm /pixel | ||
− | * Overlap: 10% | + | * Overlap: 10-15% |
* Minimum sun elevation: X degrees (to avoid long shadows creating too many false positives. Ignore if overcast). Use https://www.sunearthtools.com/dp/tools/pos_sun.php to calculate survey start/end times for your location. | * Minimum sun elevation: X degrees (to avoid long shadows creating too many false positives. Ignore if overcast). Use https://www.sunearthtools.com/dp/tools/pos_sun.php to calculate survey start/end times for your location. | ||
* GPS tagging of the images (Exif) | * GPS tagging of the images (Exif) | ||
* Timezone set to UTC | * Timezone set to UTC | ||
+ | * RTK surveying | ||
+ | |||
+ | |||
''Note:'' | ''Note:'' | ||
+ | == Training Data Collection == | ||
− | + | Capturing quality training data is key to the whole process. | |
+ | Remember: Garbage in, garbage out. | ||
+ | Hence take extra care in doing this step well. | ||
− | |||
− | |||
− | + | === True images (meteorites) === | |
− | + | ||
+ | ==== Pack list ==== | ||
+ | * Meteorites OR meteoritic shaped rocks (meaning a rock between 2 and 10 cm diameter, with no elongated axis, or sharp edges) | ||
+ | * 2 people: one drone pilot, one pointer. | ||
+ | * black spray paint (matte or shiny). | ||
+ | * a drone | ||
+ | * a cardboard box and some gloves can be useful to avoid making a mess with the painted rocks | ||
+ | |||
+ | ==== Capturing true training data ==== | ||
+ | * Final resolution should be between 1.8 mm/pix and 2.2 mm/ pix resolution, know your drone, know your resolution. If using the M300 with the Zenmuse P1 (48 MP) camera and 50 mm lens, your altitude should be between 18 and 30 m. | ||
+ | If you have real meteorites with fresh fusion crusts, | ||
+ | * place a meteorite and point to it at least 3 m away, then pick up the meteorite to re-place it, to then take the next picture (only repeat up to 5 times, rotating and changing orientation each time). | ||
+ | * If possible place a small piece of Aluminum Foil that is smaller than the meteorite between the rock and the ground, your curator will thank you | ||
+ | * DO NOT LEAVE REAL METEORITES IN A LINE LIKE FAKE ONES. WE ARE HERE TO ADD TO THE METEORITE COLLECTION NOT SUBTRACT FROM IT | ||
+ | If you have fake meteorites (i.e. spray-painted rocks) | ||
+ | * place them in a line near different background objects (limestone rocks, saltbush, grass tuft, hole, lichen colony, etc) at least 3 m apart from the others, then walk next to the line and point to each rock | ||
+ | * The pointer should walk slowly, pointing to the rock nearest to them, the drone flyer should take only one image per rock, and should call out to the pointer if the pointer moved too quickly and the flyer was unable to take an image, otherwise the flyer should confirm ‘good’ once they have taken an image of the current rock in question | ||
+ | For Both Real and Fake Meteorites | ||
+ | * Between images, rotate the drone by up to 90 degrees to change the angle of shadows in the image. | ||
+ | * Before uploading the data, remove non-useful images (duplicates of the same pointed-at rock, unrelated random pictures). This clean up step will help limiting the amount of work downstream to label the data, and ultimately keep the training dataset clean. | ||
+ | * When labelling (drawing a box around the rocks) make sure to include the shadow the rock makes, that will help distinguish the rock from holes in the ground or other features that have no shadow. -> TODO copy that bit to the webapp documentation. | ||
+ | ''Do we need to capture true training data at every site?'' | ||
+ | We have built up a large dataset of meteorite and meteorite-looking rocks for training, hence the return on adding more training data tends to diminish. | ||
+ | However, this step is a relatively low effort thing to do at each new site visited (assuming you are just doing 10-20 meteorites). Over time it does truly really help increase the variance in the training set, ultimately making model predictions more accurate. | ||
+ | So avoid skipping it. | ||
− | == | + | === False Images (non meteorites) === |
+ | * Fly in a perimeter around the fall zone and take images every 10-30 seconds. | ||
+ | * During the perimeter flight, slowly adjust the height +- 5 m around the height you intend to survey at | ||
+ | * If the search area displays significant variations in ground features (rock type, vegetation), try to capture as much of these different backgrounds as possible. | ||
+ | ''Can I skip false training data collection at one site?'' | ||
+ | No, the prediction model will perform better if trained on the local background (vegetation, rock types, animals...). | ||
+ | So far we have not seen two fall sites that are similar enough to a point where that step could be skipped. | ||
== Low-resolution Survey == | == Low-resolution Survey == | ||
Line 37: | Line 115: | ||
* Ground resolution: 5 cm /pixel | * Ground resolution: 5 cm /pixel | ||
* Overlap: 70% | * Overlap: 70% | ||
+ | * If available, definitely do RTK surveying. | ||
+ | * (optional), use Ground Control Points (https://docs.webodm.net/how-to/ground-control-points) | ||
=== Data Processing === | === Data Processing === | ||
Line 67: | Line 147: | ||
See install notes: | See install notes: | ||
https://github.com/desertfireballnetwork/dfn-meteorite-drone-webapp/tree/main/mldaemon | https://github.com/desertfireballnetwork/dfn-meteorite-drone-webapp/tree/main/mldaemon | ||
− | |||
− | |||
== Checklists == | == Checklists == | ||
Line 76: | Line 154: | ||
=== Computer things === | === Computer things === | ||
− | * Laptop + backup laptop. Linux distro, ~1TB free space, SD card reader. | + | * Laptop + backup laptop. Linux distro, ~1TB free space, SD card reader. On DFN VPN, with relevant people's public keys authorized so remote debugging can happen. |
* Spin-up Webapp VM. | * Spin-up Webapp VM. | ||
− | * Start high-performance GPU computer (lab), or reserve a g2. | + | * Start high-performance GPU computer (lab), and/or reserve a g2.xlarge GPU VM on Nectar (https://dashboard.rc.nectar.org.au/project/reservations/). Start the client (see [[#GPU_machine_Deployment]]). |
=== Comms === | === Comms === | ||
Line 91: | Line 169: | ||
* Generator. | * Generator. | ||
* Petrol and/or diesel. Usage: ~X litres / 12h | * Petrol and/or diesel. Usage: ~X litres / 12h | ||
− | * Battery station + cables. | + | * Battery station + cables (notably XT90 to Anderson plug connector). |
− | + | * Rhonda roof-rack solar system: ~300W panel + MC4 fuse + MC4 extension leads + MC4 to Anderson adapter (all of this should be mounted permanently on Rhonda and not removed). | |
=== Drone === | === Drone === |
Latest revision as of 18:32, 29 November 2024
Contents
Introduction
Main Survey Data Collection
Survey strategy - Preparation Prior to Fieldtrip
When the data is processed, the oldest images are somewhat prioritised. Hence the higher priority/probability areas should be surveyed first.
The simplest way to achieve this is to use Google Earth to cut the search area polygon into 5-20 smaller polygons, depending on the size of the survey:
- Import the kmz/kml fall line bounds that are output by the darkflight calculations
- Adjust the transparency to ~30-40 percent and change the color (pick your favourite), this will allow you to keep the background visible so you know if you planned flights cover the entire fall zone
- Move the cursor back and forth across the fall zone, while monitoring the ground elevation in the bottom corner of the screen, make a mental note of any major elevation shifts or gradual inclines across the fall zone
- Using the polygon tool, draw a ~1 km x 1 km box at one end of the fall zone
- If there is an elevation shift or difference of more than 5 m, tailor the shape such that the elevation does not change by more than 5 m within the polygon
- Repeat drawing polygons until the entire fall zone is covered, make sure to overlap the polygons by 30 m. Try not to make the polygons too elongated (no more than a 10:1 ratio for longest:shortest axes).
- To save each polygon to a kml, right click on its entry under ‘Places’ (a tab menu on the left side of Google Earth), and Rename it. Try to use a naming convention that makes sense, such as the name of the fall site, and general relative direction, and a sequence number that will sort them by survey priority.
- BoreZ_03_FarEast
- BoreZ_01_East
- BoreZ_03_MiddleNorth ... etc
- Once renamed, right click again and select ‘Save Place As…’, which should show you a filesave dialog window. Make sure to save as a .kml
Upload to the drone flight controller
- Once all are saved, copy the kmls to the micro-SD card that will slot into the M300 smart controller, make sure to save another set of copies in the trip log directory.
- convert the .kml files into flightplans on the M300 smart controller
- TODO This section needs to be redone by Seamus once I have the flight controller in hand, I want to be more specific about the sub menu details and names
- With the .kml-loaded micro-SD card inserted into the smart controller, create a new flight "from kml"
- Ensure the survey is an altitude between 25-30 m, with 15 % overlap, if you notice that windspeeds are less than 11 m/s, overlap can be reduced to 10 %
- TODO Check: Image capture based on equal time (@Seamus what does this mean?). Other things?
- ANSWER TO ABOVE QUESTION: I think, if you tell the drone to capture images based on distance, it will stop to take an image, rather than set a course and speed and snap images without stopping, some other details I have to double check and add to the list
Conducting the survey
One person should always be monitoring the drone during flight, this is their only job, this is a critical point of failure even though it is boring. This is also the only part of the process that could be dangerous as the drone could collide with crewed aircraft, people on the ground, or power lines (fire hazard)
- Every pass across the current flight zone you should look up to visually check the altitude and clearance above any obstacles
- A previous error was encountered when the survey height was less than 30 m, the drone’s height would begin to drop over the course of the flight and the barometer sensor would not register the change, only the ventral ultrasonic sensors. TODO: to check, but hopefully RTK surveying will help maintain proper altitude.
- The smart controller volume should be loud enough to just make out the image capture sound effect every ~1 to 2 seconds, this will help inform you if the drone is behaving properly
- The drone pilot should rotate out with another pilot after 2 flights to keep them alert, rotating out between each flight is acceptable
- When the drone batteries are below 20% you should wait until it has completed a pass across the fall zone and is on the side closer to you to recall the drone
- recall the drone by pressing and holding the ‘home’ button on the controller (the controller should start beeping)
- monitoring its return
- DO NOT STEP OVER THE DRONE WHEN IT IS ON THE GROUND, WALK AROUND
- swap out the SD card after every flight (TODO Hadrien question for Seamus: WHY? when the data upload already has a backlog, not changing the SD card would return the drone to flight quicker. Also less handling and plugging in of SD card reduces the chances of data corruption.)
- ANSWER TO ABOVE QUESTION: To ensure the drone is imaging properly, we should add a step/script at some point (we've talked in the past) to automatically check the focus. If there is a major malfunction, we can catch it after 1 flight rather than waiting multiple and realizing there was an issue that started 2 or 3 flights before. Swapping the SD card takes 20-30 sec and happens parallel to the battery swap, time saved would be negligible.
General Drone Image Survey Requirements
This section is aimed for surveys not conducted as part of DFN operations.
- Ground resolution: 2 mm /pixel
- Overlap: 10-15%
- Minimum sun elevation: X degrees (to avoid long shadows creating too many false positives. Ignore if overcast). Use https://www.sunearthtools.com/dp/tools/pos_sun.php to calculate survey start/end times for your location.
- GPS tagging of the images (Exif)
- Timezone set to UTC
- RTK surveying
Note:
Training Data Collection
Capturing quality training data is key to the whole process. Remember: Garbage in, garbage out. Hence take extra care in doing this step well.
True images (meteorites)
Pack list
- Meteorites OR meteoritic shaped rocks (meaning a rock between 2 and 10 cm diameter, with no elongated axis, or sharp edges)
- 2 people: one drone pilot, one pointer.
- black spray paint (matte or shiny).
- a drone
- a cardboard box and some gloves can be useful to avoid making a mess with the painted rocks
Capturing true training data
- Final resolution should be between 1.8 mm/pix and 2.2 mm/ pix resolution, know your drone, know your resolution. If using the M300 with the Zenmuse P1 (48 MP) camera and 50 mm lens, your altitude should be between 18 and 30 m.
If you have real meteorites with fresh fusion crusts,
- place a meteorite and point to it at least 3 m away, then pick up the meteorite to re-place it, to then take the next picture (only repeat up to 5 times, rotating and changing orientation each time).
- If possible place a small piece of Aluminum Foil that is smaller than the meteorite between the rock and the ground, your curator will thank you
- DO NOT LEAVE REAL METEORITES IN A LINE LIKE FAKE ONES. WE ARE HERE TO ADD TO THE METEORITE COLLECTION NOT SUBTRACT FROM IT
If you have fake meteorites (i.e. spray-painted rocks)
- place them in a line near different background objects (limestone rocks, saltbush, grass tuft, hole, lichen colony, etc) at least 3 m apart from the others, then walk next to the line and point to each rock
- The pointer should walk slowly, pointing to the rock nearest to them, the drone flyer should take only one image per rock, and should call out to the pointer if the pointer moved too quickly and the flyer was unable to take an image, otherwise the flyer should confirm ‘good’ once they have taken an image of the current rock in question
For Both Real and Fake Meteorites
- Between images, rotate the drone by up to 90 degrees to change the angle of shadows in the image.
- Before uploading the data, remove non-useful images (duplicates of the same pointed-at rock, unrelated random pictures). This clean up step will help limiting the amount of work downstream to label the data, and ultimately keep the training dataset clean.
- When labelling (drawing a box around the rocks) make sure to include the shadow the rock makes, that will help distinguish the rock from holes in the ground or other features that have no shadow. -> TODO copy that bit to the webapp documentation.
Do we need to capture true training data at every site?
We have built up a large dataset of meteorite and meteorite-looking rocks for training, hence the return on adding more training data tends to diminish.
However, this step is a relatively low effort thing to do at each new site visited (assuming you are just doing 10-20 meteorites). Over time it does truly really help increase the variance in the training set, ultimately making model predictions more accurate.
So avoid skipping it.
False Images (non meteorites)
- Fly in a perimeter around the fall zone and take images every 10-30 seconds.
- During the perimeter flight, slowly adjust the height +- 5 m around the height you intend to survey at
- If the search area displays significant variations in ground features (rock type, vegetation), try to capture as much of these different backgrounds as possible.
Can I skip false training data collection at one site? No, the prediction model will perform better if trained on the local background (vegetation, rock types, animals...). So far we have not seen two fall sites that are similar enough to a point where that step could be skipped.
Low-resolution Survey
(optional) Needed to make a background map of the survey area (used as a layer on slippy map on Webapp).
Data Collection
- Ground resolution: 5 cm /pixel
- Overlap: 70%
- If available, definitely do RTK surveying.
- (optional), use Ground Control Points (https://docs.webodm.net/how-to/ground-control-points)
Data Processing
- Upload and process the data on WebODM (cloud version).
- Download the data product: Orthomosaic (large geoTiff file).
- Upload geoTiff to Mapbox: https://studio.mapbox.com/tilesets/
- Wait for processing, note the Tileset ID, make sure it is public, and put that ID somewhere... TBD
WebODM setup
- feature-type: orb
- use-fixed-camera-params: enable
- sfm-no-partial: disable
- skip-3dmodel: enable
- skip-report: enable
- fast-orthophoto: enable
- dsm: disable
Meteorite Candidates Follow-up
Webapp Deployment
See deployment notes: https://github.com/desertfireballnetwork/dfn-meteorite-drone-webapp/tree/main/webapp
GPU machine Deployment
Heavy lifting jobs (Machine Learning training and inference) need a GPU desktop or beefy VM. This machine just needs to be connected to the internet, and will work as a slave wrt the webapp on the VM.
See install notes: https://github.com/desertfireballnetwork/dfn-meteorite-drone-webapp/tree/main/mldaemon
Checklists
Misc
Computer things
- Laptop + backup laptop. Linux distro, ~1TB free space, SD card reader. On DFN VPN, with relevant people's public keys authorized so remote debugging can happen.
- Spin-up Webapp VM.
- Start high-performance GPU computer (lab), and/or reserve a g2.xlarge GPU VM on Nectar (https://dashboard.rc.nectar.org.au/project/reservations/). Start the client (see #GPU_machine_Deployment).
Comms
- Starlink unit.
- Starlink ethernet adapter.
- Re-activate Starlink subscription that should be on pause (ask Hadrien).
- WiFi router with WAN port and swappable antenna (SMA).
- high-gain 2.4GHz WiFi antenna.
- hand-held UHF radios (1 pp) + charger.
Power
- Generator.
- Petrol and/or diesel. Usage: ~X litres / 12h
- Battery station + cables (notably XT90 to Anderson plug connector).
- Rhonda roof-rack solar system: ~300W panel + MC4 fuse + MC4 extension leads + MC4 to Anderson adapter (all of this should be mounted permanently on Rhonda and not removed).
Drone
- Drone.
- Drone camera + lenses.
- Drone controller.
- RTK base station.
- Batteries (charge them just before the trip).
- Battery charger.
- SD cards.
- Something to make a landing pad (e.g. tarp).
- stuff for making ground control points (for the low-res survey)