Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.7.0
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 2024-03-03
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.

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. PX4 Pro or ArduPilot)
  • 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)
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on ros-*-mavlink build from mavlink-gbp-release. 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), #216 (outdated), #317 (outdated), #319 (outdated), #321 (outdated), #473. Documents: Frame Conversions, Mavlink coordinate frames.

MAVROS also allows conversion of geodetic and geocentric coordinates through GeographicLib 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

mavros_node -- all-in-one container

That is a preconfigured composite node contaier, which provides similar parameters as ROS1 mavros_node. That container loads Router, UAS and configures them to work together (sets uas_link, etc.).

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

ros2 run mavros mavros_node --ros-args --params-file params.yaml

Launch Files

XXX TODO! #1564

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

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

Examples:

roslaunch mavros px4.launch
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@

Installation

Required dependencies

Most of the ROS dependencies are supported and installed by rosdep, including external libraries as Eigen and Boost.

GeographicLib can be installed by apt-get and it is already included on the rosdep of MAVROS package. It is also possible to compile it and install it from src but be advised to have the proper install directories the same as the ones of the apt-get install, in order to make sure that the FindGeographicLib.cmake finds the required shared libraries (libGeographic.so).

Since GeographicLib requires certain datasets (mainly the geoid dataset) so to fulfill certain calculations, these need to be installed manually by the user using geographiclib-tools, which can be installed by apt-get in Debian systems. For a quicker procedure, just run the available script in the "mavros/scripts" folder, install_geographiclib_datasets.sh.

Note that if you are using an older MAVROS release source install and want to update to a new one, remember to run rosdep update before running rosdep install --from-paths ${ROS_WORKSPACE} --ignore-src --rosdistro=${ROSDISTRO}, with ROS_WORKSPACE your src folder of catkin workspace. This will allow updating the rosdep list and install the required dependencies when issuing rosdep install.

:bangbang: The geoid dataset is mandatory to allow the conversion between heights in order to respect ROS msg API. Not having the dataset available will shutdown the mavros_node :bangbang:

:heavy_exclamation_mark:Run install_geographiclib_datasets.sh to install all datasets or geographiclib-datasets-download egm96_5 (Debian 7, Ubuntu 14.04, 14.10), geographiclib-get-geoids egm96-5 (Debian 8, Fedora 22, Ubuntu 15.04 or later) to install the geoid dataset only:heavy_exclamation_mark:

Binary installation (deb)

ROS repository has binary packages for Ubuntu x86, amd64 (x86_64) and armhf (ARMv7). Kinetic also support Debian Jessie amd64 and arm64 (ARMv8).

Just use apt for installation:

sudo apt install ros-foxy-mavros

Then install GeographicLib datasets by running the install_geographiclib_datasets.sh script:

ros2 run mavros install_geographiclib_datasets.sh

# Alternative:
wget https://raw.githubusercontent.com/mavlink/mavros/ros2/mavros/scripts/install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

Source installation

Use vcs utility for retrieving sources and colcon tool for build.

NOTE: The source installation instructions are for the ROS Foxy release.

sudo apt install -y python3-vcstool python3-rosinstall-generator python3-osrf-pycommon

# 1. Create the workspace: unneeded if you already has workspace
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws

# 2. Install MAVLink
#    we use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --format repos mavlink | tee /tmp/mavlink.repos

# 3. Install MAVROS: get source (upstream - released)
rosinstall_generator --format repos --upstream mavros | tee -a /tmp/mavros.repos
# alternative: latest source
# rosinstall_generator --format repos --upstream-development mavros | tee -a /tmp/mavros.repos
# For fetching all the dependencies into your ros2_ws, just add '--deps' to the above scripts
# ex: rosinstall_generator --format repos --upstream mavros --deps | tee -a /tmp/mavros.repos

# 4. Create workspace & deps
vcs import src < /tmp/mavlink.repos
vcs import src < /tmp/mavros.repos
rosdep install --from-paths src --ignore-src -y

# 5. Install GeographicLib datasets:
./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

# 6. Build source
colcon build

# 7. Make sure that you use setup.bash or setup.zsh from workspace.
#    Else ros2 run can't find nodes from this workspace.
source install/setup.bash

Build error. if you has error with missing mavlink* then you need fresh mavlink package. You may update from ros-shadow-fixed (binary installation) or redo script steps 2 & 4.

Note. Since MAVLink 2.0 merged (0.18) all dialects supported by same binary. Unfortunately overlap of v1.0 message ID's not fully handled, first loaded message forbid further changes. Load order always:

  1. common
  2. ardupilotmega
  3. alphabetical ordered list
  4. ...

Note: MAVLINK_DIALECT not used anymore.

Troubleshooting

Error: serial0: receive: End of file

This issue should have been solve in mavros v0.23.2, it was found to be a Boost.ASIO error and should be fix in release > v1.12.0 ( >Boost 1.66).

Contributing

See CONTRIBUTING.md.

Glossary

  • GCS — Ground Control Station
  • FCU — Flight Control Unit (aka FC)
  • OBC — OnBoard Computer (your odroid or raspberry)
  • MAVLink -- The communication protocol for Drones, used by flight controllers, ground control stations, and peripherals
  • mavlink_ros -- original ROS node (few messages, no proxy)
  • Pixhawk -- Open Standards for drone hardware
  • PX4 Autopilot -- Flight Controller with support for most vehicle types and hardened/tested MAVROS support
  • ArduPilot -- tested autopilot APM:Plane (default command set)
  • QGroundControl -- Ground Control Station for MAVLink autopilots, with tested support for Android, iOS, Mac OS, Linux, and Windows
  • mavros_extras -- extra plugins & node for mavros
CHANGELOG

Changelog for package mavros

2.7.0 (2024-03-03)

  • Merge branch \'master\' into ros2 * master: 1.18.0 update changelog sys_status.cpp: improve timeout code sys_status.cpp: Add a SYS_STATUS message publisher [camera plugin] Fix image_index and capture_result not properly filled Fix missing semi-colon GPS_STATUS Plugin: Fill in available messages for ROS1 legacy

  • 1.18.0

  • update changelog

  • move /conn parameters to /sys and /time

  • sys_status.cpp: improve timeout code # Conflicts: # mavros/src/plugins/sys_status.cpp

  • sys_status.cpp: Add a SYS_STATUS message publisher

  • Removed warning from geometry2 header

  • Fix PR 1922 regarding EVENT message

  • use synchronise_stamp to create stamp

  • new checksum for event enum

  • remove event_time_boot_ms, fill stamp instead

  • handle events

  • fix mav service call and wp load

  • Remove hardcoded namespace from px4_pluginlists

  • Remove hardcoded namespace from px4_config

  • Define _frd frames in odom plugin based on parent/child frame parametrs

  • Define parameters for base_link, odom, map frames

  • Contributors: Alejandro Hern

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • 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/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]
  • 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/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]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.7.0
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 2024-03-03
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.

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. PX4 Pro or ArduPilot)
  • 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)
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on ros-*-mavlink build from mavlink-gbp-release. 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), #216 (outdated), #317 (outdated), #319 (outdated), #321 (outdated), #473. Documents: Frame Conversions, Mavlink coordinate frames.

MAVROS also allows conversion of geodetic and geocentric coordinates through GeographicLib 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

mavros_node -- all-in-one container

That is a preconfigured composite node contaier, which provides similar parameters as ROS1 mavros_node. That container loads Router, UAS and configures them to work together (sets uas_link, etc.).

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

ros2 run mavros mavros_node --ros-args --params-file params.yaml

Launch Files

XXX TODO! #1564

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

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

Examples:

roslaunch mavros px4.launch
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@

Installation

Required dependencies

Most of the ROS dependencies are supported and installed by rosdep, including external libraries as Eigen and Boost.

GeographicLib can be installed by apt-get and it is already included on the rosdep of MAVROS package. It is also possible to compile it and install it from src but be advised to have the proper install directories the same as the ones of the apt-get install, in order to make sure that the FindGeographicLib.cmake finds the required shared libraries (libGeographic.so).

Since GeographicLib requires certain datasets (mainly the geoid dataset) so to fulfill certain calculations, these need to be installed manually by the user using geographiclib-tools, which can be installed by apt-get in Debian systems. For a quicker procedure, just run the available script in the "mavros/scripts" folder, install_geographiclib_datasets.sh.

Note that if you are using an older MAVROS release source install and want to update to a new one, remember to run rosdep update before running rosdep install --from-paths ${ROS_WORKSPACE} --ignore-src --rosdistro=${ROSDISTRO}, with ROS_WORKSPACE your src folder of catkin workspace. This will allow updating the rosdep list and install the required dependencies when issuing rosdep install.

:bangbang: The geoid dataset is mandatory to allow the conversion between heights in order to respect ROS msg API. Not having the dataset available will shutdown the mavros_node :bangbang:

:heavy_exclamation_mark:Run install_geographiclib_datasets.sh to install all datasets or geographiclib-datasets-download egm96_5 (Debian 7, Ubuntu 14.04, 14.10), geographiclib-get-geoids egm96-5 (Debian 8, Fedora 22, Ubuntu 15.04 or later) to install the geoid dataset only:heavy_exclamation_mark:

Binary installation (deb)

ROS repository has binary packages for Ubuntu x86, amd64 (x86_64) and armhf (ARMv7). Kinetic also support Debian Jessie amd64 and arm64 (ARMv8).

Just use apt for installation:

sudo apt install ros-foxy-mavros

Then install GeographicLib datasets by running the install_geographiclib_datasets.sh script:

ros2 run mavros install_geographiclib_datasets.sh

# Alternative:
wget https://raw.githubusercontent.com/mavlink/mavros/ros2/mavros/scripts/install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

Source installation

Use vcs utility for retrieving sources and colcon tool for build.

NOTE: The source installation instructions are for the ROS Foxy release.

sudo apt install -y python3-vcstool python3-rosinstall-generator python3-osrf-pycommon

# 1. Create the workspace: unneeded if you already has workspace
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws

# 2. Install MAVLink
#    we use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --format repos mavlink | tee /tmp/mavlink.repos

# 3. Install MAVROS: get source (upstream - released)
rosinstall_generator --format repos --upstream mavros | tee -a /tmp/mavros.repos
# alternative: latest source
# rosinstall_generator --format repos --upstream-development mavros | tee -a /tmp/mavros.repos
# For fetching all the dependencies into your ros2_ws, just add '--deps' to the above scripts
# ex: rosinstall_generator --format repos --upstream mavros --deps | tee -a /tmp/mavros.repos

# 4. Create workspace & deps
vcs import src < /tmp/mavlink.repos
vcs import src < /tmp/mavros.repos
rosdep install --from-paths src --ignore-src -y

# 5. Install GeographicLib datasets:
./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

# 6. Build source
colcon build

# 7. Make sure that you use setup.bash or setup.zsh from workspace.
#    Else ros2 run can't find nodes from this workspace.
source install/setup.bash

Build error. if you has error with missing mavlink* then you need fresh mavlink package. You may update from ros-shadow-fixed (binary installation) or redo script steps 2 & 4.

Note. Since MAVLink 2.0 merged (0.18) all dialects supported by same binary. Unfortunately overlap of v1.0 message ID's not fully handled, first loaded message forbid further changes. Load order always:

  1. common
  2. ardupilotmega
  3. alphabetical ordered list
  4. ...

Note: MAVLINK_DIALECT not used anymore.

Troubleshooting

Error: serial0: receive: End of file

This issue should have been solve in mavros v0.23.2, it was found to be a Boost.ASIO error and should be fix in release > v1.12.0 ( >Boost 1.66).

Contributing

See CONTRIBUTING.md.

Glossary

  • GCS — Ground Control Station
  • FCU — Flight Control Unit (aka FC)
  • OBC — OnBoard Computer (your odroid or raspberry)
  • MAVLink -- The communication protocol for Drones, used by flight controllers, ground control stations, and peripherals
  • mavlink_ros -- original ROS node (few messages, no proxy)
  • Pixhawk -- Open Standards for drone hardware
  • PX4 Autopilot -- Flight Controller with support for most vehicle types and hardened/tested MAVROS support
  • ArduPilot -- tested autopilot APM:Plane (default command set)
  • QGroundControl -- Ground Control Station for MAVLink autopilots, with tested support for Android, iOS, Mac OS, Linux, and Windows
  • mavros_extras -- extra plugins & node for mavros
CHANGELOG

Changelog for package mavros

2.7.0 (2024-03-03)

  • Merge branch \'master\' into ros2 * master: 1.18.0 update changelog sys_status.cpp: improve timeout code sys_status.cpp: Add a SYS_STATUS message publisher [camera plugin] Fix image_index and capture_result not properly filled Fix missing semi-colon GPS_STATUS Plugin: Fill in available messages for ROS1 legacy

  • 1.18.0

  • update changelog

  • move /conn parameters to /sys and /time

  • sys_status.cpp: improve timeout code # Conflicts: # mavros/src/plugins/sys_status.cpp

  • sys_status.cpp: Add a SYS_STATUS message publisher

  • Removed warning from geometry2 header

  • Fix PR 1922 regarding EVENT message

  • use synchronise_stamp to create stamp

  • new checksum for event enum

  • remove event_time_boot_ms, fill stamp instead

  • handle events

  • fix mav service call and wp load

  • Remove hardcoded namespace from px4_pluginlists

  • Remove hardcoded namespace from px4_config

  • Define _frd frames in odom plugin based on parent/child frame parametrs

  • Define parameters for base_link, odom, map frames

  • Contributors: Alejandro Hern

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • 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/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]
  • 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/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]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.7.0
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 2024-03-03
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.

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. PX4 Pro or ArduPilot)
  • 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)
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on ros-*-mavlink build from mavlink-gbp-release. 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), #216 (outdated), #317 (outdated), #319 (outdated), #321 (outdated), #473. Documents: Frame Conversions, Mavlink coordinate frames.

MAVROS also allows conversion of geodetic and geocentric coordinates through GeographicLib 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

mavros_node -- all-in-one container

That is a preconfigured composite node contaier, which provides similar parameters as ROS1 mavros_node. That container loads Router, UAS and configures them to work together (sets uas_link, etc.).

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

ros2 run mavros mavros_node --ros-args --params-file params.yaml

Launch Files

XXX TODO! #1564

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

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

Examples:

roslaunch mavros px4.launch
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@

Installation

Required dependencies

Most of the ROS dependencies are supported and installed by rosdep, including external libraries as Eigen and Boost.

GeographicLib can be installed by apt-get and it is already included on the rosdep of MAVROS package. It is also possible to compile it and install it from src but be advised to have the proper install directories the same as the ones of the apt-get install, in order to make sure that the FindGeographicLib.cmake finds the required shared libraries (libGeographic.so).

Since GeographicLib requires certain datasets (mainly the geoid dataset) so to fulfill certain calculations, these need to be installed manually by the user using geographiclib-tools, which can be installed by apt-get in Debian systems. For a quicker procedure, just run the available script in the "mavros/scripts" folder, install_geographiclib_datasets.sh.

Note that if you are using an older MAVROS release source install and want to update to a new one, remember to run rosdep update before running rosdep install --from-paths ${ROS_WORKSPACE} --ignore-src --rosdistro=${ROSDISTRO}, with ROS_WORKSPACE your src folder of catkin workspace. This will allow updating the rosdep list and install the required dependencies when issuing rosdep install.

:bangbang: The geoid dataset is mandatory to allow the conversion between heights in order to respect ROS msg API. Not having the dataset available will shutdown the mavros_node :bangbang:

:heavy_exclamation_mark:Run install_geographiclib_datasets.sh to install all datasets or geographiclib-datasets-download egm96_5 (Debian 7, Ubuntu 14.04, 14.10), geographiclib-get-geoids egm96-5 (Debian 8, Fedora 22, Ubuntu 15.04 or later) to install the geoid dataset only:heavy_exclamation_mark:

Binary installation (deb)

ROS repository has binary packages for Ubuntu x86, amd64 (x86_64) and armhf (ARMv7). Kinetic also support Debian Jessie amd64 and arm64 (ARMv8).

Just use apt for installation:

sudo apt install ros-foxy-mavros

Then install GeographicLib datasets by running the install_geographiclib_datasets.sh script:

ros2 run mavros install_geographiclib_datasets.sh

# Alternative:
wget https://raw.githubusercontent.com/mavlink/mavros/ros2/mavros/scripts/install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

Source installation

Use vcs utility for retrieving sources and colcon tool for build.

NOTE: The source installation instructions are for the ROS Foxy release.

sudo apt install -y python3-vcstool python3-rosinstall-generator python3-osrf-pycommon

# 1. Create the workspace: unneeded if you already has workspace
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws

# 2. Install MAVLink
#    we use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --format repos mavlink | tee /tmp/mavlink.repos

# 3. Install MAVROS: get source (upstream - released)
rosinstall_generator --format repos --upstream mavros | tee -a /tmp/mavros.repos
# alternative: latest source
# rosinstall_generator --format repos --upstream-development mavros | tee -a /tmp/mavros.repos
# For fetching all the dependencies into your ros2_ws, just add '--deps' to the above scripts
# ex: rosinstall_generator --format repos --upstream mavros --deps | tee -a /tmp/mavros.repos

# 4. Create workspace & deps
vcs import src < /tmp/mavlink.repos
vcs import src < /tmp/mavros.repos
rosdep install --from-paths src --ignore-src -y

# 5. Install GeographicLib datasets:
./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

# 6. Build source
colcon build

# 7. Make sure that you use setup.bash or setup.zsh from workspace.
#    Else ros2 run can't find nodes from this workspace.
source install/setup.bash

Build error. if you has error with missing mavlink* then you need fresh mavlink package. You may update from ros-shadow-fixed (binary installation) or redo script steps 2 & 4.

Note. Since MAVLink 2.0 merged (0.18) all dialects supported by same binary. Unfortunately overlap of v1.0 message ID's not fully handled, first loaded message forbid further changes. Load order always:

  1. common
  2. ardupilotmega
  3. alphabetical ordered list
  4. ...

Note: MAVLINK_DIALECT not used anymore.

Troubleshooting

Error: serial0: receive: End of file

This issue should have been solve in mavros v0.23.2, it was found to be a Boost.ASIO error and should be fix in release > v1.12.0 ( >Boost 1.66).

Contributing

See CONTRIBUTING.md.

Glossary

  • GCS — Ground Control Station
  • FCU — Flight Control Unit (aka FC)
  • OBC — OnBoard Computer (your odroid or raspberry)
  • MAVLink -- The communication protocol for Drones, used by flight controllers, ground control stations, and peripherals
  • mavlink_ros -- original ROS node (few messages, no proxy)
  • Pixhawk -- Open Standards for drone hardware
  • PX4 Autopilot -- Flight Controller with support for most vehicle types and hardened/tested MAVROS support
  • ArduPilot -- tested autopilot APM:Plane (default command set)
  • QGroundControl -- Ground Control Station for MAVLink autopilots, with tested support for Android, iOS, Mac OS, Linux, and Windows
  • mavros_extras -- extra plugins & node for mavros
CHANGELOG

Changelog for package mavros

2.7.0 (2024-03-03)

  • Merge branch \'master\' into ros2 * master: 1.18.0 update changelog sys_status.cpp: improve timeout code sys_status.cpp: Add a SYS_STATUS message publisher [camera plugin] Fix image_index and capture_result not properly filled Fix missing semi-colon GPS_STATUS Plugin: Fill in available messages for ROS1 legacy

  • 1.18.0

  • update changelog

  • move /conn parameters to /sys and /time

  • sys_status.cpp: improve timeout code # Conflicts: # mavros/src/plugins/sys_status.cpp

  • sys_status.cpp: Add a SYS_STATUS message publisher

  • Removed warning from geometry2 header

  • Fix PR 1922 regarding EVENT message

  • use synchronise_stamp to create stamp

  • new checksum for event enum

  • remove event_time_boot_ms, fill stamp instead

  • handle events

  • fix mav service call and wp load

  • Remove hardcoded namespace from px4_pluginlists

  • Remove hardcoded namespace from px4_config

  • Define _frd frames in odom plugin based on parent/child frame parametrs

  • Define parameters for base_link, odom, map frames

  • Contributors: Alejandro Hern

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • 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/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]
  • 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/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]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package Summary

Tags uav mav mavlink plugin apm px4
Version 1.18.0
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 2024-03-03
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).

ROS API documentation moved to wiki.ros.org.

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. PX4 Pro or ArduPilot)
  • 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)
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

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

This package are dependent on ros-*-mavlink build from mavlink-gbp-release. 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), #216 (outdated), #317 (outdated), #319 (outdated), #321 (outdated), #473. Documents: Frame Conversions, Mavlink coordinate frames.

MAVROS also allows conversion of geodetic and geocentric coordinates through GeographicLib 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.

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 Autopilot (for VTOL, multicopters and planes)
  • apm.launch -- for use with APM flight stacks (e.g., all versions of ArduPlane, ArduCopter, etc)

Examples:

roslaunch mavros px4.launch
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@

Installation

Required dependencies

Most of the ROS dependencies are supported and installed by rosdep, including external libraries as Eigen and Boost.

GeographicLib can be installed by apt-get and it is already included on the rosdep of MAVROS package. It is also possible to compile it and install it from src but be advised to have the proper install directories the same as the ones of the apt-get install, in order to make sure that the FindGeographicLib.cmake finds the required shared libraries (libGeographic.so).

Since GeographicLib requires certain datasets (mainly the geoid dataset) so to fulfill certain calculations, these need to be installed manually by the user using geographiclib-tools, which can be installed by apt-get in Debian systems. For a quicker procedure, just run the available script in the "mavros/scripts" folder, install_geographiclib_datasets.sh.

Note that if you are using an older MAVROS release source install and want to update to a new one, remember to run rosdep update before running rosdep install --from-paths ${ROS_WORKSPACE} --ignore-src --rosdistro=${ROSDISTRO}, with ROS_WORKSPACE your src folder of catkin workspace. This will allow updating the rosdep list and install the required dependencies when issuing rosdep install.

:bangbang: The geoid dataset is mandatory to allow the conversion between heights in order to respect ROS msg API. Not having the dataset available will shutdown the mavros_node :bangbang:

:heavy_exclamation_mark:Run install_geographiclib_datasets.sh to install all datasets or geographiclib-datasets-download egm96_5 (Debian 7, Ubuntu 14.04, 14.10), geographiclib-get-geoids egm96-5 (Debian 8, Fedora 22, Ubuntu 15.04 or later) to install the geoid dataset only:heavy_exclamation_mark:

Binary installation (deb)

ROS repository has binary packages for Ubuntu x86, amd64 (x86_64) and armhf (ARMv7). Kinetic also support Debian Jessie amd64 and arm64 (ARMv8).

Just use apt-get for installation:

sudo apt-get install ros-kinetic-mavros ros-kinetic-mavros-extras

Then install GeographicLib datasets by running the install_geographiclib_datasets.sh script:

wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

Source installation

Use wstool utility for retrieving sources and catkin tool for build.

NOTE: The source installation instructions are for the ROS Kinetic release.

sudo apt-get install python-catkin-tools python-rosinstall-generator -y
# For Noetic use that:
# sudo apt install python3-catkin-tools python3-rosinstall-generator python3-osrf-pycommon -y

# 1. Create the workspace: unneeded if you already has workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
wstool init src

# 2. Install MAVLink
#    we use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall

# 3. Install MAVROS: get source (upstream - released)
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
# alternative: latest source
# rosinstall_generator --upstream-development mavros | tee -a /tmp/mavros.rosinstall
# For fetching all the dependencies into your catkin_ws, just add '--deps' to the above scripts
# ex: rosinstall_generator --upstream mavros --deps | tee -a /tmp/mavros.rosinstall

# 4. Create workspace & deps
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y

# 5. Install GeographicLib datasets:
./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

# 6. Build source
catkin build

# 7. Make sure that you use setup.bash or setup.zsh from workspace.
#    Else rosrun can't find nodes from this workspace.
source devel/setup.bash

Build error. if you has error with missing mavlink* then you need fresh mavlink package. You may update from ros-shadow-fixed (binary installation) or redo script steps 2 & 4.

Note. Since MAVLink 2.0 merged (0.18) all dialects supported by same binary. Unfortunately overlap of v1.0 message ID's not fully handled, first loaded message forbid further changes. Load order always:

  1. common
  2. ardupilotmega
  3. alphabetical ordered list
  4. ...

Note: MAVLINK_DIALECT not used anymore.

Troubleshooting

Error: serial0: receive: End of file

This issue should have been solve in mavros v0.23.2, it was found to be a Boost.ASIO error and should be fix in release > v1.12.0 ( >Boost 1.66).

Contributing

See CONTRIBUTING.md.

Glossary

  • GCS — Ground Control Station
  • FCU — Flight Control Unit (aka FC)
  • OBC — OnBoard Computer (your odroid or raspberry)
  • MAVLink -- The communication protocol for Drones, used by flight controllers, ground control stations, and peripherals
  • mavlink_ros -- original ROS node (few messages, no proxy)
  • Pixhawk -- Open Standards for drone hardware
  • PX4 Autopilot -- Flight Controller with support for most vehicle types and hardened/tested MAVROS support
  • ArduPilot -- tested autopilot APM:Plane (default command set)
  • QGroundControl -- Ground Control Station for MAVLink autopilots, with tested support for Android, iOS, Mac OS, Linux, and Windows
  • mavros_extras -- extra plugins & node for mavros
CHANGELOG

Changelog for package mavros

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 that to obey the MAVLink frame convention using run-time parameters
  • Merge pull request #1743 from amilcarlucas/pr_apm_config apm_config.yaml: add mount configuration
  • apm_config.yaml: add mount configuration
  • Merge pull request #1732 from amilcarlucas/pr-meminfo-fix MEMINFO fixes
  • sys_status.cpp fix free memory for values > 64KiB
  • Merge pull request #1716 from amilcarlucas/avoid-harcoded-values sys_status.cpp: do not use harcoded constants
  • Merge pull request #1711 from amilcarlucas/diagnose-up-to-n-batteries Diagnose up-to 10 batteries
  • *_config.yaml: document usage of multiple batteries diagnostics
  • sys_status.cpp: fix compilation
  • sys_status.cpp: support diagnostics on up-to 10 batteries Uses as many battery monitors as the user specified in min_voltage parameter. Add myself as a contributor, this is not my first patch to this file
  • Merge pull request #1712 from amilcarlucas/fix-disabled-diagnostics sys_status.cpp: fix enabling of mem_diag and hwst_diag
  • sys_status.cpp: do not use harcoded constants
  • sys_status.cpp: Timeout on MEMINFO and HWSTATUS mavlink messages and publish on the diagnostics Use atomic variable to prevent potential threading problems
  • sys_status.cpp: fix enabling of mem_diag and hwst_diag
  • Merge pull request #1704 from amilcarlucas/correct-bat-voltages sys_status.cpp: Do not use battery1 voltage for all batteries.
  • sys_status.cpp: Do not use battery1 voltage as voltage for all other batteries (bugfix). Support both cell and total voltages above 65V Support up-to 14S batteries If available, add cell voltage information to the battery diagnostic
  • Merge pull request #1707 from amilcarlucas/ignore-gimbal-sys-status sys_status.cpp: ignore sys_status mavlink messages from gimbals
  • sys_status.cpp: ignore sys_status mavlink messages from gimbals
  • Merge pull request #1703 from amilcarlucas/remove-deprecated-battery2 sys_status.cpp: remove deprecated BATTERY2 mavlink message support
  • sys_status.cpp: remove deprecated BATTERY2 mavlink message support
  • Merge pull request #1696 from okalachev/patch-2 Disable startup_px4_usb_quirk in px4_config.yaml
  • Disable startup_px4_usb_quirk in px4_config.yaml
  • Contributors: Dr.-Ing. Amilcar do Carmo Lucas, Karthik Desai, Oleg Kalachev, Sanket Sharma, Vladimir Ermakov, acxz

