在 Linux 系统中,如果你需要连接 GPS 传感器进行测试,那么使用 GPSD 可以满足你的需求,帮助你快速实现 GPS 数据的获取。本文将使用导远 INS570D 传感器(车载高精度组合导航系统),演示如何在 Ubuntu 系统中获取其 RS-232 接口输出的 GPS NMEA 格式数据,并将时间、经度、纬度、海拔等信息展示出来。

你可以使用其他 GPS 传感器来完成本次实验,只要兼容 NMEA-0183 协议即可。关于 NMEA 协议的详细介绍,请参考《GPS NMEA 协议》。

GPSD 简介

GPSD 是一系列管理 GPS 设备和其他用于导航与精确计时的传感器的工具,包括航海自动识别系统(Automatic Identification System)的无线电广播设备和电子罗盘。其中最主要的程序是一个叫做 gpsd 的服务守护进程,它管理着这些传感器,并且在 TCP/IP 端口生成 JSON 流报告。其他的程序包括用来展示代码模型和各种诊断工具的客户端。

简单来说,GPSD 具有如下功能特性:

  • 自动探测并识别 GPS 协议,同时支持多个 GPS 设备,并且可以动态进行设备控制;
  • 支持 PPS 并且与 NTPD 结合,实现时间服务;
  • 统一生成 JSON 流报告给上层客户端;
  • 支持 DBUS,共享内存以及本地 SOCKET 等方式与客户端通讯,最大支持 64 个;
  • 提供丰富的组件及工具用来调试及测试;

安装 GPSD

在开始之前,请先执行下面命令安装 gpsd 及各客户端程序。

sudo apt install gpsd gpsd-clients

安装完成后,你的 Linux 系统会增加几个命令:

命令 说明
gpsd 最重要的 GPSD 服务守护进程。
gpsprof 一个为错误统计和设备超时产生报告的分析器。
gpsctl 一个调整设备设置的公共程序。
gpsdecode 一个把传感器日志批量转换成可读的 JSON 的程序。
gpsfake 一个能够连接任意数目的活动传感器日志的测试套件,可以重复运行有错误报告的传感器日志来重新产生特定的问题。
cgps 将 GPS 结果以图形化显示。
gpsmon 将 GPS 结果以图形化显示。

启动 GPSD

虽然 gpsd 作为一个服务程序通常使用 systemd 启动和停止(并且通常在启动时启动),例如:

以 systemd 方式启动 gpsd 服务

sudo systemctl start gpsd

以 systemd 方式停止 gpsd 服务

sudo systemctl stop gpsd
sudo systemctl stop gpsd.socket

查看 gpsd 服务状态

sudo systemctl status gpsd

但是为了简单起见,我们还是手动运行它。这样会更加灵活一点,尤其是当我们需要处理来自 GPS 设备的数据时,比如我们通过串行或 USB 端口连接 GPS 传感器,这样可以在启动 gpsd 服务时指定设备节点。

手动方式启动 gpsd 守护进程

gpsd /dev/ttyUSB0

当然,你的设备节点有可能不是 /dev/ttyUSB0。在 Linux 系统中,你可以通过 minicom 或 socat 命令简单测试一下,看看能够读取 GPS 设备的数据。

例如,在我们这里,打开 /dev/ttyUSB0 串口,可以看到 INS570D 输出如下数据,即可确定该设备名称是正确的。

$GPGGA,125657.00,2309.61109941,N,11329.63396336,E,1,28,0.6,51.3817,M,-6.1780,M,,*42
$GPRMC,125657.00,A,2309.61109941,N,11329.63396336,E,0.006,9.7,081222,3.2,W,A*2B

注意:如果没有收到 GPS 数据,可能是权限问题导致的。执行下面命令将当前用户(非 root 用户)添加到 dialout 用户组,然后重启系统后再次尝试。

sudo usermod -a -G dialout $USER

观测 GPS 信息

当我们启动 gpsd 守护进程之后,就可以使用 GPSD 自带的客户端程序观察 GPS 数据了。

启动 cgps 客户端观测数据:

cgps

可以看到如下界面:

启动 gpsmon 客户端观测数据:

gpsmon

可以看到如下界面:

这样就可以很直观地看到来自 GPS 传感器的位置、速度、时间等信息啦!

动手写程序

如果你想自己编写应用程序获取来自 gpsd 的数据,可以使用 libgps 库,具体使用方法请参考《libgps 使用教程》。

示例代码:read_gps_data.c


