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:http://arcscripts.esri.com/details.asp?dbid=15900and you can download ArcGIS Explorer from here.http://www.esri.com/software/arcgis/explorer/index.htmlI 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
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: http://arcscripts.esri.com/details.asp?dbid=15900
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.
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.
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).
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.
Thank you very much for letting us in on this system.
As I mentioned earlier, I have been installing and supprting the forestry and survey labs for our college for many years now and have never realized the power and versatility of the ESRI software suite that we use.
Plus your description and tutorial, if you will, is impressively comprehensive and idea provoking.
Hey Chris, Sgt Ric,
you are free to download and use it and free to distribute it.
I'll answer both your questions reagrding modifying and what I meant by 'you have a clean entry point to add custom code to it'.
The only way we allow you to add code to the application is by using our SDK which you again are free to download use and distribute. This is the only entry point for a developer to add custom code. The SDK consists of just over 40 classes, we've made it very concise and easy to understand. You can only use managed code (VB .Net and C#) to write tasks using the SDK. Now you don't need a full version of Microsoft Visual Studio either, you can download and use their Express version for free and we support code written with it. You can find it here: http://www.microsoft.com/Express/
So that is what I mean by a clean entry point. You create a task and when you compile the code, the corresponding dll that is created will automatically be available inside of the application. When you create your task you get what we call an .nmf file. Its XML, thats all it is. Inside of this file is the location of the dll that will be created when you compile your code, this dll's location can be on disk, internet, whereever you decide to place it. So you can then share this nmf file with others. If the dll exists where you state in the nmf, and they have read access to that directory (folder), the task (dll) is then pulled and available inside the app. There's no setup you have to provide, just nice and clean.
You have all the power of .NET to use, i've created my entire base station showing all my gauges etc. Using any other .NET assembly within your implementation has one hiccup for the developer. Since now you need to reference another assembly dll within your code (like my gauges for example), you will need to place your task dll and the referenced dlls into one zip file (by the way the other ref dll will be copied to the bin file of your task). The nmf file I talked about will now need to point to the zip file rather than your task dll directly. This way, within the base code we check to see if its a zip file and pull out all of the files required to make your task work.
Chris if people like it I could do a better write up with screen shots.
We have loads of sample code that installs with the SDK, bascially coverying most of the things you can do. Another good thing is that all of the image tiles for any location you visit on the globe can be cached locally, so when out testing your UAV you still have all the base map data there and working. You don't need then to have an internet connection. You simply need to visit the area before hand.
So I guess you're thinking, what's in it for this guy, for ESRI right? Well we haven't really promoted it outside of our GIS community that well. Its been mainly adopted by government agencies, schools, GIS people right. The application can display all of their ESRI datatypes, shapefiles / geodatabases (geometry files) etc etc and consume services. It also supports KML. Geoprocessing (show me all the locations or attributes that meet a simple or complex query). Geoprocessing as an example could be used to analyse terrain cover for a forest for example. You want to build a fire watch tower, it needs to be with 500 ft of a road, not on a slope exceeding 20', south facing. Once areas a specified, how much land can each point see from that location (called a veiwshed). You have funding to build 4 towers, so you can then pick the 4 best locations.
So this is where the application starts to pay for itself. It adds value to their existing ESRI products, and perhaps encourages them to buy our server technology etc.
So getting back to general stuff of help to us here on DIYDrones. Ken Gordon shared a cool task he wrote (http://arcscripts.esri.com/details.asp?dbid=15488), enables the upload and download of stored tracklogs, routes and waypoints between ArcGIS Explorer and a connected Garmin or Magellan GPS device. You can create waypoints within arcgis explorer and upload them to your device. Not sure if he allows you to give it an altitude offset though.
In the app itself if you create route line, you can easily fly along it.
Sgt Ric, all the code I write I think "how could I use this with a UAV", or how could I use the SW for my UAV project. Even with ArcView, you can customized it, in fact it comes already coupled with a VBA (Visual Basic for applications). Exactly the same as the Office Suite. I wrote a whole automation application with it for a local government's parcel taxation and subdivision department 5 years ago that they are still using.
Hope this adequately answered your questions, added a little clarity.
Thanks for reading, hope I didn't ramble on too much.
Comments
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:
http://arcscripts.esri.com/details.asp?dbid=15900
Sir could you reupload that code please ?
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:
http://blogs.esri.com/Info/blogs/arcgisexplorerblog/archive/2009/03...
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.
http://arcscripts.esri.com/details.asp?dbid=15990
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.
regards,
Edan
for clarity
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,
Edan
http://sketchup.google.com/3dwarehouse/search?q=UAV&btnG=Search...
The Millennium Falcon was downloaded from this site.
Hope it can be of use. Let me know if you implement anything with the SDK, I would be interested in hearing about it.
Edan
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.
Edan
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.
Cheers,
Edan
Thank you very much for letting us in on this system.
As I mentioned earlier, I have been installing and supprting the forestry and survey labs for our college for many years now and have never realized the power and versatility of the ESRI software suite that we use.
Plus your description and tutorial, if you will, is impressively comprehensive and idea provoking.
Thank you for the insight into this software.
you are free to download and use it and free to distribute it.
I'll answer both your questions reagrding modifying and what I meant by 'you have a clean entry point to add custom code to it'.
The only way we allow you to add code to the application is by using our SDK which you again are free to download use and distribute. This is the only entry point for a developer to add custom code. The SDK consists of just over 40 classes, we've made it very concise and easy to understand. You can only use managed code (VB .Net and C#) to write tasks using the SDK. Now you don't need a full version of Microsoft Visual Studio either, you can download and use their Express version for free and we support code written with it. You can find it here: http://www.microsoft.com/Express/
So that is what I mean by a clean entry point. You create a task and when you compile the code, the corresponding dll that is created will automatically be available inside of the application. When you create your task you get what we call an .nmf file. Its XML, thats all it is. Inside of this file is the location of the dll that will be created when you compile your code, this dll's location can be on disk, internet, whereever you decide to place it. So you can then share this nmf file with others. If the dll exists where you state in the nmf, and they have read access to that directory (folder), the task (dll) is then pulled and available inside the app. There's no setup you have to provide, just nice and clean.
You have all the power of .NET to use, i've created my entire base station showing all my gauges etc. Using any other .NET assembly within your implementation has one hiccup for the developer. Since now you need to reference another assembly dll within your code (like my gauges for example), you will need to place your task dll and the referenced dlls into one zip file (by the way the other ref dll will be copied to the bin file of your task). The nmf file I talked about will now need to point to the zip file rather than your task dll directly. This way, within the base code we check to see if its a zip file and pull out all of the files required to make your task work.
Chris if people like it I could do a better write up with screen shots.
We have loads of sample code that installs with the SDK, bascially coverying most of the things you can do. Another good thing is that all of the image tiles for any location you visit on the globe can be cached locally, so when out testing your UAV you still have all the base map data there and working. You don't need then to have an internet connection. You simply need to visit the area before hand.
So I guess you're thinking, what's in it for this guy, for ESRI right? Well we haven't really promoted it outside of our GIS community that well. Its been mainly adopted by government agencies, schools, GIS people right. The application can display all of their ESRI datatypes, shapefiles / geodatabases (geometry files) etc etc and consume services. It also supports KML. Geoprocessing (show me all the locations or attributes that meet a simple or complex query). Geoprocessing as an example could be used to analyse terrain cover for a forest for example. You want to build a fire watch tower, it needs to be with 500 ft of a road, not on a slope exceeding 20', south facing. Once areas a specified, how much land can each point see from that location (called a veiwshed). You have funding to build 4 towers, so you can then pick the 4 best locations.
So this is where the application starts to pay for itself. It adds value to their existing ESRI products, and perhaps encourages them to buy our server technology etc.
So getting back to general stuff of help to us here on DIYDrones. Ken Gordon shared a cool task he wrote (http://arcscripts.esri.com/details.asp?dbid=15488), enables the upload and download of stored tracklogs, routes and waypoints between ArcGIS Explorer and a connected Garmin or Magellan GPS device. You can create waypoints within arcgis explorer and upload them to your device. Not sure if he allows you to give it an altitude offset though.
In the app itself if you create route line, you can easily fly along it.
Sgt Ric, all the code I write I think "how could I use this with a UAV", or how could I use the SW for my UAV project. Even with ArcView, you can customized it, in fact it comes already coupled with a VBA (Visual Basic for applications). Exactly the same as the Office Suite. I wrote a whole automation application with it for a local government's parcel taxation and subdivision department 5 years ago that they are still using.
Hope this adequately answered your questions, added a little clarity.
Thanks for reading, hope I didn't ramble on too much.
Edan
-
1
-
2
of 2 Next