原链接

通过GPS机器人可以获取定位信息。ROS中也提供了GPS的相关驱动包,可以方便的使用GPS的定位信息。下面以蓝鲸GPS模块为例演示如何在ROS中使用GPS传感器。其他的可以通过串口指令发布nmea语句的GPS模块都是通用的。

蓝鲸GPS模块采用AGPS定位方式,即GPS加手机基站的定位方式。相对于一般的GPS模块具有定位更加迅速和准确的优点。可以在官方淘宝店咨询购买。

首先在机器人上安装对应的软件包

安装gpsd

sudo apt-get install gpsd gpsd-clients

设置模块udev规则

在机器人上运行

dmesg --follow

将GPS模块的串口插入机器人USB接口,可以看到终端输出了串口的信息

[  434.206803] ftdi_sio 2-7.2:1.0: FTDI USB Serial Device converter detected
[  434.206868] usb 2-7.2: Detected FT232BM
[  434.207105] usb 2-7.2: FTDI USB Serial Device converter now attached to ttyUSB0

记住 2-7.2:1.0这个端口号
/etc/udev/rules.d/95-persistent-serial.rules文件中添加下面的内容。如果没有这个文件就自己创建一个

KERNELS=="2-7.2:1.0"         ,SYMLINK+="ttyUSB005", SYMLINK+="bwgps", OWNER="xiaoqiang" ,RUN+="/bin/setserial /dev/ttyUSB005 low_latency"

其中KERNELS之后未刚才的端口号。OWNER设置未自己的用户。修改完成后保存退出,然后执行

sudo udevadm control --reload

执行完成之后重新插入GPS模块串口,然后就可以在/dev文件夹内看到bwgps和ttyUSB005两个文件。这样就说明之前的修改已经生效了。

测试GPS数据

给模块通电,并插好串口模块之后可以开始测试模块是否能够正常输出GPS数据。

# 根据自己串口号和波特率设置
screen /dev/bwgps 115200

正常应该可以看到下面的输出。这样就说明GPS模块已经可以正常工作了。

执行下面的指令停止screen指令

sudo killall screen

设置 gpsd

# 设置串口波特率,蓝鲸GPS模块的波特率是115200,对于不同的模块根据模块参数设置。
sudo stty -F /dev/bwgps 115200
# 启动gpsd
gpsd -D 5 -n -N -b /dev/bwgps

然后执行

xgps

在空旷地方应该能够看到模块已经追踪的卫星。

在ROS中使用gps数据

在ROS中可以使用nmea_navsat_driver解析GPS数据。这个包会发出下面几个话题

话题 类型 简介
/fix sensor_msgs/NavSatFix GPS定位信息
/extend_fix gps_common/GPSFix GPSFix消息包含GPS卫星状态和定位信息
/time_reference sensor_msgs/TimeReference GPS时间信息
/vel geometry_msgs/TwistStamped GPS的速度信息

可以根据自己需求订阅相关信息

安装

首先下载安装这个包

cd [到你的工作空间]/src
git clone https://github.com/BluewhaleRobot/nmea_navsat_driver
cd ..
catkin_make -DCATKIN_WHITELIST_PACKAGES="nmea_navsat_driver"

修改launch文件,蓝鲸GPS模块用户可以不用修改直接使用。

<launch><!-- A simple launch file for the nmea_serial_driver node. --><arg name="port" default="/dev/bwgps" /><arg name="baud" default="115200" /><arg name="frame_id" default="gps" /><arg name="time_ref_source" default="gps" /><arg name="useRMC" default="false" /><node name="nmea_serial_driver_node" pkg="nmea_navsat_driver" type="nmea_serial_driver" output="screen"><param name="port" value="$(arg port)"/><param name="baud" value="$(arg baud)" /><param name="frame_id" value="$(arg frame_id)" /><param name="time_ref_source" value="$(arg time_ref_source)" /><param name="useRMC" value="$(arg useRMC)" /></node>
</launch>

各个参数的含义都十分明确,根据自己的设备参数进行修改就可以了。

运行测试

roslaunch nmea_navsat_driver nmea_serial_driver.launch

正常情况下就可以通过各个topic订阅信息了。注意如果之前运行了gpsd要先把gpsd关闭。

左侧是extend_fix话题数据。可以通过satellite_visible_prn看到已经看到的卫星编号。注意在开阔环境下才会有比较好的定位效果。

