Drone SDK supporting free-flight control - artificial-intelligence

This is my first time getting into drones.
I am looking at DJI drones, currently as it seems most promising from a documentation and reviews point of view.
Basically, I would like to program a drone(s) to fly a certain pattern and take pictures when a certain criteria is met. For example, I would like the drone to take off and fly around a small park, stopping to take a picture of each tree it encounters, automatically (auto-piloted / driven by some "AI").
Now I glanced thru the DJI SDK documentation, and so far it SEEMS this is possible (via FlightControl class). But im not sure.
Question:
Can my requirements be met with current drone SDK technologies?

Yes, the correct SDK, 4.11.1 will do everything you mentioned. You will need to do some location calculations but that's about it.
The sample will almost do everything you want as-is, with minor changes.

With the DJI Mobile SDK you can use the Mission classes to automatically fly a given set of coordinates (waypoints) and do some actions once you arrive at a waypoint, e.g. take a picture.
However the SDK has limitations:
The SDK is unable to detects objects in the video stream. Therefore it is needed to use your own code to detect objects yourself.
The way the drone flies to the waypoint is quite limited, e.g. the drone will always face the camera in the direction of flight.
When using the DJI Mission classes, a change of the route during execution is only possible with the use of timeline Missions by adding timeline elements to the list.
As you already assumed in the comment: Yes, the Mobile SDK is more advanced than Windows SDK.

Related

Is there a way to save offline google map on hybrid mobile app on ionic?

