Hi, i run the script that can extract information on pi, if the code master.recv_match(type=‘ATTITUDE’, blocking=True).to_dict() has * type=‘ATTITUDE’, blocking=True*, then the code will stop after running for seconds.
If i delet type=‘ATTITUDE’, blocking=True,the code can run.
The following is picture and code.The script just stops there like this.Who can tell me what is wrong?
I will be thankful.
Yes, port 9000 is set up in mavproxy as a udp input, which is useful for things like sending a sensor reading to it for it to pass to the autopilot or up to QGC. If you want to get readings from it repeatedly then you’ll need to send it regular updates, e.g.
import time
import math
from pymavlink import mavutil
def wait_conn():
"""
Sends a ping to stabilish the UDP communication and awaits for a response
"""
msg = None
while not msg:
master.mav.ping_send(
int(time.time() * 1e6),
0,
0, # Request ping of all systems
0 # Request ping of all components
)
msg = master.recv_match()
time.sleep(0.5)
def send_heartbeat():
"""
Sends a heartbeat message to continue getting telemetry updates.
"""
master.mav.heartbeat_send(
mavutil.mavlink.MAV_TYPE_ANTENNA_TRACKER, # something that just listens
mavutil.mavlink.MAV_AUTOPILOT_INVALID, # not an autopilot
0, 0, 0
)
def get_attitude(timeout=0.1):
return master.recv_match(type='ATTITUDE', blocking=True, timeout=timeout)
master = mavutil.mavlink_connection('udpout:0.0.0.0:9000')
wait_conn()
print("connection successful")
t=0
while True:
# get the latest attitude data
message = get_attitude()
while message is None:
send_heartbeat()
message = get_attitude()
message = message.to_dict()
# do something with it
print("{:>5} -- pitch:{:.1f}, roll:{:.1f}, yaw:{:.1f}, pitchspeed:{:.3f}, rollspeed:{:.3f}, yawspeed:{:.3f}".format(
t,
math.degrees(message['pitch']),
math.degrees(message['roll']),
math.degrees(message['yaw']),
message['pitchspeed'],
message['rollspeed'],
message['yawspeed'])
)
# track progress
t += 1
time.sleep(0.1)
We added several updates recently, so hopefully it was a bit easier to use than it has been previously. Is there anything in particular you’d like to see added?
So you’re aware, the example I just sent you wasn’t just lying around - I just spent the time to figure out how to solve your issue, write the code for it, and test it to make sure it was working.