NOKOV度量动作捕捉系统可以很好的适配PX4无人机飞控平台。进行数据通信的时候,使用SDK或者VRPN的方式都是可以的。本文演示NOKOV度量动作捕捉系统通过VRPN与PX4平台进行数据传输的方法。
一、硬件准备
1、准备无人机
这里准备的无人机,飞控版是Pixhawk 2.4.8,上面搭载了一款机载电脑是树莓派3B,加了一个护栏。
关于无人机的选型以及拼装,可以参考PX4的官方网站。
2、网络拓扑结构
1)一台动作捕捉电脑。负责连接动捕镜头。有固定的IP地址,是10.1.1.198
2)无线路由器
3)树莓派主机
4)Linux服务器。在上面跑地面站软件
这些设备会连接到同一个无线路由器,它们之间是可以相互通信的。
补充一点,目前我们无线路由器和交换机桥接在了一起,所以不管是我们的无人机,还是动捕电脑,IP都是在10.1.0这个网段。
二、安装配置
1、标定与贴点
数据采集前的准备工作包括标定与贴点。
具体方法教程可以关注NOKOV度量动作捕捉服务号的技术干货-线上培训栏目。
在标定的时候注意,动捕软件的标定轴需要z轴向上。
在我们的形影软件里面,长轴是x轴,也就是说,右边这个横着看有三个点的是x轴,另一边是y轴。
放置无人机的时候,需要无人机的机头朝向x轴的正方向。
2、创建刚体
从软件界面中可以看到,我们此次实验使用了16台动作捕捉镜头。
然后我们需要在场景中确定一个刚体。
关于刚体的具体创建过程,也可以参考NOKOV度量动作捕捉服务号中的视频讲解。
3、VRPN安装配置
我们本次实验通过VRPN进行数据传输。在机载电脑上需要配置安装vrpn_client_ros。
关于这个软件包的安装,主要有下面两种方式:
1)使用apt命令
2)使用源码安装
(1)使用apt命令
具体的操作方法:
- 在树莓派上首先使用vrpn_client_ros连接上新主机;
- 然后启动MavRos;
- 将树莓派连接上飞控;
- 同时把数据转发到地面站;
- 下一步进行话题的转发,我从VRPN中接收到关于Tracker1的话题,把它转发到MavRos的话题下面;
- 最后,我们可以在一台远程主机上,不管是动捕电脑还是单独有一台高性能的服务器,在上面启动地面站软件。可以通过它来控制无人机、查看它的状态信息。
(2)使用源码安装
第二种方式是,不使用VRPN,而是直接使用NOKOV定制的软件包,名字是MOCAP_NOKOV。
维基百科有软件介绍,相应的代码仓库在GitHub上可以获取。
如果你当前的系统并不支持直接安装,就可以考虑下载源码,然后在本地进行编译使用。
之后的步骤与方法一是一样的。
区别主要是在话题转发环节,相应的话题会产生变化。
4、多主机通讯配置
因为我们通常情况下会使用集群,就会有多台ROS主机。这里介绍关于多主机的通信。
目前我们的本地环境是这样的:
我有一台机载电脑,将它设置为master节点;
我的当前电脑是一台Ubuntu服务器。
我将Master的URI定位到了树莓派的IP上面。因为主要考虑到树莓派的操作系统上面资源比较紧凑,也没有图形化界面。
主要通过ROS把数据回传到远程主机上面。
同理,在树莓派上也需要在bashrc文件里面增加内容。
验证定位有没有成功接入。可以进行以下两步:
1、在地面站的位移分析工具MAVLINK inspector的面板里,查看下面两条消息的出现,并且它的数值是跟随动捕动态变化的。
2、飞行模式的切换。如果在地面站软件里是可以支持模式的切换,可以成功地切换到定点模式的也就是position模式,那也说明定位系统是接入成功的。
三、操作流程演示
1、创建刚体
完成标定之后,将无人机放在场地中间,机头朝向x轴的正方向。
在形影动捕软件里创建一个刚体。创建刚体的步骤:
- 先暂停播放,然后移除tracker,因为这是一个刚刚创建好的刚体
- 重新点击播放,冻结帧,按住shift和鼠标左键,框选
- 点击创建刚体。这时界面上会弹出tracker2。因为我前面已经创建了tracker0和tracker1,这个序号是自动递增的。然后点击创建,刚体创建完成。
现在我还是希望用回原来的tracker1。现在就可以看到这个刚体的方位以及朝向。
2、VRPN广播
接着,打开VRPN的广播。在软件的设置里,勾选类型为刚体Rigid,单位从原来的毫米修改为现在的米,之后点击VRPN Enabled。
这时候我们再播放,刚体的定位信息已经通过VRPN传输出去了。
这里注意一点,关于网卡地址,是不用进行切换的。每一个网卡接口上面都会有VRPN数据转发出去,也就是说都是可以收到的。
3、连接树莓派
接着在树莓派电脑上ping一下动捕的电脑。这里我们看到是可以成功的,是可以正常通讯的。
接下来,在树莓派电脑上面完成刚才的几个步骤。
因为可能会需要用到几个终端,所以先远程连接过去。
首先启动VRPN客户端用于接收VRPN的数据。
这里注意,在终端里可以通过Tab键自动地去推导。
这里的IP要修改为动捕电脑的IP。
这里可以看到树莓派,也就是机载电脑的IP是10.1.1.103。这个是通过Wifi无线网连接的。
然后敲回车。这边可以看到VRPN已经连接上了。
这个tracker1就是我们对应的动捕界面中当前的tracker1。
4、MAV Ros设置
接下来要使用MAV Ros。命令也可以直接复制。
这里注意,地面站的地址10.1.1.150就是当前的这台电脑的IP。
我后面会把地面站运行在当前电脑上,方便观察无人机的状态。
端口默认的使用14550。敲回车。
现在MavRos已经接入成功。已经显示了当前无人机的一些状态信息。
5、话题转发
接着,进行话题的转发。这一步操作也是在树莓派上进行的。
直接使用RVIZ工具。把帧改成world,然后添加TF,这里可以看到tracker1已经显示出来。
然后添加一个pose。把话题更改一下,看到vision_pose/pose,则话题已经转发过来了。
现在数据就已动态显示在这个图形化工具上面。
当我这边把无人机举起来的时候,动捕软件以及当前的RVIZ工具里面都是可以实时看到变化的。
这里看见现在无人机被托举在了空中,可以看到动捕软件中的刚体已经定位在了空中。
同样的,在图形化工具里面也是可以实时展示出来的。
6、连接地面站
为了方便查看无人机的状态以及下达控制指令,可以在当前的这台电脑上面使用地面站软件。
会发现当我们地面站软件启动的时候,它就会默认地自动连接上无人机。
在这里我们就可以看到无人机的一些讯息。
7、接入验证
接着验证动捕定位系统是否成功接入。
可以看到当前是可以成功切换到定位模式的。
如果没有我们定位系统的话,是不能直接进行定位点模式切换的。
在这里我可以这样对比看一下。
把定位系统暂停,这时候切换position模式,切换失败了。
把定位数据再打开,紧接着再切换,这次就能成功切换了。
8、查看动捕定位数据
在分析工具Mav link的视察面板里查看动捕定位数据。
这里就是当前的定位系统传递来的一些信息,包括坐标、朝向、旋转信息,
还看到XYZ坐标,都是比较小的值,因为目前无人机放置在地面上。
细心的朋友会观察到,XYZ的Z是一个负值,而我们坐标里面的Z轴向上应该是个正值。这个是Mav ros替我们完成的这个转换。关于朝向的差别,可以参考PX4官方的文档。
9、飞行实测
在动捕定位系统成功之后,我们就可以尝试解锁,进行起飞的测试。
如果飞控操作不熟练的话,可以在参数里面把起飞的距离设置成3ft,大概就是90厘米左右的高度。
完整演示视频可到B站“NOKOV度量动作捕捉”查看