ROS2 VRPN client built pirmarily to interface with motion capture devices such as VICON and OptiTrack. A detailed list of supported hardware can be found on vrpn wiki.
sudo apt install ros-<rosdistro>-vrpn-mocap
rosdep install --from-paths src -y --ignore-src
to install dependenciescolcon build
source install/setup.zsh
, etc.Run the following command,
ros2 launch vrpn_mocap client.launch.yaml server:=<server ip> port:=<port>
replacing <server ip>
and <port>
with your VRPN server ip and port, e.g.
ros2 launch vrpn_mocap client.launch.yaml server:=192.168.0.4 port:=3883
Then with ros2 topic list
, you should be able to see the following topics
/vrpn_mocap/<tracker_name>/pose
/vrpn_mocap/<tracker_name>/twist # optional when mocap reports velocity data
/vrpn_mocap/<tracker_name>/accel # optional when mocap reports acceleration data
where <tracker_name>
is usually the name of your tracked objects.
Check out the default parameter file and launch file. You can then write your own launch file with custom configurations.
server (string)
-- server name, either ip address or domain name (default: "localhost"
)port (int)
-- VRPN server port (default: 3883
)frame_id (string)
-- frame name of the fixed world frame (default: "world"
)update_freq (double)
-- frequency of the motion capture data publisher (default: 100.
)refresh_freq (double)
-- frequency of dynamic adding new tracked objects (default: 1.
)sensor_data_qos
-- use best effort QoS for VRPN data stream, set to false to use
system default QoS which is reliable (default: true
)multi_sensor (bool)
-- set to true if there are more than one sensor (frame) reporting on
the same object (default: false
)use_vrpn_timestamps (bool)
-- use timestamps coming from VRPN. This ensures that the interval between frames timestamps is not modified (default: false
)Some ideas are borrowed from the well known vrpn_client_ros -- a ROS1 package for interfacing with VRPN devices. I thank the authors and developers for delivering and maintaining the original implementation.