1.13.0 (2022-01-13)

  • Merge pull request #1690 from mavlink/fix-enum_sensor_orientation Fix enum sensor_orientation
  • py-lib: fix compatibility with py3 for Noetic
  • test: add checks for ROTATION_CUSTOM
  • lib: Fix rotation search for CUSTOM Fix #1688.
  • Contributors: Vladimir Ermakov

1.12.2 (2021-12-12)

  • Merge pull request #1672 from okalachev/patch-1 Set time/publish_sim_time to false by default
  • Set time/publish_sim_time to false by default
  • Merge pull request #1669 from Hs293Go/master plugin: setpoint_raw: move getParam to initializer
  • plugin: setpoint_raw: move getParam to initializer Repeatedly getting the thrust_scaling parameter in a callback that can be invoked from a fast control loop may fail spuriously and trigger a fatal error
  • Contributors: Oleg Kalachev, Vladimir Ermakov, hs293go

1.12.1 (2021-11-29)

  • mavconn: fix connection issue introduced by #1658
  • Merge pull request #1660 from scoutdi/fix-warnings Fix warnings
  • mavros: Fix some warnings
  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov

1.12.0 (2021-11-27)

  • Merge pull request #1658 from asherikov/as_bugfixes Fix multiple bugs
  • Fix multiple bugs

    • fix bad_weak_ptr on connect and disconnect
    • introduce new API to avoid thread race when assigning callbacks

    - fix uninitialized variable in TCP client constructor which would randomly block TCP server This is an API breaking change: if client code creates connections using make_shared<>() instead of open_url(), it is now necessary to call new connect() method explicitly.

  • lib: fix mission frame debug print

  • Contributors: Alexander Sherikov, Vladimir Ermakov

1.11.1 (2021-11-24)

  • lib: fix build
  • Contributors: Vladimir Ermakov

1.11.0 (2021-11-24)

  • lib: fix ftf warnings
  • plugin: setpoint_raw: fix misprint
  • plugin: sys: fix compillation error
  • plugin: initialize quaternions with identity Eigen::Quaternion[d|f] () does not initialize with zeroes or identity. So we must initialize with identity vector objects that can be left unassigned. Related to #1652
  • plugin: sys: Use wall timers for connection management Fixes #1629
  • Merge pull request #1651 from Jaeyoung-Lim/pr-image-capture-plugin Add camera plugin for interfacing with mavlink camera protocol
  • Add camera plugin for interfacing with mavlink camera protocol Add camera image captured message for handling camera trigger information
  • Contributors: Jaeyoung-Lim, Vladimir Ermakov

1.10.0 (2021-11-04)

  • Merge pull request #1626 from valbok/crash_on_shutdown Show ENOTCONN error instead of crash on socket\'s shutdown
  • Merge pull request #1627 from marcelino-pensa/bug/ma-prevent-race-condition Node dying when calling /mavros/param/pull
  • Remove reference
  • Catch std::length_error in send_message Instead of crashing the process
  • Merge pull request #1623 from amilcarlucas/pr/more-typo-fixes More typo fixes
  • sys_time.cpp: typo
  • Merge pull request #1622 from dayjaby/sys_time_pub_clock sys_time: publish /clock for simulation times
  • sys_time: publish /clock for simulation times
  • Contributors: David Jablonski, Dr.-Ing. Amilcar do Carmo Lucas, Marcelino Almeida, Val Doroshchuk, Vladimir Ermakov

1.9.0 (2021-09-09)

  • Merge pull request #1616 from amilcarlucas/pr/RC_CHANNELS-mavlink2-extensions Mavlink v2.0 specs for RC_CHANNELS_OVERRIDE accepts upto 18 channels....
  • Changed OverrideRCIn to 18 channels
  • Merge pull request #1617 from amilcarlucas/pr/NAV_CONTROLLER_OUTPUT-plugin Added NAV_CONTROLLER_OUTPUT Plugin
  • Merge pull request #1619 from amilcarlucas/pr/BATTERY2-topic publish BATTERY2 message as /mavros/battery2 topic
  • publish BATTERY2 message as /mavros/battery2 topic
  • Mavlink v2.0 specs for RC_CHANNELS_OVERRIDE accepts upto 18 channels. The plugin publishes channels 9 to 18 if the FCU protocol version is 2.0
  • Added NAV_CONTROLLER_OUTPUT Plugin
  • Merge branch \'master\' into master
  • plugins: reformat xml
  • Exclude changes to launch files.
  • Delete debug files.
  • Apply uncrustify changes.
  • Move Compass calibration report to extras. Rewrite code based on instructions.
  • Add compass calibration feedback status. Add service to call the \'Next\' button in calibrations.
  • Contributors: Andr

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • 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)]
  • 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/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/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]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro eloquent. Known supported distros are highlighted in the buttons above.
No version for distro dashing. Known supported distros are highlighted in the buttons above.

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.7.0
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 2024-03-03
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.

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. PX4 Pro or ArduPilot)
  • 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)
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on ros-*-mavlink build from mavlink-gbp-release. 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), #216 (outdated), #317 (outdated), #319 (outdated), #321 (outdated), #473. Documents: Frame Conversions, Mavlink coordinate frames.

MAVROS also allows conversion of geodetic and geocentric coordinates through GeographicLib 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

mavros_node -- all-in-one container

That is a preconfigured composite node contaier, which provides similar parameters as ROS1 mavros_node. That container loads Router, UAS and configures them to work together (sets uas_link, etc.).

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

ros2 run mavros mavros_node --ros-args --params-file params.yaml

Launch Files

XXX TODO! #1564

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

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

Examples:

roslaunch mavros px4.launch
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@

Installation

Required dependencies

Most of the ROS dependencies are supported and installed by rosdep, including external libraries as Eigen and Boost.

GeographicLib can be installed by apt-get and it is already included on the rosdep of MAVROS package. It is also possible to compile it and install it from src but be advised to have the proper install directories the same as the ones of the apt-get install, in order to make sure that the FindGeographicLib.cmake finds the required shared libraries (libGeographic.so).

Since GeographicLib requires certain datasets (mainly the geoid dataset) so to fulfill certain calculations, these need to be installed manually by the user using geographiclib-tools, which can be installed by apt-get in Debian systems. For a quicker procedure, just run the available script in the "mavros/scripts" folder, install_geographiclib_datasets.sh.

Note that if you are using an older MAVROS release source install and want to update to a new one, remember to run rosdep update before running rosdep install --from-paths ${ROS_WORKSPACE} --ignore-src --rosdistro=${ROSDISTRO}, with ROS_WORKSPACE your src folder of catkin workspace. This will allow updating the rosdep list and install the required dependencies when issuing rosdep install.

:bangbang: The geoid dataset is mandatory to allow the conversion between heights in order to respect ROS msg API. Not having the dataset available will shutdown the mavros_node :bangbang:

:heavy_exclamation_mark:Run install_geographiclib_datasets.sh to install all datasets or geographiclib-datasets-download egm96_5 (Debian 7, Ubuntu 14.04, 14.10), geographiclib-get-geoids egm96-5 (Debian 8, Fedora 22, Ubuntu 15.04 or later) to install the geoid dataset only:heavy_exclamation_mark:

Binary installation (deb)

ROS repository has binary packages for Ubuntu x86, amd64 (x86_64) and armhf (ARMv7). Kinetic also support Debian Jessie amd64 and arm64 (ARMv8).

Just use apt for installation:

sudo apt install ros-foxy-mavros

Then install GeographicLib datasets by running the install_geographiclib_datasets.sh script:

ros2 run mavros install_geographiclib_datasets.sh

# Alternative:
wget https://raw.githubusercontent.com/mavlink/mavros/ros2/mavros/scripts/install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

Source installation

Use vcs utility for retrieving sources and colcon tool for build.

NOTE: The source installation instructions are for the ROS Foxy release.

sudo apt install -y python3-vcstool python3-rosinstall-generator python3-osrf-pycommon

# 1. Create the workspace: unneeded if you already has workspace
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws

# 2. Install MAVLink
#    we use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --format repos mavlink | tee /tmp/mavlink.repos

# 3. Install MAVROS: get source (upstream - released)
rosinstall_generator --format repos --upstream mavros | tee -a /tmp/mavros.repos
# alternative: latest source
# rosinstall_generator --format repos --upstream-development mavros | tee -a /tmp/mavros.repos
# For fetching all the dependencies into your ros2_ws, just add '--deps' to the above scripts
# ex: rosinstall_generator --format repos --upstream mavros --deps | tee -a /tmp/mavros.repos

# 4. Create workspace & deps
vcs import src < /tmp/mavlink.repos
vcs import src < /tmp/mavros.repos
rosdep install --from-paths src --ignore-src -y

# 5. Install GeographicLib datasets:
./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

# 6. Build source
colcon build

# 7. Make sure that you use setup.bash or setup.zsh from workspace.
#    Else ros2 run can't find nodes from this workspace.
source install/setup.bash

Build error. if you has error with missing mavlink* then you need fresh mavlink package. You may update from ros-shadow-fixed (binary installation) or redo script steps 2 & 4.

Note. Since MAVLink 2.0 merged (0.18) all dialects supported by same binary. Unfortunately overlap of v1.0 message ID's not fully handled, first loaded message forbid further changes. Load order always:

  1. common
  2. ardupilotmega
  3. alphabetical ordered list
  4. ...

Note: MAVLINK_DIALECT not used anymore.

Troubleshooting

Error: serial0: receive: End of file

This issue should have been solve in mavros v0.23.2, it was found to be a Boost.ASIO error and should be fix in release > v1.12.0 ( >Boost 1.66).

Contributing

See CONTRIBUTING.md.

Glossary

  • GCS — Ground Control Station
  • FCU — Flight Control Unit (aka FC)
  • OBC — OnBoard Computer (your odroid or raspberry)
  • MAVLink -- The communication protocol for Drones, used by flight controllers, ground control stations, and peripherals
  • mavlink_ros -- original ROS node (few messages, no proxy)
  • Pixhawk -- Open Standards for drone hardware
  • PX4 Autopilot -- Flight Controller with support for most vehicle types and hardened/tested MAVROS support
  • ArduPilot -- tested autopilot APM:Plane (default command set)
  • QGroundControl -- Ground Control Station for MAVLink autopilots, with tested support for Android, iOS, Mac OS, Linux, and Windows
  • mavros_extras -- extra plugins & node for mavros
CHANGELOG

Changelog for package mavros

2.7.0 (2024-03-03)

  • Merge branch \'master\' into ros2 * master: 1.18.0 update changelog sys_status.cpp: improve timeout code sys_status.cpp: Add a SYS_STATUS message publisher [camera plugin] Fix image_index and capture_result not properly filled Fix missing semi-colon GPS_STATUS Plugin: Fill in available messages for ROS1 legacy

  • 1.18.0

  • update changelog

  • move /conn parameters to /sys and /time

  • sys_status.cpp: improve timeout code # Conflicts: # mavros/src/plugins/sys_status.cpp

  • sys_status.cpp: Add a SYS_STATUS message publisher

  • Removed warning from geometry2 header

  • Fix PR 1922 regarding EVENT message

  • use synchronise_stamp to create stamp

  • new checksum for event enum

  • remove event_time_boot_ms, fill stamp instead

  • handle events

  • fix mav service call and wp load

  • Remove hardcoded namespace from px4_pluginlists

  • Remove hardcoded namespace from px4_config

  • Define _frd frames in odom plugin based on parent/child frame parametrs

  • Define parameters for base_link, odom, map frames

  • Contributors: Alejandro Hern

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • 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/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]
  • 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/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]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package Summary

Tags uav mav mavlink plugin apm px4
Version 2.7.0
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 2024-03-03
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.

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. PX4 Pro or ArduPilot)
  • 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)
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

Only for Linux.

This package are dependent on ros-*-mavlink build from mavlink-gbp-release. 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), #216 (outdated), #317 (outdated), #319 (outdated), #321 (outdated), #473. Documents: Frame Conversions, Mavlink coordinate frames.

MAVROS also allows conversion of geodetic and geocentric coordinates through GeographicLib 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

mavros_node -- all-in-one container

That is a preconfigured composite node contaier, which provides similar parameters as ROS1 mavros_node. That container loads Router, UAS and configures them to work together (sets uas_link, etc.).

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

ros2 run mavros mavros_node --ros-args --params-file params.yaml

Launch Files

XXX TODO! #1564

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

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

Examples:

roslaunch mavros px4.launch
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@

Installation

Required dependencies

Most of the ROS dependencies are supported and installed by rosdep, including external libraries as Eigen and Boost.

GeographicLib can be installed by apt-get and it is already included on the rosdep of MAVROS package. It is also possible to compile it and install it from src but be advised to have the proper install directories the same as the ones of the apt-get install, in order to make sure that the FindGeographicLib.cmake finds the required shared libraries (libGeographic.so).

Since GeographicLib requires certain datasets (mainly the geoid dataset) so to fulfill certain calculations, these need to be installed manually by the user using geographiclib-tools, which can be installed by apt-get in Debian systems. For a quicker procedure, just run the available script in the "mavros/scripts" folder, install_geographiclib_datasets.sh.

Note that if you are using an older MAVROS release source install and want to update to a new one, remember to run rosdep update before running rosdep install --from-paths ${ROS_WORKSPACE} --ignore-src --rosdistro=${ROSDISTRO}, with ROS_WORKSPACE your src folder of catkin workspace. This will allow updating the rosdep list and install the required dependencies when issuing rosdep install.

:bangbang: The geoid dataset is mandatory to allow the conversion between heights in order to respect ROS msg API. Not having the dataset available will shutdown the mavros_node :bangbang:

:heavy_exclamation_mark:Run install_geographiclib_datasets.sh to install all datasets or geographiclib-datasets-download egm96_5 (Debian 7, Ubuntu 14.04, 14.10), geographiclib-get-geoids egm96-5 (Debian 8, Fedora 22, Ubuntu 15.04 or later) to install the geoid dataset only:heavy_exclamation_mark:

Binary installation (deb)

ROS repository has binary packages for Ubuntu x86, amd64 (x86_64) and armhf (ARMv7). Kinetic also support Debian Jessie amd64 and arm64 (ARMv8).

Just use apt for installation:

sudo apt install ros-foxy-mavros

Then install GeographicLib datasets by running the install_geographiclib_datasets.sh script:

ros2 run mavros install_geographiclib_datasets.sh

# Alternative:
wget https://raw.githubusercontent.com/mavlink/mavros/ros2/mavros/scripts/install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

Source installation

Use vcs utility for retrieving sources and colcon tool for build.

NOTE: The source installation instructions are for the ROS Foxy release.

sudo apt install -y python3-vcstool python3-rosinstall-generator python3-osrf-pycommon

# 1. Create the workspace: unneeded if you already has workspace
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws

# 2. Install MAVLink
#    we use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --format repos mavlink | tee /tmp/mavlink.repos

# 3. Install MAVROS: get source (upstream - released)
rosinstall_generator --format repos --upstream mavros | tee -a /tmp/mavros.repos
# alternative: latest source
# rosinstall_generator --format repos --upstream-development mavros | tee -a /tmp/mavros.repos
# For fetching all the dependencies into your ros2_ws, just add '--deps' to the above scripts
# ex: rosinstall_generator --format repos --upstream mavros --deps | tee -a /tmp/mavros.repos

# 4. Create workspace & deps
vcs import src < /tmp/mavlink.repos
vcs import src < /tmp/mavros.repos
rosdep install --from-paths src --ignore-src -y

# 5. Install GeographicLib datasets:
./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

# 6. Build source
colcon build

# 7. Make sure that you use setup.bash or setup.zsh from workspace.
#    Else ros2 run can't find nodes from this workspace.
source install/setup.bash

Build error. if you has error with missing mavlink* then you need fresh mavlink package. You may update from ros-shadow-fixed (binary installation) or redo script steps 2 & 4.

Note. Since MAVLink 2.0 merged (0.18) all dialects supported by same binary. Unfortunately overlap of v1.0 message ID's not fully handled, first loaded message forbid further changes. Load order always:

  1. common
  2. ardupilotmega
  3. alphabetical ordered list
  4. ...

Note: MAVLINK_DIALECT not used anymore.

Troubleshooting

Error: serial0: receive: End of file

This issue should have been solve in mavros v0.23.2, it was found to be a Boost.ASIO error and should be fix in release > v1.12.0 ( >Boost 1.66).

Contributing

See CONTRIBUTING.md.

Glossary

  • GCS — Ground Control Station
  • FCU — Flight Control Unit (aka FC)
  • OBC — OnBoard Computer (your odroid or raspberry)
  • MAVLink -- The communication protocol for Drones, used by flight controllers, ground control stations, and peripherals
  • mavlink_ros -- original ROS node (few messages, no proxy)
  • Pixhawk -- Open Standards for drone hardware
  • PX4 Autopilot -- Flight Controller with support for most vehicle types and hardened/tested MAVROS support
  • ArduPilot -- tested autopilot APM:Plane (default command set)
  • QGroundControl -- Ground Control Station for MAVLink autopilots, with tested support for Android, iOS, Mac OS, Linux, and Windows
  • mavros_extras -- extra plugins & node for mavros
CHANGELOG

Changelog for package mavros

2.7.0 (2024-03-03)

  • Merge branch \'master\' into ros2 * master: 1.18.0 update changelog sys_status.cpp: improve timeout code sys_status.cpp: Add a SYS_STATUS message publisher [camera plugin] Fix image_index and capture_result not properly filled Fix missing semi-colon GPS_STATUS Plugin: Fill in available messages for ROS1 legacy

  • 1.18.0

  • update changelog

  • move /conn parameters to /sys and /time

  • sys_status.cpp: improve timeout code # Conflicts: # mavros/src/plugins/sys_status.cpp

  • sys_status.cpp: Add a SYS_STATUS message publisher

  • Removed warning from geometry2 header

  • Fix PR 1922 regarding EVENT message

  • use synchronise_stamp to create stamp

  • new checksum for event enum

  • remove event_time_boot_ms, fill stamp instead

  • handle events

  • fix mav service call and wp load

  • Remove hardcoded namespace from px4_pluginlists

  • Remove hardcoded namespace from px4_config

  • Define _frd frames in odom plugin based on parent/child frame parametrs

  • Define parameters for base_link, odom, map frames

  • Contributors: Alejandro Hern

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • 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/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]
  • 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/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]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package Summary

Tags uav mav mavlink plugin apm px4
Version 1.18.0
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 2024-03-03
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).

ROS API documentation moved to wiki.ros.org.

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. PX4 Pro or ArduPilot)
  • 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)
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

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

This package are dependent on ros-*-mavlink build from mavlink-gbp-release. 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), #216 (outdated), #317 (outdated), #319 (outdated), #321 (outdated), #473. Documents: Frame Conversions, Mavlink coordinate frames.

MAVROS also allows conversion of geodetic and geocentric coordinates through GeographicLib 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.

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 Autopilot (for VTOL, multicopters and planes)
  • apm.launch -- for use with APM flight stacks (e.g., all versions of ArduPlane, ArduCopter, etc)

Examples:

roslaunch mavros px4.launch
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@

Installation

Required dependencies

Most of the ROS dependencies are supported and installed by rosdep, including external libraries as Eigen and Boost.

GeographicLib can be installed by apt-get and it is already included on the rosdep of MAVROS package. It is also possible to compile it and install it from src but be advised to have the proper install directories the same as the ones of the apt-get install, in order to make sure that the FindGeographicLib.cmake finds the required shared libraries (libGeographic.so).

Since GeographicLib requires certain datasets (mainly the geoid dataset) so to fulfill certain calculations, these need to be installed manually by the user using geographiclib-tools, which can be installed by apt-get in Debian systems. For a quicker procedure, just run the available script in the "mavros/scripts" folder, install_geographiclib_datasets.sh.

Note that if you are using an older MAVROS release source install and want to update to a new one, remember to run rosdep update before running rosdep install --from-paths ${ROS_WORKSPACE} --ignore-src --rosdistro=${ROSDISTRO}, with ROS_WORKSPACE your src folder of catkin workspace. This will allow updating the rosdep list and install the required dependencies when issuing rosdep install.

:bangbang: The geoid dataset is mandatory to allow the conversion between heights in order to respect ROS msg API. Not having the dataset available will shutdown the mavros_node :bangbang:

:heavy_exclamation_mark:Run install_geographiclib_datasets.sh to install all datasets or geographiclib-datasets-download egm96_5 (Debian 7, Ubuntu 14.04, 14.10), geographiclib-get-geoids egm96-5 (Debian 8, Fedora 22, Ubuntu 15.04 or later) to install the geoid dataset only:heavy_exclamation_mark:

Binary installation (deb)

ROS repository has binary packages for Ubuntu x86, amd64 (x86_64) and armhf (ARMv7). Kinetic also support Debian Jessie amd64 and arm64 (ARMv8).

Just use apt-get for installation:

sudo apt-get install ros-kinetic-mavros ros-kinetic-mavros-extras

Then install GeographicLib datasets by running the install_geographiclib_datasets.sh script:

wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

Source installation

Use wstool utility for retrieving sources and catkin tool for build.

NOTE: The source installation instructions are for the ROS Kinetic release.

sudo apt-get install python-catkin-tools python-rosinstall-generator -y
# For Noetic use that:
# sudo apt install python3-catkin-tools python3-rosinstall-generator python3-osrf-pycommon -y

# 1. Create the workspace: unneeded if you already has workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
wstool init src

# 2. Install MAVLink
#    we use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall

# 3. Install MAVROS: get source (upstream - released)
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
# alternative: latest source
# rosinstall_generator --upstream-development mavros | tee -a /tmp/mavros.rosinstall
# For fetching all the dependencies into your catkin_ws, just add '--deps' to the above scripts
# ex: rosinstall_generator --upstream mavros --deps | tee -a /tmp/mavros.rosinstall

# 4. Create workspace & deps
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y

# 5. Install GeographicLib datasets:
./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

# 6. Build source
catkin build

# 7. Make sure that you use setup.bash or setup.zsh from workspace.
#    Else rosrun can't find nodes from this workspace.
source devel/setup.bash

Build error. if you has error with missing mavlink* then you need fresh mavlink package. You may update from ros-shadow-fixed (binary installation) or redo script steps 2 & 4.

Note. Since MAVLink 2.0 merged (0.18) all dialects supported by same binary. Unfortunately overlap of v1.0 message ID's not fully handled, first loaded message forbid further changes. Load order always:

  1. common
  2. ardupilotmega
  3. alphabetical ordered list
  4. ...

Note: MAVLINK_DIALECT not used anymore.

Troubleshooting

Error: serial0: receive: End of file

This issue should have been solve in mavros v0.23.2, it was found to be a Boost.ASIO error and should be fix in release > v1.12.0 ( >Boost 1.66).

Contributing

See CONTRIBUTING.md.

Glossary

  • GCS — Ground Control Station
  • FCU — Flight Control Unit (aka FC)
  • OBC — OnBoard Computer (your odroid or raspberry)
  • MAVLink -- The communication protocol for Drones, used by flight controllers, ground control stations, and peripherals
  • mavlink_ros -- original ROS node (few messages, no proxy)
  • Pixhawk -- Open Standards for drone hardware
  • PX4 Autopilot -- Flight Controller with support for most vehicle types and hardened/tested MAVROS support
  • ArduPilot -- tested autopilot APM:Plane (default command set)
  • QGroundControl -- Ground Control Station for MAVLink autopilots, with tested support for Android, iOS, Mac OS, Linux, and Windows
  • mavros_extras -- extra plugins & node for mavros
CHANGELOG

Changelog for package mavros

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 that to obey the MAVLink frame convention using run-time parameters
  • Merge pull request #1743 from amilcarlucas/pr_apm_config apm_config.yaml: add mount configuration
  • apm_config.yaml: add mount configuration
  • Merge pull request #1732 from amilcarlucas/pr-meminfo-fix MEMINFO fixes
  • sys_status.cpp fix free memory for values > 64KiB
  • Merge pull request #1716 from amilcarlucas/avoid-harcoded-values sys_status.cpp: do not use harcoded constants
  • Merge pull request #1711 from amilcarlucas/diagnose-up-to-n-batteries Diagnose up-to 10 batteries
  • *_config.yaml: document usage of multiple batteries diagnostics
  • sys_status.cpp: fix compilation
  • sys_status.cpp: support diagnostics on up-to 10 batteries Uses as many battery monitors as the user specified in min_voltage parameter. Add myself as a contributor, this is not my first patch to this file
  • Merge pull request #1712 from amilcarlucas/fix-disabled-diagnostics sys_status.cpp: fix enabling of mem_diag and hwst_diag
  • sys_status.cpp: do not use harcoded constants
  • sys_status.cpp: Timeout on MEMINFO and HWSTATUS mavlink messages and publish on the diagnostics Use atomic variable to prevent potential threading problems
  • sys_status.cpp: fix enabling of mem_diag and hwst_diag
  • Merge pull request #1704 from amilcarlucas/correct-bat-voltages sys_status.cpp: Do not use battery1 voltage for all batteries.
  • sys_status.cpp: Do not use battery1 voltage as voltage for all other batteries (bugfix). Support both cell and total voltages above 65V Support up-to 14S batteries If available, add cell voltage information to the battery diagnostic
  • Merge pull request #1707 from amilcarlucas/ignore-gimbal-sys-status sys_status.cpp: ignore sys_status mavlink messages from gimbals
  • sys_status.cpp: ignore sys_status mavlink messages from gimbals
  • Merge pull request #1703 from amilcarlucas/remove-deprecated-battery2 sys_status.cpp: remove deprecated BATTERY2 mavlink message support
  • sys_status.cpp: remove deprecated BATTERY2 mavlink message support
  • Merge pull request #1696 from okalachev/patch-2 Disable startup_px4_usb_quirk in px4_config.yaml
  • Disable startup_px4_usb_quirk in px4_config.yaml
  • Contributors: Dr.-Ing. Amilcar do Carmo Lucas, Karthik Desai, Oleg Kalachev, Sanket Sharma, Vladimir Ermakov, acxz

1.13.0 (2022-01-13)

  • Merge pull request #1690 from mavlink/fix-enum_sensor_orientation Fix enum sensor_orientation
  • py-lib: fix compatibility with py3 for Noetic
  • test: add checks for ROTATION_CUSTOM
  • lib: Fix rotation search for CUSTOM Fix #1688.
  • Contributors: Vladimir Ermakov

1.12.2 (2021-12-12)

  • Merge pull request #1672 from okalachev/patch-1 Set time/publish_sim_time to false by default
  • Set time/publish_sim_time to false by default
  • Merge pull request #1669 from Hs293Go/master plugin: setpoint_raw: move getParam to initializer
  • plugin: setpoint_raw: move getParam to initializer Repeatedly getting the thrust_scaling parameter in a callback that can be invoked from a fast control loop may fail spuriously and trigger a fatal error
  • Contributors: Oleg Kalachev, Vladimir Ermakov, hs293go

1.12.1 (2021-11-29)

  • mavconn: fix connection issue introduced by #1658
  • Merge pull request #1660 from scoutdi/fix-warnings Fix warnings
  • mavros: Fix some warnings
  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov

1.12.0 (2021-11-27)

  • Merge pull request #1658 from asherikov/as_bugfixes Fix multiple bugs
  • Fix multiple bugs

    • fix bad_weak_ptr on connect and disconnect
    • introduce new API to avoid thread race when assigning callbacks

    - fix uninitialized variable in TCP client constructor which would randomly block TCP server This is an API breaking change: if client code creates connections using make_shared<>() instead of open_url(), it is now necessary to call new connect() method explicitly.

  • lib: fix mission frame debug print

  • Contributors: Alexander Sherikov, Vladimir Ermakov

1.11.1 (2021-11-24)

  • lib: fix build
  • Contributors: Vladimir Ermakov

1.11.0 (2021-11-24)

  • lib: fix ftf warnings
  • plugin: setpoint_raw: fix misprint
  • plugin: sys: fix compillation error
  • plugin: initialize quaternions with identity Eigen::Quaternion[d|f] () does not initialize with zeroes or identity. So we must initialize with identity vector objects that can be left unassigned. Related to #1652
  • plugin: sys: Use wall timers for connection management Fixes #1629
  • Merge pull request #1651 from Jaeyoung-Lim/pr-image-capture-plugin Add camera plugin for interfacing with mavlink camera protocol
  • Add camera plugin for interfacing with mavlink camera protocol Add camera image captured message for handling camera trigger information
  • Contributors: Jaeyoung-Lim, Vladimir Ermakov

