top of page

Creating ROS package for GPS sensor data broadcasting

sensor_msgs dependency is used to broadcast the sensor data in ROS. Where sensor_msgs/NavSatFix.msg (http://docs.ros.org/api/sensor_msgs/html/msg/NavSatFix.html) is used to broadcast the GPS data.


#!/usr/bin/env python


import rospy

import time

import board

import busio

import adafruit_gps


from sensor_msgs.msg import NavSatFix

import serial


def sensor_talker():

uart = serial.Serial("/dev/ttyTHS1", baudrate=9600, timeout=10)

gps = adafruit_gps.GPS(uart, debug=False)

gps.send_command(b'PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0')

gps.send_command(b'PMTK220,1000')

last_print = time.monotonic()

pub = rospy.Publisher('NavSatFixr', NavSatFix, queue_size=10)

rospy.init_node('talker', anonymous=True)

rospy.init_node('talker', anonymous=True)

rate = rospy.Rate(10) # 10hz


while not rospy.is_shutdown():

gps.update()

current = time.monotonic()

if current - last_print >= 1.0:

last_print = current

if not gps.has_fix:

print('Waiting for fix...')

continue

msg = NavSatFix()

msg.header.stamp = rospy.Time.now()

msg.header.frame_id = 'gps'

msg.latitude = gps.latitude

msg.longitude = gps.longitude

msg.altitude = gps.altitude_m

msg.status.status = gps.fix_quality

msg.status.service = 1

pub.publish(msg)


if __name__ == '__main__':

try:

sensor_talker()

except rospy.ROSInterruptException:

pass




Comments


Drop Me a Line, Let Me Know What You Think

Thanks for submitting!

© 2023 by Train of Thoughts. Proudly created with Wix.com

bottom of page