Arduino 读取GPS 数据发送解析并发布ROS topic(一)

2023-05-16

概述

通过Arduino收集GPS数据,连接至电脑端,在电脑端通过python对数据进行整理,并通过发布 TOPIC,本部分主要记录如何通过Arduino读取GPS数据。

接线方式

在这里插入图片描述

  1. GPS 的 UCC GND 分别接到 arduino板子上的 5v 和 GND
  2. GPS 的 TXD 引脚接 arduino 的RX1引脚 (只需要接受从芯片上发回的数据)
  3. Arduino 连接至串口
    #解析代码

方法一

将gps 发布的数据不加处理,全部发送到串口

void setup() {
  // put your setup code here, to run once:
     // put your setup code here, to run once:
  Serial1.begin(38400);
  Serial.begin(38400);
}

void loop() {
  // put your main code here, to run repeatedly:
  if (Serial1.available()) {
    //Serial.print((char)Serial1.read());
    Serial.print((char)Serial1.read()); // read each character
  }
}

结果如下:
在这里插入图片描述
串口受到的数据如下

$GNGLL,0000.0000,N,00000.0000,E,085931.000,V,N*59
$GNGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*2E
$GNRMC,085931.000,V,0000.0000,N,00000.0000,E,000.0,000.0,151118,,,N*63
$GNVTG,000.0,T,,M,000.0,N,000.0,K,N*1C
$GNZDA,085931.000,15,11,2018,00,00*41
$GNGGA,085932.000,0000.0000,N,00000.0000,E,0,00,0.0,0.0,M,0.0,M,,0000*76
$GNGLL,0000.0000,N,00000.0000,E,085932.000,V,N*5A
$GNGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*2E

其中“ $GNGGA 所在的行就是GPS 的信息,格式如下:
$GNGGA,(1),(2),(3),(4),(5),(6),(7),(8),(9),M,(10),M,(11),(12)*hh(CR)(LF)
(1) UTC 时间,格式为 hhmmss.ss;
(2) 纬度,格式为 ddmm.mmmmm(度分格式);
(3) 纬度半球,N 或 S(北纬或南纬);
(4) 经度,格式为 dddmm.mmmmm(度分格式);
(5) 经度半球,E 或 W(东经或西经);
(6) GPS 状态,0=未定位,1=非差分定位,2=差分定位;
(7) 正在使用的用于定位的卫星数量(00~12)
(8) HDOP 水平精确度因子(0.5~99.9)
(9) 海拔高度(-9999.9 到 9999.9 米)
(10) 大地水准面高度(-9999.9 到 9999.9 米)
(11) 差分时间(从最近一次接收到差分信号开始的秒数,非差分定位,此项为空)
(12) 差分参考基站标号(0000 到 1023,首位 0 也将传送,非差分定位,此项为空)

##方法二 提取信息再发布(采用)

char msg_line[600];
char read;
int i = 0;

void setup() {
  // put your setup code here, to run once:
  Serial1.begin(38400);
  Serial.begin(38400);
}

void loop() {
  // put your main code here, to run repeatedly:
  if (Serial1.available()) {
    //Serial.print((char)Serial1.read());
    msg_line[i++] = (char)Serial1.read(); // read each character into the list
    //Serial.print(msg_line[i]);

    if(i >= 580) {
      int ii = 0;
      while(ii<i){
      if(ii+20 < 600 && msg_line[ii] == 'G' && msg_line[ii+1] == 'A'){  //对GA那一行进行提取
        int t = ii;
        while(t<ii+73){
          Serial.print(msg_line[t]);
          t++;}//print info 
       }
       ii++;
       }
      memset(msg_line, 0, 600);
      i = 0;} //clear info
    //Serial.print((char)Serial1.read());
  }
}

