Hello,
I’m trying to build an autonomous drone. I have a raspberry pi attached to a pixhawk mini via a serial connection, and am running ROS to control the drone. I need to use a GPS sensor on the raspberry pi so that I can read it for my calculations within my code, so I’m trying to send the required data to the flight controller using mavros to save weight. I am currently sending the latitude, longitude, and altitude however when trying to arm i get “PreArm: EKF2 still initialising” continuously. I think I’m not sending enough data to the FC but I can’t seem to work out what else is needed for the EKF2 to work.
What does the EKF2 need to initialize??
This is the code I am currently trying to use:
#!/usr/bin/env python2.7
import serial
import time
import pynmea2
import rospy
from sensor_msgs.msg import NavSatFix
def gpsToFC():
rospy.init_node('gpsToFC', anonymous=True)
pub = rospy.Publisher('global_position/global', NavSatFix, queue_size=10)
port="/dev/ttyUSB0"
msg = NavSatFix()
while True:
ser = serial.Serial(port, baudrate=9600, timeout=0.5)
dataout = pynmea2.NMEAStreamReader()
data=ser.readline()
if data[0:6] == "$GPGGA":
msg.header.stamp = rospy.Time.now()
msg.header.frame_id = "gps"
parsed_data = pynmea2.parse(data)
msg.latitude = parsed_data.latitude
msg.longitude = parsed_data.longitude
msg.altitude = parsed_data.altitude
pub.publish(msg)
print(msg)
if __name__ == '__main__':
try:
gpsToFC()
except rospy.ROSInterruptException:
pass
thanks