Using your own map data in Mission Planner

So tell me, what is the goal of this post?
The goal is that you, too, see a picture like this:
3689541294?profile=originalAnd... why would anyone want this when we have global satellite coverage via Google Maps?
In some parts of the world, Googles satellite imagery is not very accurate. Custom maps allow you to use a better overview of what your Ardupilot is doing.
Another advantage is that the method detailed in this post works completely offline. That means you don't have to prefetch the region in which you are flying.
A third point is that although not detailed in this post all kinds of overlays over map data can be created by your GIS server before displaying the data on MissionPlanner.
Ok so tell me: What do I have to do?
To follow the first steps of this tutorial you need two things: GeoServer, which is an open source WMS (Web Map Service) server and a GeoTIFF image of the region in which you are flying.
For the purpose of this tutorial, I will be using sample data provided by the USGS.
So, download these things:
GeoServer: http://geoserver.org/display/GEOS/Stable
GeoTIFF: ftp://ftp.remotesensing.org/geotiff/samples/usgs/ (I used c41078a1.tif and c41078a1.lgo)
Create a separate folder, for example "geotiff_examples" somewhere on your computer and put c41078a1.tif and c41078a1.lgo in there.
You said that is for the first steps! What is with the other ones?
Well... the last step currently requires that you download my fork of the MissionPlanner and compile it yourself which is clearly out of scope for this blog post.
If one of the git wizards thinks that my changes are good and helpful this wizard could tell me what to do to get the changes included into the main tree?
The problem currently is that MissionPlanner does not produce completely WMS compliant messages and does not check if the provided WMS server is capable of responding to the MissionPlanner. I fixed that.
My fork is located under https://github.com/korgan/MissionPlanner
tl;dr: That means exactly?
Currently you probably cannot display your image in MissionPlanner.
Okay, lets go; what do I have to do?
Install GeoServer. Installation instructions are located under http://docs.geoserver.org/stable/en/user/installation/index.html
Done. Whats next?
First, you should open your browser and visit the admin homepage, per default it is located at http://localhost:8080/geoserver/web/ . Login and click on "Create Workspaces".

3689541363?profile=originalName the new workspace, in this example I named it "apm_planner_wms" and type in some arbitrary URL. Make it the default workspace. Submit.
Go back to the home screen and click on "Add stores".
Choose the GeoTIFF option. In the next screen, make sure that the workspace is apm_planner_wms, type in a name and a description and browse to the folder where you saved your GeoTIFF from before. Save.
After that, you should see this page:

3689541170?profile=original

Click on the "Publish" action. On the following page only one thing is super important: Scroll until you see the "Coordinate Reference System" options. The Declared SRS must be EPSG:4326! You can just type the number in. Save again.

3689541408?profile=originalNow, we are ready to test. On the left column, click on "Layer Preview". Search for your layer, probably named "apm_planner_wms:c41078a1".
Click on Select one -> PNG and you should see this image.

3689541385?profile=originalIf you do not see it, you have done something wrong (or I failed to mention something...). Please read this part of the tutorial again.

As a last thing to do in GeoServer, you have to go to Workspaces -> apm_planner_wms and make sure, that "WMS" under Services is checked.

Wow, that was alot. I need a nonalcoholic beverage.
Me too.

I have followed every step. Now I want this litte image from the preview in my Mission Planner!
Heres the thing: As I have said, unless you compile the Mission Planner from my fork, the following steps will not work.

That makes me sad.
Me too.

I have compiled your Mission Planner! Tell me what to do now!
In the Flight Plan tab on the far right there is a litte scroll down list where you can choose between different maps. Choose "CustomWMS" and adialog should pop up.

Give it the URL of your server ( http://localhost:8080/geoserver/apm_planner_wms/wms ) and click okay. The following box will tell you to choose a layer. Our newly created WMS server has only one layer so we put 0 into the box or just click okay without typing anything.

And there you have it! Our sample tiff is displayed:

3689541452?profile=original
Liar! Nothing is displayed! I am ruined, RUINED I say!
Relax. Have a snickers, Did you check that you are at the correct coordinates? The map is quite small, so you have to be around Lat 40.77557094048379 Lng 80.0929875534263

I still do not see anything.
Well, then I forgot a step or you did not follow one.

Your screenshot does not look good at all. Why should I use that again?

Download the sample tiff and zoom in. That is what you get in the Mission Planner, too. And I can tell you that allthough it is not of the very best quality, it is not in the slightest comparable to the low-res screenshot above.

Is there anything more I can do now? This one map is pretty boring.
Yes it is (apart from the fact that maps never are boring). But: You could create your own GeoTIFF. Or you could implement a custom OpenStreetMap server on your laptop. Or you can display other WMS sources like a hydrogeography map of your area or one of the hillshaded maps (http://129.206.228.72/cached/hillshade):

3689541183?profile=original

That is Europe if you did not notice.

You convinced me!

Please make sure you say that again in the comments below :-)

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones

Comments

  • Nice.  I use an addon for Adobe Acrobat that will read USGS quads.  If you connect a GPS and feed it NMEA, it'll show your position.  The new quads have all sorts of layers, including orthophotos, and you can include or exclude layers, even add your own notations and symbology.  It'd be nice to have the same in MP, but then it would be a mapping app wouldnt it.

  • I have notice that Google Earth imagery is sometimes off. This can be seen where a road crosses the edges of two adjacent scenes and the road doesn't line up. These areas would also benefit from being able to use your own maps.

  • This is nice. I have pretty big collection of local maps in OziExplorer format. With

    http://code.google.com/p/swampex/

    It should be easy to integrate this to MP.

    Quality military topo map is way better than satellite images for navigation I think.

  • Wow, thats great!

  • Developer

    they already are!!

  • Thanks for the comments!

    OziExplorer is great, then I don't have to do any more convincing on why to use your own maps.

    @Александр: Russia is one of the countries I had in mind when doing this - for most of the former Soviet Union, russian military maps are the way to go. Even here in Germany, cadastral maps are a lot more detailed than the Google ones which benefits mapping flights.

    @Michael: Unfortunately, I did not find this link when searching for a way to get my map displayed. Your method seems to be very good for using one time. Using GeoServer has the advantage of having a full blown GIS server with all of its features (and daunting complexity, I give you that). Plus, it is easier to switch between multiple Mission Planner map sources and even multiple custom maps.

    Do you see any chance of my changes getting incorporated into the main fork?

  • Developer

    here is another method of custom images

    http://vps.oborne.me/gcs/CustomImages.htm

     

  • Moderator

    Ah OziExplorer I used to use that as well, wonderful.

  • Well, very well. Especially for Russia!
    Thanks

  • Interesting article. This remind me using OziExplorer when I did use this application flying with a full scale Cessna 152, then flying FPV with OziExplorer, without APM or other autopilot. 

    http://www.oziexplorer.com/
This reply was deleted.