(三)动捕案例
本文将以VRPN协议为例,系统阐述该动作捕捉系统与PX4平台间的数据传输实现方法:首先通过VRPN协议建立实时通信链路,随后利用PX4平台内置的MAVLink消息接口完成位姿数据的解析与融合,最终实现无人机运动状态的高频同步。实验验证表明,该方法可稳定传输六自由度位姿信息,为无人机编队控制、轨迹规划等研究提供精准的空间定位数据支撑。
一、硬件准备
(一)准备无人机
本次实验所使用的无人机平台采用Pixhawk 2.4.8飞控系统作为核心控制单元,该飞控搭载双处理器架构(STM32F427主控与STM32F103协处理器),集成L3GD20陀螺仪、LSM303D加速度计等九轴MEMS传感器组,并支持MAVLink通信协议。飞控平台通过UART串口与树莓派3B型机载计算机建立数据链路,该嵌入式系统配备博通BCM2837B0四核处理器(Cortex-A53架构,主频1.4GHz),并加装碳纤维环形防护框架以提升结构稳定性。
.png)
(二)网络拓扑结构
- 动捕主机(负责连接动捕镜头,固定IP 10.1.1.198)
- 无线路由器
- 树莓派主机
- Linux服务器(用于运行地面站软件)
这些设备会连接到同一个无线路由器,它们之间是可以相互通信的。
本实验网络架构采用集中式拓扑设计,所有终端设备均通过无线接入点(AP)实现与核心交换机的物理层连接。在数据链路层层面,这些设备基于IEEE 802.11协议族构建了统一的二层网络架构,实现了跨平台终端的双向数据交互能力。
当前网络配置中,通过OSI第二层网络桥接技术将无线路由器与千兆以太网交换机进行逻辑整合,形成单广播域网络环境。该设计使得无人机系统、动作捕捉工作站等异构设备均被纳入10.1.1.0/24逻辑子网。
.png)
二、安装配置
(一)标定与贴点
数据采集前的准备工作包括标定与贴点。具体方法教程可以关注NOKOV度量动作捕捉服务号的技术干货-线上培训栏目。
.png)
在标定的时候注意,动捕软件的标定轴需要z轴向上。在我们的XINGYING软件里面,长轴是x轴,也就是说,右边这个横着看有三个点的是x轴,另一边是y轴。放置无人机的时候,需要无人机的机头朝向x轴的正方向。
.png)
(二)创建刚体
我们此次实验使用了12台动作捕捉镜头。
.png)
在场景中创建一个刚体。
关于刚体的具体创建过程,也可以参考NOKOV度量动作捕捉服务号中的视频讲解。
.png)
(三)VRPN安装配置
我们本次实验通过VRPN进行数据传输。在机载电脑上需要配置安装vrpn_client_ros。
.png)
(四)px4获取动捕数据方式
- VRPN方式
.png)
具体的操作方法:
- 在树莓派上首先使用vrpn_client_ros连接上新主机;
- 然后启动MavRos;
- 将树莓派连接上飞控;
- 话题转发,从VRPN中接收到关于Tracker1的话题,将它转发到MavRos的话题下;
- 在一台远程主机上,不管是动捕电脑还是单独有一台高性能的服务器,在上面启动地面站,通过它来控制无人机并查看它的状态信息。
- MOCAP方式
.png)
第二种方式是,不使用VRPN,而是直接使用NOKOV定制的软件包,名字是MOCAP_NOKOV。维基百科有软件介绍,相应的代码仓库在GitHub上可以获取。
如果你当前的系统并不支持直接安装,就可以考虑下载源码,然后在本地进行编译使用。
之后的步骤与方法是一样的。区别主要是在话题转发环节,相应的话题会产生变化。
(五)多主机通讯配置

我们通常情况下会使用集群,就会有多台ROS主机。这里介绍关于多主机的通信。
我们的本地环境是这样的:
- 一台机载电脑,将它设置为master节点
- 一台Ubuntu服务器
- 一个树莓派
因为主要考虑到树莓派的操作系统上面资源比较紧凑,也没有图形化界面。所以将Master的URI定位到了树莓派的IP上面。主要通过ROS把数据回传到远程主机上面。
同理,在树莓派上也需要在bashrc文件里面增加内容。

