ros读取GPS模块数据,并发布到topic

今天拿到一个GPS模块,店家说linux可以用,那就是可以试试
在这里插入图片描述

1 检查设备连接

Ubuntu输入:

	ls /dev/tty*

查看是否有USB设备接入,正常情况如下:
在这里插入图片描述
然后可以直接看设备原始数据:

	sudo cat /dev/ttyACM0

如图:
在这里插入图片描述
连接正确

2 串口助手读取数据

sudo apt install cutecom
sudo cutecom 

设置 串口和波特率可以看到数据

3 接入ros

mea_navsat_driver 包用于解析 NMEA 字符串并发布非常简单的 GPS 消息的包。不需要或使用 GPSD 守护程序。
参见ros wiki: http://wiki.ros.org/nmea_navsat_driver
github源码:https://github.com/ros-drivers/nmea_navsat_driver
这个包为输出兼容的 NMEA 语句的 GPS 设备提供了一个 ROS 接口。

(1)安装nmea_navsat_driver

	sudo apt-get install ros-melodic-nmea-navsat-driver libgps-dev

(2)打开新Terminal窗口

	roscore

(3)启动launch文件,运行nmea_serial_driver 节点

	roscd nmea_navsat_driver/launch/
	sudo vim nmea_serial_driver.launch 

修改USB口和波特率:

<launch>
 
  <!-- A simple launch file for the nmea_serial_driver node. -->
 
  <arg name="port" default="/dev/ttyACM0" />
  <arg name="baud" default="9600" />
  <arg name="frame_id" default="gps" />
  <arg name="use_GNSS_time" default="False" />
  <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="use_GNSS_time" value="$(arg use_GNSS_time)" />
    <param name="time_ref_source" value="$(arg time_ref_source)" />
    <param name="useRMC" value="$(arg useRMC)" />
  </node>
  
  </launch>

然后给USB权限:

	sudo chmod 777 /dev/ttyACM0

运行nmea_serial_driver 节点:

	roslaunch nmea_navsat_driver nmea_serial_driver.launch

(4)查看话题输出

	rostopic echo /fix

在这里插入图片描述
一开始在室内测试,值为nan,到了室外后正常
在这里插入图片描述
一个廉价的GPS模块,随便玩玩吧。

4 其他说明

nmea_navsat_driver提供四个节点:
nmea_topic_driver,nmea_serial_driver,nmea_topic_serial_reader和nmea_socket_driver

nmea_topic_serial_reader节点

此节点从串口读入GPS数据,然后封装为nmea_msgs/Sentence数据格式,发布话题nmea_sentence。

nmea_topic_driver节点

此节点订阅话题nmea_sentence,然后根据NMEA0184协议解析,并发布解析后的数据,发布话题为:经纬度/fix,速度/vel,gps时间/time_reference和航向角/heading。

nmea_serial_driver节点

此节点从串口读数据,直接解析发布数据,相当于nmea_topic_driver节点和nmea_topic_serial_reader节点的结合体。

  • 6
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值