MOCAP4ROS2 2.0.0 released: one interface for OptiTrack, Vicon, Qualisys and Gazebo, new tools and website

Hi everyone,

We are happy to announce MOCAP4ROS2 2.0.0, a complete revival of the motion capture framework for ROS 2. It may have looked quiet for a while, but a lot of people use it, and it deserved a proper update.

One version, from one branch, now builds and is released for Humble, Jazzy, Kilted and Lyrical, and builds on Rolling. Binaries will be available after the next sync of each distro. Until then, you can build from source.

Drivers

  • OptiTrack: uses the official NatNet SDK, or a built-in open implementation of NatNet. The binary packages no longer ship proprietary libraries.
  • Vicon: DataStream SDK 1.13. Stamps are compensated with the latency the SDK reports.
  • Qualisys: QTM.
  • Gazebo: a plugin for modern Gazebo (Jazzy and newer), with demos for robot ground truth and human motion.
  • Simulated system: for testing without hardware.

One interface for every system

mocap4r2_interfaces covers markers, rigid bodies and skeletons for every system. Every message has tracking validity, stable ids and one frame convention. Drivers derive from a common MocapSystemNode. Every tool works with every driver, including drivers written outside the project.

New tools

  • CLI: ros2 mocap4r2 lists, starts, stops and records your systems. ros2 mocap4r2 doctor checks the route to the mocap server.
  • Terminal UI: shows rates, latency and tracking live for each system.
  • Robot ground truth:
    • a TF tree parallel to your robot’s
    • body calibration
    • map alignment
    • online ATE/RPE
    • TUM export for evo
  • Human motion:
    • skeletons as TF and joint angles
    • zero-phase filtering
    • gap filling
    • C3D export for biomechanics software

New website

The website has getting started, concepts, a guide for each system, tools and a developer guide. It is versioned: latest follows development, and 2.0.0 is frozen for this release.

Migrating from 1.x

  • mocap4r2_msgs is replaced by mocap4r2_interfaces. For example, mocap4r2_msgs::msg::RigidBodies becomes mocap4r2_interfaces::msg::RigidBodies.
    • In Humble, Jazzy and Kilted, mocap4r2_msgs stays at its last version, marked end-of-life. It is not released for Lyrical.
  • These packages were removed:
    • rqt_mocap4r2_control, replaced by the CLI and the terminal UI
    • mocap4r2_dummy_driver, replaced by the simulated system
    • mocap4r2_marker_publisher
  • Drivers publish TF themselves (publish_tf parameter). Every driver has a frame_id parameter.

Contributing

To add your mocap system, write a driver that translates the system’s data into the MOCAP4ROS2 interfaces. All the tools then work with it from the first frame. The guide is here: Writing a driver for a new system - MOCAP4ROS2

Issues and PRs are welcome: MOCAP4ROS2-Project · GitHub

Thanks to everyone who reported issues and sent patches over the years. Many of them shaped this release.

Francisco