I've read through the SDK documentation for both Windows and Android and found some functions for accessing the state of the current GPS connection and Latitude/longitude information.
I am looking to develop an application that uses 3d photogrammatry to monitor a set area in real time and am worried that built-in localization might not update the model accurately enough.
So I am wondering if there is a way to get the lower-level information like connection strength and specific connected satellites. (to compare to GPS information from the ground for better accuracy.) Is this supported? (maybe in specific drones?) Or is my only option to attatch a GPS device to it that I then access seperately?
I also know that DJI offers a drone with GPS-RTK to give this accuracy but I'm looking at alternative approaches because of the big step up in cost.
Any information / suggestions would be of great help! Thanks.
I am sorry to report but there is no access to the raw data from the GPS sensors. The information you found in the SDK documentation is all that is available.
How accurate are you looking for? Generally the accuracy is pretty close, certainly within 1 foot or so and there is specifications for GPS accuracy in specific drone's manuals.
There isn't any more info you can get from the sdk.
I guess you looking for raw meassurements? There is nothing that points to that's possible, even in the dumledore messages.
You better stick with the newer drones, since they seems to use dual freq gps, starting from mini2. Very accurate.
Havn't tried the mavic3 but my guess is that they switched to the same gps-chip as in the mini2.
Ne aware that gps lat/lon you get is actually fused with the imu.
Related
Task: detect is smartphone in a building (not a street) now.
What is the ways to implement this?
I see one way: switch on GPS and detect signal quality. Is there any other ways? May be it possibly with another sensors?
Please check out Google's Project Tango. It is a concept of a surroundings-aware device and it could be the answer to your problem. It is still in development, but there is already one phone available that supports it - Lenovo's Phab 2 Pro.
Apart from the above, there is no reliable way to detect if the device is inside, as signal strength and quality may vary even in open areas.
I think you couldn't achive it using "GPS signal quality" because it depends on how many satellites you will catch. Better way is to get actual position via GPS and make map-mask. For example if you're using Google Maps there are a lot of buildings so if your location "overlay" building - you are inside. This is just general case.
P.S. Even GPS with tens of satellites won`t guarantees accurate position.
i'm looking for the best way to implement a road navigator that gets the velocity, distance between 2 points using the smartphones techniques.
through my searches i found 2 different tech. using either the accelerometer or android API (android.Location).
some opinions said that using accelerometer wont give me an accurate results because there will be so much noises as a bumpy roads, buildings...etc and calculations will be so complex.
on the other hand using the Android API (android.Location) means i should always be connected to the GPS, doesn't that affect on the battery?!! and as i found i can't open the GPS by myself i used always ask the user for a permission(so boring). and is there an limitation
So kindly help to take a decision, is it useful to be connected 24 hours on GPS in order to update the device location.. or to use the accelerometer??
You definitely should use GPS. The battery will be strained but you get much more accurate result. Sensor should be used only when GPS is not available and for a short distance.
Using GPS you can call location.hasSpeed() and if positive call location.getSpeed() together with getBearing() will give you the velocity.
I would like to make an app which is keep tracking various points in a room in 3D and can tell where to look up the tracked points again.
The problem is: I can't use GPS and Wifi points to determine my phone's location and orientation.
So far I know two things which can be useful in this case, the gravitation force, and magnetic north. It is not a problem if there is some misleading fake magnetic north unless it is too close to the room where I want to locate things.
I found that the gyro + acceleration isn't accurate enough to use, is there a "ready made" API what I can use for that? I have the feeling I am reinventing the wheel.
Thanks in advance.
There is only one "ready made" API - Fused locations ( https://developer.android.com/google/play-services/location.html ). But currently it relies on GPS/WiFi/Cell-tower data. I don't beleive there is easy/cheap solution for your problem.
You could use bunch of Bluetooth devices, maybe some BT4 low power tags. Place them everywhere in the room and measure signal strength of each.
I am developing a project that is intended to use the GPS capabilities of an Android phone and a nearby station to compute positioning to a much more precise degree (cm), using RTK DGPS technology.
So far, I haven't been able to see anyone saying they actually managed to perform a similar task (apart from #GPSmaster, who doesn't explain how), and the APK doesn't seem to offer any information from the GPS chip other than location and NMEA message updates. I need, if possible, pseudo-ranges and carrier phases.
I was wondering if:
It would be possible to look for lower level hooks on my phone using native code, or other lower level snooping;
It would be possible to send RTCM corrections to the GPS chip present on one of these devices;
Any ideas?
Generally speaking DGPS is a technique that improves real position accuracy by canceling out most of the atmospheric effects on the GPS signal. In a typical direct GPS measurement there is about a random error in the ranges computed to the satellites due to atmospheric effects. This is why a GPS receiver that is left collecting data in a fixed location will seem to wander with in an error ellipse. For two receiver stations in the same area the atmospheric effects are almost identical and they will wander in parallel within their similarly sized and oriented error ellipses. If one of the two receivers is at a know location then the differences in their apparent GPS locations can be taken and plotted from the true location of the known station to find the true location of the unknown station.
Back in the day (circa 1992) when we had to accomplish DGPS by "post processing" we used to take the raw NEMA data collected at the two stations match up the times, compute the baseline vector and apply it to the known point to find the unknown point. I think the NEMA data we were using was only recorded to the nearest 10 sec. The math isn't really that hard.
I suspect that NEMA GPS messages [http://developer.android.com/reference/android/location/GpsStatus.NmeaListener.html ] from a tablet at a known point (with a clear sky view) could probably be sent over an internet socket to a smart phone (also with a clear sky view), which could then compute the difference and achieve a sub-meter relative location over a distance of few km, even if the assumed Internet transit times were ignored. This technique would probably still work even if the tablet and smart phone were both applying broadcast DGPS adjustments.
With the andvent of Android 7.1, the raw data from GPS chips will be available to developers. (http://gpsworld.com/google-to-provide-raw-gnss-measurements/)
Others seem to have done something similar to what you wish to accomplish (http://gpsworld.com/innovation-precise-positioning-using-raw-gps-measurements-from-android-smartphones/)
No, it is not practical to get any lower level access to the GPS device by an Android application. This has several reasons:
The application has no other means of accessing the GPS device as through the Java based API. Native code is forbidden to use most devices and usually needs a Java wrapper to tunnel through the sandbox for Android sensor devices. This makes up the main security concept.
If native code would have access to the GPS device on a lower level, it would have to cope with several different manufacturers protocols now not abstracted by the API. Best chances are to get access to custom NMEA codes, which may still have device dependent caveats.
Even if lower level access would be possible, one loses the integrated merging of other location sources like WLAN and cellphone carrier, that are presumably merged in native code below the Java API but above the NMEA protocol.
You can use DGPS corrections in Europe via custom application for SISnet receiving correction signals from EGNOS augmentation satellites(http://egnos-portal.gsa.europa.eu/news/egnos-gets-invite-your-smartphone-11). It does however need a subscription (which isn't really open to public yet) to SISnet to obtain username and password for connection to their servers. There's some of SDK published which you may find useful. Just remember that you are limited to C/A signals only (pseudoranges) and you CANNOT get phase data (L1/L2) from those cheap chips inside smartphones.You'd need a precision GNSS receiver such as Trimble BD910 (http://www.trimble.com/gnss-inertial/bd910.aspx?dtID=overview) to be able to access L1 carrier phase signal for GPS & GLONASS. There are however cheaper chips that support SBAS but none are yet installed natively in phones.
Umm. Your android probably has such a crap GPS antenna that achieving cm accuracy is impossible. Maybe if you average the position for days.. usually DGPS support is not published and not many chipsets support it. Last time I saw DGPS implemented it involved hacking the actual GPS chip firmware to add support. Even getting A-GPS to work on a random chipset is iffy since they might not support a documented way of feeding the assistance data.
It should be related with the hardware implementation , rather than the software implementation.
In the reality, GPS is usually accompanied with Wi-Fi or 3G to assist in searching the current position.
RTCM correction can be sent to your android phone using NTRIP 'provider'. Then you need to apply it to your raw GPS in your android.
I'm trying to find a solution for pinpointing indoors, specifically inside big crowded places, like malls for example.
I tried building a simple app that tried to pinpoint the phone using only the Network service or Wifi networks.
Usually when Wifi was on the accuracy got to 40-60 meters, and when the wifi was off and only the network service was used, the accuracy got to 600-1000 meters.
Unfortunately that really is too inaccurate for my needs.
I read that Google have successfully added an accurate solution for indoors navigation ( http://www.engadget.com/2012/01/08/google-maps-indoor-navigation-las-vegas-ces-2012/ ) , so I guess there might be a possible way to achieve a higher accuracy. 5-10 meters accuracy should suffice.
I'd be happy to get any kind of advice!
Thanks!
In highly trafficked public spaces, indoor location solutions tend to be based on WiFi mapping combined with known map information. That approach allows an increase in the accuracy of the location information you will get from your cellular device (over results from testing performed in locations not yet mapped). The actual error rate will depend on how dense and well mapped the WiFi hot spots are, whether they are in stable locations or tend to be moved around, the accuracy of the floor plans, and the effectiveness of the algorithms that integrate the floor plan information (e.g., defining which paths may be navigated by people, for example).
Other organizations are deploying infrastructure in public spaces (e.g., Nokia - Bluetooth-based). This solution assumes you control the infrastructure (and assumes the latest Bluetooth technology).
I work for TRX Systems and we are complementing these existing technologies with sensor and map fusion technology. In this approach, we fuse information from a multitude of sensors - including signals of opportunity (GPS, WiFi, cell triangulation, Bluetooth), embedded sensors (inertial, altimeter, ranging, compass), and known and inferred map information, to deliver an accurate location indoors.
Carol
The only way to accurately estimate your indoor position is by mapping the signal of known radio hotspots (i.e. wi-fi). That's why the indoor navigation feature has been implemented just for a few locations.