Android navigation without GPS and WIFI - android

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.

Related

GPS functionality from the SDK

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.

How to detect is smartphone in a building?

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.

Approaches to accurate 3d compass for finding specific locations

Say an event is being hosted in a large building. There are 20 rooms which are quite difficult to find.
I want to develop an app which points you in the right direction of a specified room or shows on a 3-d map, the location of you, relative to this room. This obviously includes altitude as the building has many floors.
Now, I looked into GPS, which is not very accurate and also depends on the quality of the phone's GPS. I'm not sure if this is really an option for the accuracy I require.
I also looked into Bluetooth beacons, but it is apparently very difficult to add direction to this as well as distance. Plus, this is only accurate at around 20 meters, right?
What other alternatives are out there that I can research myself?
And which options can I definitely eliminate?
I am not looking for a heated debate over the best approach, I know this is against SO rules.
So just a few potential options is all I wasnt, so I can go and research them myself... maybe wifi or something?
GPS you can forget, there is no or very bad receivement indoors.
I would concentrate on blue tooth beacons. Apple provides such iBeacons, too. So this can give you more information what is feasible.
The third possibility is magnetic field analysis, but i dont trust much that solutions. Altough there are demos and even an ios App (Indoor Atlas), this soultion has some drawbacks. Change of magnetic field after change in construction / furniture.

How to measure the speed of car by phone with accelerometer and gyroscope?

I want to know current speed of car and make a passed path. I have an Android phone with accelerometer and gyroscope which sent me data. This is the data in phone system of coordinate that probably wouldn't the same as coordiante system of car.
How I can transform this accelerations and rotations to car system of coordinate?
The generic answer for your generic question is no. The acceleration measures the changes in the speed, so the best you could get from acceleration, is the speed variation.
To get the absolute speed you would have to have the initial speed and add it to the speed change:
v(t) = v0 + a*t
So, if you would have a car moving along a straight line, and your device was fixed to the car, you could get easly the speed changes (although measurements errors will add up and quickly lead to discrepancies)
In practice you will face many issues trying to implement it, namely:
You need the initial speed to be determinate based on the same referential as the acceleration. This would require some measurements and a lot of trignometry, as you would get both values from different sensores at different rates.
The car will not move in a straight line, so your acceleration referential will be constantly moving (a lot more of trignometry and calculus).
If the device is in the user hand, the device movements in relation to the car will increase even more the calculations (and accumulated errors).
Regards.
You need some sort of external reference (e.g. GPS is such a thing): If you just integrate the acceleration, the error will go indefinitely.
Because these sensors are not accurate enough. the error will quickly get out of control. (The linked answer is about position but the same holds for the velocity.)
In case of a car, you are better off with the GPS. If want to do something fancy, you could enforce the environmental constraints deduced from a map, that is, assume that the car goes on a road and not through buildings, etc. You will find more details on this in Chapter 5 of the PhD thesis entitled Pedestrian Localisation for Indoor Environments.
It looks like it's possible to do. I don't have an Android specific example but this forum has quite a lot of chat about it: http://www.edaboard.com/thread119232.html
It would be a lot easier if you used the Android Location class though. Specifically the getSpeed() method should give you what you need: http://developer.android.com/reference/android/location/Location.html
The Location class relies on a location provider though so your app will require appropriate permissions.
Both dont deliver anything if the car travels at the same constant speed for some time. The only way would be GPS which has a calculated speed with every location it provides.

Is there a way to determine locations inside buildings for android? [duplicate]

I want to develop an application in which I need to know the position of my device within a building (the room in which the device currently is). GPS is not working in the building. Is there any way to find the position of the device in building? If yes how? Can i use position or motion sensors or combination of these for this purpose?
There is no general solution. In case you can place WiFi hotspots/repeaters in the building (preferably in every room), you can triangulate the position from the WiFi signal strengths. But that's also not straightforward, because of different signal losses through the walls and floors. You'll need to survey the building and make a signal strength map in advance and then, based on the signals you receive, look up your location on the map.
Motion sensors are also not precise enough and compass, if you are inside a steel construction, is inaccurate, too.
You can try using the Network to locate the user. If the signal is strong enough, it should return a decent location fix, though not as accurate as GPS
Unfortunately there is no easy solution. Network location is out of the question, since it is not precise enough to show buildings, not even mentioning rooms.
The only way I could think of for this to work is to use external sensors in building and somehow connect them with the device.

Categories

Resources