(CC-BY-NC-SA)
This document was produced on r format(Sys.time(), "%a %b %d %Y")
using robubu
version r packageVersion("robubu")
Currently you will find makeflightplan and the rest of the uav stuff only in the robubu package. If you want to use it the probably easiest way to install robubu
is to use library("devtools")
. With devtools
installed and loaded type the following:
install_github("gisma/robubu")
The basic idea is to provide an easy to use workflow for controlling rtf UAVs from planning and flying autonoumous surveys to derivation and postclassification of the data.
The central script for survey planning is murcs (Make Uav Survey Controlfile). murcs creates either intermediate flight control files for the dji phantom x UAVs or ready to upload control files for the 3DR Solo.
The dji control files are designed for using with the propietary litchi flight control app exchange format, while the 3DR Solo files are using the MAVLINK common message set, that is used by the PixHawk flight controller family. Both are implemented very rudimentary.
The reason using DJI is their absolute straightforward usage. Everybody can fly with a DJI but the price ist a hermetically closed system. Only the litchi app provides additionally to a cloud based mission planer an offline/standalone interface to upload a csv formated waypoint file for autonomous flights to the Phantom.
The open uav community is focussed on the PixHawk autopilot unit and the Mission Planner software. It is well documented and serveral APIs are provided. Nevertheless a terrain following autonomous flight planning tool is not available. murcs creates static implementation of the MAV format that is ready to be uploaded directly on the Pixhawk controller using the upload2Solo function.
To define a flight area you have to provide either 4 Points (or 3 lines). You may take more complex vectors like a multi point polygon, but only the first 4 coordinates x1, x2, x3 and x4 (for the launching position) are used in exactly this order. If you take a rectangle the 4th corner coordinate will be the launching point!
The concept is looking like the following sketch.
x2------x3 x2-------x1 | a / | / | x4 / x4 | / / / x1/ x3/
This coordinates the length of the line and the angle are used to calculate extend and paralells of the flightplan according to the flight altitude, overlap etc. Note the flight direction depends on the order of the points. If the flightPlanMode is equal tracks.
The result look like this.
#--# #--> #--# # | | | / / / | | | / / / | | | / / / # #--# <--# #--#
If flightPlanMode is equal waypoints the result is an equal spatial distribution of waypoints:
#--# #--> #--# # | | | / / / # # # # # # | | | / / / # #--# <--# #--#
waypoints is optimal for autonoumous flights under calm conditions in complex terrain because the camara takes a picture at every waypoint track is optimal for relatively plain areas and automatically triggered picture capturing Note: Automatically picture capturing in a time interval works only within the range of the remote control. because the the uav needs a trigger signal for taking pictures.
The followSurface switch is used to adapt the fixed flight altitude into a terrain following flight altitude.
NOTE: You have to be aware that the DJI uav is calibrating the altitude at the launch position in the field! So you need either a correct coordinate altitude or a high resolution DEM to get a good! estimation of the lauch position and altitude. You must choose a clearly defined and reliable launching position both in the map and the field. If you fail I made the experience that the aircraft probably will hit the terrain...
How it works. Let us assume a defined flightaltitude of 50 m. According to the launching point altitude the uav will act like the following sketch shows:
............... x-(uav)-x ........... uav started at 30 m altitude results in a "real" flight altitude of 30m + 50m => 80m ___60m____ | | 30m _x__| | ____| |___ ___| |____ ___60m____ ..........| |............ uav started at 0 m altitude results in ___| |___ "real" flight altitude of 50m above 0m ____| | ___| |__x__ 0m
To avoid negative impacts from the P3 auto calibration, the launch altitude is used to correct the flight altitude according to: maximumAltitude_of_surveyArea + altitude_of_launchposition So the adapted flight altitude is always seen as the flight altitude above the highest terrain altitude:
```
...................................... real altitude of uav 110 m
___60m____ | | 30m _x_| |___ ____| | ___| |______
To get a fixed scale flight the launch altitude is used to correct the flight altitude according to maximumAltitude of surveyArea + altitude of launchposition. With the setting auf terrainfoollowing = true tis is calculated for each waypoint. . So the adapted flight altitude looks like:
.......... | | ....| |.... ....| ___60m____ |
....| | | |....... real altitude of uav 50m
30m x| |
_| |
| |x___ 0m
# Usecase EPSG:3031 ```xml <Layer> </Layer>
First the primary arguments:
Now we need an appropriate structure for these parameters to make it less complicated to feed the projView funktion with this information. This is a simple nested list. If we fill it with the values it looks like this:
First we need to load some packages and get data:
Please note you have to activate the layers using the layer control in the upper right corner.
For the NASA EarthData you may use the visEarthPole() function.
There are still a lot of limitations that need addressing:
In future releases I would like to
I hope that you will find projvView as useful.
If you have any feedback, please don't hesitate to contact me.
Bug reports should be filed at https://github.com/environmentalinformatics-marburg/mapview/issues
Cheers
Chris
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.