1.10.0 (2021-11-04)

  • Merge pull request #1626 from valbok/crash_on_shutdown Show ENOTCONN error instead of crash on socket\'s shutdown
  • Merge pull request #1627 from marcelino-pensa/bug/ma-prevent-race-condition Node dying when calling /mavros/param/pull
  • Remove reference
  • Catch std::length_error in send_message Instead of crashing the process
  • Merge pull request #1623 from amilcarlucas/pr/more-typo-fixes More typo fixes
  • sys_time.cpp: typo
  • Merge pull request #1622 from dayjaby/sys_time_pub_clock sys_time: publish /clock for simulation times
  • sys_time: publish /clock for simulation times
  • Contributors: David Jablonski, Dr.-Ing. Amilcar do Carmo Lucas, Marcelino Almeida, Val Doroshchuk, Vladimir Ermakov

1.9.0 (2021-09-09)

  • Merge pull request #1616 from amilcarlucas/pr/RC_CHANNELS-mavlink2-extensions Mavlink v2.0 specs for RC_CHANNELS_OVERRIDE accepts upto 18 channels....
  • Changed OverrideRCIn to 18 channels
  • Merge pull request #1617 from amilcarlucas/pr/NAV_CONTROLLER_OUTPUT-plugin Added NAV_CONTROLLER_OUTPUT Plugin
  • Merge pull request #1619 from amilcarlucas/pr/BATTERY2-topic publish BATTERY2 message as /mavros/battery2 topic
  • publish BATTERY2 message as /mavros/battery2 topic
  • Mavlink v2.0 specs for RC_CHANNELS_OVERRIDE accepts upto 18 channels. The plugin publishes channels 9 to 18 if the FCU protocol version is 2.0
  • Added NAV_CONTROLLER_OUTPUT Plugin
  • Merge branch \'master\' into master
  • plugins: reformat xml
  • Exclude changes to launch files.
  • Delete debug files.
  • Apply uncrustify changes.
  • Move Compass calibration report to extras. Rewrite code based on instructions.
  • Add compass calibration feedback status. Add service to call the \'Next\' button in calibrations.
  • Contributors: Andr

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • 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)]
  • 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/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/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]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

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).

ROS API documentation moved to wiki.ros.org.

Features

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

Limitations

Only for linux. Depends on Boost library >= 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 build from mavlink-gbp-release. 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), #216 (outdated), #317 (outdated), #319 (outdated), #321 (outdated), #473. Documents: Frame Conversions, Mavlink coordinate frames.

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)

Examples:

roslaunch mavros px4.launch 
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@

Installation

Binary installation (debian)

Since v0.5 that programs available in precompiled debian packages for x86 and amd64 (x86_64). Also v0.9+ exists in ARMv7 repo for Ubuntu armhf. Just use apt-get for installation:

sudo apt-get install ros-jade-mavros ros-jade-mavros-extras

Source installation

Use wstool utility for retriving sources and catkin tool for build.

sudo apt-get install python-catkin-tools python-rosinstall-generator

# 1. unneded if you already has workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
wstool init src

# 2. get source (upstream - released)
rosinstall_generator --upstream mavros | tee /tmp/mavros.rosinstall
# alternative: latest source
rosinstall_generator --upstream-development mavros | tee /tmp/mavros.rosinstall

# 3. latest released mavlink package
# you may run from this line to update ros-*-mavlink package
rosinstall_generator mavlink | tee -a /tmp/mavros.rosinstall

# 4. workspace & deps
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src
rosdep install --from-paths src --ignore-src --rosdistro jade -y

# 5. finally - build
catkin build

Build error. if you has error with missing mavlink_*_t or MAVLINK_MSG_ID_* then you need fresh mavlink package. You may update from ros-shadow-fixed (binary installation) or redo script from step 3.

Important. The current implementation of mavlink does not allow to select dialect in run-time, so mavros package (and all plugin packages) have compile-time option MAVLINK_DIALECT, default is 'aurdupilotmega'.

If you want change dialect change workspace config:

catkin config --cmake-args -DMAVLINK_DIALECT=common

