Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
humble

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
jazzy

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
kilted

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
rolling

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
humble

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
humble

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
humble

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
humble

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
humble

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
galactic

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
foxy

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs

ROS Distro
iron

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.10.1
License GPLv3
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version ros2
Last Updated 2025-06-06
Dev Status DEVELOPED
CI status No Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS2.

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Composite nodes

See also: https://docs.ros.org/en/foxy/Tutorials/Composition.html

mavros::router::Router

This is router node required to support connections to FCU(s), GCS(es) and UAS nodes. The Router allows you to add/remove endpoints on the fly without node restart.

mavros::uas::UAS

This node is a plugin container which manages all protocol plugins. Each plugin is a subnode to this.

Programs

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

2.10.1 (2025-06-06)

  • fix: display topic on service timeout error
  • Fix incorrect macro usage RCLCPP_SMART_PTR_DEFINITIONS eventually is expanding to: #define __RCLCPP_MAKE_UNIQUE_DEFINITION(...) template<typename ... Args> static std::unique_ptr<__VA_ARGS_> make_unique(Args && ... args) { return std::unique_ptr<__VA_ARGS_>(new __VA_ARGS_(std::forward<Args>(args) ...)); } which is incorrect for abstract classes like Endpoint or Plugin RCLCPP_SMART_PTR_DEFINITIONS_NOT_COPYABLE is used instead excluding make_unique functionality
  • Contributors: Emmanuel Ferdman, Mykhailo Kuznietsov

2.10.0 (2025-05-05)

  • extras: fix odid build

  • extras: re-generate all cog scripts

  • mavros: fix indentation

  • Merge branch 'master' into ros2

    * master: 1.20.1 update changelog 1.20.0 update changelog update mavlink dep branch Add missing std_srvs dependency add param to odom plugin add frame_id parameter Fix compile error when compiling with gcc 13

  • 1.20.1

  • update changelog

  • fix spelling error

  • add new flag

  • if

  • Address Warnings

  • cpplint

  • built successfully

  • 1.20.0

  • update changelog

  • add param to odom plugin

  • add frame_id parameter

  • Contributors: EnderMandS, Michael Carlstrom, Vladimir Ermakov

2.9.0 (2024-10-10)

  • py-mavros: fix flake8 errors
  • py-mavros: reconfigure flake8
  • py: isort
  • py: black
  • py-mavros: reformat with black
  • py-mavros: csv escapechar of empty string unsupported since py 3.11
  • apply ament_uncrustify --reformat (jazzy)
  • Merge pull request #2000 from leocencetti/fix-test-errors Fix test errors in 3x3 covariance test cases
  • fix: Patch test errors
  • Merge pull request #1998 from leocencetti/fix-wrong-covariance-rotation Fix 3x3 covariance matrix rotation/transformation
  • chore: Fix and reenable covariance rotation tests
  • fix: Correct 3x3 covariance matrix rotation
  • use GeographicLib::Geoid::ConvertHeight
  • fix -Wdeprecated-enum-float-conversion in GeographicLib
  • depcrecation errors
  • #1965: sync format of configs
  • Contributors: Jacob Dahl, Leonardo Cencetti, Vladimir Ermakov