验证定位有没有成功接入。可以进行以下两步:
- 在地面站软件中启用MAVLink Inspector工具,重点监测以下两类消息的动态响应:
VISION_POSITION_ESTIMATE消息:
验证其"x"、"y"、"z"三轴坐标值是否与动作捕捉系统输出的空间位姿数据保持同步波动(建议误差阈值±0.05m)
VISION_POSITION_ODOMETRY消息:
检查四元数姿态参数(q0-q3)及时间戳字段是否以20Hz以上频率持续更新
- 飞行模式的切换。
通过地面站控制台向飞控发送模式切换指令,将飞行模式设置为"Position Hold(定点模式)"。
三、操作流程演示
(一)创建刚体
完成标定之后,将无人机放在场地中间,机头朝向x轴的正方向。

在形影动捕软件里创建一个刚体。创建刚体的步骤:
- 先暂停播放,然后移除tracker,因为这是一个刚刚创建好的刚体
- 重新点击播放,冻结帧,按住shift和鼠标左键,框选
- 点击创建刚体。这时界面上会弹出tracker0。然后点击创建,刚体创建完成。

创建刚体时使用Tracker1命名,可以看到Tracker1刚体的方位以及朝向。

(二)VRPN广播
接着,打开VRPN的广播。在软件的设置里,勾选类型为刚体Rigid,单位从原来的毫米修改为现在的米,之后点击启用VRPN Enabled。
这时候我们再播放,刚体的定位信息已经通过VRPN传输出去了。
每一个网卡接口上面都会有VRPN数据转发出去,也就是说每一个网卡地址都是可以收到VRPN数据的。


(三)连接树莓派
接着在树莓派电脑上使用ping命令测试与动捕电脑的网络连通性。

这里我们看到ping命令是可以正常通讯的。
接下来,在树莓派电脑上面完成刚才的几个步骤。因为可能会需要用到几个终端,所以先远程连接过去。首先启动VRPN客户端用于接收VRPN的数据。
.png)
在终端里可以通过Tab键自动地去推导。
这里的IP要修改为动捕电脑的IP,可以看到树莓派,也就是机载电脑的IP是10.1.1.103。
运行命令,这边可以看到VRPN已经连接上了。
.png)
这个tracker1就是我们对应的动捕界面中当前的tracker1。
.png)
(四)MAV Ros设置
接下来使用MAV Ros。
地面站的地址10.1.1.150就是当前的这台电脑的IP。将地面站运行在当前电脑上,方便观察无人机的状态。端口默认的使用14550。
.png)
现在MavRos已经接入成功。已经显示了当前无人机的一些状态信息。

(五)话题转发
在树莓派上进行话题转发。
.png)
使用RVIZ工具,将帧改成world,然后添加TF,这里可以看到tracker1已经显示出来。
.png)
然后添加一个pose。把话题更改一下,看到vision_pose/pose,则话题已经转发过来了。
.png)
现在数据就已动态显示在这个图形化工具上面。
.png)
将无人机举起来的时候,动捕软件以及当前的RVIZ工具里面都是可以实时看到变化的。这里看见现在无人机被托举在了空中,动捕软件中的刚体已经定位在了空中。
.png)
同样的,在图形化工具里面也是可以实时展示出来的。
.png)
(六)连接地面站
为了方便查看无人机的状态以及下达控制指令,可以在当前的这台电脑上面使用地面站软件。
会发现当我们地面站软件启动的时候,它就会默认地自动连接上无人机。
在这里我们就可以看到无人机的一些讯息。
.png)
.png)
(七)接入验证
接着验证动捕定位系统是否成功接入。
如果没有我们定位系统的话,是不能直接进行定位点模式切换的。
.png)
在这里可以这样对比看一下。
将定位系统暂停,这时候切换position模式,切换失败了。
将定位数据再打开,紧接着再切换,这次就能成功切换了。
(八)查看动捕定位数据
在分析工具Mav link的视察面板里查看动捕定位数据。

这里就是当前的定位系统传递来的一些信息,包括坐标、朝向、旋转信息,还看到XYZ坐标,都是比较小的值,因为目前无人机放置在地面上。
细心的朋友会观察到,XYZ的Z是一个负值,而我们坐标里面的Z轴向上应该是个正值。这个是Mavros替我们完成的这个转换。关于朝向的差别,可以参考PX4官方的文档。
(九)飞行实测
在动捕定位系统成功之后,我们就可以尝试解锁,进行起飞的测试。
如果飞控操作不熟练的话,可以在参数里面把起飞的距离设置成3ft,大概就是90厘米左右的高度。

完整演示视频可到B站"NOKOV度量动作捕捉"查看
https://space.bilibili.com/251016401?spm_id_from=333.337.0.0