Contributing

  1. Fork the repo: fork
  2. Clone the repo (git clone https://github.com/mavlink/mavros.git);
  3. Create a remote connection to your repo (git remote add <remote_repo> git@github.com:<YourGitUser>/mavros.git);
  4. Create a feature/dev branch (git checkout -b <feature_branch>);
  5. Add the changes;
  6. Apply the changes by commiting (git commit -m "<message>" or git commit -a and then write message; if adding new files: git add <path/to/file.ext>);
  7. Check code style uncrustify -c ${ROS_WORKSPACE}/mavros/mavros/tools/uncrustify-cpp.cfg --replace --no-backup <path/to/file.ext>;
  8. Fix small code style errors and typos;
  9. Commit with description like "uncrustify" or "code style fix". Please avoid changes in program logic (separate commit are better than mix of style and bug fix);
  10. Run tests:
    • with catkin_make, issue catkin_make tests and then catkin_make run_tests;
    • with catkin tools, issue catkin run_tests;
  11. If everything goes as planned, push the changes (git push -u <remote_repo> <feature_branch>) and issue a pull request.

Glossary

  • GCS — Ground Control Station
  • FCU — Flight Control Unit (aka FC)
  • OBC — OnBoard Computer (your odroid or raspberry)
  • MAVLink -- communication protocol
  • mavlink_ros -- original ROS node (few messages, no proxy)
  • Pixhawk -- Reference hardware platform
  • PX4 -- Reference implementation in the academic community
  • ArduPilot -- tested autopilot APM:Plane (default command set)
  • QGroundControl -- tested ground control station for Android, iOS, Mac OS, Linux and Windows
  • mavros_extras -- extra plugins & node for mavros
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

0.16.3 (2015-11-19)

  • use safe methods to get imu data in local_position plugin
  • Contributors: Andreas Antener

0.16.2 (2015-11-17)

  • transform yaw and yaw rate from enu to ned
  • Contributors: Andreas Antener

0.16.1 (2015-11-13)

  • python: fix import error of goto service
  • don\'t warn anymore about px4 not supporting rc_io
  • Contributors: Andreas Antener, Vladimir Ermakov

0.16.0 (2015-11-09)

  • lib: Update ArduCopter mode list
  • plugin: sys_status #423: set_mode set arming and HIL flags based on previous state
  • lib #423: Save base_mode in UAS.
  • Finalized local position topic names
  • readme: add link to catkin-tools docs
  • readme #409: merge mavlink and mavros installation instruction
  • Fixed redundant rotation of IMU data and redundant orientation data
  • plugin: setpoint_raw fix #418: add attitude raw setpoint Related #402.
  • Added velocity output of FCU\'s local position estimate to ROS node
  • plugin: sys_status fix #417: remove APM statustext quirk
  • plugin: waypoint fix #414: remove GOTO service. It is replaced with more standard global setpoint messages.
  • plugin: setpoint_raw fix #415: add global position target support Related to #402.
  • plugin: command fix #407: remove guided_enable sevice
  • plugin: setpoint_raw #402: implement loopback.
  • plugin: setpoint_raw #402: Initial import.
  • readme fix #410: use only catkin tool
  • readme: add defaults for URL
  • pass new extended state to ros
  • python: add util to convert pymavlink message to Mavlink.msg
  • python: convert input to bytearray
  • python: add payload convertion util
  • gcs_bridge #394: enable both UDPROS and TCPROS transports
  • EL: add try-except on handlers
  • event_launcher: show logfile path
  • event_launcher #386: expand shell vars for logfile
  • Mavros library depends on mavros_msgs headers Adding this dependency makes sure that mavros_msgs message headers are generated before the mavros library is built, since it needs those headers.
  • Contributors: Andreas Antener, Eddy, Jon Binney, Vladimir Ermakov

0.15.0 (2015-09-17)

  • lib: fix timesync uninit bug. Uninitialized variable caused wrong timestamps with APM.
  • python #286: use checksum - save ticks
  • script #385: output to log-file
  • script #385: remove RosrunHandler and RoslaunchHandler
  • script #385: attempt to implement rosrun fails. ROSLaunch class wants all node operations from main thread. That is not possible.
  • script #385: fix shell-killer, but logging are broken and removed
  • script #385: shell-launcher now works!
  • script #385: add example configuration
  • script #385: shell handler done. next - rosparam handling
  • script #385: starting work on simple shell launcher
  • scripts: starting event_launcher
  • python: Remove unneded slice operation. Fix copyright year. [list[:len(list)]]{.title-ref} is equal to [list]{.title-ref}, but creates new list with data from that slice.
  • updated mavlink byte buffer conversion
  • plugin: manual_control: Use shared pointer message Fix alphabetic order of msgs.
  • python: add helper for converting mavros_msgs/Mavlink to pymavlink
  • Add MANUAL_CONTROL handling with new plugin
  • Contributors: Andreas Antener, Vladimir Ermakov, v01d

0.14.2 (2015-08-20)

0.14.1 (2015-08-19)

  • package: Fix depend on rosconsole-bridge
  • Removed <remap>
  • Contributors: Vladimir Ermakov, devbharat

0.14.0 (2015-08-17)

  • python: call of mavros.set_namespace() is required.
  • scripts: mavftp fix #357: add verify command
  • scripts: mavftp #357: progressbar on download operation
  • scripts: mavftp #357: progress bar for upload operation.
  • scripts: mavftp: New command [cd]{.title-ref}. All path arguments now may handle relative paths.
  • readme: fix frame tansform section
  • mavros: readme: update info on frame conversions
  • mavros: readme: update contribution steps
  • node: Replace deprecated copy functions. Also allow mavlink to & from topics to be namespaced.
  • extras: scripts: use API from mavros module
  • scripts: fix for new message location
  • python: update mavros lib to new message location
  • package: remove not exist dependency
  • plugin: waypoint: Fix message include
  • plugin: vfr_hud: Fix message include
  • plugin: rc_io: Fix message include
  • plugin: param: Fix message include
  • plugin: ftp: Fix message include
  • plugin: sys_status: Fix message include
  • plugin: command: Fix message include
  • plugin: 3dr_radio: Fix message include
  • plugin: actuator_control: Fix message include.
  • msgs: update copyright year
  • msgs: deprecate mavros::Mavlink and copy utils.
  • msgs: change description, make catkin lint happy
  • msgs #354: move all messages to mavros_msgs package.
  • Minor typo fix.
  • node: increase diag timer to 2 Hz
  • node: move diagnostic to AsyncSpinner threads.
  • Contributors: TSC21, Tony Baltovski, Vladimir Ermakov

0.13.1 (2015-08-05)

  • lib #358: cleanup. Replace UAS::getYaw() with UAS::quaternion_get_yaw().
  • lib #358: found correct getYaw(). Test for each degrees in -180..180.
  • test #358: test more different angles. Compare rotation result.
  • lib #358: try to implement algo from wikipedia.
  • lib #358: still failing. add recursive test for range -Pi..+Pi
  • lib #358: try solve issue using older eulerAngles()
  • lib #358: remove to_rpy test
  • Merge branch \'master\' of github.com:mavlink/mavros * \'master\' of github.com:mavlink/mavros: global_position: move relative_alt and compass_heading init back add nav_msgs to dependencies so to make Travis happy global_position: update pose and twist to odom msg

  • test fix #359: split out quaternion tests.

  • lib #359: move quaternion utils.

  • global_position: move relative_alt and compass_heading init back

  • add nav_msgs to dependencies so to make Travis happy

  • global_position: update pose and twist to odom msg

  • test #358: add tests for negative values and quaternion_to_rpy tf2 compatibility check Tests now fails!

  • sctipts: fix gps topic path

  • lib: fix input validation in UAS::orientation_from_str()

  • test: add case for num str->sensor orientation

  • package: fix CHANGELOG.rst

  • Contributors: TSC21, Vladimir Ermakov

0.13.0 (2015-08-01)

  • plugin: setpoint_attitude #352: use new helper.
  • plugin: sys: Fix cppcheck and YouCompleteMe warnings
  • plugin: ftp: Fix cppcheck errors.
  • lib #352: Add helper function UAS::quaternion_to_mavlink()
  • Fixed bug in send_attitude_target() The transformed quaternion wasn\'t being passed to set_attitude_target(), resulting in an incorrect attitude setpoint. I\'ve now fixed this issue.
  • scripts: fix mavwp
  • test: add test cases for new sensor orientation functions
  • remove tf1 dep
  • lib #319: Remove TF types from UAS
  • plugin: param: new message type: ParamValue
  • msgs: Move MAV_CMD values to separate msg
  • plugin: command: fix build
  • fix whitespaces in python scripts
  • Merge pull request #312 from mhkabir/cam_imu_sync Camera IMU synchronisation support added
  • Added launch file for PX4 posix sitl to launch gcs_bridge node for bridging posix and gazebo
  • scripts: mavftp: little speed up by aligning access to payload length
  • launch: Add optional log_output arg
  • Merge branch \'orientation_enum_name\' * orientation_enum_name: distance_sensor #342: correct orientation parameter handling. lib #342: try to convert numeric value too px4_config: adapt to distance_sensor params to new features distance_sensor: restructure orientation matching and verification lib #342: Added sensor orientation string repr.

  • lib #342: try to convert numeric value too

  • px4_config: adapt to distance_sensor params to new features

  • lib #342: Added sensor orientation string repr.

  • launch: update local_position conf

  • test: Add test for UAS::sensor_orientation_matching()

  • Update cmake Eigen3 finding rules. Migration described at: http://wiki.ros.org/jade/Migration#Eigen_CMake_Module_in_cmake_modules

  • lib #319, #341: preparation for str->MAV_SENSOR_ORIENTATION func

  • lib #319: Return quaternion from UAS::sensor_matching()

  • lib: Remove unneded NodeHandle

  • launch fix #340: update default component id of PX4.

  • plugin: sys_status: Add fallback to adressed version request.

  • Can not remove tf package before #319 is done. tf::Vector3 and other tf1-bullet still in use.

  • plugin: sys_status: Use broadcast for version request.

  • fix #71: replace depend tf to tf2_ros.

  • plugin: Use UAS::syncronized_header() for reduce LOC.

  • lib #319: use similar names for covariances as eigen vector

  • lib #319: transform_frame() for Covariance3x3

  • lib #319: remove unused bullet based transform_frame()

  • extras: vision_pose #71: Use TF2 listener. Also #319.

  • plugin #71: Implement TF2 listener. Change param names. Breaks extras.

  • uas #71: Use single TF2 objects for broadcasting and subscription.

  • launch: Update configs.

  • lib: Add UAS::quaternion_to_rpy()

  • plugin: safety_area #319: Change transform_frame()

  • plugin: local_position #71 #319: port to TF2 and Eigen

  • lib: Add UAS::synchonized_header()

  • plugin: command: Add command broadcasting support.

  • Perform the autopilot version request as broadcast

  • lib: Update PX4 mode list

  • plugin: global_position #325: port tf broadcaster to tf2 Also #71.

  • plugin: global_position #325: reenable UTM calc

  • plugin: gps #325: remove gps plugin.

  • plugin: global_position #325: merge gps_raw_int handler

  • plugin: setpoint_accel #319: use eigen frame transform. I don\'t think that PX4 support any other frame than LOCAL_NED. So i removed comment. Also style fix in setpoint_velocity.

  • plugin: setpoint_velocity #319: use eigen based frame transform.

  • plugin: setpoint_position #273: remove PX4 quirk, it is fixed.

  • plugin: ftp: Update command enum.

  • plugin: imu_pub fix #320: move constants outside class, else runtime linkage error.

  • plugin: imu_pub #320: first attempt

  • eigen #319: handy wrappers.

  • eigen #319: add euler-quat function. Also #321.

  • test #321: remove duplicated test cases, separate by library. Add test for checking compatibility of tf::quaternionFromRPY() and Eigen based math.

  • test #321: testing eigen-based transforms. We should check what convention used by tf::Matrix to be sure that our method is compatible.

  • mavros #319: Add Eigen dependency and cmake rule.

  • test: test for UAS::transform_frame_attitude_rpy() (ERRORs!)

  • test: test for UAS::transform_frame_xyz()

  • test: Initial import test_frame_conv

  • cam_imu_sync : fix running

  • imu_cam_sync : fix formatting

  • command handling in mavcmd for camera trigger

  • Camera IMU synchronisation support added

  • Contributors: Anurag Makineni, Lorenz Meier, Mohammed Kabir, TSC21, Vladimir Ermakov, devbharat

0.12.0 (2015-07-01)

  • plugin: sys_time, sys_status #266: check that rate is zero
  • test #321: disable tests for broken transforms.
  • lib #321: frame transform are broken. again! revert old math. RULE for me: do not accept patch without wide testing from author. That PR changes all plugins code, instead of do API, test and only after that touching working code. My bad.
  • unittest: added 6x6 Covariance conversion test
  • frame_conversions: update comments; filter covariance by value of element 0
  • unittests: corrected outputs from conversion tests
  • test: other quaternion transform tests
  • test: UAS::transform_frame_attitude_q()
  • test: test for UAS::transform_frame_attitude_rpy() (ERRORs!)
  • test: test for UAS::transform_frame_xyz()
  • test: Initial import test_frame_conv
  • coverity: make them happy
  • uncrustify: fix style on frame conversions
  • uncrustify: includes
  • plugin: sys_status #266: replace period with rate parameter
  • plugin: sys_time #266: Replace period with rate parameters
  • frame_conversion: last fix patch
  • frame_conversions: use inline functions to identify direction of conversion
  • changed frame conversion func name; add 3x3 cov matrix frame conversion; general doxygen comment cleanup
  • frame_conversions: added covariance frame conversion for full pose 6x6 matrix
  • frame_conversions: added frame_conversion specific lib file; applied correct frame conversion between ENU<->NED
  • sys_status #300: PX4 place in [0] lest significant byte of git hash.
  • sys_status fix #300: fix u8->hex func.
  • plugin: waypoint: cosmetics.
  • vibration_plugin: first commit
  • Changes some frames from world to body conversion for NED to ENU.
  • mavsys #293: add --wait option
  • mavsys: Fix arguments help
  • mavcmd #293: Add --wait option. New function: util.wait_fcu_connection(timeout=None) implement wait option.
  • sys_status #300: AUTOPILOT_VERSION APM quirk
  • mavros #302: fix style
  • mavros #302: split UAS impl by function blocks
  • mavros fix #301: move sensor orientation util to UAS
  • distance_sensor: typo; style fixe
  • sensor_orientation: list values correction
  • launch: APM:Plane 3.3.0 now support local_position. Blacklist distance_sensor.
  • sensor_orientation: use MAX as last index macro
  • distance_sensor: changed to usable config
  • launch: APM:Plane 3.3.0 now support local_position. Blacklist distance_sensor.
  • sensor_orientation: updated orientation enum; updated data type
  • sensor_orientation: included array type on utils.h
  • sensor_orientation: added sensor orientation matching helper func
  • distance_sensor: updated config file
  • distance_sensor: define sensor position through param config
  • distance_sensor: array limiting; cast correction; other minor correc
  • distance_sensor: small enhancements
  • sys_status #293: initialize state topic
  • sys_status #293: expose connection flag in mavros/State.
  • Contributors: TSC21, Tony Baltovski, Vladimir Ermakov

0.11.2 (2015-04-26)

  • plugin: param fix #276: add check before reset request downcounter. If on MR request FCU responses param with different [param_index]{.title-ref} do not reset repeat counter to prevent endless loop.
  • gcs bridge fix #277: add link diagnostics
  • plugin: setpoint_position #273: add quirk for PX4.
  • readme: fir glossary misprint
  • readme: add notes about catkin tool
  • Contributors: Vladimir Ermakov

0.11.1 (2015-04-06)

  • scripts #262: update mavwp
  • scripts #262: mavsetp, new module mavros.setpoint
  • mavftpfuse #129: cache file attrs
  • mavparam #262: use get_topic()
  • mavsys #262: use get_topic()
  • mavcmd #262: use get_topic()
  • mavftp #263, #262: use crc32 checksums
  • python #262: add get_topic()
  • Update local_position.cpp removed irritating comment
  • readme: add short glossary
  • plugin: setpoint_attitude: remove unneded ns
  • Contributors: Marcel Stuettgen, Vladimir Ermakov

0.11.0 (2015-03-24)

  • plugin: setpoint_position #247: rename topic
  • launch #257: rename blacklist.yaml to pluginlists.yaml
  • node #257: implement while list.
  • plugin: actuator_control #247: update topic name.
  • mavros: Initialize UAS before connecting plugin routing. Inspired by #256.
  • plugin: sys_status: Check sender id. Inspired by #256.
  • plugin: sys_status: Use WARN severity for unknown levels
  • uas: Add [UAS::is_my_target()]{.title-ref} Inspired by #256.
  • plugin: global_position: Fill status and covariance if no raw_fix. Additional fix for #252.
  • launch: change apm target component id APM uses 1/1 (sys/comp) by default.
  • plugin: sys_status: publish state msg after updating uas Before this commit, the custom mode string published in the state message was computed using the autopilot type from the previous heartbeat message--not the autopilot type from the current hearbeat message. Normally that isn\'t a problem, but when running a GCS and mavros concurrently, both connected to an FCU that routes mavlink packets (such as APM), then this causes the custom mode to be computed incorrectly, because the mode string for the GCS\'s hearbeat packet will be computed using the FCU\'s autopilot type, and the mode string for the FCU\'s heartbeat packet will be computed using the GCS\'s autopilot type.
  • plugin: global_position: fix nullptr crash This fixes a crash in cases where a GLOBAL_POSITION_INT message is received before a GPS_RAW_INT message, causing the [gps_fix]{.title-ref} pointer member to be dereferenced before it has been set.
  • msgs: fix spelling, add version rq.
  • coverity: init ctor in 3dr_radio
  • launch fix #249: update apm blacklist
  • launch: rename APM2 to APM.
  • launch #211: update configs
  • plugin: gps: remove unused param
  • plugin: sys_time: remove unused param
  • launch fix #248: remove radio launch
  • plugin: 3dr_radio #248: add/remove diag conditionally
  • plugin: sys_status: move connection params to ns
  • plugin: sys_time: fix #206 (param ns)
  • node: Inform what dialect built-in node
  • plugin: sys_status: Conditionaly add APM diag
  • plugin: sys_status: fix #244
  • uas #244: add enum lookups
  • package: update lic
  • license #242: update mavros headers
  • plugin: local_positon: use auto
  • plugin: imu_pub: Update UAS store.
  • plugin: gps: remove diag class, change UAS storage API.
  • plugin api #241: move diag updater to UAS.
  • plugin api #241: remove global private node handle. Now all plugins should define their local node handle (see dummy.cpp). Also partially does #233 (unmerge setpoint topic namespace).
  • plugin api #241: remove [get_name()]{.title-ref}
  • package: mavros now has any-link proxy, not only UDP
  • Update years. I left gpl header, but it is BSD too.
  • Add BSD license option #220
  • plugin: sys_status: AUTOPILOT_VERSION support. Fix #96.
  • mavros fix #235: Use AsyncSpinner to allow plugins chat. Old single-threaded spinner have a dead-lock if you tried to call a service from for example timer callback. For now i hardcoded thread count (4).
  • uncrustify: actuator_control
  • Merge branch \'master\' of github.com:mstuettgen/Mavros
  • fixed missing ;
  • code cosmetics
  • further removed unneeded white spaces and minor code cosmetics
  • fixed timestamp and commented in the not-working function call
  • code cosmetics, removed whitespaces and re-ordered function signatures
  • more code comment cosmetic
  • code comment cosmetic
  • uncrustify: fix style
  • readme: add contributing notes
  • uncrustify: mavros base plugins
  • uncrustify: mavros lib
  • uncrustify: mavros headers
  • tools: add uncrustify cfg for fixing codestyle Actually it different from my codestyle, but much closer than others.
  • added more const to function calls to ensure data consistency
  • modified code to fit new message
  • added group_mix to ActuatorControl.msg and a link to mixing-wiki
  • plugin: rc_io: Add override support warning
  • REALLY added ActuatorControl.msg
  • added ActuatorControl.msg
  • fixed latest compiler error
  • renamed cpp file to actuator_control.cpp and added the new plugin to mavros_plugins.xml
  • removed unneeded Mixinx and reverse_throttle, and unneeded variables in function signatures
  • inital draft for set_actuator_control plugin
  • launch: enable setpoint plugins for APM As of ArduCopter 3.2, APM supports position and velocity setpoints via SET_POSITION_TARGET_LOCAL_NED.
  • plugin: setpoint_velocity: Fix vx setpoint vz should have been vx.
  • Contributors: Clay McClure, Marcel Stuettgen, Vladimir Ermakov

0.10.2 (2015-02-25)

  • Document launch files
  • launch: Fix vim modelines #213
  • launch #210: blacklist image_pub by px4 default. Fix #210.
  • Contributors: Clay McClure, Vladimir Ermakov

0.10.1 (2015-02-02)

  • Fix \@mhkabir name in contributors.
  • uas #200: Add APM:Rover custom mode decoding. Fix #200.
  • uas #200: Update APM:Plane and APM:Copter modes.
  • Contributors: Vladimir Ermakov

0.10.0 (2015-01-24)

  • mavros #154: Add IO stats to diagnostics. Fix #154.
  • Add rosindex metadata
  • plugin: ftp: init ctor.
  • plugin: sts_time: Code cleanup and codestyle fix.
  • plugin: command: Quirk for older FCU\'s (component_id) Older FCU\'s expect that commands addtessed to MAV_COMP_ID_SYSTEM_CONTROL. Now there parameter: [~cmd/use_comp_id_system_control]{.title-ref}
  • plugin: rc_io: #185 Use synchronized timestamp.
  • plugin: gps: #185 use synchronized timestamp common.xml tells that GPS_RAW_INT have time_usec stamps.
  • uas: Fix ros timestamp calculation. Issues: #186, #185.
  • plugin: add synchronisation to most plugins (fixed) Closes #186.
  • readme: Add notes about coordinate frame conversions #49
  • Contributors: Mohammed Kabir, Vladimir Ermakov

0.9.4 (2015-01-06)

  • plugin: sys_time: enable EMA
  • Contributors: Mohammed Kabir

0.9.3 (2014-12-30)

  • plugin: visualization finshed
  • Restore EMA. Works better for low rates.
  • Update sys_time.cpp
  • plugin : add time offset field to dt_diag
  • Final fixes
  • minor
  • plugin : fixes timesync. FCU support checked.
  • Visualisation system import
  • param: Fix float copying too
  • param: Fix missing
  • param: Trynig to fix \'crosses initialization of XXX\' error.
  • param: Try to fix #170.
  • Update units
  • New message, moving average compensation
  • Initial import new sync interface
  • plugin: sys_status: Enable TERRAIN health decoding.
  • Contributors: Mohammed Kabir, Vladimir Ermakov

0.9.2 (2014-11-04)

0.9.1 (2014-11-03)

  • Update installation notes for #162
  • Contributors: Vladimir Ermakov

0.9.0 (2014-11-03)

0.8.2 (2014-11-03)

  • REP140: update package.xml format. Hydro don\'t accept this format correctly, but after split i can update.
  • Contributors: Vladimir Ermakov

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 FTP:Checksum. Issue #128.
  • plugin: ftp: Add support for FTP:Rename. Issue #128.
  • python: Add FTP:Truncate
  • plugin: ftp: Add FTP:Truncate call. Issue #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 FTP:Remove call. Issue #128.
  • plugin: ftp: Add response errno from server.
  • plugin: ftp: Add support for \'Skip\' list entries. Issue #128.
  • scripts: mavftp: Add mkdir/rmdir support. Issue #128.
  • plugin: ftp: Add mkdir/rmdir support. Issue #128.
  • plugins: ftp: Update protocol headers. Issue #128.
  • Revert \"Update package.xml format to REP140 (2).\" This reverts commit 81286eb84090a95759591cfab89dd9718ff35b7e. ROS Hydro don\'t fully support REP140: rospack can\'t find plugin descriptions. Fix #151.
  • scripts: mavwp: Fix --follow mode
  • plugin: imu_pub: Fix RAW_IMU/SCALED_IMU angular scale constant. Fix #152.
  • launch: remove px4_local_gcs.launch again. It removed in 826be386938c2735c9dab72283ba4ac1c68dc860, but accidentally returned.
  • extras: launch: Use includes. Fix #144.
  • launch: PX4: use node.launch in PX4 scripts. Also remove px4_local_gcs.launch: please use [roslaunch mavros px4.launch gcs_url:=udp://\@localhost]{.title-ref} instead. Issue #144.
  • launch: APM2: Add node.launch and update apm scripts to use it. Issue #144.
  • plugin: command: Fix CommandInt x,y types.
  • Update package.xml format to REP140 (2). Fix #104.
  • launch: Blacklist FTP for APM.
  • scripts: mavwp: Add decoding for some DO-* mission items.
  • scripts: mavwp: Add preserve home location option at load operation. Useful if FCU stores home location in WP0 (APM).
  • Added src location.
  • Updated README wstool instructions.
  • plugin: ftp: Init ctor
  • service: mavftp: Initial import. Issue #128.
  • plugin: ftp: Implemnet reset call. Sometimes kCmdReset can restore normal operation, but it might be dangerous. Issue #128.
  • plugin: ftp: Implement FTP:Read call. Issue #128.
  • plugin: ftp: Fix open error. Issue #128.
  • plugin: ftp: Implement FTP:Open (read) and FTP:Close. Issue #128.
  • plugin: ftp: Implement FTP:List method. Issue #128.
  • plugin: ftp: Implement list parsing Issue #128.
  • plugin: ftp: Fix CRC32 calculation. Issue #128.
  • plugin: ftp: Add plugin skeleton. Based on QGroundContol QGCUASFileManager.h/cc. Issue #128.
  • plugin: ftp: Add size info
  • plugin: ftp: Add plugin service API. Issue #128.
  • plugin: vfr_hud: Initial import. Also this plugin publish APM specific WIND estimation message. Fix #86.
  • node: coverity fails at UAS initilizer list
  • plugin: setpoint_attitude: Init ctor, remove code dup.
  • cmake: Add check MAVLINK_DIALECT value Fix #139.
  • Move common cmake rules to modules. Same mech as in [cmake_modules]{.title-ref} package. Issue #139.
  • launch: corrected launch for gcs bridge
  • scripts: mavsetp: Fix misprint.
  • launch files: added px4 launch files for connection with radio and gcs
  • scripts: mavsetp: Fix twist.angular vector construction. Small style fix.
  • Update doxygen documentation. Add split lines in UAS, and make UAS.connection atomic. Add rosdoc configuration for mavros_extras.
  • scripts: mavsetp: corrected API; added possibility of parse angles in dg or rad
  • scripts: mavsetp: corrected msg API; mavteleop: added prefix to rc override
  • scripts: mavsetp: added local accel; corrected how the OFFBOARD mode is swtch.
  • scripts: mavsetp: changed the way offboard mode is switched
  • node: init ctor (coverity)
  • nodelib: add std::array header
  • return msg generator deps for mavconn
  • scripts: mavsys: Implement set rate command.
  • scripts: Add mavsys tool. Implented only [mode]{.title-ref} operation. Issue #134.
  • plugin: sys_status: Implement set_mode service. Previous command shortcut removed. Issue #136, #134.
  • node: Implement reverse mode lookup. Issue #136.
  • plugin: sys_status: Move custom mode decoder to UAS. Issue #136.
  • node: Catch URL open exception. Also update connection pointer type.
  • nodelib: move sources to subdir
  • node: Move UAS to mavros namespace
  • node: Move node code to library.
  • node: Catch DeviceError; use C++11 foreach shugar.
  • plugin: command: Add COMMAND_INT suport. Fix #98.
  • Contributors: Nuno Marques, Tony Baltovski, Vladimir Ermakov

0.7.1 (2014-08-25)

  • plugins: setpoint: Update SET_POSITION_TARGET_LOCAL_NED message. Fix #131.
  • scripts: mavsetp: Enable OFFBOARD mode. Issue #126.
  • plugin: command: Add guided_enable shortcut It enable PX4 OFFBOARD mode. Issue #126.
  • scripts: Add mavsetp script. Only local setpoint for now. Issue #126.
  • plugins: Change UAS FCU link name. Reduce smart pointer count, that hold fcu link object.
  • scripts: mavcmd: Add takeoffcur and landcur commands Fix #91, #92. Inspired by #125.
  • Closes #122, closes #123; plugins: move mocap & vision plugins to extras, change vision plugins name
  • plugins: UAS remove std::atomic<double> It don\'t work at some compilers. Issue #89.
  • plugin: global_position: Fill NavSatFix status filed. Issue #87, #118.
  • plugins: Add GPS data to UAS
  • plugins: Move setpoint_mixin.h Fix #120.
  • plugin: mocap: Fix load. Issue #121.
  • plugins: global_position: get pose orientation from the one stored in uas
  • plugins: global_position: use relative_alt on position.z; mavros_plugins.xml - corrected declaration of mocap_pose_estimate
  • plugin - global_position - changed parameter path / orientation source
  • launch: APM2 blacklist global_position plugin
  • plugin: global_position: Unit unification.
  • plugin: global_position: Move heaedr; Style fix.
  • added rel_pos and compass_hdg pub; minor corrections
  • Merge branch \'master\' of https://github.com/vooon/mavros into global_position
  • global_position plugin - initial commit
  • launch: APM2 blacklist mocap plugin.
  • Updated mavros_plugins.xml
  • Fixed dual sources error warning.
  • Fixed styles.
  • Minor changes.
  • added time stamp to received msgs
  • Removed un-needed times.
  • Added mocap_pose_estimate plugin.
  • Code style update
  • setpoint attitude change - warning message
  • Update on setpoint_attitude plugin
    • changed Twist to TwistStamped
    • added reverse_throttle option for throttle control
    • use cmd_vel as the same topic to control linear a angular velocities (it\'s commonly used by controllers)
    • added normalization filter to thrust
  • node: Remove deprecated conn parameters. Fix #108
  • plugin: vision_speed: Update plugin API.
  • plugin: setpoint_attitude: Update plugin API.
  • plugin: setpoint_accel: Update plugin API.
  • plugin: setpoint_velocity: Update plugin API.
  • plugin: 3dr_radio: Update plugin API.
  • plugin: safety_area: Update plugin API.
  • plugin: setpoint_position: Update plugin API.
  • plugin: vision_position: Update plugin API.
  • plugin: local_position: Update plugin API.
  • plugin: command: Update plugin API.
  • plugin: rc_io: Update plugin API.
  • plugin: waypoint: Update plugin API.
  • plugin: param: Update plugin API.
  • plugin: gps: Update plugin API.
  • plugin: imu_pub: Update plugin API.
  • plugin: sys_status: Update plugin API.
  • plugin: Update plugin API.
  • plugins: disable most of plugins
  • plugin: setpoint_attitude: Add thrust topic. Fix #106.
  • Fix URLs in readme
  • mavros -> ros-message parameter fix only parameter1 was forwarded into the ros message
  • Switch travis to pixhawk dialect. Default dialect build by ros buildfarm. Also remove duplicate ci statuses from mavros readme.
  • Contributors: Nuno Marques, Tony Baltovski, Vladimir Ermakov, mthz

0.7.0 (2014-08-11)

  • Add package index readme, Fix #101
  • move mavros to subdirectory, #101
  • Merge branch \'master\' of github.com:vooon/mavros * \'master\' of github.com:vooon/mavros: Add link to ros-*-mavlink package wiki page.

  • plugins: setpoint: Update setpoint message name. Issue #94, Fix #97.

  • plugin: setpoint_attitude: Update message name. Issues #94, #97.

  • Add link to ros-*-mavlink package wiki page.

  • plugin: gps: Fix gcc 4.6 build (atomic). Not recommended to use std::atomic with gcc 4.6. So i limited to prederined atomics for simple types like int, float etc.

  • plugin: sys_status: Implement PX4 mode decoding. Fix #84.

  • plugin: gps: Add EPH & EPV to diagnostic. Issue #95

  • plugin: gps: Move message processing to individual handlers. Issue #95.

  • plugin: rc_io: Replace override service with topic. (ROS API change). Fix #93.

  • Add dialect selection notes

  • plugins: Change severity for param & wp done messages.

  • plugins: Store raw autopilot & mav type values. This may fix or not issue #89.

  • plugins: init ctor (coverity)

  • plugin: imu_pub: Add ATTITUDE_QUATERNION support. Also reduce copy-paste and use mode readable bitmask check. Fix #85.

  • scriptis: mavcmd: Spelling

  • scripits: Add mavcmd tool

  • Add links to mavros_extras

  • param: sys_status: Option to disable diagnostics (except heartbeat)

  • plugin: command: Add takeoff and land aliases. Issue #68.

  • plugin: command: Add quirk for PX4. Fix #82.

  • plugin: Add UAS.is_px4() helper. Replace some locks with atomic. Issue #82.

  • launch: Clear PX4 blacklist. Issue #68.

  • launch: Add target ids. Also fix PX4 wrong ?ids usage (it set mavros ids, not target). Issue #68.

  • plugin: imu_pub: Fix HRIMU pressure calc. 1 mBar is 100 Pa. Fix #79.

  • plugins: C++11 chrono want time by ref, return *_DT Fix #80.

  • plugins: Replace boost threads with C++11. And remove boost thread library from build rules. Issue #80.

  • plugins: Replace Boost condition variables with C++11 Issue #80.

  • plugins: Replace boost mutexes with C++11. Issue #80.

  • travis clang to old, fails on boost signals2 library. disable.

  • travis: enable clang build.

  • node: Make project buildable by clang. Clang produce more readable errors and provide some static code analysis, so i want ability to build mavros with that compilator.

  • plugins: replace initial memset with c++ initializer list

  • launch: PX4 default ids=1,50. Also waypoint plugin works (with first_pos_control_flight-5273-gd3d5aa9). Issue #68.

  • launch: Use connection URL

  • plugin: vision_speed: Initial import. Fix #67.

  • plugin: sys_status: Add SYSTEM_TIME sync send. Fix #78.

  • plugin: sys_status: Decode sensor health field. Fix #75.

  • Add ci badges to readme

  • plugin: param: erase invalidates iterator. Real error found by coverity :)

  • plugins: Init ctor

  • plugins: Add ctor initialization. Coverity recommends init all data members.

  • test: trying travis-ci && coverity integration. Real ci doing by ros buildfarm.

  • plugins: Fix clang-check errors.

  • test: Add tcp client reconnect test. Issue #72.

  • test: Split open_url test to individual tests. Also removed tcp client deletion on close, heisenbug here. Issue #72.

  • mavconn: Emit port_closed after thread stop. Also use tx state flag, improve error messages and move io post out of critical section. Issue #72.

  • mavconn: Fix TCP server client deletion. Issue #72.

  • test: Remove not needed sleep.

  • mavconn: Remove new MsgBuffer dup. Message drop if closed. Issue #72.

  • mavconn: Fix TCP server. Issue #72.

  • launch: APM2: Blacklist extras.

  • mavconn: Add mutex to channel allocation.

  • mavconn: Fix TCP server for gcc 4.6 Fix #74.

  • Remove libev from package. Issue #72.

  • mavconn: GCC 4.6 does not support typedef like using. Issue #74.

  • Merge pull request #73 from vooon/mavconn-revert-asio mavconn: Revert to Boost.ASIO

  • mavconn: Cleanup boost threads. I will use C++11 standard libs. Issue #72.

  • mavconn: Remove libev default loop thread. Issue #72.

  • mavconn: Port MAVConnTCPServer to Boost.ASIO. TCP send test fails. Issue #72.

  • mavconn: Port MAVConnTCPClient to Boost.ASIO. Also it disables MAVConnTCPServer before i rewrite it. Issue #72.

  • mavconn: Revert MAConnSerial back to Boost.ASIO. Issue #72.

  • test: Fix send_message tests. Use C++11. Issue #72.

  • mavconn: Revert MAVConnUDP back to Boost.ASIO. Also starting to change boost threads and mutexes to C++11. Issue #72.

  • test: Enable send tests. Issue #72.

  • test: And hand test for mavconn hangs. Issue #72.

  • node: Remove anonimous flag from gcs_bridge. Rename node if you want start several copies.

  • install: Remove duplicate

  • node: Fix mavros_node termination message. Issue #58.

  • node: Use URL in mavros_node. Fix #58.

  • node: Use URL in gcs_bridge. Issue #58.

  • node: Rename ros_udp to gcs_bridge. Because now it\'s not UDP only. Issue #58.

  • Cleanup boost components

  • mavconn: Implement URL parsing. Supported shemas:

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

    * TCP server: [tcp-l://[bind_port][:port][/?ids=sysid,compid]]{.title-ref} Note: ids from URL overrides ids given to open_url(). Issue #58.

  • test: Add tests for UDP, TCP, SERIAL. Send message testa are broken, need to find workaround. Fix #70.

  • plugin: vision_position: Add transform timestamp check. Issue #60.

  • mavconn: Implement TCP server mode. Fix #57.

  • mavconn: Initial support for TCP client mode. Issue #57.

  • mavconn: Boost::asio cleanup.

  • plugin: Remove TimerService from UAS. Fix #59.

  • plugin: param: Add state check to sheduled pull.

  • mavparam: Add force pull.

  • plugin: param: Use ros::Timer for timeouts Also new option for force pull parameters from FCU instead of cache. Fix #59.

  • Add mavsafety info to README.

  • launch: Add apm2_radio.launch (for use with 3DR Radio)

  • plugin: 3dr_radio: Fix build error. Issue #62.

  • plugin: 3dr_radio: Publish status data for rqt_plot Also tested with SiK 1.7. Fix #62.

  • plugin: setpoint_attitude: Fix ENU->NED conversion. Fix #64. Related #33, #49.

  • launch: Add setpoint plugins to APM2 blacklist

  • plugin: setpoint_attitude: Initial import. XXX: need frame conversion #49. Issue #33, #64.

  • plugin: Move common tf code to mixin. Remove copy-paste tf_listener. Issue #33.

  • plugin: setpoint_position: Generalize topic NS with other [setpoint_*]{.title-ref} Issue #33, #61.

  • plugin: setpoint_accel: Initial import. Issues: #33, #61.

  • plugin: position_velocity: Initial import. Also it fix ignore mask in setpoint_position. Issues #33, #61.

  • plugins: 3rd_radio: Initial import. Untested. Issue #61.

  • scripts: Add mavsafety tool. Also add safety_area to APM2 blacklist. Fix #51.

  • plugins: safty_area: Initial import. This plugin listen [~/safety_area/set]{.title-ref} and send it\'s data to FCU. Issue #51.

  • plugins: position: Add TF rate limit. Issue #33.

  • plugin: waypoint: Use ros::Timer for timeouts. Also add some debug messages for next debugging PX4. Issue #59.

  • plugin: sys_status: Use ros::Timer for timeouts Also move message rx to it\'s own handlers. Issue #59.

  • Remove rosdep.yaml and update readme

  • Add deb build notes to readme. Issue #55.

  • Add sudo notes to readme.

  • Merge pull request #56 from vooon/54_try_libev Switch to libev

  • Add libev to README

  • package: Add temporary rosdep for libev-dev. Issue #54.

  • mavconn: Move MAVConnUDP to libev. And fix docs in serial. Issue #54.

  • mavconn: Move MAVConnSerial to libev. Adds stub for open URL function. Issure #54.

  • Contributors: Vladimir Ermakov, Mohammed Kabir, Nuno Marques, Glenn Gregory

0.6.0 (2014-07-17)

  • plugin: local_position: Use same timestamp in topic and TF. Issue #33.
  • plugins: TF thread required, remove notes. Issue #33.
  • launch: Add example launch for PX4 Issue #45.
  • plugin: imu_pub: Fix attitude store in UAS Issue #33. Fix #53.
  • plugins: Disable position topics if tf_listen enabled Also change default frame names: [vision]{.title-ref} and [setpoint]{.title-ref}. Issue #33.
  • plugins: Fix typo in frame_id params. Issue #33.
  • plugins: Add vision and setpoint TF listeners Also change parameter names to same style. Issue #33.
  • plugin: vision_position: Add PositionWithCovarianceStamped option Issue #33.
  • Add boost filesystem lib to link On some platforms its absence breaks build by: undefined reference to [boost::filesystem::path::codecvt()]{.title-ref}
  • launch: Add example for APM2 Fix #45.
  • plugin: setpoint_position: Initial import And some small doc changes in other position plugins. Issue #33.
  • node: Add connection change message Fix #52.
  • plugins: vision_position: Initial import TODO: check ENU->NED maths. Issue #33.
  • plugins: Remove unneded \'FCU\' from diag
  • plugin: local_position: Change plane conversion Bug: #49.
  • plugin: imu_pub: Fix magnetic vector convertions Bug: #49.
  • Use dialects list from package
  • plugin: local_position: Fix orientation source Part of #33.
  • node: Show target system on startup Fix #47.
  • plugin: local_position: Initial add Receive LOCAL_POSITION_NED message and publish it via TF and PoseStamped topic in ENU frame. Part of #33.
  • node: Use boost::make_shared for message allocation Fix #46.
  • plugins: Use boost::make_shared for message allocation Part of #46.
  • plugin: imu_pub: Fix misprint in fill function Fix magnetometer vector convertion (HR IMU). Related #33.
  • plugin: imu_pub: setup cleanup.
  • Update readme
  • plugin: gps: Fix gps_vel calculation Fix #42.
  • plugins: Make name and messages methods const. (breaking). WARNING: this change broke external plugins. Please add const to get_name() and get_supported_messages(). Part of #38.
  • plugins: Use mavlink_msg*_pack_chan() functions Fix #43.
  • mavconn: Reuse tx buffer (resize by extents) Part of #38.
  • mavconn: Do not finalize messages if id pair match mavlink*_pack also do finalize, so explicit finalization just recalculate crc and seq number (doubles work). Test later if we need check seq too.
  • mavconn: Documentation and cleanup Make MAVConn classes noncopyable. Remove copy-paste copy and following async_write calls. Reserve some space in tx queues. Replace auto_ptr with unique_ptr.
  • test: Fix header include
  • mavconn: Fix possible array overrun in channel alocation. Problem found by clang.
  • fix some roslint errors
  • mavconn: move headers to include
  • node: Implement plugin blacklist. New parameter: [~/plugin_blacklist]{.title-ref} lists plugin aliases with glob syntax. Fix #36.
  • plugins: Change constants to constexpr (for gcc 4.6)
  • mavconn: Add gencpp dependency (utils.h requiers generated header)
  • Move duplicate Mavlink.msg copy to utils.h
  • Remove tests that requires connection to FCU
  • plugins: imu_pub: Fix PX4 imu/data linear_accelerarion field Should fix: #39.
  • plugins: imu_pub: Add magnitic covariance Trying to move constants with constexpr. Related: #13.
  • Remove testing info Need to remove tests that could not run on build farm.
  • Contributors: Vladimir Ermakov

0.5.0 (2014-06-19)

  • Remove mavlink submodule and move it to package dependency Bloom release tool don\'t support git submodules, so i\'ve ceate a package as described in http://wiki.ros.org/bloom/Tutorials/ReleaseThirdParty . Fix #35.
  • plugins: param: add missing gcc 4.6 fix.
  • plugins: fix const initializers for gcc 4.6
  • plugins: imu_pub: fix const initializers for gcc 4.6 Fix for build failure devel-hydro-mavros #4.
  • Add support for GCC 4.6 (C++0x, ubuntu 12.04) I don\'t use complete c++11, so we could switch to c++0x if it supported.
  • plugins: rc_io: Add override rcin service Fix: #22.
  • plugins: sys_status: fix timeouts Fix #26.
  • plugins: sys_status: add set stream rate service Some additional testing required. Fix #23.
  • Remove unused boost libarary: timer Build on jenkins for hydro failed on find boost_timer.
  • 0.4.1
  • Add changelog for releasing via bloom

0.4.1 (2014-06-11)

  • node: Show serial link status in diag Now \'FCU connection\' shows actual status of connection (HEARTBEATS).
  • Fix #29. Autostart mavlink via USB on PX4 Changes mavconn interface, adds new parameter.
  • Fix installation rules. Fix #31.
  • Setup UDP transport for /mavlink messages
  • Fix mavlink dialect selection Fix #28.
  • Add link to wiki.ros.org Part of #27.

0.4.0 (2014-06-07)

  • Release 0.4.0 And some docs for CommandPlugin.
  • plugins: command: Command shortcuts Fix #12.
  • plugins: command: Add ACK waiting list Part of #12.
  • plugins: command: Initial naive realization. Partial #12, #25.
  • mavconn: Fix build on Odroid with Ubuntu 13.10 Fix #24.
  • plugins: rc_io: initial add RC_IO plugin Topics:

    • ~/rc/in -- FCU RC inputs in raw microseconds

    * ~/rc/out -- FCU Servo outputs Fix #17. Partiall #22.

  • Fix installation wstool command. [wstool set]{.title-ref}, not [wstool add]{.title-ref}.

  • Add installation notes to README Installing pymavlink is not required, but try if errors.

  • Fix headers in README.md

  • ros_udp: New node for UDP proxing Add some examples to README.md. Fix #21.

  • sys_status: Add state publication Fix #16.

  • sys_status: Sent HEARTBEAT if conn_heartbeat > 0 Fix #20.

  • sys_status: add sensor diagnostic See #16.

  • sys_status: Add battery status monitoring Fix #19, partial #16.

  • sys_status: HWSTATUS support Fix #18, partial #20.

  • plugins: imu_pub: Add RAW_IMU, SCALED_IMU and SCALED_PRESSURE handlers Fix #13. Refactor message processing. Combination of used messages: On APM: ATTITUDE + RAW_IMU + SCALED_PRESSURE On PX4: ATTITUDE + HIGHRES_IMU On other: ATTITUDE + (RAW_IMUHIGHRES_IMU Published topics:

    • ~imu/data - ATTITUDE + accel data from *_IMU
    • ~imu/data_raw - HIGHRES_IMU or SCALED_IMU or RAW_IMU in that order
    • ~imu/mag - magnetometer (same source as data_raw)
    • ~imu/temperature - HIGHRES_IMU or SCALED_PRESSURE
    • ~imu/atm_pressure - same as temperature
  • Update readme

  • mavwp: Add --pull option for \'show\' operation. Reread waypoints before show.

  • MissionPlanner use format QGC WPL, Fix #15 Code cleanup;

  • Update mavlink version.

  • Update mavlink version

  • mavparam: fix #14 support for QGC param files

  • mavwp: Add mavwp to install

0.3.0 (2014-03-23)

  • Release 0.3.0
  • mavwp: Add MAV mission manipulation tool Uses WaypointPlugin ROS API for manipulations with FCU mission.

    • show -- show current mission table
    • pull -- update waypoint table
    • dump -- update and save to file
    • load -- loads mission from file
    • clear -- delete all waypoints
    • setcur -- change current waypoint

    - goto -- execute guided goto command (only APM) Currently supports QGroundControl format only.

  • plugins: wp: Add GOTO, update documentation

  • plugins: wp: Auto pull

  • plugins: wp: SetCurrent & Clear now works

  • plugins: wp: Push service works

  • plugins: wp: push almost done

  • plugins: wp: Pull done

  • plugins: param: remove unused ptr

  • plugins: wp: mission pull almost done

  • plugins: wp: Add convertors & handlers

  • plugins: Waypoint plugin initial

  • Use C++11 feuture - auto type

  • plugins: refactor context & link to single UAS class UAS same functions as in QGC.

  • plugins: Add msgs and srvs for Waypoint plugin

  • Update mavlink library

  • Update mavlink version

  • mavparam: Fix for DroidPlanner param files & cleanup DroidPlanner adds some spaces, don\'t forget to strip it out. Cleanup unused code from Parameter class.

0.2.0 (2014-01-29)

  • mavparam: Add MAV parameter manipulation tool Uses ParamPlugin ROS API for manipulating with fcu params.

    • load -- load parameter from file
    • dump -- dump parameter to file
    • get -- get parameter

    - set -- set parameter Currently supports MissionPlanner format only. But DroidPlanner uses same format.

  • Update README and documentation

  • plugins: param: implement ~param/push service Also implement sync for rosparam:

    • ~param/pull service pulls data to rosparam
    • ~param/push service send data from rosparam
    • ~param/set service update rosparam if success
  • plugins: param: implement ~param/set service

  • plugins: param: implement ~param/get service

  • plugins: param: Implement automatic param list requesting

  • plugins: use recursive_mutex everywhere

  • plugins: param now automaticly requests data after connect

  • plugins: Add common io_service for plugins, implement connection timeout Some plugin require some delayed processes. Now we can use boost::asio::*timer. New parameter:

    • ~/conn_timeout connection timeout in seconds
  • plugins: add param services

  • mavconn: set thread names WARNING: pthread systems only (BSD/Linux)

  • plugins: implement parameters fetch service

  • plugins: fix string copying from mavlink msg

  • plugins: Setup target in mav_context New params:

    • ~target_system_id - FCU System ID
    • ~target_component_id - FCU Component ID
  • plugins: IMU Pub: add stdev parameters, change topic names. Add parameters:

    • ~imu/linear_acceleration_stdev - for linear acceleration covariance
    • ~imu/angular_velocity_stdev - for angular covariance

    - ~imu/orientation_stdev - for orientation covariance Change topic names (as in other IMU drivers): - ~imu -> ~/imu/data - ~raw/imu -> ~/imu/data_raw

  • plugins: Params initial dirty plugin

  • Fix mavlink dialect choice.

  • plugins: Add context storage for automatic quirk handling ArduPlilot requires at least 2 quirks:

    • STATUSTEXT severity levels
    • parameter values is float
  • Implement MAVLink dialect selection ArduPilotMega is default choice.

  • doc: add configuration for rosdoc_lite

0.1.0 (2014-01-05)

  • Version 0.1.0 Milestone 1: all features from mavlink_ros package.xml was updated.
  • Fix typo and add copyright string NOTE: Please check typos before coping and pasting :)
  • plugins: gps: Add GPS_RAW_INT handler GPS_STATUS not supported by APM:Plane. ROS dosen\'t have standard message for satellites information.
  • mavconn: small debug changes Limit no GCS message to 10 sec.
  • node: Terminate node on serial port errors
  • plugins: Add GPS plugin SYSTEM_TIME to TimeReference support. TODO GPS fix.
  • Fix build and update MAVLink library
  • plugins: sys_status: Add SYSTEMTEXT handler Two modes:

    • standard MAV_SEVERITY values

    - APM:Plane (default) TODO: add mavlink dialect selection option

  • plugins: add some header doxygen tags Add license to Dummy.cpp (plugin template).

  • plugins: sys_status: Add MEMINFO handler MEMINFO from ardupilotmega.xml message definition. Optional.

  • update README

  • update TODO

  • plugins: Add imu_pub plugin. Publish ATTITUDE and HIGHRES_IMU data. HIGHRES__IMU not tested: Ardupilot sends ATTITUDE only :(

  • node: publish Mavlink.msg only if listners > 0

  • plugins: Add sys_status plugin. Initial.

  • plugins: implement loading & rx routing

  • plugins: initial

  • node: Add diagnostics for mavlink interfaces

  • mavconn: add information log wich serial device we use.

  • mavconn: fix overloaded MAVConn*::send_message(msg)

  • mavros: Add mavros_node (currently serial-ros-udp bridge) Message paths: Serial -+-> ROS /mavlink/from +-> UDP gcs_host:port ROS /mavlink/to -+-> Serial UDP bind_host:port -+

  • Add README and TODO files.

  • mavconn: fix MAVConnUDP, add mavudpproxy test mavudpproxy -- connection proxy for QGroundControl, also used as test for MAVConnUDP and MAVConnSerial.

  • mavconn: add UDP support class

  • mavconn: fix: should use virtual destructor in interface class

  • mavconn: add getters/setters for sys_id, comp_id; send_message return.

  • mavconn: simple test. tested with APM:Plane: works.

  • mavconn: fix linking

  • mavconn: serial interface

  • Add mavconn library prototype mavconn - handles MAVLink connections via Serial, UDP and TCP.

  • Add MAVLink library + build script

  • Initial Import Mavlink.msg from mavlink_ros package ( https://github.com/mavlink/mavlink_ros ).

  • Contributors: Vladimir Ermakov

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
  • 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/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • 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]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

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).

ROS API documentation moved to wiki.ros.org.

Features

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

Limitations

Only for linux. Depends on Boost library >= 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 build from mavlink-gbp-release. 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), #216 (outdated), #317 (outdated), #319 (outdated), #321 (outdated), #473. Documents: Frame Conversions, Mavlink coordinate frames.

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)

