We are working on a AUV system. Currently i am searching that how can i access to the real-time MAVLink messages. ( I want to access the datas which can seen on QGround’s MAVLink Inspector section). I’m doing researches for a long while and had no results. We are using a Pixhawk2.4.8 and a Jetson Nano.
i am using a depth sensor, how can i access to the current depth values in real time via pymavlink?
how can i access to the AHRS2 values that constantly updating on terminal?
I’ve succeeded to connect with my master computer and succeeded to print
"PARAM_VALUES" on terminal, but when i try to change it to
"PARAM_VALUES" it returns
None on terminal.
Note: Terminal returns Null on
"AHRS2" whether i arm the vehicle or not.
from pymavlink import mavutil
master = mavutil.mavlink_connection("/dev/ttyACM0", baud=115200)
m = master.recv_match(type = "PARAM_VALUES", blocking = True, timeout = 1)
if m is None:
Any help will be appreciated, thanks.
Hi @toosat, welcome to the forum
The Pixhawk will send a small set of vital messages by default, but other messages you’re interested in need to be requested. QGC requests a large set of messages automatically, whereas if you’re connecting directly to the Pixhawk with Pymavlink you’ll need to request those messages yourself. You can request a message to be sent regularly using
MAV_CMD_SET_MESSAGE_INTERVAL, which we have a Pymavlink example for here
There’s an alternative implementation here, as part of a broader full program example of controlling a vehicle (requires Python >= 3.8). The code is a bit more involved, but as a result it should be easier/simpler to use.
Thanks for the quick response @EliotBR ,
Yesterday, we implemented the code based on information that you gave me. And we succeded to see the variables that we wanted to see on terminal. I’ll be posting my code here in a few days to help other forum users.
As one can see in the image, I’m currently only getting a heartbeat and timesync data back from the Pixhawk 4. Any idea on how I can get more? Like Attitude or GPS data?
Thank you a lot for the help in advance .
I’ve moved your comment into this post because it’s on the same topic. I’d recommend you read my comment above, and ask follow-ups if something isn’t clear
You’re the best of the best! Exactly what I needed, thank you so much again!
Hi @PerFrivik ,
Here is my code to get ‘alt’ value through “VFR_HUD” message. I hope it’ll be helpful for you.
def request_message_interval(master, message_input: str, frequency_hz: float):
message_name = "MAVLINK_MSG_ID_" + message_input
message_id = getattr(mavutil.mavlink, message_name)
1e6 / frequency_hz,
0, 0, 0, 0)
print("Requested the message successfully.")
def get_requested_data(master, message_name: str, dict_key: str, value_unit: str, save_name: str):
message_index = 0
dict1 = master.recv_match(type= message_name, blocking=True, timeout=0.1).to_dict()
dict_value = dict1[dict_key]
toWrite = "Message_Index, " + message_index + " :" + str(dict_value) + value_unit
with open(save_name, 'a') as file:
message_index += 1
request_message_interval(master, "VFR_HUD", 1)
get_requested_data(master, "VFR_HUD", 'alt', "m", save_name)
You can use these functions to get any message you want. You just need to rename the message names with the ones you want. Additionally these functions are saving the message outputs to a empty file.
I really appriciate the help :), thank you so much!