An Open-source Test Environment for Effective Development of MARG-based Algorithms


Á. Odry, “An Open-Source Test Environment for Effective Development of MARG-Based Algorithms,” Sensors 21(4), 2021, pp. 1183, doi: 10.3390/s21041183,

Á. Odry, I. Kecskes, P. Sarcevic, Z. Vizvari, A. Toth, and P. Odry, “A Novel Fuzzy-adaptive Extended Kalman Filter for Real-time Attitude Estimation of Mobile Robots,” Sensors 20(3), 2020, pp. 803, doi: 10.3390/s20030803,

Supplementary material:

The public GitHub repository can be downloaded here:

The experimental data (which was used for both filter evaluation and parameter tuning in the manuscript) can be downloaded for verification as well:


Video demonstrations

6 DOF test-bench executes dynamic motion
6 DOF test-bench executes dynamic motion
6 DOF test-bench executes dynamic motion

About the package

It contains a 6 DOF test platform that enables both the execution of various dynamic (vibrating and accelerating) behaviors in the three-dimensional space and measurement of true attitude angles along with the raw MARG data.

How to use my package in ROS?

1. Install ROS

2. Setup the environment

3. Setup Gazebo

sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control

4. Install additional packages

sudo apt-get install ros-kinetic-ros-control

sudo apt-get install ros-kinetic-ros-controllers

sudo apt-get install ros-kinetic-diagnostics

sudo apt-get install ros-kinetic-moveit-ros

sudo apt-get install ros-kinetic-moveit

sudo apt-get install ros-kinetic-moveit-visual-tools

5. Download additional packages into the catkin workspace

hector_gazebo from

hector_quadrotor from

6. Download my package (testbench6dof) into the catkin workspace

7. Start the ROS+Gazebo environment with

roslaunch testbench6dof spawn_testenv.launch

8. Start the execute_trajectory node with

rosrun testbench6dof exec_traj

9. Real-time plot the results with rqt or save the results with rosbag

How to use my package in MATLAB?

  1. Open the start.m file and hit F5.

2. In the Simulink environment select the desired pose values. Start the simulation.

3. In gMeas, aMeas and mMeas variables the RAW sensor data can be inspected, while the real system states are stored in the posXYZ and angleXYZ variables.

MATLAB/Simulink model