Examples:

roslaunch mavros px4.launch 
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@

Installation

Binary installation (debian)

Since v0.5 that programs available in precompiled debian packages for x86 and amd64 (x86_64). Also v0.9+ exists in ARMv7 repo for Ubuntu armhf. Just use apt-get for installation:

sudo apt-get install ros-jade-mavros ros-jade-mavros-extras

Source installation

Use wstool utility for retriving sources and catkin tool for build.

sudo apt-get install python-catkin-tools python-rosinstall-generator

# 1. unneded if you already has workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
wstool init src

# 2. get source (upstream - released)
rosinstall_generator --upstream mavros | tee /tmp/mavros.rosinstall
# alternative: latest source
rosinstall_generator --upstream-development mavros | tee /tmp/mavros.rosinstall

# 3. latest released mavlink package
# you may run from this line to update ros-*-mavlink package
rosinstall_generator mavlink | tee -a /tmp/mavros.rosinstall

# 4. workspace & deps
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src
rosdep install --from-paths src --ignore-src --rosdistro jade -y

# 5. finally - build
catkin build

Build error. if you has error with missing mavlink_*_t or MAVLINK_MSG_ID_* then you need fresh mavlink package. You may update from ros-shadow-fixed (binary installation) or redo script from step 3.

Important. The current implementation of mavlink does not allow to select dialect in run-time, so mavros package (and all plugin packages) have compile-time option MAVLINK_DIALECT, default is 'aurdupilotmega'.

If you want change dialect change workspace config:

catkin config --cmake-args -DMAVLINK_DIALECT=common