接下来将介绍将串口的数据解析后发布 ros topic
Arduino 读取GPS 数据发送解析并发布ROS topic(二) https://blog.csdn.net/Fourier_Legend/article/details/84107998

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino 读取GPS 数据发送解析并发布ROS topic(一) 的相关文章

  • C#:GPS跟踪系统[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 C net 中构建带有移动设备 带 GPS 的 GPS 跟踪系统 场景是 通过支持 GPS 的手机跟踪用户 服务工程师 这里没
  • GPS坐标:一个点周围1平方公里

    我希望有人能给我提供一个方程来计算给定点周围 1 公里的平方 X 从 a aaa 到 b bbb Y 从 c ccc 到 c ccc 例如lat 53 38292839 and lon 6 1843984 我还需要围绕一个点 2 公里 5
  • 为什么使用 libnfc 和 PN532 SHIELD 时“找不到 NFC 设备”

    我在 ArchLinux 上安装了 libnfc 并通过我的 Adafruit PN532 arduino SHIELD 使用它 nfc list返回消息 未找到 NFC 设备 我在 etc nfc devices d pn532 conf
  • 如何为 Arduino 或类似的微控制器编写 JavaScript 编译器? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我意识到这个问题会引起一些人的注意 并且我意识到 JavaScript 传统上是一种解释性语言 请让我解释一下 我是一名专门从事 We
  • 寻找另一部智能手机的笛卡尔坐标?

    考虑到我有两部智能手机 A 和 B 如果我拿着智能手机 A 有没有办法确定 B 相对于我自己的位置 所以如果我们有这张图片的情况 它会告诉我 B 位于位置 2 1 利用 WiFi 信号强度来获取位置等创造性方法更受欢迎 我还可以确定两部手机
  • 使用 SPIFFS 加载文件时出现问题 (ERR_CONTENT_LENGTH_MISMATCH)

    好吧 这两天我一直在研究这个问题 但我仍然觉得我一无所获 我最近开始使用SPIFFS 文件系统 for Arduino开发于呼扎 ESP8266像FSBrowser ino例如 虽然它在分离代码方面非常出色 但随着我的代码不断增长 它在稳定
  • Android 应用无法获取位置权限

    我的清单中有以下内容
  • 从 GPS 坐标获取城市名称

    我想从 GPS 坐标获取城市的名称 我可以使用 Google API 获取 GPS 点的详细信息 http maps googleapis com maps api geocode output parameters 输出是 XML 但我不
  • Google 地图 (Android) 中的位置更新率

    我正在编写一个简单的基于 GPS 的应用程序 用于位置感知 每当启用 GPS 时 应用程序都会请求位置更新并以格式打印纬度和经度 TextView 如果 GPS 被禁用 位置提供商会回退到LocationManager NETWORK PR
  • C# - LINQ - GPS 纬度和经度的最短距离

    我有数据库 其中有带有 GPS 坐标的一流酒店 我想获得距离我选择的坐标最近的地方 我认为它应该看起来像这样 我在这里找到了很多示例代码 就像这样 var coord new GeoCoordinate latitude longitude
  • 使用 Ardulink 命令 Arduino Uno

    我试图在我的 JAVA 应用程序中使用 Ardulink 库来命令我的 Arduino Uno 但没有成功 我不知道我错过了什么 这是我的代码 Link link Link getDefaultInstance boolean connec
  • 如何从 Android 手机获取 GPS 数据?

    有没有办法将 Android 手机的 GPS 数据连接 USB 有线 到 PC 我目前正在使用基于 gpsd 项目的 GPSTether 应用程序 我正在寻找比该应用程序提供更多控制且错误更少的替代方案 另外 是否有另一种方法可以在不使用任
  • Android 中的 GPS 超时

    在黑莓中 我们使用超时来获取位置 这样如果它在这么长时间内没有重新调整位置 我们就会知道 但是在Android中 没有超时的概念 任何人都可以告诉我们替代方案 我们可以发现 在这么长时间之后 GPS没有位置更新 您可以使用两个线程来实现此超
  • 编译器:如果条件始终为真/假怎么办

    我想到了条件和编译器 我正在为 Arduino 编写一个应用程序 因此我需要该应用程序尽可能快 在我的代码中我有这个 define DEBUG false if DEBUG String pinName pinName Pin pinNam
  • iPhone 网络应用程序可以获取 GPS 位置吗?

    有没有一种简单的方法来设计一个网站来促进iphone用户提供gps网站坐标 我想知道表单字段是否有命名约定 例如 让用户以自动方式输入 我正在考虑建立一个基于位置的网站 并希望为 iPhone 和其他移动用户 量身定制 我意识到 iPhon
  • 检测wifi是否启用(无论是否连接)

    对于 GPS 跟踪应用程序来说 在打开 WIFI 的情况下记录位置信号会导致数据非常不精确或存在间隙 在开始跟踪之前 我已使用可达性查询来检测 wifi 是否可用 问题是 如果进行该查询时 wifi 已启用但未连接到网络 则表明无法通过 w
  • 如何使用一个凉亭同时创建两个地图?

    如下图所示 现在我的gazebo正在运行2个slam gmapping包 首先是 turtlebot slam gmapping 发布到 map 主题 第二个是 slam gmapping 发布到与第一个相同的 map 主题 我想创建一个新
  • PWA 可以访问联系人、GPS 或使用手机摄像头吗?

    PWA 可以访问联系人 GPS 或使用手机摄像头吗 这在任何系统 ios android 中都可能吗 是否有任何开发计划来实现这些功能 PWA 无法克服一些限制 you cannot访问电话上的联系人列表 另一方面 你can拍照并使用 GP
  • 向 tk103 GPS 跟踪器发送命令

    我正在使用 php 开发实时 GPS 跟踪器 Web 应用程序 跟踪器参考号是tk103 我可以从跟踪器接收信息并将其存储到数据库中 设备的 GPRS 模式已启用 我的问题是 如何使用 php ini 将命令从服务器发送到设备 提前致谢 这
  • 关闭应用程序后如何调试

    我正在尝试重现问题 这需要在特定位置关闭并重新打开我的应用程序 这是我的问题 1 如何查看我的日志 使用NSLog命令 当我的 iPhone 未连接到 XCode 时 2 是否可以将iPhone模拟器的特定位置 例如市中心 设置为默认位置

