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
- Clone this repo into your ROS2 workspace
- Run
rosdep install --from-paths src -y --ignore-src
to install dependencies - Run
colcon build
- Your usual ROS2 routines:
source install/setup.zsh
, etc.
Run the following command,
ros2 launch client.launch.yaml server:=<server ip> port:=<port>
replacing <server ip>
and <port>
with your VRPN server ip and port, e.g.
ros2 launch 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.