System Integration + ROS2/C++ Development · 2025
Teleoperation Demonstration Data ROS2 NatNet
Implemented a motion-capture pose streaming module that converts OptiTrack Motive (NatNet) rigid-body tracking into ROS2 PoseStamped/TF and maps it into RViz/MoveIt2 for teleoperation demonstration capture, logging, and simulation-side verification.
Outcome: Provided a practical MoCap-to-ROS2 interface for teleoperation demonstration capture and simulation-side inspection (RViz/MoveIt2).

TL;DR

  • Problem: Teleoperation and imitation learning often require high-quality end-effector / tool pose trajectories as supervision. OptiTrack Motive provides accurate rigid-body tracking, but it is not natively exposed as standard ROS2 topics/TF for robotics pipelines.
  • Method: Built a ROS2 module that receives Motive tracking through NatNet and outputs the rigid-body pose as ROS2 PoseStamped and TF, then mapped the pose stream into RViz/MoveIt2 for simulation-side visualization and integration.
  • Result: Enabled a practical “MoCap → ROS2 → MoveIt2” pipeline that can be recorded (e.g., via rosbag2) and reused as demonstration data for downstream embodied/teleop workflows.

Overview

This project focuses on teleoperation demonstration data acquisition: turning OptiTrack Motive motion-capture tracking into ROS2-native interfaces that are easy to consume, log, and visualize. Instead of building a full teleop control loop, the core contribution is a reliable pose streaming bridge that provides high-fidelity trajectories as standard ROS2 messages (PoseStamped/TF), which can then be used by downstream systems (e.g., RViz/MoveIt2 visualization, controllers, or dataset pipelines).

My Contribution

  • Implemented a ROS2 (Humble) node in C++ that connects to OptiTrack Motive via the NatNet SDK and converts rigid-body tracking into PoseStamped and TF.
  • Integrated the streamed pose into RViz/MoveIt2 for simulation-side mapping/visual debugging (pose follows the tracked rigid body in the scene).
  • Packaged the pipeline for practical use in data collection workflows, where the pose stream can be recorded and replayed as teleop demonstrations (e.g., rosbag2).

Teleop / Embodied AI Relevance

In many embodied learning settings, a key bottleneck is collecting clean, time-aligned demonstration trajectories (especially 6DoF poses) that can serve as supervision for:

  • imitation learning / behavior cloning,
  • policy debugging with “what the operator intended” signals,
  • simulation replay and annotation.

This project provides the “pose acquisition layer” by exposing motion-capture trajectories as ROS2-native data streams (PoseStamped/TF), making it straightforward to log, replay, and integrate with existing robotics stacks.

System Architecture

Data flow: OptiTrack Motive → NatNet stream → ROS2 node → PoseStamped / TF → RViz / MoveIt2 mapping

  • Motive performs rigid-body tracking.
  • The node receives tracking frames and publishes:
    • geometry_msgs/PoseStamped (for topic-based consumers),
    • TF transforms (for frame-based consumers like RViz/MoveIt2).
  • RViz/MoveIt2 subscribes to TF / topics to visualize and align the pose within the robot/simulation scene.

Technical Notes

  • ROS2: Humble
  • MoveIt2 / RViz: visualization + simulation-side mapping
  • Interface: NatNet SDK (OptiTrack Motive)
  • Outputs: PoseStamped and TF (for easy integration with standard robotics tools)