Contributing

  1. Fork the repo: fork
  2. Clone the repo (git clone https://github.com/mavlink/mavros.git);
  3. Create a remote connection to your repo (git remote add <remote_repo> git@github.com:<YourGitUser>/mavros.git);
  4. Create a feature/dev branch (git checkout -b <feature_branch>);
  5. Add the changes;
  6. Apply the changes by commiting (git commit -m "<message>" or git commit -a and then write message; if adding new files: git add <path/to/file.ext>);
  7. Check code style uncrustify -c ${ROS_WORKSPACE}/mavros/mavros/tools/uncrustify-cpp.cfg --replace --no-backup <path/to/file.ext>;
  8. Fix small code style errors and typos;
  9. Commit with description like "uncrustify" or "code style fix". Please avoid changes in program logic (separate commit are better than mix of style and bug fix);
  10. Run tests:
    • with catkin_make, issue catkin_make tests and then catkin_make run_tests;
    • with catkin tools, issue catkin run_tests;
  11. If everything goes as planned, push the changes (git push -u <remote_repo> <feature_branch>) and issue a pull request.

Glossary

  • GCS — Ground Control Station
  • FCU — Flight Control Unit (aka FC)
  • OBC — OnBoard Computer (your odroid or raspberry)
  • MAVLink -- communication protocol
  • mavlink_ros -- original ROS node (few messages, no proxy)
  • Pixhawk -- Reference hardware platform
  • PX4 -- Reference implementation in the academic community
  • ArduPilot -- tested autopilot APM:Plane (default command set)
  • QGroundControl -- tested ground control station for Android, iOS, Mac OS, Linux and Windows
  • mavros_extras -- extra plugins & node for mavros
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

0.16.3 (2015-11-19)

  • use safe methods to get imu data in local_position plugin
  • Contributors: Andreas Antener

0.16.2 (2015-11-17)

  • transform yaw and yaw rate from enu to ned
  • Contributors: Andreas Antener

0.16.1 (2015-11-13)

  • python: fix import error of goto service
  • don\'t warn anymore about px4 not supporting rc_io
  • Contributors: Andreas Antener, Vladimir Ermakov

0.16.0 (2015-11-09)

  • lib: Update ArduCopter mode list
  • plugin: sys_status #423: set_mode set arming and HIL flags based on previous state
  • lib #423: Save base_mode in UAS.
  • Finalized local position topic names
  • readme: add link to catkin-tools docs
  • readme #409: merge mavlink and mavros installation instruction
  • Fixed redundant rotation of IMU data and redundant orientation data
  • plugin: setpoint_raw fix #418: add attitude raw setpoint Related #402.
  • Added velocity output of FCU\'s local position estimate to ROS node
  • plugin: sys_status fix #417: remove APM statustext quirk
  • plugin: waypoint fix #414: remove GOTO service. It is replaced with more standard global setpoint messages.
  • plugin: setpoint_raw fix #415: add global position target support Related to #402.
  • plugin: command fix #407: remove guided_enable sevice
  • plugin: setpoint_raw #402: implement loopback.
  • plugin: setpoint_raw #402: Initial import.
  • readme fix #410: use only catkin tool
  • readme: add defaults for URL
  • pass new extended state to ros
  • python: add util to convert pymavlink message to Mavlink.msg
  • python: convert input to bytearray
  • python: add payload convertion util
  • gcs_bridge #394: enable both UDPROS and TCPROS transports
  • EL: add try-except on handlers
  • event_launcher: show logfile path
  • event_launcher #386: expand shell vars for logfile
  • Mavros library depends on mavros_msgs headers Adding this dependency makes sure that mavros_msgs message headers are generated before the mavros library is built, since it needs those headers.
  • Contributors: Andreas Antener, Eddy, Jon Binney, Vladimir Ermakov

0.15.0 (2015-09-17)

  • lib: fix timesync uninit bug. Uninitialized variable caused wrong timestamps with APM.
  • python #286: use checksum - save ticks
  • script #385: output to log-file
  • script #385: remove RosrunHandler and RoslaunchHandler
  • script #385: attempt to implement rosrun fails. ROSLaunch class wants all node operations from main thread. That is not possible.
  • script #385: fix shell-killer, but logging are broken and removed
  • script #385: shell-launcher now works!
  • script #385: add example configuration
  • script #385: shell handler done. next - rosparam handling
  • script #385: starting work on simple shell launcher
  • scripts: starting event_launcher
  • python: Remove unneded slice operation. Fix copyright year. [list[:len(list)]]{.title-ref} is equal to [list]{.title-ref}, but creates new list with data from that slice.
  • updated mavlink byte buffer conversion
  • plugin: manual_control: Use shared pointer message Fix alphabetic order of msgs.
  • python: add helper for converting mavros_msgs/Mavlink to pymavlink
  • Add MANUAL_CONTROL handling with new plugin
  • Contributors: Andreas Antener, Vladimir Ermakov, v01d

0.14.2 (2015-08-20)

0.14.1 (2015-08-19)

  • package: Fix depend on rosconsole-bridge
  • Removed <remap>
  • Contributors: Vladimir Ermakov, devbharat

0.14.0 (2015-08-17)

  • python: call of mavros.set_namespace() is required.
  • scripts: mavftp fix #357: add verify command
  • scripts: mavftp #357: progressbar on download operation
  • scripts: mavftp #357: progress bar for upload operation.
  • scripts: mavftp: New command [cd]{.title-ref}. All path arguments now may handle relative paths.
  • readme: fix frame tansform section
  • mavros: readme: update info on frame conversions
  • mavros: readme: update contribution steps
  • node: Replace deprecated copy functions. Also allow mavlink to & from topics to be namespaced.
  • extras: scripts: use API from mavros module
  • scripts: fix for new message location
  • python: update mavros lib to new message location
  • package: remove not exist dependency
  • plugin: waypoint: Fix message include
  • plugin: vfr_hud: Fix message include
  • plugin: rc_io: Fix message include
  • plugin: param: Fix message include
  • plugin: ftp: Fix message include
  • plugin: sys_status: Fix message include
  • plugin: command: Fix message include
  • plugin: 3dr_radio: Fix message include
  • plugin: actuator_control: Fix message include.
  • msgs: update copyright year
  • msgs: deprecate mavros::Mavlink and copy utils.
  • msgs: change description, make catkin lint happy
  • msgs #354: move all messages to mavros_msgs package.
  • Minor typo fix.
  • node: increase diag timer to 2 Hz
  • node: move diagnostic to AsyncSpinner threads.
  • Contributors: TSC21, Tony Baltovski, Vladimir Ermakov

0.13.1 (2015-08-05)

  • lib #358: cleanup. Replace UAS::getYaw() with UAS::quaternion_get_yaw().
  • lib #358: found correct getYaw(). Test for each degrees in -180..180.
  • test #358: test more different angles. Compare rotation result.
  • lib #358: try to implement algo from wikipedia.
  • lib #358: still failing. add recursive test for range -Pi..+Pi
  • lib #358: try solve issue using older eulerAngles()
  • lib #358: remove to_rpy test
  • Merge branch \'master\' of github.com:mavlink/mavros * \'master\' of github.com:mavlink/mavros: global_position: move relative_alt and compass_heading init back add nav_msgs to dependencies so to make Travis happy global_position: update pose and twist to odom msg

  • test fix #359: split out quaternion tests.

  • lib #359: move quaternion utils.

  • global_position: move relative_alt and compass_heading init back

  • add nav_msgs to dependencies so to make Travis happy

  • global_position: update pose and twist to odom msg

  • test #358: add tests for negative values and quaternion_to_rpy tf2 compatibility check Tests now fails!

  • sctipts: fix gps topic path

  • lib: fix input validation in UAS::orientation_from_str()

  • test: add case for num str->sensor orientation

  • package: fix CHANGELOG.rst

  • Contributors: TSC21, Vladimir Ermakov

0.13.0 (2015-08-01)

  • plugin: setpoint_attitude #352: use new helper.
  • plugin: sys: Fix cppcheck and YouCompleteMe warnings
  • plugin: ftp: Fix cppcheck errors.
  • lib #352: Add helper function UAS::quaternion_to_mavlink()
  • Fixed bug in send_attitude_target() The transformed quaternion wasn\'t being passed to set_attitude_target(), resulting in an incorrect attitude setpoint. I\'ve now fixed this issue.
  • scripts: fix mavwp
  • test: add test cases for new sensor orientation functions
  • remove tf1 dep
  • lib #319: Remove TF types from UAS
  • plugin: param: new message type: ParamValue
  • msgs: Move MAV_CMD values to separate msg
  • plugin: command: fix build
  • fix whitespaces in python scripts
  • Merge pull request #312 from mhkabir/cam_imu_sync Camera IMU synchronisation support added
  • Added launch file for PX4 posix sitl to launch gcs_bridge node for bridging posix and gazebo
  • scripts: mavftp: little speed up by aligning access to payload length
  • launch: Add optional log_output arg
  • Merge branch \'orientation_enum_name\' * orientation_enum_name: distance_sensor #342: correct orientation parameter handling. lib #342: try to convert numeric value too px4_config: adapt to distance_sensor params to new features distance_sensor: restructure orientation matching and verification lib #342: Added sensor orientation string repr.

  • lib #342: try to convert numeric value too

  • px4_config: adapt to distance_sensor params to new features

  • lib #342: Added sensor orientation string repr.

  • launch: update local_position conf

  • test: Add test for UAS::sensor_orientation_matching()

  • Update cmake Eigen3 finding rules. Migration described at: http://wiki.ros.org/jade/Migration#Eigen_CMake_Module_in_cmake_modules

  • lib #319, #341: preparation for str->MAV_SENSOR_ORIENTATION func

  • lib #319: Return quaternion from UAS::sensor_matching()

  • lib: Remove unneded NodeHandle

  • launch fix #340: update default component id of PX4.

  • plugin: sys_status: Add fallback to adressed version request.

  • Can not remove tf package before #319 is done. tf::Vector3 and other tf1-bullet still in use.

  • plugin: sys_status: Use broadcast for version request.

  • fix #71: replace depend tf to tf2_ros.

  • plugin: Use UAS::syncronized_header() for reduce LOC.

  • lib #319: use similar names for covariances as eigen vector

  • lib #319: transform_frame() for Covariance3x3

  • lib #319: remove unused bullet based transform_frame()

  • extras: vision_pose #71: Use TF2 listener. Also #319.

  • plugin #71: Implement TF2 listener. Change param names. Breaks extras.

  • uas #71: Use single TF2 objects for broadcasting and subscription.

  • launch: Update configs.

  • lib: Add UAS::quaternion_to_rpy()

  • plugin: safety_area #319: Change transform_frame()

  • plugin: local_position #71 #319: port to TF2 and Eigen

  • lib: Add UAS::synchonized_header()

  • plugin: command: Add command broadcasting support.

  • Perform the autopilot version request as broadcast

  • lib: Update PX4 mode list

  • plugin: global_position #325: port tf broadcaster to tf2 Also #71.

  • plugin: global_position #325: reenable UTM calc

  • plugin: gps #325: remove gps plugin.

  • plugin: global_position #325: merge gps_raw_int handler

  • plugin: setpoint_accel #319: use eigen frame transform. I don\'t think that PX4 support any other frame than LOCAL_NED. So i removed comment. Also style fix in setpoint_velocity.

  • plugin: setpoint_velocity #319: use eigen based frame transform.

  • plugin: setpoint_position #273: remove PX4 quirk, it is fixed.

  • plugin: ftp: Update command enum.

  • plugin: imu_pub fix #320: move constants outside class, else runtime linkage error.

  • plugin: imu_pub #320: first attempt

  • eigen #319: handy wrappers.

  • eigen #319: add euler-quat function. Also #321.

  • test #321: remove duplicated test cases, separate by library. Add test for checking compatibility of tf::quaternionFromRPY() and Eigen based math.

  • test #321: testing eigen-based transforms. We should check what convention used by tf::Matrix to be sure that our method is compatible.

  • mavros #319: Add Eigen dependency and cmake rule.

  • test: test for UAS::transform_frame_attitude_rpy() (ERRORs!)

  • test: test for UAS::transform_frame_xyz()

  • test: Initial import test_frame_conv

  • cam_imu_sync : fix running

  • imu_cam_sync : fix formatting

  • command handling in mavcmd for camera trigger

  • Camera IMU synchronisation support added

  • Contributors: Anurag Makineni, Lorenz Meier, Mohammed Kabir, TSC21, Vladimir Ermakov, devbharat

0.12.0 (2015-07-01)

  • plugin: sys_time, sys_status #266: check that rate is zero
  • test #321: disable tests for broken transforms.
  • lib #321: frame transform are broken. again! revert old math. RULE for me: do not accept patch without wide testing from author. That PR changes all plugins code, instead of do API, test and only after that touching working code. My bad.
  • unittest: added 6x6 Covariance conversion test
  • frame_conversions: update comments; filter covariance by value of element 0
  • unittests: corrected outputs from conversion tests
  • test: other quaternion transform tests
  • test: UAS::transform_frame_attitude_q()
  • test: test for UAS::transform_frame_attitude_rpy() (ERRORs!)
  • test: test for UAS::transform_frame_xyz()
  • test: Initial import test_frame_conv
  • coverity: make them happy
  • uncrustify: fix style on frame conversions
  • uncrustify: includes
  • plugin: sys_status #266: replace period with rate parameter
  • plugin: sys_time #266: Replace period with rate parameters
  • frame_conversion: last fix patch
  • frame_conversions: use inline functions to identify direction of conversion
  • changed frame conversion func name; add 3x3 cov matrix frame conversion; general doxygen comment cleanup
  • frame_conversions: added covariance frame conversion for full pose 6x6 matrix
  • frame_conversions: added frame_conversion specific lib file; applied correct frame conversion between ENU<->NED
  • sys_status #300: PX4 place in [0] lest significant byte of git hash.
  • sys_status fix #300: fix u8->hex func.
  • plugin: waypoint: cosmetics.
  • vibration_plugin: first commit
  • Changes some frames from world to body conversion for NED to ENU.
  • mavsys #293: add --wait option
  • mavsys: Fix arguments help
  • mavcmd #293: Add --wait option. New function: util.wait_fcu_connection(timeout=None) implement wait option.
  • sys_status #300: AUTOPILOT_VERSION APM quirk
  • mavros #302: fix style
  • mavros #302: split UAS impl by function blocks
  • mavros fix #301: move sensor orientation util to UAS
  • distance_sensor: typo; style fixe
  • sensor_orientation: list values correction
  • launch: APM:Plane 3.3.0 now support local_position. Blacklist distance_sensor.
  • sensor_orientation: use MAX as last index macro
  • distance_sensor: changed to usable config
  • launch: APM:Plane 3.3.0 now support local_position. Blacklist distance_sensor.
  • sensor_orientation: updated orientation enum; updated data type
  • sensor_orientation: included array type on utils.h
  • sensor_orientation: added sensor orientation matching helper func
  • distance_sensor: updated config file
  • distance_sensor: define sensor position through param config
  • distance_sensor: array limiting; cast correction; other minor correc
  • distance_sensor: small enhancements
  • sys_status #293: initialize state topic
  • sys_status #293: expose connection flag in mavros/State.
  • Contributors: TSC21, Tony Baltovski, Vladimir Ermakov

0.11.2 (2015-04-26)

  • plugin: param fix #276: add check before reset request downcounter. If on MR request FCU responses param with different [param_index]{.title-ref} do not reset repeat counter to prevent endless loop.
  • gcs bridge fix #277: add link diagnostics
  • plugin: setpoint_position #273: add quirk for PX4.
  • readme: fir glossary misprint
  • readme: add notes about catkin tool
  • Contributors: Vladimir Ermakov

0.11.1 (2015-04-06)

  • scripts #262: update mavwp
  • scripts #262: mavsetp, new module mavros.setpoint
  • mavftpfuse #129: cache file attrs
  • mavparam #262: use get_topic()
  • mavsys #262: use get_topic()
  • mavcmd #262: use get_topic()
  • mavftp #263, #262: use crc32 checksums
  • python #262: add get_topic()
  • Update local_position.cpp removed irritating comment
  • readme: add short glossary
  • plugin: setpoint_attitude: remove unneded ns
  • Contributors: Marcel Stuettgen, Vladimir Ermakov

0.11.0 (2015-03-24)

  • plugin: setpoint_position #247: rename topic
  • launch #257: rename blacklist.yaml to pluginlists.yaml
  • node #257: implement while list.
  • plugin: actuator_control #247: update topic name.
  • mavros: Initialize UAS before connecting plugin routing. Inspired by #256.
  • plugin: sys_status: Check sender id. Inspired by #256.
  • plugin: sys_status: Use WARN severity for unknown levels
  • uas: Add [UAS::is_my_target()]{.title-ref} Inspired by #256.
  • plugin: global_position: Fill status and covariance if no raw_fix. Additional fix for #252.
  • launch: change apm target component id APM uses 1/1 (sys/comp) by default.
  • plugin: sys_status: publish state msg after updating uas Before this commit, the custom mode string published in the state message was computed using the autopilot type from the previous heartbeat message--not the autopilot type from the current hearbeat message. Normally that isn\'t a problem, but when running a GCS and mavros concurrently, both connected to an FCU that routes mavlink packets (such as APM), then this causes the custom mode to be computed incorrectly, because the mode string for the GCS\'s hearbeat packet will be computed using the FCU\'s autopilot type, and the mode string for the FCU\'s heartbeat packet will be computed using the GCS\'s autopilot type.
  • plugin: global_position: fix nullptr crash This fixes a crash in cases where a GLOBAL_POSITION_INT message is received before a GPS_RAW_INT message, causing the [gps_fix]{.title-ref} pointer member to be dereferenced before it has been set.
  • msgs: fix spelling, add version rq.
  • coverity: init ctor in 3dr_radio
  • launch fix #249: update apm blacklist
  • launch: rename APM2 to APM.
  • launch #211: update configs
  • plugin: gps: remove unused param
  • plugin: sys_time: remove unused param
  • launch fix #248: remove radio launch
  • plugin: 3dr_radio #248: add/remove diag conditionally
  • plugin: sys_status: move connection params to ns
  • plugin: sys_time: fix #206 (param ns)
  • node: Inform what dialect built-in node
  • plugin: sys_status: Conditionaly add APM diag
  • plugin: sys_status: fix #244
  • uas #244: add enum lookups
  • package: update lic
  • license #242: update mavros headers
  • plugin: local_positon: use auto
  • plugin: imu_pub: Update UAS store.
  • plugin: gps: remove diag class, change UAS storage API.
  • plugin api #241: move diag updater to UAS.
  • plugin api #241: remove global private node handle. Now all plugins should define their local node handle (see dummy.cpp). Also partially does #233 (unmerge setpoint topic namespace).
  • plugin api #241: remove [get_name()]{.title-ref}
  • package: mavros now has any-link proxy, not only UDP
  • Update years. I left gpl header, but it is BSD too.
  • Add BSD license option #220
  • plugin: sys_status: AUTOPILOT_VERSION support. Fix #96.
  • mavros fix #235: Use AsyncSpinner to allow plugins chat. Old single-threaded spinner have a dead-lock if you tried to call a service from for example timer callback. For now i hardcoded thread count (4).
  • uncrustify: actuator_control
  • Merge branch \'master\' of github.com:mstuettgen/Mavros
  • fixed missing ;
  • code cosmetics
  • further removed unneeded white spaces and minor code cosmetics
  • fixed timestamp and commented in the not-working function call
  • code cosmetics, removed whitespaces and re-ordered function signatures
  • more code comment cosmetic
  • code comment cosmetic
  • uncrustify: fix style
  • readme: add contributing notes
  • uncrustify: mavros base plugins
  • uncrustify: mavros lib
  • uncrustify: mavros headers
  • tools: add uncrustify cfg for fixing codestyle Actually it different from my codestyle, but much closer than others.
  • added more const to function calls to ensure data consistency
  • modified code to fit new message
  • added group_mix to ActuatorControl.msg and a link to mixing-wiki
  • plugin: rc_io: Add override support warning
  • REALLY added ActuatorControl.msg
  • added ActuatorControl.msg
  • fixed latest compiler error
  • renamed cpp file to actuator_control.cpp and added the new plugin to mavros_plugins.xml
  • removed unneeded Mixinx and reverse_throttle, and unneeded variables in function signatures
  • inital draft for set_actuator_control plugin
  • launch: enable setpoint plugins for APM As of ArduCopter 3.2, APM supports position and velocity setpoints via SET_POSITION_TARGET_LOCAL_NED.
  • plugin: setpoint_velocity: Fix vx setpoint vz should have been vx.
  • Contributors: Clay McClure, Marcel Stuettgen, Vladimir Ermakov

0.10.2 (2015-02-25)

  • Document launch files
  • launch: Fix vim modelines #213
  • launch #210: blacklist image_pub by px4 default. Fix #210.
  • Contributors: Clay McClure, Vladimir Ermakov

0.10.1 (2015-02-02)

  • Fix \@mhkabir name in contributors.
  • uas #200: Add APM:Rover custom mode decoding. Fix #200.
  • uas #200: Update APM:Plane and APM:Copter modes.
  • Contributors: Vladimir Ermakov

0.10.0 (2015-01-24)

  • mavros #154: Add IO stats to diagnostics. Fix #154.
  • Add rosindex metadata
  • plugin: ftp: init ctor.
  • plugin: sts_time: Code cleanup and codestyle fix.
  • plugin: command: Quirk for older FCU\'s (component_id) Older FCU\'s expect that commands addtessed to MAV_COMP_ID_SYSTEM_CONTROL. Now there parameter: [~cmd/use_comp_id_system_control]{.title-ref}
  • plugin: rc_io: #185 Use synchronized timestamp.
  • plugin: gps: #185 use synchronized timestamp common.xml tells that GPS_RAW_INT have time_usec stamps.
  • uas: Fix ros timestamp calculation. Issues: #186, #185.
  • plugin: add synchronisation to most plugins (fixed) Closes #186.
  • readme: Add notes about coordinate frame conversions #49
  • Contributors: Mohammed Kabir, Vladimir Ermakov

0.9.4 (2015-01-06)

  • plugin: sys_time: enable EMA
  • Contributors: Mohammed Kabir

0.9.3 (2014-12-30)

  • plugin: visualization finshed
  • Restore EMA. Works better for low rates.
  • Update sys_time.cpp
  • plugin : add time offset field to dt_diag
  • Final fixes
  • minor
  • plugin : fixes timesync. FCU support checked.
  • Visualisation system import
  • param: Fix float copying too
  • param: Fix missing
  • param: Trynig to fix \'crosses initialization of XXX\' error.
  • param: Try to fix #170.
  • Update units
  • New message, moving average compensation
  • Initial import new sync interface
  • plugin: sys_status: Enable TERRAIN health decoding.
  • Contributors: Mohammed Kabir, Vladimir Ermakov

0.9.2 (2014-11-04)

0.9.1 (2014-11-03)

  • Update installation notes for #162
  • Contributors: Vladimir Ermakov

0.9.0 (2014-11-03)

0.8.2 (2014-11-03)

  • REP140: update package.xml format. Hydro don\'t accept this format correctly, but after split i can update.
  • Contributors: Vladimir Ermakov

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 FTP:Checksum. Issue #128.
  • plugin: ftp: Add support for FTP:Rename. Issue #128.
  • python: Add FTP:Truncate
  • plugin: ftp: Add FTP:Truncate call. Issue #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 FTP:Remove call. Issue #128.
  • plugin: ftp: Add response errno from server.
  • plugin: ftp: Add support for \'Skip\' list entries. Issue #128.
  • scripts: mavftp: Add mkdir/rmdir support. Issue #128.
  • plugin: ftp: Add mkdir/rmdir support. Issue #128.
  • plugins: ftp: Update protocol headers. Issue #128.
  • Revert \"Update package.xml format to REP140 (2).\" This reverts commit 81286eb84090a95759591cfab89dd9718ff35b7e. ROS Hydro don\'t fully support REP140: rospack can\'t find plugin descriptions. Fix #151.
  • scripts: mavwp: Fix --follow mode
  • plugin: imu_pub: Fix RAW_IMU/SCALED_IMU angular scale constant. Fix #152.
  • launch: remove px4_local_gcs.launch again. It removed in 826be386938c2735c9dab72283ba4ac1c68dc860, but accidentally returned.
  • extras: launch: Use includes. Fix #144.
  • launch: PX4: use node.launch in PX4 scripts. Also remove px4_local_gcs.launch: please use [roslaunch mavros px4.launch gcs_url:=udp://\@localhost]{.title-ref} instead. Issue #144.
  • launch: APM2: Add node.launch and update apm scripts to use it. Issue #144.
  • plugin: command: Fix CommandInt x,y types.
  • Update package.xml format to REP140 (2). Fix #104.
  • launch: Blacklist FTP for APM.
  • scripts: mavwp: Add decoding for some DO-* mission items.
  • scripts: mavwp: Add preserve home location option at load operation. Useful if FCU stores home location in WP0 (APM).
  • Added src location.
  • Updated README wstool instructions.
  • plugin: ftp: Init ctor
  • service: mavftp: Initial import. Issue #128.
  • plugin: ftp: Implemnet reset call. Sometimes kCmdReset can restore normal operation, but it might be dangerous. Issue #128.
  • plugin: ftp: Implement FTP:Read call. Issue #128.
  • plugin: ftp: Fix open error. Issue #128.
  • plugin: ftp: Implement FTP:Open (read) and FTP:Close. Issue #128.
  • plugin: ftp: Implement FTP:List method. Issue #128.
  • plugin: ftp: Implement list parsing Issue #128.
  • plugin: ftp: Fix CRC32 calculation. Issue #128.
  • plugin: ftp: Add plugin skeleton. Based on QGroundContol QGCUASFileManager.h/cc. Issue #128.
  • plugin: ftp: Add size info
  • plugin: ftp: Add plugin service API. Issue #128.
  • plugin: vfr_hud: Initial import. Also this plugin publish APM specific WIND estimation message. Fix #86.
  • node: coverity fails at UAS initilizer list
  • plugin: setpoint_attitude: Init ctor, remove code dup.
  • cmake: Add check MAVLINK_DIALECT value Fix #139.
  • Move common cmake rules to modules. Same mech as in [cmake_modules]{.title-ref} package. Issue #139.
  • launch: corrected launch for gcs bridge
  • scripts: mavsetp: Fix misprint.
  • launch files: added px4 launch files for connection with radio and gcs
  • scripts: mavsetp: Fix twist.angular vector construction. Small style fix.
  • Update doxygen documentation. Add split lines in UAS, and make UAS.connection atomic. Add rosdoc configuration for mavros_extras.
  • scripts: mavsetp: corrected API; added possibility of parse angles in dg or rad
  • scripts: mavsetp: corrected msg API; mavteleop: added prefix to rc override
  • scripts: mavsetp: added local accel; corrected how the OFFBOARD mode is swtch.
  • scripts: mavsetp: changed the way offboard mode is switched
  • node: init ctor (coverity)
  • nodelib: add std::array header
  • return msg generator deps for mavconn
  • scripts: mavsys: Implement set rate command.
  • scripts: Add mavsys tool. Implented only [mode]{.title-ref} operation. Issue #134.
  • plugin: sys_status: Implement set_mode service. Previous command shortcut removed. Issue #136, #134.
  • node: Implement reverse mode lookup. Issue #136.
  • plugin: sys_status: Move custom mode decoder to UAS. Issue #136.
  • node: Catch URL open exception. Also update connection pointer type.
  • nodelib: move sources to subdir
  • node: Move UAS to mavros namespace
  • node: Move node code to library.
  • node: Catch DeviceError; use C++11 foreach shugar.
  • plugin: command: Add COMMAND_INT suport. Fix #98.
  • Contributors: Nuno Marques, Tony Baltovski, Vladimir Ermakov

0.7.1 (2014-08-25)

  • plugins: setpoint: Update SET_POSITION_TARGET_LOCAL_NED message. Fix #131.
  • scripts: mavsetp: Enable OFFBOARD mode. Issue #126.
  • plugin: command: Add guided_enable shortcut It enable PX4 OFFBOARD mode. Issue #126.
  • scripts: Add mavsetp script. Only local setpoint for now. Issue #126.
  • plugins: Change UAS FCU link name. Reduce smart pointer count, that hold fcu link object.
  • scripts: mavcmd: Add takeoffcur and landcur commands Fix #91, #92. Inspired by #125.
  • Closes #122, closes #123; plugins: move mocap & vision plugins to extras, change vision plugins name
  • plugins: UAS remove std::atomic<double> It don\'t work at some compilers. Issue #89.
  • plugin: global_position: Fill NavSatFix status filed. Issue #87, #118.
  • plugins: Add GPS data to UAS
  • plugins: Move setpoint_mixin.h Fix #120.
  • plugin: mocap: Fix load. Issue #121.
  • plugins: global_position: get pose orientation from the one stored in uas
  • plugins: global_position: use relative_alt on position.z; mavros_plugins.xml - corrected declaration of mocap_pose_estimate
  • plugin - global_position - changed parameter path / orientation source
  • launch: APM2 blacklist global_position plugin
  • plugin: global_position: Unit unification.
  • plugin: global_position: Move heaedr; Style fix.
  • added rel_pos and compass_hdg pub; minor corrections
  • Merge branch \'master\' of https://github.com/vooon/mavros into global_position
  • global_position plugin - initial commit
  • launch: APM2 blacklist mocap plugin.
  • Updated mavros_plugins.xml
  • Fixed dual sources error warning.
  • Fixed styles.
  • Minor changes.
  • added time stamp to received msgs
  • Removed un-needed times.
  • Added mocap_pose_estimate plugin.
  • Code style update
  • setpoint attitude change - warning message
  • Update on setpoint_attitude plugin
    • changed Twist to TwistStamped
    • added reverse_throttle option for throttle control
    • use cmd_vel as the same topic to control linear a angular velocities (it\'s commonly used by controllers)
    • added normalization filter to thrust
  • node: Remove deprecated conn parameters. Fix #108
  • plugin: vision_speed: Update plugin API.
  • plugin: setpoint_attitude: Update plugin API.
  • plugin: setpoint_accel: Update plugin API.
  • plugin: setpoint_velocity: Update plugin API.
  • plugin: 3dr_radio: Update plugin API.
  • plugin: safety_area: Update plugin API.
  • plugin: setpoint_position: Update plugin API.
  • plugin: vision_position: Update plugin API.
  • plugin: local_position: Update plugin API.
  • plugin: command: Update plugin API.
  • plugin: rc_io: Update plugin API.
  • plugin: waypoint: Update plugin API.
  • plugin: param: Update plugin API.
  • plugin: gps: Update plugin API.
  • plugin: imu_pub: Update plugin API.
  • plugin: sys_status: Update plugin API.
  • plugin: Update plugin API.
  • plugins: disable most of plugins
  • plugin: setpoint_attitude: Add thrust topic. Fix #106.
  • Fix URLs in readme
  • mavros -> ros-message parameter fix only parameter1 was forwarded into the ros message
  • Switch travis to pixhawk dialect. Default dialect build by ros buildfarm. Also remove duplicate ci statuses from mavros readme.
  • Contributors: Nuno Marques, Tony Baltovski, Vladimir Ermakov, mthz

0.7.0 (2014-08-11)

  • Add package index readme, Fix #101
  • move mavros to subdirectory, #101
  • Merge branch \'master\' of github.com:vooon/mavros * \'master\' of github.com:vooon/mavros: Add link to ros-*-mavlink package wiki page.

  • plugins: setpoint: Update setpoint message name. Issue #94, Fix #97.

  • plugin: setpoint_attitude: Update message name. Issues #94, #97.

  • Add link to ros-*-mavlink package wiki page.

  • plugin: gps: Fix gcc 4.6 build (atomic). Not recommended to use std::atomic with gcc 4.6. So i limited to prederined atomics for simple types like int, float etc.

  • plugin: sys_status: Implement PX4 mode decoding. Fix #84.

  • plugin: gps: Add EPH & EPV to diagnostic. Issue #95

  • plugin: gps: Move message processing to individual handlers. Issue #95.

  • plugin: rc_io: Replace override service with topic. (ROS API change). Fix #93.

  • Add dialect selection notes

  • plugins: Change severity for param & wp done messages.

  • plugins: Store raw autopilot & mav type values. This may fix or not issue #89.

  • plugins: init ctor (coverity)

  • plugin: imu_pub: Add ATTITUDE_QUATERNION support. Also reduce copy-paste and use mode readable bitmask check. Fix #85.

  • scriptis: mavcmd: Spelling

  • scripits: Add mavcmd tool

  • Add links to mavros_extras

  • param: sys_status: Option to disable diagnostics (except heartbeat)

  • plugin: command: Add takeoff and land aliases. Issue #68.

  • plugin: command: Add quirk for PX4. Fix #82.

  • plugin: Add UAS.is_px4() helper. Replace some locks with atomic. Issue #82.

  • launch: Clear PX4 blacklist. Issue #68.

  • launch: Add target ids. Also fix PX4 wrong ?ids usage (it set mavros ids, not target). Issue #68.

  • plugin: imu_pub: Fix HRIMU pressure calc. 1 mBar is 100 Pa. Fix #79.

  • plugins: C++11 chrono want time by ref, return *_DT Fix #80.

  • plugins: Replace boost threads with C++11. And remove boost thread library from build rules. Issue #80.

  • plugins: Replace Boost condition variables with C++11 Issue #80.

  • plugins: Replace boost mutexes with C++11. Issue #80.

  • travis clang to old, fails on boost signals2 library. disable.

  • travis: enable clang build.

  • node: Make project buildable by clang. Clang produce more readable errors and provide some static code analysis, so i want ability to build mavros with that compilator.

  • plugins: replace initial memset with c++ initializer list

  • launch: PX4 default ids=1,50. Also waypoint plugin works (with first_pos_control_flight-5273-gd3d5aa9). Issue #68.

  • launch: Use connection URL

  • plugin: vision_speed: Initial import. Fix #67.

  • plugin: sys_status: Add SYSTEM_TIME sync send. Fix #78.

  • plugin: sys_status: Decode sensor health field. Fix #75.

  • Add ci badges to readme

  • plugin: param: erase invalidates iterator. Real error found by coverity :)

  • plugins: Init ctor

  • plugins: Add ctor initialization. Coverity recommends init all data members.

  • test: trying travis-ci && coverity integration. Real ci doing by ros buildfarm.

  • plugins: Fix clang-check errors.

  • test: Add tcp client reconnect test. Issue #72.

  • test: Split open_url test to individual tests. Also removed tcp client deletion on close, heisenbug here. Issue #72.

  • mavconn: Emit port_closed after thread stop. Also use tx state flag, improve error messages and move io post out of critical section. Issue #72.

  • mavconn: Fix TCP server client deletion. Issue #72.

  • test: Remove not needed sleep.

  • mavconn: Remove new MsgBuffer dup. Message drop if closed. Issue #72.

  • mavconn: Fix TCP server. Issue #72.

  • launch: APM2: Blacklist extras.

  • mavconn: Add mutex to channel allocation.

  • mavconn: Fix TCP server for gcc 4.6 Fix #74.

  • Remove libev from package. Issue #72.

  • mavconn: GCC 4.6 does not support typedef like using. Issue #74.

  • Merge pull request #73 from vooon/mavconn-revert-asio mavconn: Revert to Boost.ASIO

  • mavconn: Cleanup boost threads. I will use C++11 standard libs. Issue #72.

  • mavconn: Remove libev default loop thread. Issue #72.

  • mavconn: Port MAVConnTCPServer to Boost.ASIO. TCP send test fails. Issue #72.

  • mavconn: Port MAVConnTCPClient to Boost.ASIO. Also it disables MAVConnTCPServer before i rewrite it. Issue #72.

  • mavconn: Revert MAConnSerial back to Boost.ASIO. Issue #72.

  • test: Fix send_message tests. Use C++11. Issue #72.

  • mavconn: Revert MAVConnUDP back to Boost.ASIO. Also starting to change boost threads and mutexes to C++11. Issue #72.

  • test: Enable send tests. Issue #72.

  • test: And hand test for mavconn hangs. Issue #72.

  • node: Remove anonimous flag from gcs_bridge. Rename node if you want start several copies.

  • install: Remove duplicate

  • node: Fix mavros_node termination message. Issue #58.

  • node: Use URL in mavros_node. Fix #58.

  • node: Use URL in gcs_bridge. Issue #58.

  • node: Rename ros_udp to gcs_bridge. Because now it\'s not UDP only. Issue #58.

  • Cleanup boost components

  • mavconn: Implement URL parsing. Supported shemas:

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

    * TCP server: [tcp-l://[bind_port][:port][/?ids=sysid,compid]]{.title-ref} Note: ids from URL overrides ids given to open_url(). Issue #58.

  • test: Add tests for UDP, TCP, SERIAL. Send message testa are broken, need to find workaround. Fix #70.

  • plugin: vision_position: Add transform timestamp check. Issue #60.

  • mavconn: Implement TCP server mode. Fix #57.

  • mavconn: Initial support for TCP client mode. Issue #57.

  • mavconn: Boost::asio cleanup.

  • plugin: Remove TimerService from UAS. Fix #59.

  • plugin: param: Add state check to sheduled pull.

  • mavparam: Add force pull.

  • plugin: param: Use ros::Timer for timeouts Also new option for force pull parameters from FCU instead of cache. Fix #59.

  • Add mavsafety info to README.

  • launch: Add apm2_radio.launch (for use with 3DR Radio)

  • plugin: 3dr_radio: Fix build error. Issue #62.

  • plugin: 3dr_radio: Publish status data for rqt_plot Also tested with SiK 1.7. Fix #62.

  • plugin: setpoint_attitude: Fix ENU->NED conversion. Fix #64. Related #33, #49.

  • launch: Add setpoint plugins to APM2 blacklist

  • plugin: setpoint_attitude: Initial import. XXX: need frame conversion #49. Issue #33, #64.

  • plugin: Move common tf code to mixin. Remove copy-paste tf_listener. Issue #33.

  • plugin: setpoint_position: Generalize topic NS with other [setpoint_*]{.title-ref} Issue #33, #61.

  • plugin: setpoint_accel: Initial import. Issues: #33, #61.

  • plugin: position_velocity: Initial import. Also it fix ignore mask in setpoint_position. Issues #33, #61.

  • plugins: 3rd_radio: Initial import. Untested. Issue #61.

  • scripts: Add mavsafety tool. Also add safety_area to APM2 blacklist. Fix #51.

  • plugins: safty_area: Initial import. This plugin listen [~/safety_area/set]{.title-ref} and send it\'s data to FCU. Issue #51.

  • plugins: position: Add TF rate limit. Issue #33.

  • plugin: waypoint: Use ros::Timer for timeouts. Also add some debug messages for next debugging PX4. Issue #59.

  • plugin: sys_status: Use ros::Timer for timeouts Also move message rx to it\'s own handlers. Issue #59.

  • Remove rosdep.yaml and update readme

  • Add deb build notes to readme. Issue #55.

  • Add sudo notes to readme.

  • Merge pull request #56 from vooon/54_try_libev Switch to libev

  • Add libev to README

  • package: Add temporary rosdep for libev-dev. Issue #54.

  • mavconn: Move MAVConnUDP to libev. And fix docs in serial. Issue #54.

  • mavconn: Move MAVConnSerial to libev. Adds stub for open URL function. Issure #54.

  • Contributors: Vladimir Ermakov, Mohammed Kabir, Nuno Marques, Glenn Gregory

0.6.0 (2014-07-17)

  • plugin: local_position: Use same timestamp in topic and TF. Issue #33.
  • plugins: TF thread required, remove notes. Issue #33.
  • launch: Add example launch for PX4 Issue #45.
  • plugin: imu_pub: Fix attitude store in UAS Issue #33. Fix #53.
  • plugins: Disable position topics if tf_listen enabled Also change default frame names: [vision]{.title-ref} and [setpoint]{.title-ref}. Issue #33.
  • plugins: Fix typo in frame_id params. Issue #33.
  • plugins: Add vision and setpoint TF listeners Also change parameter names to same style. Issue #33.
  • plugin: vision_position: Add PositionWithCovarianceStamped option Issue #33.
  • Add boost filesystem lib to link On some platforms its absence breaks build by: undefined reference to [boost::filesystem::path::codecvt()]{.title-ref}
  • launch: Add example for APM2 Fix #45.
  • plugin: setpoint_position: Initial import And some small doc changes in other position plugins. Issue #33.
  • node: Add connection change message Fix #52.
  • plugins: vision_position: Initial import TODO: check ENU->NED maths. Issue #33.
  • plugins: Remove unneded \'FCU\' from diag
  • plugin: local_position: Change plane conversion Bug: #49.
  • plugin: imu_pub: Fix magnetic vector convertions Bug: #49.
  • Use dialects list from package
  • plugin: local_position: Fix orientation source Part of #33.
  • node: Show target system on startup Fix #47.
  • plugin: local_position: Initial add Receive LOCAL_POSITION_NED message and publish it via TF and PoseStamped topic in ENU frame. Part of #33.
  • node: Use boost::make_shared for message allocation Fix #46.
  • plugins: Use boost::make_shared for message allocation Part of #46.
  • plugin: imu_pub: Fix misprint in fill function Fix magnetometer vector convertion (HR IMU). Related #33.
  • plugin: imu_pub: setup cleanup.
  • Update readme
  • plugin: gps: Fix gps_vel calculation Fix #42.
  • plugins: Make name and messages methods const. (breaking). WARNING: this change broke external plugins. Please add const to get_name() and get_supported_messages(). Part of #38.
  • plugins: Use mavlink_msg*_pack_chan() functions Fix #43.
  • mavconn: Reuse tx buffer (resize by extents) Part of #38.
  • mavconn: Do not finalize messages if id pair match mavlink*_pack also do finalize, so explicit finalization just recalculate crc and seq number (doubles work). Test later if we need check seq too.
  • mavconn: Documentation and cleanup Make MAVConn classes noncopyable. Remove copy-paste copy and following async_write calls. Reserve some space in tx queues. Replace auto_ptr with unique_ptr.
  • test: Fix header include
  • mavconn: Fix possible array overrun in channel alocation. Problem found by clang.
  • fix some roslint errors
  • mavconn: move headers to include
  • node: Implement plugin blacklist. New parameter: [~/plugin_blacklist]{.title-ref} lists plugin aliases with glob syntax. Fix #36.
  • plugins: Change constants to constexpr (for gcc 4.6)
  • mavconn: Add gencpp dependency (utils.h requiers generated header)
  • Move duplicate Mavlink.msg copy to utils.h
  • Remove tests that requires connection to FCU
  • plugins: imu_pub: Fix PX4 imu/data linear_accelerarion field Should fix: #39.
  • plugins: imu_pub: Add magnitic covariance Trying to move constants with constexpr. Related: #13.
  • Remove testing info Need to remove tests that could not run on build farm.
  • Contributors: Vladimir Ermakov

0.5.0 (2014-06-19)

  • Remove mavlink submodule and move it to package dependency Bloom release tool don\'t support git submodules, so i\'ve ceate a package as described in http://wiki.ros.org/bloom/Tutorials/ReleaseThirdParty . Fix #35.
  • plugins: param: add missing gcc 4.6 fix.
  • plugins: fix const initializers for gcc 4.6
  • plugins: imu_pub: fix const initializers for gcc 4.6 Fix for build failure devel-hydro-mavros #4.
  • Add support for GCC 4.6 (C++0x, ubuntu 12.04) I don\'t use complete c++11, so we could switch to c++0x if it supported.
  • plugins: rc_io: Add override rcin service Fix: #22.
  • plugins: sys_status: fix timeouts Fix #26.
  • plugins: sys_status: add set stream rate service Some additional testing required. Fix #23.
  • Remove unused boost libarary: timer Build on jenkins for hydro failed on find boost_timer.
  • 0.4.1
  • Add changelog for releasing via bloom

0.4.1 (2014-06-11)

  • node: Show serial link status in diag Now \'FCU connection\' shows actual status of connection (HEARTBEATS).
  • Fix #29. Autostart mavlink via USB on PX4 Changes mavconn interface, adds new parameter.
  • Fix installation rules. Fix #31.
  • Setup UDP transport for /mavlink messages
  • Fix mavlink dialect selection Fix #28.
  • Add link to wiki.ros.org Part of #27.

0.4.0 (2014-06-07)

  • Release 0.4.0 And some docs for CommandPlugin.
  • plugins: command: Command shortcuts Fix #12.
  • plugins: command: Add ACK waiting list Part of #12.
  • plugins: command: Initial naive realization. Partial #12, #25.
  • mavconn: Fix build on Odroid with Ubuntu 13.10 Fix #24.
  • plugins: rc_io: initial add RC_IO plugin Topics:

    • ~/rc/in -- FCU RC inputs in raw microseconds

    * ~/rc/out -- FCU Servo outputs Fix #17. Partiall #22.

  • Fix installation wstool command. [wstool set]{.title-ref}, not [wstool add]{.title-ref}.

  • Add installation notes to README Installing pymavlink is not required, but try if errors.

  • Fix headers in README.md

  • ros_udp: New node for UDP proxing Add some examples to README.md. Fix #21.

  • sys_status: Add state publication Fix #16.

  • sys_status: Sent HEARTBEAT if conn_heartbeat > 0 Fix #20.

  • sys_status: add sensor diagnostic See #16.

  • sys_status: Add battery status monitoring Fix #19, partial #16.

  • sys_status: HWSTATUS support Fix #18, partial #20.

  • plugins: imu_pub: Add RAW_IMU, SCALED_IMU and SCALED_PRESSURE handlers Fix #13. Refactor message processing. Combination of used messages: On APM: ATTITUDE + RAW_IMU + SCALED_PRESSURE On PX4: ATTITUDE + HIGHRES_IMU On other: ATTITUDE + (RAW_IMUHIGHRES_IMU Published topics:

    • ~imu/data - ATTITUDE + accel data from *_IMU
    • ~imu/data_raw - HIGHRES_IMU or SCALED_IMU or RAW_IMU in that order
    • ~imu/mag - magnetometer (same source as data_raw)
    • ~imu/temperature - HIGHRES_IMU or SCALED_PRESSURE
    • ~imu/atm_pressure - same as temperature
  • Update readme

  • mavwp: Add --pull option for \'show\' operation. Reread waypoints before show.

  • MissionPlanner use format QGC WPL, Fix #15 Code cleanup;

  • Update mavlink version.

  • Update mavlink version

  • mavparam: fix #14 support for QGC param files

  • mavwp: Add mavwp to install

0.3.0 (2014-03-23)

  • Release 0.3.0
  • mavwp: Add MAV mission manipulation tool Uses WaypointPlugin ROS API for manipulations with FCU mission.

    • show -- show current mission table
    • pull -- update waypoint table
    • dump -- update and save to file
    • load -- loads mission from file
    • clear -- delete all waypoints
    • setcur -- change current waypoint

    - goto -- execute guided goto command (only APM) Currently supports QGroundControl format only.

  • plugins: wp: Add GOTO, update documentation

  • plugins: wp: Auto pull

  • plugins: wp: SetCurrent & Clear now works

  • plugins: wp: Push service works

  • plugins: wp: push almost done

  • plugins: wp: Pull done

  • plugins: param: remove unused ptr

  • plugins: wp: mission pull almost done

  • plugins: wp: Add convertors & handlers

  • plugins: Waypoint plugin initial

  • Use C++11 feuture - auto type

  • plugins: refactor context & link to single UAS class UAS same functions as in QGC.

  • plugins: Add msgs and srvs for Waypoint plugin

  • Update mavlink library

  • Update mavlink version

  • mavparam: Fix for DroidPlanner param files & cleanup DroidPlanner adds some spaces, don\'t forget to strip it out. Cleanup unused code from Parameter class.

0.2.0 (2014-01-29)

  • mavparam: Add MAV parameter manipulation tool Uses ParamPlugin ROS API for manipulating with fcu params.

    • load -- load parameter from file
    • dump -- dump parameter to file
    • get -- get parameter

    - set -- set parameter Currently supports MissionPlanner format only. But DroidPlanner uses same format.

  • Update README and documentation

  • plugins: param: implement ~param/push service Also implement sync for rosparam:

    • ~param/pull service pulls data to rosparam
    • ~param/push service send data from rosparam
    • ~param/set service update rosparam if success
  • plugins: param: implement ~param/set service

  • plugins: param: implement ~param/get service

  • plugins: param: Implement automatic param list requesting

  • plugins: use recursive_mutex everywhere

  • plugins: param now automaticly requests data after connect

  • plugins: Add common io_service for plugins, implement connection timeout Some plugin require some delayed processes. Now we can use boost::asio::*timer. New parameter:

    • ~/conn_timeout connection timeout in seconds
  • plugins: add param services

  • mavconn: set thread names WARNING: pthread systems only (BSD/Linux)

  • plugins: implement parameters fetch service

  • plugins: fix string copying from mavlink msg

  • plugins: Setup target in mav_context New params:

    • ~target_system_id - FCU System ID
    • ~target_component_id - FCU Component ID
  • plugins: IMU Pub: add stdev parameters, change topic names. Add parameters:

    • ~imu/linear_acceleration_stdev - for linear acceleration covariance
    • ~imu/angular_velocity_stdev - for angular covariance

    - ~imu/orientation_stdev - for orientation covariance Change topic names (as in other IMU drivers): - ~imu -> ~/imu/data - ~raw/imu -> ~/imu/data_raw

  • plugins: Params initial dirty plugin

  • Fix mavlink dialect choice.

  • plugins: Add context storage for automatic quirk handling ArduPlilot requires at least 2 quirks:

    • STATUSTEXT severity levels
    • parameter values is float
  • Implement MAVLink dialect selection ArduPilotMega is default choice.

  • doc: add configuration for rosdoc_lite

0.1.0 (2014-01-05)

  • Version 0.1.0 Milestone 1: all features from mavlink_ros package.xml was updated.
  • Fix typo and add copyright string NOTE: Please check typos before coping and pasting :)
  • plugins: gps: Add GPS_RAW_INT handler GPS_STATUS not supported by APM:Plane. ROS dosen\'t have standard message for satellites information.
  • mavconn: small debug changes Limit no GCS message to 10 sec.
  • node: Terminate node on serial port errors
  • plugins: Add GPS plugin SYSTEM_TIME to TimeReference support. TODO GPS fix.
  • Fix build and update MAVLink library
  • plugins: sys_status: Add SYSTEMTEXT handler Two modes:

    • standard MAV_SEVERITY values

    - APM:Plane (default) TODO: add mavlink dialect selection option

  • plugins: add some header doxygen tags Add license to Dummy.cpp (plugin template).

  • plugins: sys_status: Add MEMINFO handler MEMINFO from ardupilotmega.xml message definition. Optional.

  • update README

  • update TODO

  • plugins: Add imu_pub plugin. Publish ATTITUDE and HIGHRES_IMU data. HIGHRES__IMU not tested: Ardupilot sends ATTITUDE only :(

  • node: publish Mavlink.msg only if listners > 0

  • plugins: Add sys_status plugin. Initial.

  • plugins: implement loading & rx routing

  • plugins: initial

  • node: Add diagnostics for mavlink interfaces

  • mavconn: add information log wich serial device we use.

  • mavconn: fix overloaded MAVConn*::send_message(msg)

  • mavros: Add mavros_node (currently serial-ros-udp bridge) Message paths: Serial -+-> ROS /mavlink/from +-> UDP gcs_host:port ROS /mavlink/to -+-> Serial UDP bind_host:port -+

  • Add README and TODO files.

  • mavconn: fix MAVConnUDP, add mavudpproxy test mavudpproxy -- connection proxy for QGroundControl, also used as test for MAVConnUDP and MAVConnSerial.

  • mavconn: add UDP support class

  • mavconn: fix: should use virtual destructor in interface class

  • mavconn: add getters/setters for sys_id, comp_id; send_message return.

  • mavconn: simple test. tested with APM:Plane: works.

  • mavconn: fix linking

  • mavconn: serial interface

  • Add mavconn library prototype mavconn - handles MAVLink connections via Serial, UDP and TCP.

  • Add MAVLink library + build script

  • Initial Import Mavlink.msg from mavlink_ros package ( https://github.com/mavlink/mavlink_ros ).

  • Contributors: Vladimir Ermakov

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • launch/px4.launch
      • fcu_url [default: /dev/ttyACM0:57600]
      • gcs_url [default: ]
      • tgt_system [default: 1]
      • tgt_component [default: 1]
      • log_output [default: screen]
  • 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/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • pluginlists_yaml
      • config_yaml
      • 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]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

mavros package from mavros repo

libmavconn mavros mavros_extras

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).

ROS API documentation moved to wiki.ros.org.

Features

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

Limitations

Only for linux. Depends on Boost library >= 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 build from mavlink-gbp-release. 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
rosrun mavros mavsafety disarm

mavcmd -- commander tool

See --help.

Examples:

rosrun mavros mavcmd takeoff 20 15 0 0 50
rosrun mavros mavcmd sethome --current-gps 0 0 0

Installation

Use wstool utility for installation. In your workspace do:

wstool init src (if not already initialized)
wstool set -t src mavros --git https://github.com/mavlink/mavros.git
wstool update -t src
rosdep install --from-paths src --ignore-src --rosdistro hydro -y

Then use regular catkin_make for build and install. Notes: since v0.5 (and #35) mavlink submodule moved to special ROS 3rd party package ros-*-mavlink.

Important. The current implementation of mavlink does not allow to select dialect in run-time, so mavros package (and all plugin packages) have compile-time option MAVLINK_DIALECT, default is 'aurdupilotmega'.

If you want change dialect you can:

  1. Add cmake definition to catkin: catkin_make -DMAVLINK_DIALECT=pixhawk
  2. Edit configuration by catkin_make edit_cache
  3. Use cmake-gui build, better: it creates drop-down list with all available dialects plus it will be used in next catkin_make edit_cache. Ubuntu: sudo apt-get install cmake-qt-gui

If rosdep could not install mavlink library, you could install it from source:

mkdir -p ~/ros_deps/src
cd ~/ros_deps
rosinstall_generator mavlink | tee rosinstall.yaml
wstool init src ./rosinstall.yaml
catkin_make_isolated --install-space $ROSINSTALL --install -DCMAKE_BUILD_TYPE=Release

$ROSINSTALL must be writable for user or you can add sudo -s to last command. Or you could build debian package by pulling right bloom branch from mavlink-gbp-release (common naming: debian/<rosdistro>/<osdistro>/<package>) using dh binary.

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 FTP:Checksum. Issue #128.
  • plugin: ftp: Add support for FTP:Rename. Issue #128.
  • python: Add FTP:Truncate
  • plugin: ftp: Add FTP:Truncate call. Issue #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 FTP:Remove call. Issue #128.
  • plugin: ftp: Add response errno from server.
  • plugin: ftp: Add support for \'Skip\' list entries. Issue #128.
  • scripts: mavftp: Add mkdir/rmdir support. Issue #128.
  • plugin: ftp: Add mkdir/rmdir support. Issue #128.
  • plugins: ftp: Update protocol headers. Issue #128.
  • Revert \"Update package.xml format to REP140 (2).\" This reverts commit 81286eb84090a95759591cfab89dd9718ff35b7e. ROS Hydro don\'t fully support REP140: rospack can\'t find plugin descriptions. Fix #151.
  • scripts: mavwp: Fix --follow mode
  • plugin: imu_pub: Fix RAW_IMU/SCALED_IMU angular scale constant. Fix #152.
  • launch: remove px4_local_gcs.launch again. It removed in 826be386938c2735c9dab72283ba4ac1c68dc860, but accidentally returned.
  • extras: launch: Use includes. Fix #144.
  • launch: PX4: use node.launch in PX4 scripts. Also remove px4_local_gcs.launch: please use [roslaunch mavros px4.launch gcs_url:=udp://\@localhost]{.title-ref} instead. Issue #144.
  • launch: APM2: Add node.launch and update apm scripts to use it. Issue #144.
  • plugin: command: Fix CommandInt x,y types.
  • Update package.xml format to REP140 (2). Fix #104.
  • launch: Blacklist FTP for APM.
  • scripts: mavwp: Add decoding for some DO-* mission items.
  • scripts: mavwp: Add preserve home location option at load operation. Useful if FCU stores home location in WP0 (APM).
  • Added src location.
  • Updated README wstool instructions.
  • plugin: ftp: Init ctor
  • service: mavftp: Initial import. Issue #128.
  • plugin: ftp: Implemnet reset call. Sometimes kCmdReset can restore normal operation, but it might be dangerous. Issue #128.
  • plugin: ftp: Implement FTP:Read call. Issue #128.
  • plugin: ftp: Fix open error. Issue #128.
  • plugin: ftp: Implement FTP:Open (read) and FTP:Close. Issue #128.
  • plugin: ftp: Implement FTP:List method. Issue #128.
  • plugin: ftp: Implement list parsing Issue #128.
  • plugin: ftp: Fix CRC32 calculation. Issue #128.
  • plugin: ftp: Add plugin skeleton. Based on QGroundContol QGCUASFileManager.h/cc. Issue #128.
  • plugin: ftp: Add size info
  • plugin: ftp: Add plugin service API. Issue #128.
  • plugin: vfr_hud: Initial import. Also this plugin publish APM specific WIND estimation message. Fix #86.
  • node: coverity fails at UAS initilizer list
  • plugin: setpoint_attitude: Init ctor, remove code dup.
  • cmake: Add check MAVLINK_DIALECT value Fix #139.
  • Move common cmake rules to modules. Same mech as in [cmake_modules]{.title-ref} package. Issue #139.
  • launch: corrected launch for gcs bridge
  • scripts: mavsetp: Fix misprint.
  • launch files: added px4 launch files for connection with radio and gcs
  • scripts: mavsetp: Fix twist.angular vector construction. Small style fix.
  • Update doxygen documentation. Add split lines in UAS, and make UAS.connection atomic. Add rosdoc configuration for mavros_extras.
  • scripts: mavsetp: corrected API; added possibility of parse angles in dg or rad
  • scripts: mavsetp: corrected msg API; mavteleop: added prefix to rc override
  • scripts: mavsetp: added local accel; corrected how the OFFBOARD mode is swtch.
  • scripts: mavsetp: changed the way offboard mode is switched
  • node: init ctor (coverity)
  • nodelib: add std::array header
  • return msg generator deps for mavconn
  • scripts: mavsys: Implement set rate command.
  • scripts: Add mavsys tool. Implented only [mode]{.title-ref} operation. Issue #134.
  • plugin: sys_status: Implement set_mode service. Previous command shortcut removed. Issue #136, #134.
  • node: Implement reverse mode lookup. Issue #136.
  • plugin: sys_status: Move custom mode decoder to UAS. Issue #136.
  • node: Catch URL open exception. Also update connection pointer type.
  • nodelib: move sources to subdir
  • node: Move UAS to mavros namespace
  • node: Move node code to library.
  • node: Catch DeviceError; use C++11 foreach shugar.
  • plugin: command: Add COMMAND_INT suport. Fix #98.
  • Contributors: Nuno Marques, Tony Baltovski, Vladimir Ermakov

0.7.1 (2014-08-25)

  • plugins: setpoint: Update SET_POSITION_TARGET_LOCAL_NED message. Fix #131.
  • scripts: mavsetp: Enable OFFBOARD mode. Issue #126.
  • plugin: command: Add guided_enable shortcut It enable PX4 OFFBOARD mode. Issue #126.
  • scripts: Add mavsetp script. Only local setpoint for now. Issue #126.
  • plugins: Change UAS FCU link name. Reduce smart pointer count, that hold fcu link object.
  • scripts: mavcmd: Add takeoffcur and landcur commands Fix #91, #92. Inspired by #125.
  • Closes #122, closes #123; plugins: move mocap & vision plugins to extras, change vision plugins name
  • plugins: UAS remove std::atomic<double> It don\'t work at some compilers. Issue #89.
  • plugin: global_position: Fill NavSatFix status filed. Issue #87, #118.
  • plugins: Add GPS data to UAS
  • plugins: Move setpoint_mixin.h Fix #120.
  • plugin: mocap: Fix load. Issue #121.
  • plugins: global_position: get pose orientation from the one stored in uas
  • plugins: global_position: use relative_alt on position.z; mavros_plugins.xml - corrected declaration of mocap_pose_estimate
  • plugin - global_position - changed parameter path / orientation source
  • launch: APM2 blacklist global_position plugin
  • plugin: global_position: Unit unification.
  • plugin: global_position: Move heaedr; Style fix.
  • added rel_pos and compass_hdg pub; minor corrections
  • Merge branch \'master\' of https://github.com/vooon/mavros into global_position
  • global_position plugin - initial commit
  • launch: APM2 blacklist mocap plugin.
  • Updated mavros_plugins.xml
  • Fixed dual sources error warning.
  • Fixed styles.
  • Minor changes.
  • added time stamp to received msgs
  • Removed un-needed times.
  • Added mocap_pose_estimate plugin.
  • Code style update
  • setpoint attitude change - warning message
  • Update on setpoint_attitude plugin
    • changed Twist to TwistStamped
    • added reverse_throttle option for throttle control
    • use cmd_vel as the same topic to control linear a angular velocities (it\'s commonly used by controllers)
    • added normalization filter to thrust
  • node: Remove deprecated conn parameters. Fix #108
  • plugin: vision_speed: Update plugin API.
  • plugin: setpoint_attitude: Update plugin API.
  • plugin: setpoint_accel: Update plugin API.
  • plugin: setpoint_velocity: Update plugin API.
  • plugin: 3dr_radio: Update plugin API.
  • plugin: safety_area: Update plugin API.
  • plugin: setpoint_position: Update plugin API.
  • plugin: vision_position: Update plugin API.
  • plugin: local_position: Update plugin API.
  • plugin: command: Update plugin API.
  • plugin: rc_io: Update plugin API.
  • plugin: waypoint: Update plugin API.
  • plugin: param: Update plugin API.
  • plugin: gps: Update plugin API.
  • plugin: imu_pub: Update plugin API.
  • plugin: sys_status: Update plugin API.
  • plugin: Update plugin API.
  • plugins: disable most of plugins
  • plugin: setpoint_attitude: Add thrust topic. Fix #106.
  • Fix URLs in readme
  • mavros -> ros-message parameter fix only parameter1 was forwarded into the ros message
  • Switch travis to pixhawk dialect. Default dialect build by ros buildfarm. Also remove duplicate ci statuses from mavros readme.
  • Contributors: Nuno Marques, Tony Baltovski, Vladimir Ermakov, mthz

0.7.0 (2014-08-11)

  • Add package index readme, Fix #101
  • move mavros to subdirectory, #101
  • Merge branch \'master\' of github.com:vooon/mavros * \'master\' of github.com:vooon/mavros: Add link to ros-*-mavlink package wiki page.

  • plugins: setpoint: Update setpoint message name. Issue #94, Fix #97.

  • plugin: setpoint_attitude: Update message name. Issues #94, #97.

  • Add link to ros-*-mavlink package wiki page.

  • plugin: gps: Fix gcc 4.6 build (atomic). Not recommended to use std::atomic with gcc 4.6. So i limited to prederined atomics for simple types like int, float etc.

  • plugin: sys_status: Implement PX4 mode decoding. Fix #84.

  • plugin: gps: Add EPH & EPV to diagnostic. Issue #95

  • plugin: gps: Move message processing to individual handlers. Issue #95.

  • plugin: rc_io: Replace override service with topic. (ROS API change). Fix #93.

  • Add dialect selection notes

  • plugins: Change severity for param & wp done messages.

  • plugins: Store raw autopilot & mav type values. This may fix or not issue #89.

  • plugins: init ctor (coverity)

  • plugin: imu_pub: Add ATTITUDE_QUATERNION support. Also reduce copy-paste and use mode readable bitmask check. Fix #85.

  • scriptis: mavcmd: Spelling

  • scripits: Add mavcmd tool

  • Add links to mavros_extras

  • param: sys_status: Option to disable diagnostics (except heartbeat)

  • plugin: command: Add takeoff and land aliases. Issue #68.

  • plugin: command: Add quirk for PX4. Fix #82.

  • plugin: Add UAS.is_px4() helper. Replace some locks with atomic. Issue #82.

  • launch: Clear PX4 blacklist. Issue #68.

  • launch: Add target ids. Also fix PX4 wrong ?ids usage (it set mavros ids, not target). Issue #68.

  • plugin: imu_pub: Fix HRIMU pressure calc. 1 mBar is 100 Pa. Fix #79.

  • plugins: C++11 chrono want time by ref, return *_DT Fix #80.

  • plugins: Replace boost threads with C++11. And remove boost thread library from build rules. Issue #80.

  • plugins: Replace Boost condition variables with C++11 Issue #80.

  • plugins: Replace boost mutexes with C++11. Issue #80.

  • travis clang to old, fails on boost signals2 library. disable.

  • travis: enable clang build.

  • node: Make project buildable by clang. Clang produce more readable errors and provide some static code analysis, so i want ability to build mavros with that compilator.

  • plugins: replace initial memset with c++ initializer list

  • launch: PX4 default ids=1,50. Also waypoint plugin works (with first_pos_control_flight-5273-gd3d5aa9). Issue #68.

  • launch: Use connection URL

  • plugin: vision_speed: Initial import. Fix #67.

  • plugin: sys_status: Add SYSTEM_TIME sync send. Fix #78.

  • plugin: sys_status: Decode sensor health field. Fix #75.

  • Add ci badges to readme

  • plugin: param: erase invalidates iterator. Real error found by coverity :)

  • plugins: Init ctor

  • plugins: Add ctor initialization. Coverity recommends init all data members.

  • test: trying travis-ci && coverity integration. Real ci doing by ros buildfarm.

  • plugins: Fix clang-check errors.

  • test: Add tcp client reconnect test. Issue #72.

  • test: Split open_url test to individual tests. Also removed tcp client deletion on close, heisenbug here. Issue #72.

  • mavconn: Emit port_closed after thread stop. Also use tx state flag, improve error messages and move io post out of critical section. Issue #72.

  • mavconn: Fix TCP server client deletion. Issue #72.

  • test: Remove not needed sleep.

  • mavconn: Remove new MsgBuffer dup. Message drop if closed. Issue #72.

  • mavconn: Fix TCP server. Issue #72.

  • launch: APM2: Blacklist extras.

  • mavconn: Add mutex to channel allocation.

  • mavconn: Fix TCP server for gcc 4.6 Fix #74.

  • Remove libev from package. Issue #72.

  • mavconn: GCC 4.6 does not support typedef like using. Issue #74.

  • Merge pull request #73 from vooon/mavconn-revert-asio mavconn: Revert to Boost.ASIO

  • mavconn: Cleanup boost threads. I will use C++11 standard libs. Issue #72.

  • mavconn: Remove libev default loop thread. Issue #72.

  • mavconn: Port MAVConnTCPServer to Boost.ASIO. TCP send test fails. Issue #72.

  • mavconn: Port MAVConnTCPClient to Boost.ASIO. Also it disables MAVConnTCPServer before i rewrite it. Issue #72.

  • mavconn: Revert MAConnSerial back to Boost.ASIO. Issue #72.

  • test: Fix send_message tests. Use C++11. Issue #72.

  • mavconn: Revert MAVConnUDP back to Boost.ASIO. Also starting to change boost threads and mutexes to C++11. Issue #72.

  • test: Enable send tests. Issue #72.

  • test: And hand test for mavconn hangs. Issue #72.

  • node: Remove anonimous flag from gcs_bridge. Rename node if you want start several copies.

  • install: Remove duplicate

  • node: Fix mavros_node termination message. Issue #58.

  • node: Use URL in mavros_node. Fix #58.

  • node: Use URL in gcs_bridge. Issue #58.

  • node: Rename ros_udp to gcs_bridge. Because now it\'s not UDP only. Issue #58.

  • Cleanup boost components

  • mavconn: Implement URL parsing. Supported shemas:

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

    * TCP server: [tcp-l://[bind_port][:port][/?ids=sysid,compid]]{.title-ref} Note: ids from URL overrides ids given to open_url(). Issue #58.

  • test: Add tests for UDP, TCP, SERIAL. Send message testa are broken, need to find workaround. Fix #70.

  • plugin: vision_position: Add transform timestamp check. Issue #60.

  • mavconn: Implement TCP server mode. Fix #57.

  • mavconn: Initial support for TCP client mode. Issue #57.

  • mavconn: Boost::asio cleanup.

  • plugin: Remove TimerService from UAS. Fix #59.

  • plugin: param: Add state check to sheduled pull.

  • mavparam: Add force pull.

  • plugin: param: Use ros::Timer for timeouts Also new option for force pull parameters from FCU instead of cache. Fix #59.

  • Add mavsafety info to README.

  • launch: Add apm2_radio.launch (for use with 3DR Radio)

  • plugin: 3dr_radio: Fix build error. Issue #62.

  • plugin: 3dr_radio: Publish status data for rqt_plot Also tested with SiK 1.7. Fix #62.

  • plugin: setpoint_attitude: Fix ENU->NED conversion. Fix #64. Related #33, #49.

  • launch: Add setpoint plugins to APM2 blacklist

  • plugin: setpoint_attitude: Initial import. XXX: need frame conversion #49. Issue #33, #64.

  • plugin: Move common tf code to mixin. Remove copy-paste tf_listener. Issue #33.

  • plugin: setpoint_position: Generalize topic NS with other [setpoint_*]{.title-ref} Issue #33, #61.

  • plugin: setpoint_accel: Initial import. Issues: #33, #61.

  • plugin: position_velocity: Initial import. Also it fix ignore mask in setpoint_position. Issues #33, #61.

  • plugins: 3rd_radio: Initial import. Untested. Issue #61.

  • scripts: Add mavsafety tool. Also add safety_area to APM2 blacklist. Fix #51.

  • plugins: safty_area: Initial import. This plugin listen [~/safety_area/set]{.title-ref} and send it\'s data to FCU. Issue #51.

  • plugins: position: Add TF rate limit. Issue #33.

  • plugin: waypoint: Use ros::Timer for timeouts. Also add some debug messages for next debugging PX4. Issue #59.

  • plugin: sys_status: Use ros::Timer for timeouts Also move message rx to it\'s own handlers. Issue #59.

  • Remove rosdep.yaml and update readme

  • Add deb build notes to readme. Issue #55.

  • Add sudo notes to readme.

  • Merge pull request #56 from vooon/54_try_libev Switch to libev

  • Add libev to README

  • package: Add temporary rosdep for libev-dev. Issue #54.

  • mavconn: Move MAVConnUDP to libev. And fix docs in serial. Issue #54.

  • mavconn: Move MAVConnSerial to libev. Adds stub for open URL function. Issure #54.

  • Contributors: Vladimir Ermakov, M.H.Kabir, Nuno Marques, Glenn Gregory

0.6.0 (2014-07-17)

  • plugin: local_position: Use same timestamp in topic and TF. Issue #33.
  • plugins: TF thread required, remove notes. Issue #33.
  • launch: Add example launch for PX4 Issue #45.
  • plugin: imu_pub: Fix attitude store in UAS Issue #33. Fix #53.
  • plugins: Disable position topics if tf_listen enabled Also change default frame names: [vision]{.title-ref} and [setpoint]{.title-ref}. Issue #33.
  • plugins: Fix typo in frame_id params. Issue #33.
  • plugins: Add vision and setpoint TF listeners Also change parameter names to same style. Issue #33.
  • plugin: vision_position: Add PositionWithCovarianceStamped option Issue #33.
  • Add boost filesystem lib to link On some platforms its absence breaks build by: undefined reference to [boost::filesystem::path::codecvt()]{.title-ref}
  • launch: Add example for APM2 Fix #45.
  • plugin: setpoint_position: Initial import And some small doc changes in other position plugins. Issue #33.
  • node: Add connection change message Fix #52.
  • plugins: vision_position: Initial import TODO: check ENU->NED maths. Issue #33.
  • plugins: Remove unneded \'FCU\' from diag
  • plugin: local_position: Change plane conversion Bug: #49.
  • plugin: imu_pub: Fix magnetic vector convertions Bug: #49.
  • Use dialects list from package
  • plugin: local_position: Fix orientation source Part of #33.
  • node: Show target system on startup Fix #47.
  • plugin: local_position: Initial add Receive LOCAL_POSITION_NED message and publish it via TF and PoseStamped topic in ENU frame. Part of #33.
  • node: Use boost::make_shared for message allocation Fix #46.
  • plugins: Use boost::make_shared for message allocation Part of #46.
  • plugin: imu_pub: Fix misprint in fill function Fix magnetometer vector convertion (HR IMU). Related #33.
  • plugin: imu_pub: setup cleanup.
  • Update readme
  • plugin: gps: Fix gps_vel calculation Fix #42.
  • plugins: Make name and messages methods const. (breaking). WARNING: this change broke external plugins. Please add const to get_name() and get_supported_messages(). Part of #38.
  • plugins: Use mavlink_msg*_pack_chan() functions Fix #43.
  • mavconn: Reuse tx buffer (resize by extents) Part of #38.
  • mavconn: Do not finalize messages if id pair match mavlink*_pack also do finalize, so explicit finalization just recalculate crc and seq number (doubles work). Test later if we need check seq too.
  • mavconn: Documentation and cleanup Make MAVConn classes noncopyable. Remove copy-paste copy and following async_write calls. Reserve some space in tx queues. Replace auto_ptr with unique_ptr.
  • test: Fix header include
  • mavconn: Fix possible array overrun in channel alocation. Problem found by clang.
  • fix some roslint errors
  • mavconn: move headers to include
  • node: Implement plugin blacklist. New parameter: [~/plugin_blacklist]{.title-ref} lists plugin aliases with glob syntax. Fix #36.
  • plugins: Change constants to constexpr (for gcc 4.6)
  • mavconn: Add gencpp dependency (utils.h requiers generated header)
  • Move duplicate Mavlink.msg copy to utils.h
  • Remove tests that requires connection to FCU
  • plugins: imu_pub: Fix PX4 imu/data linear_accelerarion field Should fix: #39.
  • plugins: imu_pub: Add magnitic covariance Trying to move constants with constexpr. Related: #13.
  • Remove testing info Need to remove tests that could not run on build farm.
  • Contributors: Vladimir Ermakov

0.5.0 (2014-06-19)

  • Remove mavlink submodule and move it to package dependency Bloom release tool don\'t support git submodules, so i\'ve ceate a package as described in http://wiki.ros.org/bloom/Tutorials/ReleaseThirdParty . Fix #35.
  • plugins: param: add missing gcc 4.6 fix.
  • plugins: fix const initializers for gcc 4.6
  • plugins: imu_pub: fix const initializers for gcc 4.6 Fix for build failure devel-hydro-mavros #4.
  • Add support for GCC 4.6 (C++0x, ubuntu 12.04) I don\'t use complete c++11, so we could switch to c++0x if it supported.
  • plugins: rc_io: Add override rcin service Fix: #22.
  • plugins: sys_status: fix timeouts Fix #26.
  • plugins: sys_status: add set stream rate service Some additional testing required. Fix #23.
  • Remove unused boost libarary: timer Build on jenkins for hydro failed on find boost_timer.
  • 0.4.1
  • Add changelog for releasing via bloom

0.4.1 (2014-06-11)

  • node: Show serial link status in diag Now \'FCU connection\' shows actual status of connection (HEARTBEATS).
  • Fix #29. Autostart mavlink via USB on PX4 Changes mavconn interface, adds new parameter.
  • Fix installation rules. Fix #31.
  • Setup UDP transport for /mavlink messages
  • Fix mavlink dialect selection Fix #28.
  • Add link to wiki.ros.org Part of #27.

0.4.0 (2014-06-07)

  • Release 0.4.0 And some docs for CommandPlugin.
  • plugins: command: Command shortcuts Fix #12.
  • plugins: command: Add ACK waiting list Part of #12.
  • plugins: command: Initial naive realization. Partial #12, #25.
  • mavconn: Fix build on Odroid with Ubuntu 13.10 Fix #24.
  • plugins: rc_io: initial add RC_IO plugin Topics:

    • ~/rc/in -- FCU RC inputs in raw microseconds

    * ~/rc/out -- FCU Servo outputs Fix #17. Partiall #22.

  • Fix installation wstool command. [wstool set]{.title-ref}, not [wstool add]{.title-ref}.

  • Add installation notes to README Installing pymavlink is not required, but try if errors.

  • Fix headers in README.md

  • ros_udp: New node for UDP proxing Add some examples to README.md. Fix #21.

  • sys_status: Add state publication Fix #16.

  • sys_status: Sent HEARTBEAT if conn_heartbeat > 0 Fix #20.

  • sys_status: add sensor diagnostic See #16.

  • sys_status: Add battery status monitoring Fix #19, partial #16.

  • sys_status: HWSTATUS support Fix #18, partial #20.

  • plugins: imu_pub: Add RAW_IMU, SCALED_IMU and SCALED_PRESSURE handlers Fix #13. Refactor message processing. Combination of used messages: On APM: ATTITUDE + RAW_IMU + SCALED_PRESSURE On PX4: ATTITUDE + HIGHRES_IMU On other: ATTITUDE + (RAW_IMUHIGHRES_IMU Published topics:

    • ~imu/data - ATTITUDE + accel data from *_IMU
    • ~imu/data_raw - HIGHRES_IMU or SCALED_IMU or RAW_IMU in that order
    • ~imu/mag - magnetometer (same source as data_raw)
    • ~imu/temperature - HIGHRES_IMU or SCALED_PRESSURE
    • ~imu/atm_pressure - same as temperature
  • Update readme

  • mavwp: Add --pull option for \'show\' operation. Reread waypoints before show.

  • MissionPlanner use format QGC WPL, Fix #15 Code cleanup;

  • Update mavlink version.

  • Update mavlink version

  • mavparam: fix #14 support for QGC param files

  • mavwp: Add mavwp to install

0.3.0 (2014-03-23)

  • Release 0.3.0
  • mavwp: Add MAV mission manipulation tool Uses WaypointPlugin ROS API for manipulations with FCU mission.

    • show -- show current mission table
    • pull -- update waypoint table
    • dump -- update and save to file
    • load -- loads mission from file
    • clear -- delete all waypoints
    • setcur -- change current waypoint

    - goto -- execute guided goto command (only APM) Currently supports QGroundControl format only.

  • plugins: wp: Add GOTO, update documentation

  • plugins: wp: Auto pull

  • plugins: wp: SetCurrent & Clear now works

  • plugins: wp: Push service works

  • plugins: wp: push almost done

  • plugins: wp: Pull done

  • plugins: param: remove unused ptr

  • plugins: wp: mission pull almost done

  • plugins: wp: Add convertors & handlers

  • plugins: Waypoint plugin initial

  • Use C++11 feuture - auto type

  • plugins: refactor context & link to single UAS class UAS same functions as in QGC.

  • plugins: Add msgs and srvs for Waypoint plugin

  • Update mavlink library

  • Update mavlink version

  • mavparam: Fix for DroidPlanner param files & cleanup DroidPlanner adds some spaces, don\'t forget to strip it out. Cleanup unused code from Parameter class.

0.2.0 (2014-01-29)

  • mavparam: Add MAV parameter manipulation tool Uses ParamPlugin ROS API for manipulating with fcu params.

    • load -- load parameter from file
    • dump -- dump parameter to file
    • get -- get parameter

    - set -- set parameter Currently supports MissionPlanner format only. But DroidPlanner uses same format.

  • Update README and documentation

  • plugins: param: implement ~param/push service Also implement sync for rosparam:

    • ~param/pull service pulls data to rosparam
    • ~param/push service send data from rosparam
    • ~param/set service update rosparam if success
  • plugins: param: implement ~param/set service

  • plugins: param: implement ~param/get service

  • plugins: param: Implement automatic param list requesting

  • plugins: use recursive_mutex everywhere

  • plugins: param now automaticly requests data after connect

  • plugins: Add common io_service for plugins, implement connection timeout Some plugin require some delayed processes. Now we can use boost::asio::*timer. New parameter:

    • ~/conn_timeout connection timeout in seconds
  • plugins: add param services

  • mavconn: set thread names WARNING: pthread systems only (BSD/Linux)

  • plugins: implement parameters fetch service

  • plugins: fix string copying from mavlink msg

  • plugins: Setup target in mav_context New params:

    • ~target_system_id - FCU System ID
    • ~target_component_id - FCU Component ID
  • plugins: IMU Pub: add stdev parameters, change topic names. Add parameters:

    • ~imu/linear_acceleration_stdev - for linear acceleration covariance
    • ~imu/angular_velocity_stdev - for angular covariance

    - ~imu/orientation_stdev - for orientation covariance Change topic names (as in other IMU drivers): - ~imu -> ~/imu/data - ~raw/imu -> ~/imu/data_raw

  • plugins: Params initial dirty plugin

  • Fix mavlink dialect choice.

  • plugins: Add context storage for automatic quirk handling ArduPlilot requires at least 2 quirks:

    • STATUSTEXT severity levels
    • parameter values is float
  • Implement MAVLink dialect selection ArduPilotMega is default choice.

  • doc: add configuration for rosdoc_lite

0.1.0 (2014-01-05)

  • Version 0.1.0 Milestone 1: all features from mavlink_ros package.xml was updated.
  • Fix typo and add copyright string NOTE: Please check typos before coping and pasting :)
  • plugins: gps: Add GPS_RAW_INT handler GPS_STATUS not supported by APM:Plane. ROS dosen\'t have standard message for satellites information.
  • mavconn: small debug changes Limit no GCS message to 10 sec.
  • node: Terminate node on serial port errors
  • plugins: Add GPS plugin SYSTEM_TIME to TimeReference support. TODO GPS fix.
  • Fix build and update MAVLink library
  • plugins: sys_status: Add SYSTEMTEXT handler Two modes:

    • standard MAV_SEVERITY values

    - APM:Plane (default) TODO: add mavlink dialect selection option

  • plugins: add some header doxygen tags Add license to Dummy.cpp (plugin template).

  • plugins: sys_status: Add MEMINFO handler MEMINFO from ardupilotmega.xml message definition. Optional.

  • update README

  • update TODO

  • plugins: Add imu_pub plugin. Publish ATTITUDE and HIGHRES_IMU data. HIGHRES__IMU not tested: Ardupilot sends ATTITUDE only :(

  • node: publish Mavlink.msg only if listners > 0

  • plugins: Add sys_status plugin. Initial.

  • plugins: implement loading & rx routing

  • plugins: initial

  • node: Add diagnostics for mavlink interfaces

  • mavconn: add information log wich serial device we use.

  • mavconn: fix overloaded MAVConn*::send_message(msg)

  • mavros: Add mavros_node (currently serial-ros-udp bridge) Message paths: Serial -+-> ROS /mavlink/from +-> UDP gcs_host:port ROS /mavlink/to -+-> Serial UDP bind_host:port -+

  • Add README and TODO files.

  • mavconn: fix MAVConnUDP, add mavudpproxy test mavudpproxy -- connection proxy for QGroundControl, also used as test for MAVConnUDP and MAVConnSerial.

  • mavconn: add UDP support class

  • mavconn: fix: should use virtual destructor in interface class

  • mavconn: add getters/setters for sys_id, comp_id; send_message return.

  • mavconn: simple test. tested with APM:Plane: works.

  • mavconn: fix linking

  • mavconn: serial interface

  • Add mavconn library prototype mavconn - handles MAVLink connections via Serial, UDP and TCP.

  • Add MAVLink library + build script

  • Initial Import Mavlink.msg from mavlink_ros package ( https://github.com/mavlink/mavlink_ros ).

  • Contributors: Vladimir Ermakov

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • 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]
  • launch/node.launch
      • fcu_url
      • gcs_url
      • tgt_system
      • tgt_component
      • blacklist_yaml
      • config_yaml
  • 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]

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package Summary

Tags uav mav mavlink plugin apm px4
Version 1.18.0
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 2024-03-03
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).

ROS API documentation moved to wiki.ros.org.

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. PX4 Pro or ArduPilot)
  • 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)
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

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

This package are dependent on ros-*-mavlink build from mavlink-gbp-release. 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), #216 (outdated), #317 (outdated), #319 (outdated), #321 (outdated), #473. Documents: Frame Conversions, Mavlink coordinate frames.

