I was wondering how the Yelp monocle works. It a cool feature , especially in terms of augmented reality. So I know they access GPS and compass data. And they have data about places nearby like hotels and bars etc. But how do they calculate the orientation w.r.t each other in real time, as I rotate my device. So if my device is pointing east and theres a pizza place to the north. I rotate my device to north. Now how does it know that I'm facing a pizza place here. What is the crucial bit of information being used to calculate this ?
I am thinking of developing similar kind of app for android. Please let me know how I can approach this ..
Well, when you know where you are, you know where you are facing and where your target is, you can calculate the rest. It's basic trigonometry.
Related
Using arcore and/or sceneform, would it be possible to place circles accurately on a real life object. Lets say i had a real world table and a known set of coordinates where small ( 10mm ) AR "stickers" need to be placed. They could be on the top/side/underside of the table and need to be placed accurately to the mm. I am currently solving this problem with a number of fixed mounted lasers. would this be possible to accomplish using arcore on a mobile device - either a phone or AR/smart glasses? Accuracy is critical so how accurate could this solution using arcore be ?
I think you may find that current AR on mobile devices would struggle to meet your requirements.
Partly because, in my experience, there is a certain amount of drift or movement with Anchors, especially when you move the view quickly or leave and come back to a view. Given the technologies available to create and locate anchors, i.e. movement sensors, camera, etc it is natural this will not give consistent millimetre accuracy.
Possibly a bigger issues for you at this time is Occlusion - currently ARcore does not support this. This means that if you place your renderable behind an object it will still be drawn in front of, or on top of, the object as you move away or zoom out.
If you use multiple markers or AR "stickers" your solution will be pretty precise considering your location of your circles will be calculated relative to those markers. Image or marker based tracking is quite impressive with any Augmented Reality SDKs. However, having these markers 10mm can cause problems for detection of markers. I would recommend creating these markers using AugmentedImageDatabase and you can specify real world size of the images which helps for tracking of these images. Then you can check if ARCore can detect your images on the table. ARCore is not the fastest SDK when it comes to detecting images but it can continue tracking even markers are not in the frame. If you need fast detection of markers i would recommend Vuforia SDK.
I tried to achieve using google's cloud Anchors, but it has a limitation of 24hrs (after that the cloud anchors become invalid).
And another way is creating the replica of Unity, but that would be too lengthy process.
Any other ways please suggest me or any idea: https://www.insidernavigation.com/#solution - how they achieved it?
And how to save the common coordinate system in cloud or locally?
Current versions of ARCore and ARKit have limited persistence capabilities. So a workaround - which I think is what they use in that site you linked, is to use images/QR codes which they use to localise the device with a real world position and then use the device's SLAM capabilities to determine the device's movement and pose.
So for example, you can have a QR code or image that represents position 1,1 facing north in the real world. Conveniently, you can use ARCore/ARKit's to detect that image. When that specific image is tracked by the device, you can then confidently determine that the device is position 1, 1 (or close to it). You then use that information to plot a dot on a map at 1,1.
As you move, you can track the deltas in the AR camera's pose (position and rotation) to determine if you moved forward, turned etc. You can then use these deltas to update the position of that dot on your map.
There is intrinsic drift in this, as SLAM isn't perfect. But the AR frameworks should have some way to compensate against this using feature detection, or the user can re-localize by looking for another QR/image target.
As far as my knowledge is concern, This Virtual Positioning system has not been introduced yet in Google arcore. The link you provided, these guys are using iBeacon for positioning.
yup I believe it could be possible. Currently most developed ways have its limitation .I am working on to find another way with the fusion of Cloud Anchors with IBeacon.
I am writing a navigation app and I require rotation of the camera around the user (So rather than just rotating the user icon with the compass the camera rotates around the user giving the impression that the map is rotating in accordance to real life.)
I couldn't seem to find a default mode to do this I have tried the bearing tracking modes (GPS and Compass) as well as the location tracking modes:
mapboxMap.getTrackingSettings().setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
As I was unable to get it working I implemented a custom compass with a basic low pass filter in order to rotate the camera around the user. However as of upgrading from Mapbox 4.1.1 to 4.2.1 my custom implementation has broken (Rotation has become very laggy and very jagged).
I am sure there is a much easier way to do this but I am having a bit of trouble figuring it out. Could someone please advise me as to whether I was going about it the correct way or if there is a much easier solution that I am looking over?
Thank you in advanced!
To track the user location and rotate the map to the orientation is always pointing in the same direction as the user, use these lines combined:
mapboxMap.getTrackingSettings().setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW);
mapboxMap.getTrackingSettings().setMyBearingTrackingMode(MyBearingTracking.COMPASS);
Note for the full code, i'd recommend checking out this example.
Yes as #SCTaylor says, you absolutely need .setDismissAllTrackingOnGesture(false) to make this work
I am new for Augmented Reality though I know Android development.
I am trying to create an app whose main aim is to overlay the camera preview with some image if the device camera is pointing to a particular building or place. The camera preview will be overlaid with some image if and only if camera is pointing to correct building and correct direction. The overlay image & its related data will be uploaded from back-end. I have gone through mixar but it is not giving the correct solution.
In this I am not getting the Elevation / altitude concept. From where I will get this. Which opensource sdk is better for this app? How to crack this application?
For altitude you should forget it. The altitude return by GPS is terrible. Just crossing from one side of the street to the other side, the altitude returned by GPS could be different by 50 meter. Also, the direction of the back camera using sensors will not be accurate enough for buildings close together. If you restrict your app for known buildings or places then you can adjust using some image recognition but still it is very hard.
try to download wikitude sample app from wikitude website.it contain sample project simpleArbrowser that is what u are searching.hope this will help u
I don't know of any opensource sdk but I used Wikitude SDK which is quite useful for you implementation.The main advantage about wikitude sdk is that you can use your own server for back-end data. Which is not possible with the other alternative that is layar. And #Hoan is right about getting altitude information from GPS data is really inacurate but you can give it a go as the inaccuracy is only visible if you are really near the Point of Interest. It works okay for a distance greater than 250 meters or so(not confirmed). The only problem you might get is from the compass deflections which are really great when you are near a high EM field or near metals. But that's a chance you'd have to take and nothing can be done about it.
If you want to place AR objects based on the LAT and LONG of the location with a given altitude.
Well, now that's possible using Google's ARCore Geospatial API.
Docs:
https://developers.google.com/ar/develop/geospatial
Can anyone help me with sample code for a compass needle that points in the direction where the phone is tilted?
I am trying to develop an application to rotate a bitmap in OpenGL from accelerometer values.
Ok so thanks to the comments above we do not have to use OpenGL, and while you could, I personally believe you can make life simpler by using a custom View.
Now in traditional standard StackOverFlow past time I am not going to give you code for this but extrmely large leg up. There is a thermometer example available here http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/.
Why have I sent you here?
It contains an example that renders a dial exceedingly close to a compass, with a few minor tweeks it could easily become a compass in terms of design. you will just need to remove the temperature related code and use the accelerometers instead.
It is a good intro to custom views and will show you how to get started.
I made a clock after following the tutorial just as another possibility to inspire you.