随机推荐

  • 利用XML文件的一个写日志的类!!!!!

    对于程序执行期间的错误跟踪 xff01 相信大家都有自己的一套办法 xff01 xff01 xff01 但都是利用文件文件 xff0c 我这次利用的是XML amp XSL xff0c 可产生报表格式的日志 轻松生成报表 xff01 xff
  • 【Kubernetes实战】(四)MiniKube方式部署

    目录 一 当前配置环境 二 准备工作 1 关闭防火墙和SeLinux 2 禁用swap交换分区 三 Docker安装 1 配置docker源 2 安装docker环境依赖 3 安装docker 4 启动docker并设置为开机自启 5 配置
  • DGPS与RTK的区别

    2013 10 11 10 49 11 分类 xff1a GNSS 举报 字号 订阅 最近一直感觉身在这个行业不能对这个行业理论知识一无所知 xff0c 这对于技术人来说应该是一种遗憾 所以决定要学一些东西 xff0c 并记录下来以便于以后
  • 基于Ubuntu19.04安装docker

    输入命令 lsb release a 显示如下 Distributor ID Ubuntu 类别是ubuntu Description Ubuntu 19 04 16年3月发布的稳定版本 xff0c LTS是Long Release 19
  • PHP获取当月开始时间和结束时间

    startTime 61 date 39 Y m 01 39 time 获取该月份的第一天 endTime 61 date 39 Y m t 39 time 获取该月份的最后一天
  • CSS3实现动态进度条

    CSS3的线性渐变使制造动态进度条成为可能 现在就来一步一步讲解如何创建动态进度条吧 以Chrome浏览器webkit内核为例 目标 xff1a 单个矩形条背景 目标进度条 xff0c 背景是淡蓝色 xff0c 上面平铺了一层倾斜的深蓝色条
  • C语言-阶乘数列

    求Sn 61 1 43 2 43 3 43 4 43 5 43 43 n 之值 xff0c 其中n是一个数字 include lt stdio h gt include lt math h gt long long factorial in
  • 深入MTK平台bootloader启动之【 Pre-loader -> Lk】分析笔记

    1 bootloader到kernel启动总逻辑流程图 ARM架构中 xff0c EL0 EL1是必须实现 xff0c EL2 EL3是选配 xff0c ELx跟层级对应关系 xff1a EL0 app EL1 Linux kernel l
  • STM32输出模式详解

    本文为个人见解 xff0c 如有问题欢迎指正 首先需要明确输出 输入的意思 输出是指STM32控制外设 xff08 主要指输出高电平或低电平 xff09 或STM32发送数据给外设 xff0c 输入是指外设发送数据给STM32 输出模式有三
  • [OPNET学习总结]——SITL

    软件自带的SITL例程中 xff0c 出现如下error xff1a lt lt lt Recoverable Error gt gt gt Object repository construction failed due to erro
  • 漫谈程序员系列:程序员的生活就这样吗

    我当了快十年程序员了 xff0c 终于老得可以来谈谈程序员的生活是什么样子了 或许陈奕迅的 十年 中的一段歌词 xff0c 可以表示很多程序员和软件开发之间的感情纠葛 xff1a 十年之前 我不认识你 你不属于我 我们还是一样 陪在一个陌生
  • 程序员转行为什么这么难

    尽管我在 大龄程序员的未来在何方 这篇文章里比较乐观地介绍了程序员保持竞争力的几个方向 xff0c 但现实依然是残酷的 xff1a 很多人将不得不离开软件开发工作 xff0c 转型去从事其他职业 当你要这么做时 xff0c 就会感慨 xff
  • 使用http_parser解析URL

    用C语言编写http应用 xff0c 解析URL是一个繁琐的事儿 前几天使用http parser实现httpclient xff0c 发现里面提供了一个解析URL的方法http parser parse url xff0c 用起来相当方便
  • Android app 后台被杀恢复

    android 模拟应用因内存不足被后台杀死命令 https www jianshu com p effb4546b9aa adb shell am kill all 应用通过home键已经停留在后台使用 xff0c 杀掉所有后台程序 xf
  • Ubuntu查看linux系统版本号

    查看ubuntu版本 输入命令 cat proc version 显示如下 Linux version 5 0 0 13 generic buildd 64 lcy01 amd64 020 linux内核版本号 gcc version 8
  • Linux C Socket简介和实现

    1 网络中进程之间如何通信 xff1f 本地的进程间通信 xff08 IPC xff09 有很多种方式 xff0c 但可以总结为下面4类 xff1a 消息传递 xff08 管道 FIFO 消息队列 xff09 同步 xff08 互斥量 条件
  • C++ STL视频教程,初学者必备视频资料

    STL视频教程 初学者必备视频资料 我一个朋友做的 我转发到这里和大家分享 STL语音视频教程 下载地址 xff1a url 61 http www ctdisk com file 3388918 STL语音视频教程 7z url
  • QMessageBox简单用法(QT5.12)

    span class token comment for starf study span span class token macro property span class token directive hash span span
  • TOF相机 Realsense L515 与 Ipad pro Lidar Camera 对比

    最近好奇都是TOF 相机 L5151 和 Ipad pro 上带的深度相机模块有啥不一样 网上很少有相关的中文资料来介绍 原理上的差异 简单搜索了一下 在此小小总结 Apple Lidar Camera 苹果采用的激光是 VCSEL Ver
  • Arduino 读取GPS 数据发送解析并发布ROS topic(一)

    概述 通过Arduino收集GPS数据 xff0c 连接至电脑端 xff0c 在电脑端通过python对数据进行整理 xff0c 并通过发布 TOPIC xff0c 本部分主要记录如何通过Arduino读取GPS数据 接线方式 GPS 的