"Failsafe enabled: no datalink" when flying around using MAVROS services

Turns out the mavlink shell also works as a valid datalink.
I’ve been able to identify the responsible passages and came up with a little “datalink thread”, which solves my issue. It goes like this:

import threading
from pymavlink import mavutil

class MavHeartbeatThread(threading.Thread):
    def __init__(self, interval=1.):
        super(MavHeartbeatThread, self).__init__()
        self.interval = interval
        self.running = False

    def run(self):
        self.running = True
        self.mavlink_connection = mavutil.mavlink_connection('0.0.0.0:14550', autoreconnect=True, baud=57600)
        self.mavlink_connection.wait_heartbeat()
        while self.running:
            self.mavlink_connection.mav.heartbeat_send(mavutil.mavlink.MAV_TYPE_GCS,
                mavutil.mavlink.MAV_AUTOPILOT_GENERIC, 0, 0, 0)
            time.sleep(self.interval)

    def stop(self):
        self.running = False
2 Likes