GPS在ROS中的测试和使用相关推荐

  1. ROS中实现A*路径规划

    ROS中实现A*路径规划 1. 方案设计目标 2. 技术指标 3. 主要研究内容 3.1 A*算法的思想与原理 3.2 A*算法的计算方法 4. 代码实现与优化 4.1 启发函数 4.2 代码介绍 5 ...

  2. 如何给定两个gps坐标 算出航向角_机器人开发如何配置ROS中的TF变换关系?

    当我们进行机器人开发时,常常需要面对TF坐标转换,本文以 Autolabor Pro1 与思岚激光雷达为例,介绍ROS TF的使用. Autolabor Pro1是什么? Autolabor Pro1 ...

  3. ROS中在gazebo中模拟GPS数据

    前面的文章写过了在robot_pose_ekf中添加GPS的方法,但是GPS在gazebo中使用会有两个问题: 1.GPS使用需要经过UTM包进行坐标转换,转换完成之后会出现一个GPS坐标很大的问题, ...

  4. ROS中的Client Library与roscpp talker lisener

    文章目录 前言 一.Client Library简介 二.roscpp 三.talker与 lisener 前言 ROS为机器人开发者们提供了不同语言的编程接口,比如C++接口叫做roscpp,Pyt ...

  5. ROS中使用摄像头的问题

    ROS中使用摄像头的问题 0.prepare 4 . 安装uvc_cam $ sudo apt-get install ros-indigo-uvc-camera     $ source /opt/ ...

  6. ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令

    ROS基本概念 文件系统 创建ROS软件包 ROS中的一些命令 ROS是什么 ROS文件系统 文件系统工具:rospack.roscd.rosls 创建ROS 软件包 catkin是什么 创建和构建一 ...

  7. 详解ROS中的TF使用

    个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-107.html 之前写过一篇博文<ROS-坐标转换> ...

  8. ROS中阶笔记(七):机器人SLAM与自主导航—SLAM功能包的使用

    ROS中阶笔记(七):机器人SLAM与自主导航-SLAM功能包的使用 文章目录 1 机器人必备条件 1.1 硬件要求 1.2 深度信息 1.2.1 激光雷达 1.2.2 kinect 1.3 里程计信 ...

  9. ROS中阶笔记(五):机器人感知—机器视觉

    ROS中阶笔记(五):机器人感知-机器视觉 文章目录 1 ROS中的图像数据 1.1 二维图像 1.1.1 安装安装usb_cam 1.1.2 显示图像数据 1.2 三维图像(kinect) 2 摄像 ...

  10. ROS中阶笔记(一):机器人系统设计—ROS系统下连接外部传感器

    ROS中阶笔记(一):机器人系统设计-ROS系统下连接外部传感器 文章目录 01 连接摄像头 1.1 ROS下连接usb_cam 1.1.1 前期准备 1.1.2 问题 1.1.3 安装usb_cam ...

最新文章

  1. Java对象的序列化与反序列化
  2. 网络流24题之餐巾计划问题
  3. Git之深入解析本地仓库的基本操作·仓库的获取更新和提交历史的查看撤销以及标签别名的使用
  4. 单点登录技术解决方案介绍
  5. 排查 Linux 系统故障,看这一篇足够了。
  6. 走入PHP-类与对象
  7. linux centeros下Redis的安装
  8. (转)阿里云CentOS 7下配置及使用mysql
  9. 一起谈.NET技术,在.NET中嵌入IronPython 交互
  10. python使用长ping命令_python实现ping命令小程序
  11. 科勒公司成为曼联的主要合作伙伴
  12. 社会工程学部分攻击经典方法总结
  13. html5 粽子飘落,飘落的丁香花阅读*
  14. 【已解决】微星主板开启msi fast boot后不能进BIOS
  15. QT使用PaddleOCR和百度OCR进行文字识别
  16. vue实现一键回到顶部
  17. ChatGPT办公应用:制作PPT大纲
  18. 《人类简史》笔记三—— 历史从无正义
  19. vue中template的三种写法
  20. Qt开源作品33-图片开关控件

热门文章

  1. 免费万能视频格式转换器是一款功能强大的全能视频格式转换软件,支持多种视频格式转换。万能视频转换器可以将RM、RMVB
  2. keba驱动器_KEBA控制器说明书
  3. 油价涨涨涨 有车一族省油妙招也不断翻新
  4. php学习笔记-4.登录超时的设置
  5. 如何在php设置背景颜色,html如何设置背景颜色?两种方法教会你
  6. Python基础:while循环 以及 练习题 :三位数的水仙花数 GDP 计算π 判断一个数是否是素数
  7. git 强制拉取最新代码
  8. lol登入显示目录服务器失败,英雄联盟(LOL)登录游戏提示“连接DIR服务器失败”?...
  9. 教你炒股票9:甄别“早xie”男的数学原则!
  10. PHP中的ereg()与eregi()