MAVROS also allows conversion of geodetic and geocentric coordinates through GeographicLib 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.

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 Autopilot (for VTOL, multicopters and planes)
  • apm.launch -- for use with APM flight stacks (e.g., all versions of ArduPlane, ArduCopter, etc)

Examples:

roslaunch mavros px4.launch
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@

Installation

Required dependencies

Most of the ROS dependencies are supported and installed by rosdep, including external libraries as Eigen and Boost.

GeographicLib can be installed by apt-get and it is already included on the rosdep of MAVROS package. It is also possible to compile it and install it from src but be advised to have the proper install directories the same as the ones of the apt-get install, in order to make sure that the FindGeographicLib.cmake finds the required shared libraries (libGeographic.so).

Since GeographicLib requires certain datasets (mainly the geoid dataset) so to fulfill certain calculations, these need to be installed manually by the user using geographiclib-tools, which can be installed by apt-get in Debian systems. For a quicker procedure, just run the available script in the "mavros/scripts" folder, install_geographiclib_datasets.sh.

Note that if you are using an older MAVROS release source install and want to update to a new one, remember to run rosdep update before running rosdep install --from-paths ${ROS_WORKSPACE} --ignore-src --rosdistro=${ROSDISTRO}, with ROS_WORKSPACE your src folder of catkin workspace. This will allow updating the rosdep list and install the required dependencies when issuing rosdep install.

