本文主要是介绍GPS串口驱动的调试(NEMA协议的直接用nmea_navsat_driver功能包即可),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
GPS串口的调试
这是用串口助手接收到的信息,这还是在室内的。
我这个GPS模块是NEMA协议的那么用这个功能包应该是可以的,所以就没必要单独找什么GPS的串口驱动了。我去Github搜了下搜不到法系这是个功能包,都不用下源码,直接apt-get install就可以了好像,那岂不是太方便了。还是有Github的 https://github.com/ros-drivers/nmea_navsat_driver.git
这个功能包并不叫GPS应该是用NMEA协议的不止GPS,这也是我前几天在《GPS卫星导航定位技术与方法》这本书里面看到的,具体页面是讲NMEA协议的地方,应该可以找到。
https://gitee.com/maxibooksiyi/gps_driver
https://blog.csdn.net/sinat_16643223/article/details/117339716
可以在launch里面更改波特率和串口号。
还是二进制安装方便,源码编译各种报错,python还是不方便
sudo apt-get install ros-melodic-nmea-navsat-driver (可以双击tap键看有哪些nmea开头的功能包,不看的话你可能就直接去装nmea_gps_driver那可能就找不到了这个功能包,幸亏我之前源码编译了下,知道它的源码工程名叫nmea-navsat-driver,所以选择了这个功能包)
roscore
rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/ttyACM0 _baud:=119200
rostopic echo /fix
可以看到经纬度,如果没有数据(比如在房间里)经纬度后面就显示nan。终端打印的消息如下。
header:
seq: 521
stamp:
secs: 1629554912nsecs: 999170064
frame_id: "/gps"
status:
status: -1
service: 1
latitude: nan
longitude: nan
altitude: nan
position_covariance: [9998.0001, 0.0, 0.0, 0.0, 9998.0001, 0.0, 0.0, 0.0, 39992.0004]
position_covariance_type: 1
fix (sensor_msgs/NavSatFix) 可以看到发布的/fix话题就是sensor_msgs/NavSatFix类型,和global_fusion功能包里globalOptNode.cpp里所订阅的GPS话题消息类型是一样的,这样等于可以直接用了!!!!!
GPS位置,一直发布即使GPS接受不到信号,发出的数据为无效(nan)
GPS模块不会一开始就有数据,会先等几分钟(回看了下录屏,大概两分多钟)。前几分钟发布的经纬度都收nan,看来GPS模块还是等数据稍微稳定了点才发布出来。
所以globalfusion功能包直接把收到第一个GPS经纬度作为原点也是可以的?
记得across的那篇GPS文章说过,GPS第一次在一个地方是需要等几分钟的,就算是无人机上的GPS也是要等一阵子灯才变绿对吧,估计也是那个时候才有经纬度数据输出,在那之前GPS模块不输出经纬度数据。不对,我前几天测试GPS灯没有变绿也是有经纬度数据的。算了,先不管这个了,总之都是要先等一阵子。
https://blog.csdn.net/sinat_16643223/article/details/118771602
这是有经纬度数据了
2021.9.5
我在《ROS机器人编程实战》里面就看到专门一节说了GPS(NEMA协议的,用的ublox的GPS模块)接入ROS的功能包就是我用的这个,当然是NEMA协议的。
也是打印的/fix话题
这篇关于GPS串口驱动的调试(NEMA协议的直接用nmea_navsat_driver功能包即可)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!