使用 GPSD 快速读取 GPS 信息相关推荐

  1. jpg中读取GPS信息

    需要读取EXIF信息,自己阅读了一些资料,现在共享一下 需要注意的是,由于EXIF是一种可交换的文件格式,所以可以用在Intel系列和Motorola系列的CPU上(至于两者CPU的区别,大家可以到网 ...

  2. matlab读取JPG文件属性中的GPS信息并生成POS文件

    小练习 代码如下 fileFolder='地址';%填绝对路径,然后保存在fileFolder dirOutput=dir(fullfile(fileFolder,'*.JPG')); %引号内是文件 ...

  3. Python读取安卓手机GPS信息

    问题描述:使用Python读取安卓手机GPS信息,要求手机已经打开GPS. 思考一下: 1)如何在安卓手机上编写Python程序: 2)如何调用安卓系统提供的功能: 3)如何读取GPS数据. 思考上面 ...

  4. 快速准确读取发票信息——发票扫描识别系统

    一.发票扫描识别系统的定义 奥普思凯快票通表票扫描识别系统(以下简称发票扫描识别系统)是高性能扫描仪和OCR识别技术的结合.软硬一体化的系统. 快速准确读取发票信息--发票扫描识别系统 发票扫描识别系 ...

  5. 如何读取照片的GPS信息?—最好的语言Java实现起来就这么简单【手把手教程+完整代码】

    大家好,我是Lex 喜欢欺负超人那个Lex 上次,我们用Python读取照片的GPS信息,可以获取拍摄时间.手机型号等信息,还可以对 拍摄地点进行精确定位.Java表示不服~~~ 今日重点:用Java ...

  6. python 快速读取图像宽高信息

    python 快速读取图像宽高信息 1. 背景 2. 方法 2.1 仅读取图像文件头部信息 2.2 采用特定 python 包读取 1. 背景 存在100w张JPG图像,需要获取它们的宽高信息.如果用 ...

  7. python提取图片gps坐标,使用Python读取照片的GPS信息

    来源:https://www.cnblogs.com/baby123/p/12213794.html 昨天听人说,用手机拍照会带着GPS信息,原来没注意过这个,因此查看下并使用代码获取照片里的GPS信 ...

  8. JAVA 拍照 exif GPS_读取图片EXIF块中GPS信息,转换为高德地图API坐标

    最近两天做了一个需求,从APP端上传的照片信息里面读取出GPS位置信息,然后翻译成可读的地点信息. 总结一下,分为三步: (1)提取图片中的GPS信息,使用到了metadata-extractor; ...

  9. python批量修改图片的exif信息,增加GPS信息。

      有时候需要给图片增加地理信息,比如在用无人机影像做3维建模或者正射影像时,可以将无人机的gps写入图片,然后用ODM快速完成三维模型与正射影像生成.   ODM的使用方法可以参看下面这篇博客. h ...

最新文章

  1. CSharpGL(42)借助帧缓存实现渲染到纹理(RenderToTexture)
  2. MySQL行转列完整SQL示例
  3. linux as86,记linux_centOS安装as86过程
  4. sklearn 安装_初识sklearn
  5. Spring Boot笔记-普通异常错误截取及构造错误页面
  6. freeMarker fmpp 解析PowerDesign PDM探索
  7. Truffle测试框架
  8. python下列数据中不属于字符串的是_下列数据中,不属于字符串的是( )。 (6.0分)_学小易找答案...
  9. 如何实现 迭代器 可迭代对象 (2.1)
  10. 无恶意的协议才有效力
  11. python 对象_python中对象可不可以
  12. echarts——饼图
  13. Vue后台管理通用模板
  14. 西门子主程序调用子程序_子程序编程举例说明-广数m98调用子程序实例-西门子子程序调用实例...
  15. 云骞开源即时通讯软件 WEBIM
  16. 【6.24校内test】T2 不老梦
  17. HTTP中 referer 什么意思
  18. 网络笔记(29) 容器网络:来去自由的日子,不买公寓去合租
  19. 【分布式事务】内容较多CAP/BASE/2PC/3PC/TCC/Sega等等等等~,一次性捋清楚
  20. FPGA图像处理_中值滤波、均值滤波、极值滤波

热门文章

  1. 【阅读理解】深入移动端的适配-详尽篇
  2. 初学者制作VMOS场效应管小功放
  3. 基于51单片机16*32点阵显示屏的设计与实现
  4. 中南大学转专业计算机名单,中南大学2010级优秀本科生转专业名单
  5. 2022 七校联合NewStarCTF 公开赛赛道 WEEK3|MISC
  6. 四、node系列之购物车的业务逻辑
  7. 面向过程、基于对象、面向对象、分析
  8. (二)计算机取证-案件确认书及证据表
  9. 小程序画布功能+JAVA用KUMO生成词云图片
  10. Random中的随机数的产生机制