All Projects → aler9 → mavp2p

aler9 / mavp2p

Licence: MIT license
flexible and efficient Mavlink router

Programming Languages

go
31211 projects - #10 most used programming language
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to mavp2p

Px4 Autopilot
PX4 Autopilot Software
Stars: ✭ 5,090 (+12314.63%)
Mutual labels:  uav, mavlink, ugv
Ardupilot
ArduPlane, ArduCopter, ArduRover, ArduSub source
Stars: ✭ 6,637 (+16087.8%)
Mutual labels:  uav, mavlink, ugv
Rotors simulator
RotorS is a UAV gazebo simulator
Stars: ✭ 700 (+1607.32%)
Mutual labels:  uav, quadcopter
Qgroundcontrol
Cross-platform ground control station for drones (Android, iOS, Mac OS, Linux, Windows)
Stars: ✭ 2,026 (+4841.46%)
Mutual labels:  uav, mavlink
Quadcopter SimCon
Quadcopter Simulation and Control. Dynamics generated with PyDy.
Stars: ✭ 84 (+104.88%)
Mutual labels:  uav, quadcopter
Gym Pybullet Drones
PyBullet Gym environments for single and multi-agent reinforcement learning of quadcopter control
Stars: ✭ 168 (+309.76%)
Mutual labels:  uav, quadcopter
ESP32
DroneBridge for ESP32. A short range wifi based telemetry link. Support for MAVLink, MSP & LTM (iNAV).
Stars: ✭ 183 (+346.34%)
Mutual labels:  uav, mavlink
Dronin
The dRonin flight controller software.
Stars: ✭ 238 (+480.49%)
Mutual labels:  uav, quadcopter
Gymfc
A universal flight control tuning framework
Stars: ✭ 210 (+412.2%)
Mutual labels:  uav, quadcopter
Luatelemetry
FrSky SmartPort(S.Port), D-series, F.Port and TBS Crossfire telemetry on all Taranis and Horus transmitters
Stars: ✭ 206 (+402.44%)
Mutual labels:  uav, quadcopter
Starrypilot
A lightweight autopilot software for Pixhawk
Stars: ✭ 243 (+492.68%)
Mutual labels:  uav, quadcopter
FMT-Firmware
FMT Autopilot Embedded System
Stars: ✭ 207 (+404.88%)
Mutual labels:  uav, mavlink
UAV-Human
[CVPR2021] UAV-Human: A Large Benchmark for Human Behavior Understanding with Unmanned Aerial Vehicles
Stars: ✭ 122 (+197.56%)
Mutual labels:  uav
QUICKSILVER
Flight Controller Firmware
Stars: ✭ 45 (+9.76%)
Mutual labels:  quadcopter
fixed-wing-sim
Matlab implementation to simulate the non-linear dynamics of a fixed-wing unmanned areal glider. Includes tools to calculate aerodynamic coefficients using a vortex lattice method implementation, and to extract longitudinal and lateral linear systems around the trimmed gliding state.
Stars: ✭ 72 (+75.61%)
Mutual labels:  uav
safe-control-gym
PyBullet CartPole and Quadrotor environments—with CasADi symbolic a priori dynamics—for learning-based control and RL
Stars: ✭ 272 (+563.41%)
Mutual labels:  quadcopter
roboticsknowledgebase.github.io
Robotics Knowledgebase. The Wiki for Robot Builders.
Stars: ✭ 85 (+107.32%)
Mutual labels:  uav
pyuavcan
Python implementation of the Cyphal protocol stack.
Stars: ✭ 91 (+121.95%)
Mutual labels:  uav
public regulated data types
Regulated DSDL definitions for Cyphal (standard and third-party)
Stars: ✭ 62 (+51.22%)
Mutual labels:  uav
FPV VR OS
Latest version of FPV_VR, open source under LGPL
Stars: ✭ 42 (+2.44%)
Mutual labels:  mavlink

mavp2p

Test Lint

mavp2p is a flexible and efficient Mavlink proxy / bridge / router, implemented in the form of a command-line utility. It is used primarily to link UAV flight controllers, connected through a serial port, with ground stations on a network, but can be used to build any kind of routing involving serial, TCP and UDP, allowing communication across different physical layers or transport layers.

mavp2p can replace mavproxy in systems with limited resources (for instance companion computers), and mavlink-router when more flexibility is needed.

This project makes use of the gomavlib library, a full-featured Mavlink library.

Features:

  • Link together an arbitrary number of different types of endpoints:
    • serial
    • UDP (client, server or broadcast mode)
    • TCP (client or server mode)
  • Support Mavlink 2.0 and 1.0, support any dialect
  • Emit heartbeats
  • Request streams to Ardupilot devices and block stream requests from ground stations
  • Support domain names in place of IPs
  • Reconnect to TCP/UDP servers when disconnected, remove inactive TCP/UDP clients
  • Multiplatform, available for multiple operating systems (Linux, Windows) and architectures (arm6, arm7, arm64, amd64), does not depend on libc and therefore is compatible with lightweight distros (Alpine Linux)

Table of contents

Installation

Download and extract a precompiled binary from the release page.

Usage

Link a serial port with a UDP endpoint in client mode:

./mavp2p serial:/dev/ttyAMA0:57600 udpc:1.2.3.4:5600

Link a serial port with a UDP endpoint in server mode:

./mavp2p serial:/dev/ttyAMA0:57600 udps:0.0.0.0:5600

Link a UDP endpoint in broadcast mode with a TCP endpoint in client mode:

./mavp2p udpb:192.168.7.255:5601 tcpc:exampleendpoint.com:5600

Create a server that links together all UDP endpoints that connect to it:

./mavp2p udps:0.0.0.0:5600

Comparison

mavp2p vs mavproxy

  • Does not require python nor any interpreter
  • Much lower CPU and memory usage
  • Supports an arbitrary number of inputs and outputs
  • Logs can be disabled, resulting in no disk I/O
  • UDP clients are removed when inactive

mavp2p vs mavlink-router

  • Supports domain names
  • Supports multiple TCP servers
  • UDP clients are removed when inactive
  • Supports automatic stream requests to Ardupilot devices

Full command-line usage

usage: mavp2p [<flags>] [<endpoints>...]

mavp2p v0.0.0

Link together Mavlink endpoints.

Flags:
      --help                     Show context-sensitive help (also try
                                 --help-long and --help-man).
      --version                  print version
  -q, --quiet                    suppress info messages
      --print                    print routed frames
      --print-errors             print parse errors singularly, instead of
                                 printing only their quantity every 5 seconds
      --hb-disable               disable heartbeats
      --hb-version=1             set mavlink version of heartbeats
      --hb-systemid=125          set system id of heartbeats. it is
                                 recommended to set a different system
                                 id for each router in the network
      --hb-period=5              set period of heartbeats
      --streamreq-disable        do not request streams to Ardupilot
                                 devices, that need an explicit request
                                 in order to emit telemetry streams.
                                 this task is usually delegated to the
                                 router, in order to avoid conflicts when
                                 multiple ground stations are active
      --streamreq-frequency=4    set the stream frequency to request

Args:
  [<endpoints>]  Space-separated list of endpoints. At least one
                 endpoint is required. Possible endpoints types are:

                 udps:listen_ip:port (udp, server mode)

                 udpc:dest_ip:port (udp, client mode)

                 udpb:broadcast_ip:port (udp, broadcast mode)

                 tcps:listen_ip:port (tcp, server mode)

                 tcpc:dest_ip:port (tcp, client mode)

                 serial:port:baudrate (serial)

Links

Related projects

Similar software

Mavlink references

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].