我正在开发一个项目,旨在使用Android手机和附近工作站的GPS功能,使用RTK DGPS技术计算更精确度(cm)的定位。
到目前为止,我还没有看到有人说他们确实设法执行了类似的任务(除了@GPSmaster,who doesn't explain how),并且APK似乎没有提供来自除位置和NMEA消息更新之外的GPS芯片。如果可能的话,我需要伪距和载波相位。
我想知道是否:
有什么想法吗?
答案 0 :(得分:5)
一般而言,DGPS是一种通过抵消GPS信号上的大部分大气效应来提高实际位置精度的技术。在典型的直接GPS测量中,由于大气效应,在计算到卫星的范围内存在大约随机误差。这就是为什么留在固定位置收集数据的GPS接收器似乎在误差椭圆中漂移。对于同一区域内的两个接收站,大气效应几乎相同,并且它们将在其相似大小和方向的误差椭圆内并行漂移。如果两个接收器中的一个位于已知位置,则可以从已知站的真实位置获取其表观GPS位置的差异并绘制,以找到未知站的真实位置。
回到当天(大约1992年),当我们必须通过"后期处理完成DGPS"我们过去采用两个站点收集的原始NEMA数据匹配时间,计算基线向量并将其应用于已知点以找到未知点。我认为我们使用的NEMA数据仅记录到最近的10秒。数学并不是那么难。
我怀疑来自平板电脑的NEMA GPS消息[{http://developer.android.com/reference/android/location/GpsStatus.NmeaListener.html]可能通过互联网插座发送到智能手机(也有清晰的天空视图)然后,即使假定的互联网传输时间被忽略,它也可以计算差异并在几公里的距离内实现亚米级相对位置。即使平板电脑和智能手机都在应用广播DGPS调整,这项技术仍可能有效。
答案 1 :(得分:4)
不,Android应用程序获得对GPS设备的任何较低级别访问权限是不切实际的。这有几个原因:
该应用程序没有其他方法可以通过基于Java的API访问GPS设备。禁止本机代码使用大多数设备,并且通常需要Java包装器来穿过Android传感器设备的沙箱。这构成了主要的安全概念。
如果本机代码可以访问较低级别的GPS设备,则必须处理现在未被API抽象的几种不同的制造商协议。最好的机会是访问自定义NMEA代码,这些代码可能仍然存在设备相关的警告。
即使可能进行较低级别的访问,也会失去WLAN和手机运营商等其他位置源的集成合并,这些位置源可能是在Java API下面但在NMEA协议之上的本机代码中合并的。
答案 2 :(得分:4)
随着Android 7.1的发布,来自GPS芯片的原始数据将可供开发人员使用。 (http://gpsworld.com/google-to-provide-raw-gnss-measurements/)
其他人似乎做了类似于你想要完成的事情(http://gpsworld.com/innovation-precise-positioning-using-raw-gps-measurements-from-android-smartphones/)
答案 3 :(得分:2)
嗯。你的机器人可能有这样一个垃圾GPS天线,达到厘米精度是不可能的。也许如果你平均数天的位置..通常DGPS支持没有公布,并没有很多芯片组支持它。上次我看到DGPS实现它涉及黑客实际的GPS芯片固件以增加支持。即使让A-GPS在随机芯片组上工作也是不确定的,因为它们可能不支持记录的辅助数据馈送方式。
答案 4 :(得分:1)
您可以通过自定义应用程序在欧洲使用DGPS校正来接收来自EGNOS增强卫星(http://egnos-portal.gsa.europa.eu/news/egnos-gets-invite-your-smartphone-11)的SISnet接收校正信号。但它确实需要订阅(对于公众来说还没有真正开放)SISnet来获取用于连接到其服务器的用户名和密码。您发布了一些有用的SDK。请记住,您仅限于C / A信号(伪距)并且您无法从智能手机内的那些廉价芯片获得相位数据(L1 / L2)。您需要一个精确的GNSS接收器,如Trimble BD910({{ 3}})能够访问GPS载波的L1载波相位信号。 GLONASS。然而,有更便宜的芯片支持SBAS,但没有一个芯片本身安装在手机中。
答案 5 :(得分:0)
它应该与硬件实现有关,而不是软件实现。
在现实中,GPS通常伴有Wi-Fi或3G,以帮助搜索当前位置。
答案 6 :(得分:0)
RTCM
更正可以使用NTRIP 'provider'
发送到您的Android手机。然后你需要将它应用到Android中的原始GPS。