:bangbang: The geoid dataset is mandatory to allow the conversion between heights in order to respect ROS msg API. Not having the dataset available will shutdown the mavros_node :bangbang:

:heavy_exclamation_mark:Run install_geographiclib_datasets.sh to install all datasets or geographiclib-datasets-download egm96_5 (Debian 7, Ubuntu 14.04, 14.10), geographiclib-get-geoids egm96-5 (Debian 8, Fedora 22, Ubuntu 15.04 or later) to install the geoid dataset only:heavy_exclamation_mark:

Binary installation (deb)

ROS repository has binary packages for Ubuntu x86, amd64 (x86_64) and armhf (ARMv7). Kinetic also support Debian Jessie amd64 and arm64 (ARMv8).

Just use apt-get for installation:

sudo apt-get install ros-kinetic-mavros ros-kinetic-mavros-extras

Then install GeographicLib datasets by running the install_geographiclib_datasets.sh script:

wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

Source installation

Use wstool utility for retrieving sources and catkin tool for build.

NOTE: The source installation instructions are for the ROS Kinetic release.

sudo apt-get install python-catkin-tools python-rosinstall-generator -y
# For Noetic use that:
# sudo apt install python3-catkin-tools python3-rosinstall-generator python3-osrf-pycommon -y

# 1. Create the workspace: unneeded if you already has workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
wstool init src

# 2. Install MAVLink
#    we use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall

# 3. Install MAVROS: get source (upstream - released)
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
# alternative: latest source
# rosinstall_generator --upstream-development mavros | tee -a /tmp/mavros.rosinstall
# For fetching all the dependencies into your catkin_ws, just add '--deps' to the above scripts
# ex: rosinstall_generator --upstream mavros --deps | tee -a /tmp/mavros.rosinstall

# 4. Create workspace & deps
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y

# 5. Install GeographicLib datasets:
./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

# 6. Build source
catkin build

# 7. Make sure that you use setup.bash or setup.zsh from workspace.
#    Else rosrun can't find nodes from this workspace.
source devel/setup.bash

Build error. if you has error with missing mavlink* then you need fresh mavlink package. You may update from ros-shadow-fixed (binary installation) or redo script steps 2 & 4.

Note. Since MAVLink 2.0 merged (0.18) all dialects supported by same binary. Unfortunately overlap of v1.0 message ID's not fully handled, first loaded message forbid further changes. Load order always:

  1. common
  2. ardupilotmega
  3. alphabetical ordered list
  4. ...

Note: MAVLINK_DIALECT not used anymore.

Troubleshooting

Error: serial0: receive: End of file

This issue should have been solve in mavros v0.23.2, it was found to be a Boost.ASIO error and should be fix in release > v1.12.0 ( >Boost 1.66).

Contributing

See CONTRIBUTING.md.

Glossary

  • GCS — Ground Control Station
  • FCU — Flight Control Unit (aka FC)
  • OBC — OnBoard Computer (your odroid or raspberry)
  • MAVLink -- The communication protocol for Drones, used by flight controllers, ground control stations, and peripherals
  • mavlink_ros -- original ROS node (few messages, no proxy)
  • Pixhawk -- Open Standards for drone hardware
  • PX4 Autopilot -- Flight Controller with support for most vehicle types and hardened/tested MAVROS support
  • ArduPilot -- tested autopilot APM:Plane (default command set)
  • QGroundControl -- Ground Control Station for MAVLink autopilots, with tested support for Android, iOS, Mac OS, Linux, and Windows
  • mavros_extras -- extra plugins & node for mavros
CHANGELOG

Changelog for package mavros

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 that to obey the MAVLink frame convention using run-time parameters
  • Merge pull request #1743 from amilcarlucas/pr_apm_config apm_config.yaml: add mount configuration
  • apm_config.yaml: add mount configuration
  • Merge pull request #1732 from amilcarlucas/pr-meminfo-fix MEMINFO fixes
  • sys_status.cpp fix free memory for values > 64KiB
  • Merge pull request #1716 from amilcarlucas/avoid-harcoded-values sys_status.cpp: do not use harcoded constants
  • Merge pull request #1711 from amilcarlucas/diagnose-up-to-n-batteries Diagnose up-to 10 batteries
  • *_config.yaml: document usage of multiple batteries diagnostics
  • sys_status.cpp: fix compilation
  • sys_status.cpp: support diagnostics on up-to 10 batteries Uses as many battery monitors as the user specified in min_voltage parameter. Add myself as a contributor, this is not my first patch to this file
  • Merge pull request #1712 from amilcarlucas/fix-disabled-diagnostics sys_status.cpp: fix enabling of mem_diag and hwst_diag
  • sys_status.cpp: do not use harcoded constants
  • sys_status.cpp: Timeout on MEMINFO and HWSTATUS mavlink messages and publish on the diagnostics Use atomic variable to prevent potential threading problems
  • sys_status.cpp: fix enabling of mem_diag and hwst_diag
  • Merge pull request #1704 from amilcarlucas/correct-bat-voltages sys_status.cpp: Do not use battery1 voltage for all batteries.
  • sys_status.cpp: Do not use battery1 voltage as voltage for all other batteries (bugfix). Support both cell and total voltages above 65V Support up-to 14S batteries If available, add cell voltage information to the battery diagnostic
  • Merge pull request #1707 from amilcarlucas/ignore-gimbal-sys-status sys_status.cpp: ignore sys_status mavlink messages from gimbals
  • sys_status.cpp: ignore sys_status mavlink messages from gimbals
  • Merge pull request #1703 from amilcarlucas/remove-deprecated-battery2 sys_status.cpp: remove deprecated BATTERY2 mavlink message support
  • sys_status.cpp: remove deprecated BATTERY2 mavlink message support
  • Merge pull request #1696 from okalachev/patch-2 Disable startup_px4_usb_quirk in px4_config.yaml
  • Disable startup_px4_usb_quirk in px4_config.yaml
  • Contributors: Dr.-Ing. Amilcar do Carmo Lucas, Karthik Desai, Oleg Kalachev, Sanket Sharma, Vladimir Ermakov, acxz

1.13.0 (2022-01-13)

  • Merge pull request #1690 from mavlink/fix-enum_sensor_orientation Fix enum sensor_orientation
  • py-lib: fix compatibility with py3 for Noetic
  • test: add checks for ROTATION_CUSTOM
  • lib: Fix rotation search for CUSTOM Fix #1688.
  • Contributors: Vladimir Ermakov

1.12.2 (2021-12-12)

  • Merge pull request #1672 from okalachev/patch-1 Set time/publish_sim_time to false by default
  • Set time/publish_sim_time to false by default
  • Merge pull request #1669 from Hs293Go/master plugin: setpoint_raw: move getParam to initializer
  • plugin: setpoint_raw: move getParam to initializer Repeatedly getting the thrust_scaling parameter in a callback that can be invoked from a fast control loop may fail spuriously and trigger a fatal error
  • Contributors: Oleg Kalachev, Vladimir Ermakov, hs293go

1.12.1 (2021-11-29)

  • mavconn: fix connection issue introduced by #1658
  • Merge pull request #1660 from scoutdi/fix-warnings Fix warnings
  • mavros: Fix some warnings
  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov

1.12.0 (2021-11-27)

  • Merge pull request #1658 from asherikov/as_bugfixes Fix multiple bugs
  • Fix multiple bugs

    • fix bad_weak_ptr on connect and disconnect
    • introduce new API to avoid thread race when assigning callbacks

    - fix uninitialized variable in TCP client constructor which would randomly block TCP server This is an API breaking change: if client code creates connections using make_shared<>() instead of open_url(), it is now necessary to call new connect() method explicitly.

  • lib: fix mission frame debug print

  • Contributors: Alexander Sherikov, Vladimir Ermakov

1.11.1 (2021-11-24)

  • lib: fix build
  • Contributors: Vladimir Ermakov

1.11.0 (2021-11-24)

  • lib: fix ftf warnings
  • plugin: setpoint_raw: fix misprint
  • plugin: sys: fix compillation error
  • plugin: initialize quaternions with identity Eigen::Quaternion[d|f] () does not initialize with zeroes or identity. So we must initialize with identity vector objects that can be left unassigned. Related to #1652
  • plugin: sys: Use wall timers for connection management Fixes #1629
  • Merge pull request #1651 from Jaeyoung-Lim/pr-image-capture-plugin Add camera plugin for interfacing with mavlink camera protocol
  • Add camera plugin for interfacing with mavlink camera protocol Add camera image captured message for handling camera trigger information
  • Contributors: Jaeyoung-Lim, Vladimir Ermakov

1.10.0 (2021-11-04)

  • Merge pull request #1626 from valbok/crash_on_shutdown Show ENOTCONN error instead of crash on socket\'s shutdown
  • Merge pull request #1627 from marcelino-pensa/bug/ma-prevent-race-condition Node dying when calling /mavros/param/pull
  • Remove reference
  • Catch std::length_error in send_message Instead of crashing the process
  • Merge pull request #1623 from amilcarlucas/pr/more-typo-fixes More typo fixes
  • sys_time.cpp: typo
  • Merge pull request #1622 from dayjaby/sys_time_pub_clock sys_time: publish /clock for simulation times
  • sys_time: publish /clock for simulation times
  • Contributors: David Jablonski, Dr.-Ing. Amilcar do Carmo Lucas, Marcelino Almeida, Val Doroshchuk, Vladimir Ermakov

1.9.0 (2021-09-09)

  • Merge pull request #1616 from amilcarlucas/pr/RC_CHANNELS-mavlink2-extensions Mavlink v2.0 specs for RC_CHANNELS_OVERRIDE accepts upto 18 channels....
  • Changed OverrideRCIn to 18 channels
  • Merge pull request #1617 from amilcarlucas/pr/NAV_CONTROLLER_OUTPUT-plugin Added NAV_CONTROLLER_OUTPUT Plugin
  • Merge pull request #1619 from amilcarlucas/pr/BATTERY2-topic publish BATTERY2 message as /mavros/battery2 topic
  • publish BATTERY2 message as /mavros/battery2 topic
  • Mavlink v2.0 specs for RC_CHANNELS_OVERRIDE accepts upto 18 channels. The plugin publishes channels 9 to 18 if the FCU protocol version is 2.0
  • Added NAV_CONTROLLER_OUTPUT Plugin
  • Merge branch \'master\' into master
  • plugins: reformat xml
  • Exclude changes to launch files.
  • Delete debug files.
  • Apply uncrustify changes.
  • Move Compass calibration report to extras. Rewrite code based on instructions.
  • Add compass calibration feedback status. Add service to call the \'Next\' button in calibrations.
  • Contributors: Andr

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • 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)]
  • 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/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/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]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange

Package Summary

Tags uav mav mavlink plugin apm px4
Version 1.18.0
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 2024-03-03
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).

ROS API documentation moved to wiki.ros.org.

Features

  • Communication with autopilot via serial port, UDP or TCP (e.g. PX4 Pro or ArduPilot)
  • 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)
  • OFFBOARD mode support
  • Geographic coordinates conversions.

Limitations

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

This package are dependent on ros-*-mavlink build from mavlink-gbp-release. 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), #216 (outdated), #317 (outdated), #319 (outdated), #321 (outdated), #473. Documents: Frame Conversions, Mavlink coordinate frames.

MAVROS also allows conversion of geodetic and geocentric coordinates through GeographicLib 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.

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 Autopilot (for VTOL, multicopters and planes)
  • apm.launch -- for use with APM flight stacks (e.g., all versions of ArduPlane, ArduCopter, etc)

Examples:

roslaunch mavros px4.launch
roslaunch mavros apm.launch fcu_url:=tcp://localhost gcs_url:=udp://@

Installation

Required dependencies

Most of the ROS dependencies are supported and installed by rosdep, including external libraries as Eigen and Boost.

GeographicLib can be installed by apt-get and it is already included on the rosdep of MAVROS package. It is also possible to compile it and install it from src but be advised to have the proper install directories the same as the ones of the apt-get install, in order to make sure that the FindGeographicLib.cmake finds the required shared libraries (libGeographic.so).

Since GeographicLib requires certain datasets (mainly the geoid dataset) so to fulfill certain calculations, these need to be installed manually by the user using geographiclib-tools, which can be installed by apt-get in Debian systems. For a quicker procedure, just run the available script in the "mavros/scripts" folder, install_geographiclib_datasets.sh.

Note that if you are using an older MAVROS release source install and want to update to a new one, remember to run rosdep update before running rosdep install --from-paths ${ROS_WORKSPACE} --ignore-src --rosdistro=${ROSDISTRO}, with ROS_WORKSPACE your src folder of catkin workspace. This will allow updating the rosdep list and install the required dependencies when issuing rosdep install.

:bangbang: The geoid dataset is mandatory to allow the conversion between heights in order to respect ROS msg API. Not having the dataset available will shutdown the mavros_node :bangbang:

:heavy_exclamation_mark:Run install_geographiclib_datasets.sh to install all datasets or geographiclib-datasets-download egm96_5 (Debian 7, Ubuntu 14.04, 14.10), geographiclib-get-geoids egm96-5 (Debian 8, Fedora 22, Ubuntu 15.04 or later) to install the geoid dataset only:heavy_exclamation_mark:

Binary installation (deb)

ROS repository has binary packages for Ubuntu x86, amd64 (x86_64) and armhf (ARMv7). Kinetic also support Debian Jessie amd64 and arm64 (ARMv8).

Just use apt-get for installation:

sudo apt-get install ros-kinetic-mavros ros-kinetic-mavros-extras

Then install GeographicLib datasets by running the install_geographiclib_datasets.sh script:

wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
./install_geographiclib_datasets.sh

Source installation

Use wstool utility for retrieving sources and catkin tool for build.

NOTE: The source installation instructions are for the ROS Kinetic release.

sudo apt-get install python-catkin-tools python-rosinstall-generator -y
# For Noetic use that:
# sudo apt install python3-catkin-tools python3-rosinstall-generator python3-osrf-pycommon -y

# 1. Create the workspace: unneeded if you already has workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin init
wstool init src

# 2. Install MAVLink
#    we use the Kinetic reference for all ROS distros as it's not distro-specific and up to date
rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall

# 3. Install MAVROS: get source (upstream - released)
rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall
# alternative: latest source
# rosinstall_generator --upstream-development mavros | tee -a /tmp/mavros.rosinstall
# For fetching all the dependencies into your catkin_ws, just add '--deps' to the above scripts
# ex: rosinstall_generator --upstream mavros --deps | tee -a /tmp/mavros.rosinstall

# 4. Create workspace & deps
wstool merge -t src /tmp/mavros.rosinstall
wstool update -t src -j4
rosdep install --from-paths src --ignore-src -y

# 5. Install GeographicLib datasets:
./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

# 6. Build source
catkin build

# 7. Make sure that you use setup.bash or setup.zsh from workspace.
#    Else rosrun can't find nodes from this workspace.
source devel/setup.bash

Build error. if you has error with missing mavlink* then you need fresh mavlink package. You may update from ros-shadow-fixed (binary installation) or redo script steps 2 & 4.

Note. Since MAVLink 2.0 merged (0.18) all dialects supported by same binary. Unfortunately overlap of v1.0 message ID's not fully handled, first loaded message forbid further changes. Load order always:

  1. common
  2. ardupilotmega
  3. alphabetical ordered list
  4. ...

Note: MAVLINK_DIALECT not used anymore.

Troubleshooting

Error: serial0: receive: End of file

This issue should have been solve in mavros v0.23.2, it was found to be a Boost.ASIO error and should be fix in release > v1.12.0 ( >Boost 1.66).

Contributing

See CONTRIBUTING.md.

Glossary

  • GCS — Ground Control Station
  • FCU — Flight Control Unit (aka FC)
  • OBC — OnBoard Computer (your odroid or raspberry)
  • MAVLink -- The communication protocol for Drones, used by flight controllers, ground control stations, and peripherals
  • mavlink_ros -- original ROS node (few messages, no proxy)
  • Pixhawk -- Open Standards for drone hardware
  • PX4 Autopilot -- Flight Controller with support for most vehicle types and hardened/tested MAVROS support
  • ArduPilot -- tested autopilot APM:Plane (default command set)
  • QGroundControl -- Ground Control Station for MAVLink autopilots, with tested support for Android, iOS, Mac OS, Linux, and Windows
  • mavros_extras -- extra plugins & node for mavros
CHANGELOG

Changelog for package mavros

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 that to obey the MAVLink frame convention using run-time parameters
  • Merge pull request #1743 from amilcarlucas/pr_apm_config apm_config.yaml: add mount configuration
  • apm_config.yaml: add mount configuration
  • Merge pull request #1732 from amilcarlucas/pr-meminfo-fix MEMINFO fixes
  • sys_status.cpp fix free memory for values > 64KiB
  • Merge pull request #1716 from amilcarlucas/avoid-harcoded-values sys_status.cpp: do not use harcoded constants
  • Merge pull request #1711 from amilcarlucas/diagnose-up-to-n-batteries Diagnose up-to 10 batteries
  • *_config.yaml: document usage of multiple batteries diagnostics
  • sys_status.cpp: fix compilation
  • sys_status.cpp: support diagnostics on up-to 10 batteries Uses as many battery monitors as the user specified in min_voltage parameter. Add myself as a contributor, this is not my first patch to this file
  • Merge pull request #1712 from amilcarlucas/fix-disabled-diagnostics sys_status.cpp: fix enabling of mem_diag and hwst_diag
  • sys_status.cpp: do not use harcoded constants
  • sys_status.cpp: Timeout on MEMINFO and HWSTATUS mavlink messages and publish on the diagnostics Use atomic variable to prevent potential threading problems
  • sys_status.cpp: fix enabling of mem_diag and hwst_diag
  • Merge pull request #1704 from amilcarlucas/correct-bat-voltages sys_status.cpp: Do not use battery1 voltage for all batteries.
  • sys_status.cpp: Do not use battery1 voltage as voltage for all other batteries (bugfix). Support both cell and total voltages above 65V Support up-to 14S batteries If available, add cell voltage information to the battery diagnostic
  • Merge pull request #1707 from amilcarlucas/ignore-gimbal-sys-status sys_status.cpp: ignore sys_status mavlink messages from gimbals
  • sys_status.cpp: ignore sys_status mavlink messages from gimbals
  • Merge pull request #1703 from amilcarlucas/remove-deprecated-battery2 sys_status.cpp: remove deprecated BATTERY2 mavlink message support
  • sys_status.cpp: remove deprecated BATTERY2 mavlink message support
  • Merge pull request #1696 from okalachev/patch-2 Disable startup_px4_usb_quirk in px4_config.yaml
  • Disable startup_px4_usb_quirk in px4_config.yaml
  • Contributors: Dr.-Ing. Amilcar do Carmo Lucas, Karthik Desai, Oleg Kalachev, Sanket Sharma, Vladimir Ermakov, acxz

1.13.0 (2022-01-13)

  • Merge pull request #1690 from mavlink/fix-enum_sensor_orientation Fix enum sensor_orientation
  • py-lib: fix compatibility with py3 for Noetic
  • test: add checks for ROTATION_CUSTOM
  • lib: Fix rotation search for CUSTOM Fix #1688.
  • Contributors: Vladimir Ermakov

1.12.2 (2021-12-12)

  • Merge pull request #1672 from okalachev/patch-1 Set time/publish_sim_time to false by default
  • Set time/publish_sim_time to false by default
  • Merge pull request #1669 from Hs293Go/master plugin: setpoint_raw: move getParam to initializer
  • plugin: setpoint_raw: move getParam to initializer Repeatedly getting the thrust_scaling parameter in a callback that can be invoked from a fast control loop may fail spuriously and trigger a fatal error
  • Contributors: Oleg Kalachev, Vladimir Ermakov, hs293go

1.12.1 (2021-11-29)

  • mavconn: fix connection issue introduced by #1658
  • Merge pull request #1660 from scoutdi/fix-warnings Fix warnings
  • mavros: Fix some warnings
  • Contributors: Morten Fyhn Amundsen, Vladimir Ermakov

1.12.0 (2021-11-27)

  • Merge pull request #1658 from asherikov/as_bugfixes Fix multiple bugs
  • Fix multiple bugs

    • fix bad_weak_ptr on connect and disconnect
    • introduce new API to avoid thread race when assigning callbacks

    - fix uninitialized variable in TCP client constructor which would randomly block TCP server This is an API breaking change: if client code creates connections using make_shared<>() instead of open_url(), it is now necessary to call new connect() method explicitly.

  • lib: fix mission frame debug print

  • Contributors: Alexander Sherikov, Vladimir Ermakov

1.11.1 (2021-11-24)

  • lib: fix build
  • Contributors: Vladimir Ermakov

1.11.0 (2021-11-24)

  • lib: fix ftf warnings
  • plugin: setpoint_raw: fix misprint
  • plugin: sys: fix compillation error
  • plugin: initialize quaternions with identity Eigen::Quaternion[d|f] () does not initialize with zeroes or identity. So we must initialize with identity vector objects that can be left unassigned. Related to #1652
  • plugin: sys: Use wall timers for connection management Fixes #1629
  • Merge pull request #1651 from Jaeyoung-Lim/pr-image-capture-plugin Add camera plugin for interfacing with mavlink camera protocol
  • Add camera plugin for interfacing with mavlink camera protocol Add camera image captured message for handling camera trigger information
  • Contributors: Jaeyoung-Lim, Vladimir Ermakov

1.10.0 (2021-11-04)

  • Merge pull request #1626 from valbok/crash_on_shutdown Show ENOTCONN error instead of crash on socket\'s shutdown
  • Merge pull request #1627 from marcelino-pensa/bug/ma-prevent-race-condition Node dying when calling /mavros/param/pull
  • Remove reference
  • Catch std::length_error in send_message Instead of crashing the process
  • Merge pull request #1623 from amilcarlucas/pr/more-typo-fixes More typo fixes
  • sys_time.cpp: typo
  • Merge pull request #1622 from dayjaby/sys_time_pub_clock sys_time: publish /clock for simulation times
  • sys_time: publish /clock for simulation times
  • Contributors: David Jablonski, Dr.-Ing. Amilcar do Carmo Lucas, Marcelino Almeida, Val Doroshchuk, Vladimir Ermakov

1.9.0 (2021-09-09)

  • Merge pull request #1616 from amilcarlucas/pr/RC_CHANNELS-mavlink2-extensions Mavlink v2.0 specs for RC_CHANNELS_OVERRIDE accepts upto 18 channels....
  • Changed OverrideRCIn to 18 channels
  • Merge pull request #1617 from amilcarlucas/pr/NAV_CONTROLLER_OUTPUT-plugin Added NAV_CONTROLLER_OUTPUT Plugin
  • Merge pull request #1619 from amilcarlucas/pr/BATTERY2-topic publish BATTERY2 message as /mavros/battery2 topic
  • publish BATTERY2 message as /mavros/battery2 topic
  • Mavlink v2.0 specs for RC_CHANNELS_OVERRIDE accepts upto 18 channels. The plugin publishes channels 9 to 18 if the FCU protocol version is 2.0
  • Added NAV_CONTROLLER_OUTPUT Plugin
  • Merge branch \'master\' into master
  • plugins: reformat xml
  • Exclude changes to launch files.
  • Delete debug files.
  • Apply uncrustify changes.
  • Move Compass calibration report to extras. Rewrite code based on instructions.
  • Add compass calibration feedback status. Add service to call the \'Next\' button in calibrations.
  • Contributors: Andr

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

  • 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)]
  • 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/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/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]

Messages

No message files found.

Services

No service files found

Plugins

Recent questions tagged mavros at Robotics Stack Exchange