2.8.0 (2024-06-07)

  • param: replace old rmw_qos usage

  • sys_status: replace rmw_qos too

  • command: fix humble condition

  • regenerate all using cogall.sh

  • command: keep support for humble

  • command: fix misprint

  • command: replace deprecated rmw_qos

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/multi_uas.launch
      • id [default: 0]
      • fcu_url [default: udp://:14540@127.0.0.1:14580]
      • id [default: 1]
      • fcu_url [default: udp://:14541@127.0.0.1:14581]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • namespace [default: mavros]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs test_mavros

ROS Distro
lunar

Package Summary

Tags uav mav mavlink plugin apm px4
Version 1.20.1
License GPLv3
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version master
Last Updated 2025-05-05
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS with proxy for Ground Control Station (e.g. [QGroundControl][qgc]).

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux. Depends on [Boost library][boost], GCC 4.8+ (C++11 support). Catkin build system required.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Programs

mavros_node – main communication node

Main node. Allow disable GCS proxy by setting empty URL.

Run example (autopilot connected via USB at 921600 baud, GCS running on the host with IP 172.16.254.1):

rosrun mavros mavros_node _fcu_url:=/dev/ttyACM0:921600 _gcs_url:=udp://@172.16.254.1

gcs_bridge – additional proxy

Allows you to add a channel for GCS. For example if you need to connect one GCS for HIL and the second on the tablet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

1.20.1 (2025-05-05)

1.20.0 (2024-10-10)

  • add param to odom plugin
  • add frame_id parameter
  • Contributors: EnderMandS

1.19.0 (2024-06-06)

1.18.0 (2024-03-03)

  • sys_status.cpp: improve timeout code
  • sys_status.cpp: Add a SYS_STATUS message publisher
  • Contributors: Dr.-Ing. Amilcar do Carmo Lucas

1.17.0 (2023-09-09)

  • cog: regenerate all

  • Bugfix/update map origin with home position (#1892)

    • Update map origin with home position
    • Uncrustify

    * Revert "Uncrustify" This reverts commit f1387c79c7670cc241986586436e3da43842e877.

    * Change to relative topic ---------Co-authored-by: Natalia Molina <<molina-munoz@wingcopter.com>>

  • Merge pull request #1865 from scoutdi/warnings Fix / suppress some build warnings

  • mavros: Remove extra ';'

  • Suppress warnings from included headers

  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov, natmol

1.16.0 (2023-05-05)

  • Merge pull request #1829 from snwu1996/latched_gp_origin_pub Made it such that the gp_origin topic publisher is latched.
  • made it such that the gp_origin topic published latched.
  • Merge pull request #1817 from lucasw/pluginlib_hpp use hpp instead of deprecated .h pluginlib headers
  • use hpp instead of deprecated .h pluginlib headers
  • Contributors: Lucas Walter, Shu-Nong Wu, Vladimir Ermakov

1.15.0 (2022-12-30)

  • Merge pull request #1806 from scoutdi/fix-some-warnings mavros: Fix some warnings
  • mavros: Fix some warnings
  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov

1.14.0 (2022-09-24)

  • scripts: waypoint and param files are text, not binary Fix #1784
  • Merge pull request #1780 from snktshrma/master guided_target: accept position-target-global-int messages
  • plugins: add guided_target to accept offboard position targets Update guided_target.cpp Update guided_target.cpp Update mavros_plugins.xml Update CMakeLists.txt Added offboard_position.cpp Update apm_config.yaml Update offboard_position.cpp Update offboard_position.cpp Rename offboard_position.cpp to guided_target.cpp Update CMakeLists.txt Update mavros_plugins.xml Update apm_config.yaml Update guided_target.cpp
  • Merge pull request #1775 from acxz/find-geographiclib use already installed FindGeographicLib.cmake
  • add cmake module path for geographiclib on debian based systems
  • Merge pull request #1744 from amilcarlucas/pr_gimbal_diagnostics_fixes mount_control.cpp: detect MOUNT_ORIENTATION stale messages
  • mount_control.cpp: detect MOUNT_ORIENTATION stale messages correct MountConfigure response success correct constructor initialization order some gimbals send negated/inverted angle measurements, correct

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/apm2.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/mavlink_bridge.launch
      • ns [default: iris]
      • mavlink_bridge_url [default: udp://127.0.0.1:14553@127.0.0.1:14560]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • respawn_mavros [default: $(arg respawn_mavros)]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs test_mavros

ROS Distro
jade

Package Summary

Tags uav mav mavlink plugin apm px4
Version 0.17.5
License GPLv3
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version indigo-devel
Last Updated 2017-02-07
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS with proxy for Ground Control Station (e.g. [QGroundControl][qgc]).

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • [mavlink_ros][mlros] compatible ROS topics (Mavlink.msg)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support.

Limitations

Only for linux. Depends on [Boost library][boost] >= 1.46 (hydro on 12.04). Catkin build system required (tested with ROS Hydro Medusa, Indigo Igloo and Jade Turtle).

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. Since 2014-06-19 it exists in Hydro and Indigo package index (so you can install via rosdep). Since 2015-02-25 exists for Jade too.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host][:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° abount ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Plase read documents from issue #473 for additional information.

All the conversions are handled in src/lib/uas_frame_conversions.cpp and src/lib/uas_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

Programs

mavros_node – main communication node

Main node. Allow disable GCS proxy by setting empty URL.

Run example (autopilot connected via USB at 921600 baud, GCS running on the host with IP 172.16.254.1):

rosrun mavros mavros_node _fcu_url:=/dev/ttyACM0:921600 _gcs_url:=udp://@172.16.254.1

gcs_bridge – additional proxy

Allows you to add a channel for GCS. For example if you need to connect one GCS for HIL and the second on the tablet.

Example (SITL & QGroundControl):

rosrun mavros mavros_node _gcs_url:='udp://:14556@172.16.254.129:14551' &
rosrun mavros gcs_bridge _gcs_url:='udp://@172.16.254.129'

Launch Files

Launch files are provided for use with common FCUs, in particular Pixhawk:

  • px4.launch – for use with the PX4 Pro flight stack (for VTOL, multicopters and planes)
  • apm.launch – for use with APM flight stacks (e.g., all versions of ArduPlane, ArduCopter, etc)

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

0.17.5 (2017-02-07)

  • Pthread fix for OSX (#650)
    • fix pthread and missing defines for osx
    • adapted their style using tabs
    • fix elif to else
  • Fixing a typo in HIL_CONTROLS plugin
  • Contributors: Fadri Furrer, Pavel

0.17.4 (2016-06-23)

  • Ran uncrustify on hil_controls plugin
  • Utilizing synchronise_stamp and adding reference to MAVLINK msg documentation
  • Added a plugin that publishes HIL_CONTROLS as ROS messages
  • Revert "readme: update CI, no more MAVLINK_DIALECT" This reverts commit 1510deb2c5db12441cf9e44175fdb8a8889a8af6.
  • readme: update CI, no more MAVLINK_DIALECT
  • Contributors: Pavel, Vladimir Ermakov

0.17.3 (2016-05-20)

  • libmavconn #543: support build with mavlink 2.0 capable mavgen
  • node: Remove warning about MAVLINK_VERSION redefine
  • Fix bug with orientation in setpoint_raw plugin Fixes a bug where the ned_desired_orientation was not actually passed into set_attitude_target. Instead, the desired_orientation (wrong frame) was passed.
  • Contributors: Justin Thomas, Vladimir Ermakov

0.17.2 (2016-04-29)

  • Update README.md
  • Update README.md Updated / completed examples.
  • Update README.md
  • Fix for kinetic std::isnan.
  • Contributors: James Goppert, Lorenz Meier

0.17.1 (2016-03-28)

0.17.0 (2016-02-09)

  • update README
  • rebased with master
  • Fixed ROS_BREAK
  • Updates for ROS_BREAK and code style
  • Nitpicks and uncrustify
  • Updated frame transformations and added odom publisher to local position plugin
  • Contributors: Eddy, Vladimir Ermakov, francois

0.16.6 (2016-02-04)

  • node fix #494: Report FCU firmware type in rosonsole log
  • scripts fix #478: Remove guided_enable garbage. I'm missed this when do #407.
  • Contributors: Vladimir Ermakov

0.16.5 (2016-01-11)

0.16.4 (2015-12-14)

  • scripts: checkid: be always verbose, add --follow
  • scripts: fix copyright indent
  • scripts: mavcmd: Fix bug: param7 not passed to service call!
  • scripts #382: Add ID checker script. It is not complete, but i hope it helps in current state.
  • scripts: mavcmd: Add support for broadcast requests
  • event_launcher: fix bug: Trigger service server is not saved in Launcher Also fixes: environment variables may contain ~ (user dir) in expansion.
  • using timestamp from mavlink message
  • Update mavlink message documentation links
  • lib: update MAV_TYPE stringify
  • lib: Add RATTITUDE PX4 mode
  • remove "altitude_" prefix from members
  • updated copyright
  • implemented altitude plugin
  • Contributors: Andreas Antener, Vladimir Ermakov

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
  • launch/apm2.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
  • launch/mavlink_bridge.launch
      • ns [default: iris]
      • mavlink_bridge_url [default: udp://127.0.0.1:14553@127.0.0.1:14560]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs test_mavros

ROS Distro
indigo

Package Summary

Tags uav mav mavlink plugin apm px4
Version 0.17.5
License GPLv3
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version indigo-devel
Last Updated 2017-02-07
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS with proxy for Ground Control Station (e.g. [QGroundControl][qgc]).

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • [mavlink_ros][mlros] compatible ROS topics (Mavlink.msg)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support.

Limitations

Only for linux. Depends on [Boost library][boost] >= 1.46 (hydro on 12.04). Catkin build system required (tested with ROS Hydro Medusa, Indigo Igloo and Jade Turtle).

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. Since 2014-06-19 it exists in Hydro and Indigo package index (so you can install via rosdep). Since 2015-02-25 exists for Jade too.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host][:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° abount ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Plase read documents from issue #473 for additional information.

All the conversions are handled in src/lib/uas_frame_conversions.cpp and src/lib/uas_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

Programs

mavros_node – main communication node

Main node. Allow disable GCS proxy by setting empty URL.

Run example (autopilot connected via USB at 921600 baud, GCS running on the host with IP 172.16.254.1):

rosrun mavros mavros_node _fcu_url:=/dev/ttyACM0:921600 _gcs_url:=udp://@172.16.254.1

gcs_bridge – additional proxy

Allows you to add a channel for GCS. For example if you need to connect one GCS for HIL and the second on the tablet.

Example (SITL & QGroundControl):

rosrun mavros mavros_node _gcs_url:='udp://:14556@172.16.254.129:14551' &
rosrun mavros gcs_bridge _gcs_url:='udp://@172.16.254.129'

Launch Files

Launch files are provided for use with common FCUs, in particular Pixhawk:

  • px4.launch – for use with the PX4 Pro flight stack (for VTOL, multicopters and planes)
  • apm.launch – for use with APM flight stacks (e.g., all versions of ArduPlane, ArduCopter, etc)

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

0.17.5 (2017-02-07)

  • Pthread fix for OSX (#650)
    • fix pthread and missing defines for osx
    • adapted their style using tabs
    • fix elif to else
  • Fixing a typo in HIL_CONTROLS plugin
  • Contributors: Fadri Furrer, Pavel

0.17.4 (2016-06-23)

  • Ran uncrustify on hil_controls plugin
  • Utilizing synchronise_stamp and adding reference to MAVLINK msg documentation
  • Added a plugin that publishes HIL_CONTROLS as ROS messages
  • Revert "readme: update CI, no more MAVLINK_DIALECT" This reverts commit 1510deb2c5db12441cf9e44175fdb8a8889a8af6.
  • readme: update CI, no more MAVLINK_DIALECT
  • Contributors: Pavel, Vladimir Ermakov

0.17.3 (2016-05-20)

  • libmavconn #543: support build with mavlink 2.0 capable mavgen
  • node: Remove warning about MAVLINK_VERSION redefine
  • Fix bug with orientation in setpoint_raw plugin Fixes a bug where the ned_desired_orientation was not actually passed into set_attitude_target. Instead, the desired_orientation (wrong frame) was passed.
  • Contributors: Justin Thomas, Vladimir Ermakov

0.17.2 (2016-04-29)

  • Update README.md
  • Update README.md Updated / completed examples.
  • Update README.md
  • Fix for kinetic std::isnan.
  • Contributors: James Goppert, Lorenz Meier

0.17.1 (2016-03-28)

0.17.0 (2016-02-09)

  • update README
  • rebased with master
  • Fixed ROS_BREAK
  • Updates for ROS_BREAK and code style
  • Nitpicks and uncrustify
  • Updated frame transformations and added odom publisher to local position plugin
  • Contributors: Eddy, Vladimir Ermakov, francois

0.16.6 (2016-02-04)

  • node fix #494: Report FCU firmware type in rosonsole log
  • scripts fix #478: Remove guided_enable garbage. I'm missed this when do #407.
  • Contributors: Vladimir Ermakov

0.16.5 (2016-01-11)

0.16.4 (2015-12-14)

  • scripts: checkid: be always verbose, add --follow
  • scripts: fix copyright indent
  • scripts: mavcmd: Fix bug: param7 not passed to service call!
  • scripts #382: Add ID checker script. It is not complete, but i hope it helps in current state.
  • scripts: mavcmd: Add support for broadcast requests
  • event_launcher: fix bug: Trigger service server is not saved in Launcher Also fixes: environment variables may contain ~ (user dir) in expansion.
  • using timestamp from mavlink message
  • Update mavlink message documentation links
  • lib: update MAV_TYPE stringify
  • lib: Add RATTITUDE PX4 mode
  • remove "altitude_" prefix from members
  • updated copyright
  • implemented altitude plugin
  • Contributors: Andreas Antener, Vladimir Ermakov

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
  • launch/apm2.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
  • launch/mavlink_bridge.launch
      • ns [default: iris]
      • mavlink_bridge_url [default: udp://127.0.0.1:14553@127.0.0.1:14560]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras

ROS Distro
hydro

Package Summary

Tags No category tags.
Version 0.8.6
License GPLv3
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version hydro-devel
Last Updated 2015-03-04
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with UDP proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS with proxy for Ground Control Station (e.g. [QGroundControl][qgc]).

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • [mavlink_ros][mlros] compatible ROS topics (Mavlink.msg)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])

Limitations

Only for linux. Depends on [Boost library][boost] >= 1.46 (hydro on 12.04). Catkin build system required (tested with ROS Hydro Medusa and Indigo Igloo).

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. Since 2014-06-19 it exists in hydro and indigo package index (so you can install via rosdep).

Connection URL

New in 0.7.0. Connection now defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host[:port]]@[remote_host[:port]][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_port][:port][/?ids=sysid,compid]

Note: ids from URL overrides ids given by system_id & component_id parameters.

Programs

mavros_node – main communication node

Main node. Allow disable GCS proxy by setting empty URL.

Run example:

rosrun mavros mavros_node _fcu_url:=/dev/ttyACM0:115200 _gcs_url:=tcp-l://

gcs_bridge – additional UDP proxy

Allows you to add a channel for GCS. For example if you need to connect one GCS for HIL and the second on the tablet.

Previous name: ros_udp.

Example (HIL & DroidPlanner):

rosrun mavros mavros_node _gcs_url:='udp://:14556@hil-host:14551' &
rosrun mavros gcs_bridge _gcs_url:='udp://@nexus7'

mavparam – parameter manipulation

Just see --help.

Examples:

rosrun mavros mavparam dump /tmp/apm.param
rosrun mavros mavparam load /tmp/apm2.param

mavwp – mission manipulation

See --help.

Examples:

rosrun mavros mavwp show -p
rosrun mavros dump /tmp/mission.txt

mavsafety – safety tool

See --help.

Examples:

rosrun mavros mavsafety arm

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

0.8.6 (2015-03-04)

  • plugin: param: Fix build error #237. Master alredy fixed, see #170.
  • Contributors: Vladimir Ermakov

0.8.5 (2014-11-04)

0.8.4 (2014-11-03)

0.8.3 (2014-11-03)

  • 0.8.2
  • prepare minor release 0.8.2 for hydro
  • Contributors: Vladimir Ermakov

0.8.2 (2014-11-03)

0.8.1 (2014-11-02)

  • fix build deps for gcs_bridge
  • mavconn #161: Enable rosconsole bridge.
  • mavconn #161: Move mavconn tests.
  • mavconn #161: Fix headers used in mavros. Add readme.
  • mavconn #161: Fix mavros build.
  • mavconn #161: Move library to its own package Also rosconsole replaced by console_bridge, so now library can be used without ros infrastructure.
  • plugin: sys_time: Set right suffixes to uint64_t constants. Issue #156.
  • plugin: sys_time: Add time syncronization diag. Issue #156.
  • plugin: sys_time: Debug result. Issue #156.
  • plugin: Store time offset in UAS. TODO: implement fcu_time(). Issue #156.
  • plugin: sys_time: Fix code style. Also reduce class variables count (most not used outside the method). Issue #156.
  • Update repo links. Package moved to mavlink organization.
  • Nanosecond fix
  • Fix
  • Fixes
  • Update sys_time.cpp
  • Update sys_time.cpp
  • Update sys_time.cpp
  • Update sys_time.cpp
  • Update CMakeLists.txt
  • Update mavros_plugins.xml
  • Update sys_time.cpp
  • Fix build
  • sys_time import. Removed all time related stuff from gps and sys_status
  • Initial sys_time plugin import
  • plugin: ftp: Bytes written now transfered in payload.
  • Contributors: Mohammed Kabir, Vladimir Ermakov

0.8.0 (2014-09-22)

  • plugin: ftp: Disable debugging and change level for some log messages. Issue #128.
  • plugin: ftp: Translate protocol errors to errno. Issue #128.
  • scripts: mavftp: Add upload subcommand. Issue #128.
  • python: Add more ftp utils. Issue #128.
  • plugin: ftp: Fix write offset calculation. Issue #128.
  • plugin: ftp: Add . Issue [#128](https://github.com/vooon/mavros/issues/128).
  • plugin: ftp: Add support for . Issue [#128](https://github.com/vooon/mavros/issues/128).
  • python: Add
  • plugin: ftp: Add call. Issue [#128](https://github.com/vooon/mavros/issues/128).
  • python: Move common mission classes to mavros.mission module. Issue #157.
  • python: Move useful utils to mavros.param module. Issue #157.
  • python: Move common utils to mavros.utils module. Issue #157.
  • python: Create python module for ftp utils. Issue #128, #157.
  • scripts: ftp: Implement file-like object for IO. Issue #128.
  • plugin: ftp: Implement write file. Issue #128.
  • scripts: mavftp: Add remove subcommand. Issue #128.
  • plugin: ftp: Add call. Issue

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm2.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 50]
  • launch/apm2_radio.launch
      • fcu_url [default: /dev/ttyUSB0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 50]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • blacklist_yaml
      • config_yaml
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 50]
  • launch/px4_radio.launch
      • fcu_url [default: /dev/ttyUSB0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 50]

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs test_mavros

ROS Distro
kinetic

Package Summary

Tags uav mav mavlink plugin apm px4
Version 1.20.1
License GPLv3
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version master
Last Updated 2025-05-05
Dev Status DEVELOPED
CI status Continuous Integration
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS with proxy for Ground Control Station (e.g. [QGroundControl][qgc]).

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux. Depends on [Boost library][boost], GCC 4.8+ (C++11 support). Catkin build system required.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Programs

mavros_node – main communication node

Main node. Allow disable GCS proxy by setting empty URL.

Run example (autopilot connected via USB at 921600 baud, GCS running on the host with IP 172.16.254.1):

rosrun mavros mavros_node _fcu_url:=/dev/ttyACM0:921600 _gcs_url:=udp://@172.16.254.1

gcs_bridge – additional proxy

Allows you to add a channel for GCS. For example if you need to connect one GCS for HIL and the second on the tablet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

1.20.1 (2025-05-05)

1.20.0 (2024-10-10)

  • add param to odom plugin
  • add frame_id parameter
  • Contributors: EnderMandS

1.19.0 (2024-06-06)

1.18.0 (2024-03-03)

  • sys_status.cpp: improve timeout code
  • sys_status.cpp: Add a SYS_STATUS message publisher
  • Contributors: Dr.-Ing. Amilcar do Carmo Lucas

1.17.0 (2023-09-09)

  • cog: regenerate all

  • Bugfix/update map origin with home position (#1892)

    • Update map origin with home position
    • Uncrustify

    * Revert "Uncrustify" This reverts commit f1387c79c7670cc241986586436e3da43842e877.

    * Change to relative topic ---------Co-authored-by: Natalia Molina <<molina-munoz@wingcopter.com>>

  • Merge pull request #1865 from scoutdi/warnings Fix / suppress some build warnings

  • mavros: Remove extra ';'

  • Suppress warnings from included headers

  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov, natmol

1.16.0 (2023-05-05)

  • Merge pull request #1829 from snwu1996/latched_gp_origin_pub Made it such that the gp_origin topic publisher is latched.
  • made it such that the gp_origin topic published latched.
  • Merge pull request #1817 from lucasw/pluginlib_hpp use hpp instead of deprecated .h pluginlib headers
  • use hpp instead of deprecated .h pluginlib headers
  • Contributors: Lucas Walter, Shu-Nong Wu, Vladimir Ermakov

1.15.0 (2022-12-30)

  • Merge pull request #1806 from scoutdi/fix-some-warnings mavros: Fix some warnings
  • mavros: Fix some warnings
  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov

1.14.0 (2022-09-24)

  • scripts: waypoint and param files are text, not binary Fix #1784
  • Merge pull request #1780 from snktshrma/master guided_target: accept position-target-global-int messages
  • plugins: add guided_target to accept offboard position targets Update guided_target.cpp Update guided_target.cpp Update mavros_plugins.xml Update CMakeLists.txt Added offboard_position.cpp Update apm_config.yaml Update offboard_position.cpp Update offboard_position.cpp Rename offboard_position.cpp to guided_target.cpp Update CMakeLists.txt Update mavros_plugins.xml Update apm_config.yaml Update guided_target.cpp
  • Merge pull request #1775 from acxz/find-geographiclib use already installed FindGeographicLib.cmake
  • add cmake module path for geographiclib on debian based systems
  • Merge pull request #1744 from amilcarlucas/pr_gimbal_diagnostics_fixes mount_control.cpp: detect MOUNT_ORIENTATION stale messages
  • mount_control.cpp: detect MOUNT_ORIENTATION stale messages correct MountConfigure response success correct constructor initialization order some gimbals send negated/inverted angle measurements, correct

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/apm2.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/mavlink_bridge.launch
      • ns [default: iris]
      • mavlink_bridge_url [default: udp://127.0.0.1:14553@127.0.0.1:14560]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • respawn_mavros [default: $(arg respawn_mavros)]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs test_mavros

ROS Distro
melodic

Package Summary

Tags uav mav mavlink plugin apm px4
Version 1.20.1
License GPLv3
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version master
Last Updated 2025-05-05
Dev Status DEVELOPED
CI status
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS with proxy for Ground Control Station (e.g. [QGroundControl][qgc]).

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux. Depends on [Boost library][boost], GCC 4.8+ (C++11 support). Catkin build system required.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Programs

mavros_node – main communication node

Main node. Allow disable GCS proxy by setting empty URL.

Run example (autopilot connected via USB at 921600 baud, GCS running on the host with IP 172.16.254.1):

rosrun mavros mavros_node _fcu_url:=/dev/ttyACM0:921600 _gcs_url:=udp://@172.16.254.1

gcs_bridge – additional proxy

Allows you to add a channel for GCS. For example if you need to connect one GCS for HIL and the second on the tablet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

1.20.1 (2025-05-05)

1.20.0 (2024-10-10)

  • add param to odom plugin
  • add frame_id parameter
  • Contributors: EnderMandS

1.19.0 (2024-06-06)

1.18.0 (2024-03-03)

  • sys_status.cpp: improve timeout code
  • sys_status.cpp: Add a SYS_STATUS message publisher
  • Contributors: Dr.-Ing. Amilcar do Carmo Lucas

1.17.0 (2023-09-09)

  • cog: regenerate all

  • Bugfix/update map origin with home position (#1892)

    • Update map origin with home position
    • Uncrustify

    * Revert "Uncrustify" This reverts commit f1387c79c7670cc241986586436e3da43842e877.

    * Change to relative topic ---------Co-authored-by: Natalia Molina <<molina-munoz@wingcopter.com>>

  • Merge pull request #1865 from scoutdi/warnings Fix / suppress some build warnings

  • mavros: Remove extra ';'

  • Suppress warnings from included headers

  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov, natmol

1.16.0 (2023-05-05)

  • Merge pull request #1829 from snwu1996/latched_gp_origin_pub Made it such that the gp_origin topic publisher is latched.
  • made it such that the gp_origin topic published latched.
  • Merge pull request #1817 from lucasw/pluginlib_hpp use hpp instead of deprecated .h pluginlib headers
  • use hpp instead of deprecated .h pluginlib headers
  • Contributors: Lucas Walter, Shu-Nong Wu, Vladimir Ermakov

1.15.0 (2022-12-30)

  • Merge pull request #1806 from scoutdi/fix-some-warnings mavros: Fix some warnings
  • mavros: Fix some warnings
  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov

1.14.0 (2022-09-24)

  • scripts: waypoint and param files are text, not binary Fix #1784
  • Merge pull request #1780 from snktshrma/master guided_target: accept position-target-global-int messages
  • plugins: add guided_target to accept offboard position targets Update guided_target.cpp Update guided_target.cpp Update mavros_plugins.xml Update CMakeLists.txt Added offboard_position.cpp Update apm_config.yaml Update offboard_position.cpp Update offboard_position.cpp Rename offboard_position.cpp to guided_target.cpp Update CMakeLists.txt Update mavros_plugins.xml Update apm_config.yaml Update guided_target.cpp
  • Merge pull request #1775 from acxz/find-geographiclib use already installed FindGeographicLib.cmake
  • add cmake module path for geographiclib on debian based systems
  • Merge pull request #1744 from amilcarlucas/pr_gimbal_diagnostics_fixes mount_control.cpp: detect MOUNT_ORIENTATION stale messages
  • mount_control.cpp: detect MOUNT_ORIENTATION stale messages correct MountConfigure response success correct constructor initialization order some gimbals send negated/inverted angle measurements, correct

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/apm2.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/mavlink_bridge.launch
      • ns [default: iris]
      • mavlink_bridge_url [default: udp://127.0.0.1:14553@127.0.0.1:14560]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • respawn_mavros [default: $(arg respawn_mavros)]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package symbol

mavros package from mavros repo

libmavconn mavros mavros_extras mavros_msgs test_mavros

ROS Distro
noetic

Package Summary

Tags uav mav mavlink plugin apm px4
Version 1.20.1
License GPLv3
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mavlink/mavros.git
VCS Type git
VCS Version master
Last Updated 2025-05-05
Dev Status DEVELOPED
CI status
Released RELEASED
Tags uav mav mavlink plugin apm px4
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

MAVROS -- MAVLink extendable communication node for ROS with proxy for Ground Control Station.

Additional Links

Maintainers

  • Vladimir Ermakov

Authors

  • Vladimir Ermakov

MAVROS

MAVLink extendable communication node for ROS with proxy for Ground Control Station (e.g. [QGroundControl][qgc]).

ROS API documentation moved to [wiki.ros.org][wiki].

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. [PX4 Pro][px4] or [ArduPilot][apm])
  • Internal proxy for Ground Control Station (serial, UDP, TCP)
  • Plugin system for ROS-MAVLink translation
  • Parameter manipulation tool
  • Waypoint manipulation tool
  • PX4Flow support (by [mavros_extras][mrext])
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux. Depends on [Boost library][boost], GCC 4.8+ (C++11 support). Catkin build system required.

This package are dependent on [ros-*-mavlink][mlwiki] build from [mavlink-gbp-release][mlgbp]. It exists in ROS package index and usually updates each month.

Connection URL

Connection defined by URL, you can use any supported type for FCU and GCS.

Supported schemas:

  • Serial: /path/to/serial/device[:baudrate]
  • Serial: serial:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • Serial with hardware flow control: serial-hwfc:///path/to/serial/device[:baudrate][?ids=sysid,compid]
  • UDP: udp://[bind_host][:port]@[remote_host[:port]][/?ids=sysid,compid]
  • UDP broadcast until GCS discovery: udp-b://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • UDP broadcast (permanent): udp-pb://[bind_host][:port]@[:port][/?ids=sysid,compid]
  • TCP client: tcp://[server_host][:port][/?ids=sysid,compid]
  • TCP server: tcp-l://[bind_host][:port][/?ids=sysid,compid]

Note:

  • Ids from URL overrides value given by system_id & component_id parameters.
  • bind_host - default 0.0.0.0 - i.e. IP4 ANY
  • UDP default ports: 14555 @ 14550
  • UDP remote address updated every time with incoming packet on bind port.
  • TCP default port: 5760

Coordinate frames

MAVROS does translate Aerospace NED frames, used in FCUs to ROS ENU frames and vice-versa. For translate airframe related data we simply apply rotation 180° about ROLL (X) axis. For local we apply 180° about ROLL (X) and 90° about YAW (Z) axes. Please read documents from issue #473 for additional information.

All the conversions are handled in src/lib/ftf_frame_conversions.cpp and src/lib/ftf_quaternion_utils.cpp and tested in test/test_frame_conversions.cpp and test/test_quaternion_utils.cpp respectively.

Related issues: [#49 (outdated)][iss49], [#216 (outdated)][iss216], [#317 (outdated)][iss317], [#319 (outdated)][iss319], [#321 (outdated)][iss321], [#473][iss473]. Documents: [Frame Conversions][iss473rfc], [Mavlink coordinate frames][iss473table].

MAVROS also allows conversion of geodetic and geocentric coordinates through [GeographicLib][geolib] given that:

  • geographic_msgs and NatSatFix.msg require the LLA fields to be filled in WGS-84 datum, meaning that the altitude should be the height above the WGS-84 ellipsoid. For that, a conversion from the height above the geoid (AMSL, considering the egm96 geoid model) to height above the WGS-84 ellipsoid, and vice-versa, is available and used in several plugins;
  • According to ROS REP 105, the earth frame should be propagated in ECEF (Earth-Centered, Earth-Fixed) local coordinates. For that, the functionalities of GeographicLib are used in order to allow conversion from geodetic coordinates to geocentric coordinates;
  • The translation from GPS coordinates to local geocentric coordinates require the definition of a local origin on the map frame, in ECEF, and calculate the offset to it in ENU. All the conversions are supported by GeographicLib classes and methods and implemented in the global_position plugin.

Programs

mavros_node – main communication node

Main node. Allow disable GCS proxy by setting empty URL.

Run example (autopilot connected via USB at 921600 baud, GCS running on the host with IP 172.16.254.1):

rosrun mavros mavros_node _fcu_url:=/dev/ttyACM0:921600 _gcs_url:=udp://@172.16.254.1

gcs_bridge – additional proxy

Allows you to add a channel for GCS. For example if you need to connect one GCS for HIL and the second on the tablet.

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mavros

1.20.1 (2025-05-05)

1.20.0 (2024-10-10)

  • add param to odom plugin
  • add frame_id parameter
  • Contributors: EnderMandS

1.19.0 (2024-06-06)

1.18.0 (2024-03-03)

  • sys_status.cpp: improve timeout code
  • sys_status.cpp: Add a SYS_STATUS message publisher
  • Contributors: Dr.-Ing. Amilcar do Carmo Lucas

1.17.0 (2023-09-09)

  • cog: regenerate all

  • Bugfix/update map origin with home position (#1892)

    • Update map origin with home position
    • Uncrustify

    * Revert "Uncrustify" This reverts commit f1387c79c7670cc241986586436e3da43842e877.

    * Change to relative topic ---------Co-authored-by: Natalia Molina <<molina-munoz@wingcopter.com>>

  • Merge pull request #1865 from scoutdi/warnings Fix / suppress some build warnings

  • mavros: Remove extra ';'

  • Suppress warnings from included headers

  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov, natmol

1.16.0 (2023-05-05)

  • Merge pull request #1829 from snwu1996/latched_gp_origin_pub Made it such that the gp_origin topic publisher is latched.
  • made it such that the gp_origin topic published latched.
  • Merge pull request #1817 from lucasw/pluginlib_hpp use hpp instead of deprecated .h pluginlib headers
  • use hpp instead of deprecated .h pluginlib headers
  • Contributors: Lucas Walter, Shu-Nong Wu, Vladimir Ermakov

1.15.0 (2022-12-30)

  • Merge pull request #1806 from scoutdi/fix-some-warnings mavros: Fix some warnings
  • mavros: Fix some warnings
  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov

1.14.0 (2022-09-24)

  • scripts: waypoint and param files are text, not binary Fix #1784
  • Merge pull request #1780 from snktshrma/master guided_target: accept position-target-global-int messages
  • plugins: add guided_target to accept offboard position targets Update guided_target.cpp Update guided_target.cpp Update mavros_plugins.xml Update CMakeLists.txt Added offboard_position.cpp Update apm_config.yaml Update offboard_position.cpp Update offboard_position.cpp Rename offboard_position.cpp to guided_target.cpp Update CMakeLists.txt Update mavros_plugins.xml Update apm_config.yaml Update guided_target.cpp
  • Merge pull request #1775 from acxz/find-geographiclib use already installed FindGeographicLib.cmake
  • add cmake module path for geographiclib on debian based systems
  • Merge pull request #1744 from amilcarlucas/pr_gimbal_diagnostics_fixes mount_control.cpp: detect MOUNT_ORIENTATION stale messages
  • mount_control.cpp: detect MOUNT_ORIENTATION stale messages correct MountConfigure response success correct constructor initialization order some gimbals send negated/inverted angle measurements, correct

File truncated at 100 lines see the full file

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

  • launch/apm.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/apm2.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/mavlink_bridge.launch
      • ns [default: iris]
      • mavlink_bridge_url [default: udp://127.0.0.1:14553@127.0.0.1:14560]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
      • fcu_protocol [default: v2.0]
      • respawn_mavros [default: false]
      • respawn_mavros [default: $(arg respawn_mavros)]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange