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-srcto install dependencies - Run
colcon build - Your usual ROS2 routines:
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:=3883Then 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 datawhere <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.