bluenviron / mavp2p Goto Github PK
View Code? Open in Web Editor NEWflexible and efficient Mavlink router
License: MIT License
flexible and efficient Mavlink router
License: MIT License
Hi there,
I noticed when you disconnect a UDP server (ip = 0.0.0.0) endpoint and we get a node disappeared
message for the device(s) at that endpoint the channel never closes.
This has the effect that mavp2p will continue sending messages to that channel indefinitely, i confirmed this with wireshark. In our case it keeps sending UDP messages out into the void over cellular, so its a quite expensive issue! ๐
So it would be good to close a UDP server channel when all known nodes on it disappear.
What are your thoughts?
Thanks, Kester
Hi, i just found this really nicely written routing application, and i really like it due to its flexibility.
One additional idea for your lib is to have a tlogging endpoint for (automatic) tlogging of connected drones.
Just like something which was also proposed in mavlink-router, but sadly never made it upstream: mavlink-router/mavlink-router#269
Do you think something like this is possible? Thanks!
Hi Allessandro,
You allow setting systemID, but not componentID. Currently the heartbeats default to componentID=1 which is an autopilot. This led to some confusion in other mavlink systems. 191 would make more sense as default value (MAV_COMP_ID_ONBOARD_COMPUTER).
In this section i have added an additional topic (MessageVideoStreamInformation)
https://github.com/aler9/mavp2p/blob/main/main.go#L144-L153
When i do that, the topic no longer proxies to the other nodes.
My goal is to take a message and change some values.
@aler9 Any ideas?
Hi @aler9
When testing a newer version of mavp2p we found that it seems to not route ParamExt commands
[E] at D:\a\auterion-qgroundcontrol\auterion-qgroundcontrol\src\FactSystem\ParameterExt.cc:207 - "No response for param set: "CAM_NEUTRAL""
[D] at D:\a\auterion-qgroundcontrol\auterion-qgroundcontrol\src\FactSystem\ParameterExt.cc:211 - "Param set retry: "CAM_STREAM" 2"
[D] at D:\a\auterion-qgroundcontrol\auterion-qgroundcontrol\src\FactSystem\ParameterExt.cc:211 - "Param set retry: "CAM_STREAM" 3"
[E] at D:\a\auterion-qgroundcontrol\auterion-qgroundcontrol\src\FactSystem\ParameterExt.cc:207 - "No response for param set: "CAM_STREAM""
So AMC is sending out the parameter change to switch between EO/IR and to set the gimbal mode. Payload manager doesn't receive any param change. Looking at the mavp2p configurations sounds like a good next step
Could that be related to this commit?
217a5ca
Hey Alessandro. First of all, this software is awesome! Great work!
When initiating a restart command of the autopilot from a gcs, mavp2p doesn't try to re-establish the serial connection.
As a workaround I've created two services: one to run mavp2p and one to detect the disconnection and restart the mavp2p service. I'm not familiar with programming in go, but I'm more than happy to help get this code mod added if you're able to point me in the right direction.
Thanks!
https://github.com/gswly/mavp2p/blob/f1528741c681060fc5999bec73f77651204e53c2/main.go#L94
https://github.com/gswly/mavp2p/blob/f1528741c681060fc5999bec73f77651204e53c2/main.go#L194
When the print-errors
flag is set, the pointer will be true and the goroutine won't run and errors won't be printed.
Thank you for a great example of the mavlink router on Go. I really like it.
I have a question. I'm routing messages between all endpoints as it is presented in an example (https://github.com/aler9/mavp2p/blob/main/main.go#L220). But for one endpoint (microcontroller which runs on serial) I want to route just some specific messages to do not overload it with all incoming traffic.
When creating a node, I need to pass endpoints (https://github.com/aler9/mavp2p/blob/main/main.go#L153) but later we need to operate with channels (https://github.com/aler9/mavp2p/blob/main/main.go#L220). Is it possible to get a channel from an endpoint? Or any other ideas on how to implement the following logic:
I would be very thankful for ideas here.
Hi there! I really like this router as it can handle N server connections very well on the server enpoint!
However, it doesn't route messages based upon the target_system
and target_component
as is described in the mavlink routing standard - https://mavlink.io/en/guide/routing.html.
We found in testing that if there are multiple GCS's connected to the mavp2p service, all commands/command_acks will be forwarded to all nodes regardless of the target_system of the message. Now, in theory this isn't a problem for us as we discard commands which are not intended for us on our GCSs, but it is still risky if someone's software doesn't do this. Plus also it congests the network.
So my question - are there any plans/value to implement this on the roadmap?
Thank you :)
Hi again!
I noticed recently when testing mavp2p with a pixhawk flight controller (with px4 firmware) that mavp2p does not support serial hardware flow control. Some PX4/pixhawk versions uses flow control for it's telemetry serial ports - https://docs.px4.io/main/en/flight_controller/pixhawk4.html#serial-port-mapping - so I was unable to connect.
I had a look at the mavp2p code base to see if i could enable it, but you seem to use the https://github.com/tarm/serial library which does not support flow control I think (I saw this ticket tarm/serial#68).
So I was wondering if you would consider changing serial library to one which can support flow control, and then presumably to add an argument to the mavp2p serial port selection to enable/disable flow control?
Thanks!
Kester
Couldn't find any. I can create a PR for this if you wish to support it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.