Tracking your UAV in a 3D environment

NB: Edited earlier post with new link to script download site. Also, if you check the arcscripts site there is a flip book animator for the application that will iterate through georectified images in the order you set based on a timer, or manually (this allows you to move backward and forward), or you can click the image in the list to have it display. Allows you to set the transparency of the image so you can see the base layers beneath. Will post the live GPS feed task for ArcGIS explorer to ArcScripts in the coming weeks. Has support for Thales digital radios proprietary sentence. Hope some of you like it and can use it for your applications.Hey Guys,I'm a developer at ESRI and work on a product called ArcGIS Explorer. Its a free 3D mapping application you can download from the ESRI website. Now I don’t mean to plug ESRI here, but this application is free, and you have a clean entry point to add custom coding to it.At our developer summit back in April I presented and wrote a sample app that positions a 3D glyph (model) of the millenium falcon above Area 51. I added some code to predict where you will be in a straight line based on your current lat / long, alt, speed and bearing. Running the task you are able to change its speed, bearing, pitch and roll. I didn't add code to overcome gimle lock however.So, if you can provide the lat/long/alt and bearing, you will have an instant tracking solution for your UAV. The code for the sample is located here: you can download ArcGIS Explorer from here. made the code as generic as I could, its written in C#, and all of the drawing is in OpenGL. Take a look at the code and you should easily spot where to plug in the coordinates.

I've also written a live GPS task that we will release probably later this year (not source code however).Few snap shots from Visual Studio

This parses NMEA and shows you your position bearing etc. I’ve added the ability to track your movement which creates pushpins on the surface. The added pushpin content is what we call a result. A result when double clicked will show you a popup. A popup can contain anything from text, to a web ref, or a locale file on disk. Here you’ll see I am referencing a picture of a car.

So, imagine not only your position being shown, but if you are taking stills, or capturing stills from a video stream, you could create a pushpin on the ground below your position, write the image to disk, then write the location and file name into the Popup’s description. Then as you see above you would have something that conveys a lot of information.Also, I’ve written a Geotagging task that will be available later this year. Sorry but I have no control over the release times, except for sample code. Geotagging will enable you to send the image to anyone with mapping software that can open geotagged images, and it will place them exactly where the coordinates tagged to the image specify.It would be interesting to hear from any of you interested in this, ideas, issues, let me know. Not knocking Google, I think its great (virtual earth rocks too), but a lot of this type of functionality you only get with the pro version I think.Edan Cain
E-mail me when people leave their comments –

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

Join diydrones


  • So, if you can provide the lat/long/alt and bearing, you will have an instant tracking solution for your UAV. The code for the sample is located here:

    Sir could you reupload that code please ?

  • Georectification,
    thanks for the post.
    Things are changing on the ArcGIS explorer application and we are releasing our Beta version within the week with a new UI experience. You can read about it here:

    I also released a custom task for live GPS to plug into the app. When I have time to finish the second version it will display multiple field units in real time.

    If anyone is sending telemetry data back via radio and I will consider writing a parser for their sentence so that it will work with this. I am sending my telemetry data back for my uav with Xbee transcievers.

  • OpenGL displaylist (the actual drawn objects)

    for clarity
  • Sounds like an easy implementation, setup a connection to the serial port, listen for the change event, parse the string, then consume the relative pieces of it. Each object is held within a displaylist once created, and its ID within this list could be the same as the callsign, thus giving you one to one representation on screen.

    Just spoke with our radio guy here. He's using Thales digital radios transmitting the GGL NMEA sentence. Nice thing about this is that it only has one sentence, a $GPWGT format v1.0. NMEA 0183 coming directly from a device contains multiple sentences that need to be parsed.
    I hadn't thought of one device listening to multiple assets, or at least not from a practical coding point of view.
    Its got me very interested in getting something working.

    thanks Paul,

  • Thanks Edan,

    Currently we are using an old (like 10 year old!) windows program that is designed to take Ham radio APRS serial data and send it to the screen. It works with a few sources and differentiate them by the callsign. Unfortunately it is not supported and not updated. In anycase, he objects displayed aren't important, just where they are in 3space.

    No big requirement to change, but always looking for a new option.

  • One last thing before I sign off. If any of you are wondering about how you could get a 3D glyph (model), check out the Google 3D warehouse.

    The Millennium Falcon was downloaded from this site.
  • bGatti,
    Hope it can be of use. Let me know if you implement anything with the SDK, I would be interested in hearing about it.

  • Hey Paul,
    the serverStyleDemo with the Millennium Falcon shown above was written purely to get people thinking about what is possible. I really hoped someone doing what you're doing might get an idea of how they could use it. There is no defined limit to the number of objects being tracked, but one has to keep in mind the complexity of the object's 3D representation as this will have an impact on performance. Simply put, the Falcon is a complex shape consisting a lots of triangular shapes making up the overall shape of the glyph. As its shape rotates and changes position, each vertex has to be calculated. The SDK contains a customDrawing sample that draws up to 500 cylinders, each about 100 feet across and 500 high in real world terms. This is a reasonable limit for such a complex shape, the sample uses a point layer to get the points and each is stationary not moving. If the object's representation were something simple, you can certainly add a lot more objects.
    The GPS task has still to be released. We still have some talking to do as to how it fits our SW story (ArcGIS Explorer specifically). The code will only read from one device. How do you get all of your signals back from your field assets? One radio listening for all of the comm links? If you had one radio I suppose with multiple channels, and if one could listen to each by creating a virtual port for each, then you could certainly read multiple asset locations. You might want to think about only reporting position once a minute per asset, alternating the transmission time. Not sure to be honest but if you can get the signals, I am sure I could code something against that scenario. To be honest I've not coded anything along the lines of consuming multiple separate GPS devices.
    The other alternative would be to use server technology. But that would cost.

    Sitting here thinking.....what if you used a mobile phone for your ground station and field assets. GPS enabled, could easily write a Windows Mobile 5-6 app to send a text message to your base station phone, have it connected to the computer and listen for the sms message event to fire. Like the cellphone sample on DIYDrones. Each message could have whatever you like in it, lat/long/uniqueID etc. It would work similar to listening for a GPS update signal. Simplistic parsing routine only, it would be really straightforward to code.

    We have a guy at working that does asset tracking with radios. I'll talk to him tomorrow and let you know what he tells me. If you have a radio system in place and you can tell me about it, I am sure I could come up with something for you. I'd be happy to help (mindful though, with a wife in school, two kids and busy at work, it could take me a couple of weekends to come up with something).

    Cheers Paul, look forward to hearing more.

  • Thanks, Edan,
    It looks like an excellent platform,
    and the .net SDK is a reasonable point of entry.
  • Sgt Ric,
    like I said, didn't want to plug ESRI as such, but I feel people on the forum could really get some benefit from explorer. I'm only an email away to explain things or provide a snippet of code to help your ideas. In my free time I've coded a lot of pieces to my UAV story, just now have to stitch the pieces together for the final app. In my spare time of late I have been working on georectifying in real time the video stream from my plane so that it renders on the surface, like what the guys at PictEarth have been doing for some time, those guys rock.

This reply was deleted.