I am planning to develop a hybrid mobile app using ionic. One of the features i need is offline google map. Is there a way how to do it?
It depends on the requirements of your application whether this will be possible. Are your users on "modern" devices A.K.A is HTML5 fully supported? Do your users need to view/edit the map globally, or just in a specific area? Does the map really need to be provided by google? I'll address some issues below to point you in possible takes on this problem.
Do you really need google maps? (Most optimal scenerio)
First of, do you really need google maps? Also relevant: how far do your users need to zoom their maps? If it can be any maps, and zooming is not really of high priority (if it is, including all map tiles will make the app eat all storage), you could probably use map-tiles as a packaged part of your app, and display them with a library like http://leafletjs.com/. The library is well documented, and provides a map-interface for a variety of map-providers. It will be do-able to configure this to use your own local map-tiles. You could include map-tiles for multiple zoom levels if necessary, and limit the min/max zoom-levels to the tiles you actually have available. This will make your maps work offline.
I can't or don't wan't to provide my own tiles make sure that you really looked into the option, there is systems out there that provide map-tiles you could use (check https://www.mapbox.com/ for example)
Okay, so you really don't want to do what I suggested. What are the options now? Javascript mapping-solutions typically render tiles based on the location of the map you want to see and the zooming level. These tiles are requested to the tile-provider. I do not know how to implement this for google exactly, you might need some research on this - I'll try to help you see a direction. There will be requests to get the tiles from the servers. I checked with http://maps.google.com what images are loaded when trying to navigate the map: (example (click)). Find out what url's are used in your situation, we will need these kind of url's later (just inspect the network tab in your browser console and see which requests are made when scrolling in your map). When we only need our users to work in a certain area when offline we could use service workers to cache the responses of these requests when we are online, and serve those caches when we are offline. Read more on service workers here (click).
Advantage: Real offline map-functionality for any tile you visited before (as long as your cache wasn't overflown, depending on your implementation of the service workers, and for service-worker supported browsers/devices).
Disadvantages: No support for tiles that were never put in the cache (AKA: never seen before). Another one: this will only work for devices that support service workers. Might be an option in situations where you either don't care about users using "older" devices, or where you can control the user's device choices. Note that using crosswalk could ease your developing efforts here, since you only have to consider one browser-runtime then: but crosswalk also doesn't support older devices.
However: This solution could be fine for people that will need to work in a specific area, which might be true for the case provided by #vipul-r If you or your users know in advance where they need their maps to work, you can instruct/help them in loading & caching their maps correctly.
If you can't work on either of these 2 solutions, then I highly doubt there will be a way to do it. I don't see any other way to the best of my knowledge.

Clarification about card.io models for character recognition

I started looking at card.io as part of a Android application that should to be able to scan a card and recognise the card number, date of expiration, card holder.
After digging for a while, I got to the card.io-dmz/models/generated folder where I see files that, according to a comment in their beginning, were "Autogenerated from models/conv/...".
However I was not able to find details about the files used to generate these "models". After checking the code, I assume that these generated files are directly responsible with the OCR of the numbers from cards.
To provide an example, the following card is scanned and recognised just fine (numbers only)
but the following card fails
I tried adjusting the ROI before the vertical segmentation is done, but I think the differences between the font used on the 2 cards makes it impossible to scan the second card.
My question really is, given the current open source projects from git hub, are there any chances for someone to add the capability of scanning cards similar as the black one above, or this would require to have access to other resources used to perform the actual OCR?
Dave from card.io here.
#Adrian your conclusions are all correct.
While we'd love to extend our deep-learning character-recognition models to cover newer style cards, such as your second card above, it's a big task.
Quite a few new-style cards (~100) would be required both to update the code that locates the card number in the first place, and then to train new character-recognition models.
At the moment, this isn't something that lends itself well to open sourcing. People tend to not want to share images of their credit cards, for some reason.
We have given some thought toward creating an open-source app that could be used to collect some portions of card images (e.g., all digit positions, plus actual images of just a few of the digits, plus an image of the expiration date). Then perhaps we could crowd-source a usefully large collection of information. And while that collection is being built, we could work on open-sourcing the many in-house tools we have created for working with computer vision and deep learning.
Would such a project be something you might participate in?

Mapping without Google Maps (on a stand-alone server)

I've been asked to create a stand-alone site/app that's not connected to the web (all on a local server).
One part of it is to have a map of a natural reserve with a bunch of links that will show footpaths, different animals habitat areas, visitor centres and such.
So there's a map (static picture) and when you click on it some overlay goes on top of it.
At least that's the way I see it now.
I've looked here: http://www.carto.net/williams/yosemite/ but it just looks mucho ugly.
Getting Maps Premium is not an option as it's not that cheap. And the reason they don't want to use Maps/Earth free API is because internet connection is still very slow there (sattelite internet only and when optic cable will be hooked up nobody knows).
Looking for some recommendations as to how to proceed there. Drawing paths/areas on the picture of the maps seems extremely insufficient and time consuming.
I'd need some way to use coordinates to automatically draw areas and lines over the map (and then somehow export that as a graphis file (or SVG) that'll be layered on top of original map simply using ajax.
Will ARCGIS pro edition be the way to go or should I start learning SVG. Do you know some good SVG books/tutorials (as related to mapping)? Maybe there's some other way around altogether...
They do have detailed maps of the area in ARCGIS (whatever format they are in I don't know yet).
Just looking for some ideas, any help will be appreciated. Thanks in advance.
Do you know GeoServer? More or less all-in-one, compatible with different types of datasets, widely customisable.
Starting from "raw" SVG and write the whole thing yourself will probably be prohibitively time consuming.
If you have very little data (say less than 50 geometries) that is fixed, you could also use OpenLayers without any backend server.
For the data you could use a OpenLayers.Layer.Image if your (overlay-) map consists of a small raster image. For vector data, you can use OpenLayers.Layer.Text or a OpenLayers.Layer.Vecor together with protocols OpenLayers.Layer.KML or .JSON.
You can click through the current release examples.
I admit that this is not an easy task for a beginner, but it's fun hacking the maps together.

Wayfinder - Pathfinder Application

I want to create wayfinder/pathfinder mobile application. it will route visitors in our buildings. we have 20 buildings and each at least have 4 floor.
We want to develop our own wayfinder ex:http://www.wayfinderkiosk.com/
It should use Lat/Long coordinates to locate the people. and help to find its route.
So where should i start. Does any one have any idea for that. and it is going to be mobile.
I can develop app/site based on these platforms ( Mobile Web/Iphone/Adroid /Symbian/Windows )
But i need a start point. and i need your help.
Thanks
You want to use lat/long inside of a building? Assuming these visitors are going to be using their own unmodified devices, you may have trouble with GPS. Unless you somehow get reliable GPS signal despite being under a four-story building, that's probably not going to work.
An RFID-tagged badge and sensors placed throughout the building seems more likely to work. Put a unique QR-code on each badge that directs the phone's browser to a tracking page for that specific badge.
edit: and now that I re-read your question and see that multiple buildings are involved, the GPS bit could certainly work for routing them from one building to another.

Is there a free map control?

I want to develop something with a control like this :
Bing Maps Control
Is there something advisable and for free ?
Preliminarily I will use it for education but later on It's gonna be for production.
The Bing Maps Control is free as far as I know. But, if you want to use arbitrary tile sources, try Deep Earth
There are several consideration based on your needs.
1. Do you want to use a commercial control and platform?
If you want to use a commercial platform (like Bing Maps), you have to look at the various licence options that are associated to the platform. Take a look at the various licence type so you can get the appropriate one if you want to: http://msdn.microsoft.com/en-us/library/ff428642.aspx
Also, if it's used in an education use case at the first place, you can see in the Terms of Use if you can fall in this case: http://www.microsoft.com/maps/product/terms.html
When moving to production, you will be able to use the control for free for a limited period, limited transactions and depending on your use case (see the licence link and please report to the Terms of use to see if your case fits in the free commercial licence).
2. Do you want to use a specific technology?
If you really want to use the Silverlight control, you can take a look at the DeepEarth project on CodePlex, see here: http://deepearth.codeplex.com/ or you can consider to get inspiration from this project and develop your own extension based on the MultiScaleImage control of Silverlight.
If you don't want to use a particular technology (plugin), you might consider using the Leaflet library to display the map: http://leafletjs.com/
In every cases here, you might consider having some additionnal cost to get access to tiles (Bing's, OSM hosted tiles or whatever service) might require licence to get access to the tiles in your control. You could use your own server to host your own generated tile.
We used this and it worked well for us since we were looking for a zooming/panning solution, but not for maps.
There is an open project www.openstreetmap.org, and I think that it is in long term best choice.
You can install data for whole world or just countries you need on your server, there is accurate data update ... Or you can use maps from main server, get embeddable HTML etc.

Resources