Skip to main content

(一)VRPN协议方式

ROS2版本:foxy,Ubuntu 版本:20.04

一、VRPN的下载安装

  1. 在终端中输入以下命令,查询当前可支持安装的 VRPN 版本。该版本要与安装的ROS2版本一致。
sudo apt search vrpn
  1. 如果包管理器可以找到对应的VRPN版本,在终端中输入以下命令,安装VRPN库。本例中安装的ROS2版本为foxy,使用安装的是ros-foxy-vrpn。
sudo apt install ros-foxy-vrpn
  1. 如果包管理器没找到对应的VRPN版本,使用以下命令下载源码安装VRPN库。该操作在不同ROS2版本均适用。
# 拉取vrpn仓库
git clone --recurse-submodules https://github.com/vrpn/vrpn.git
# 编译
cd vrpn/
mkdir build
cd build
cmake ../
sudo make install
  1. 将quatlibConfig.cmake文件和VRPNConfig.cmake保存在对应文件夹下,使用以下命令创建对应目录(根据安装ros的版本替换"foxy")。

quatlibConfig.cmake

VRPNConfig.cmake

sudo mkdir -p /opt/ros/foxy/share/vrpn/cmake/
sudo mkdir -p /opt/ros/foxy/share/quatlib/cmake/

二、vrpn_client_ros的下载安装

(一)安装相关依赖

sudo apt install -y 
ros-foxy-geometry-msgs
ros-foxy-tf2
ros-foxy-tf2-ros
ros-foxy-ament-cmake
ros-foxy-ament-lint-auto
ros-foxy-ament-lint-common

(二)编译安装vrpn_client_ros

  1. 依次运行以下命令。
# 拉取仓库
mkdir -p ~/catkin_vr/src
cd ~/catkin_vr/src/
git clone https://github.com/NOKOV-MOCAP/vrpn_client_ros.git
# colcon编译
cd ~/catkin_vr/
colcon build --symlink-install
  1. 使用以下命令配置环境并在此终端下加载环境。
source ~/catkin_vr/install/setup.bash
echo 'source ~/catkin_vr/install/setup.bash' >> ~/.bashrc

三、运行vrpn_client_ros

  1. 在启动vrpn_client-ros中需要注意,IP地址设置一定要对,要和XINGYING 软件主机位于同一网段,能 ping 通,请将电脑的防火墙关闭,参照如下命令,网卡名称更换为本地网卡。
# 查看ens33网络接口的信息
ifconfig ens33
# 关闭防火墙
sudo ufw disable
ping -c 4 10.1.1.198
  1. 进入路径:catkin_vr/src/vrpn_client_ros/config,输入gedit sample.params.yaml,服务器的IP地址是"192.168.0.107", 将服务器的IP地址修改为XINGYING的发送地址"10.1.1.198",保存文件后退出。
cd ~/catkin_vr/src/vrpn_client_ros/config
gedit sample.params.yaml
  1. 输入以下命令并按下回车键。打印出"Connection established"、"Found new sender: Tracker2"、"Creating new tracker Tracker2" 这三行,说明连接成功和动捕成功建立了通讯,并且Ros2已经获取到了动捕数据,"Tracker2"表示XINGYING软件中Markerset的名称。
ros2 launch vrpn_client_ros sample.launch.py

四、话题订阅与查询

  1. 打开一个终端,查看topic话题。输入命令"ros2 topic list"可以看到话题"/Tracker2/pose","Tracker2"表示XINGYING软件中Markerset的名称;
ros2 topic list
  1. 输入命令"ros2 topic echo /Tracker2/pose"按下回车后可以看到接收到的数据,"Tracker0" 表示XINGYING软件中Markerset的名称;数据说明:"Pose"表示Markerset的位置方向,Pose"下的"Positition" 表示Markerset的位置信息,"orientation"表示Markerset的方向旋转信息。只有勾选了"刚体"类型的时候,Ros2中才会打印出" orientation"的数据,勾选"标记点、标记点(未命名)"类型"orientation"不会打印数据。
ros2 topic echo /Tracker2/pose