MATLAB Answers

how can i recieve Mavlink message through udp connection?

36 views (last 30 days)
im really new to Mavlink and uav toolbox..
im trying to recieve Mavlink message from px4 by using udp connection.
before that , im doing some practice by making Mavlink message by myself and send it to locol
i made Attitude message and i gave a sine wave to value of 'roll' parameter. and sent to localhost (loopback)
and using udp recieve block , i could recieve the message i just sent. but the result of roll (as you can see in the scope ) dosent really change in real time...
result should be the sine wave .
i hav no idea why the value is not being update . does someone know how to solve this problem??
thank you for reading my poor english

  0 Comments

Sign in to comment.

Accepted Answer

Ankur Bose
Ankur Bose on 13 Jan 2021
Hi,
I can see the Status outport of the Deserializer block is 0 which indicates that no new message is being received. I also see that the output data is not a smooth sine curve. All this leads me to believe that the data read size/ sample rate in the UDP receive is not appropriate.
If you are using the Instrument Control Toolbox UDP receive, I suggest you keep the data size to a large value(ex -200). Also read at a faster rate that you are writing. Use the Status outport of UDP receive to trigger a Triggered subsystem. Put the deserializer inside the trigger subsystem.
Hope that helps,
Ankur

  3 Comments

seongheon kim
seongheon kim on 14 Jan 2021
thank you so much for the answers !
i think it was about the reading rate. and i changed rate 0.01 to 0.005 and it gaves me better result.
then also i changed data size of UDP recieve , but some unexpected things happend
first i changed data size to [1 200] as you suggest. it caused error that no data has been recieved during timeout period.
so i changed data size to [1 2] and it gave me the result i want
while data size [1 1] gave me result below
and [1 3] below
im really new to treating these so i dont get why result is varing upon data size ..
how can i find appropriate data size when there is no information about incomming data???
thank you so much for the answers !
Ankur Bose
Ankur Bose on 15 Jan 2021
So I recreated your model on my side with the following settings in UDP receive block.
I did not select the Enable Blocking Mode option. Below is what I see in Signal Data inspector. Top plot is sine value that you send and bottom is what you receive
You can smoothen the response further by connecting the status outport of UDP receive to a triggered subsystem and placing your deserializer inside the triggered subsystem

Sign in to comment.

More Answers (0)

Products


Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by