使用Nokov度量运动捕捉系统进行定位
动作捕捉系统 (mo-cap) 是一种用于跟踪物体或人运动的技术,通常用于动画、运动分析或生物力学研究。 它通常涉及摄像头和传感器,用于捕获放置在主体上的标记的位置、方向和移动。然后处理数据以创建数字表示或动画。 Nokov 动作捕捉系统 (https://www.nokov.com/) 是该领域可用于无人机室内定位的产品之一。
1. 准备工作
(1) 硬件设备
Nokov 度量运动捕捉系统
Kerloud 室内光流无人机
无人机数传地面端*1
地面站电脑
(2) 操作软件
安装Qgroundcontrol 软件到地面站电脑,
Ubuntu 18.04 系统(推荐): https://github.com/cloudkernel-tech/qgroundcontrol/releases/download/v0.2.1/QGC_3.5.6_kerloud_202411.AppImage
相关设置参考这个链接中的启动方式: https://cloudkernel.cn/pursuit/tutorials_zh/firmware_upgrade_zh.html#tutorial-firmware-upgrade-zh, 指令说明如下:
sudo usermod -a -G dialout $USER sudo apt-get remove modemmanager -y sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y chmod +x ./QGC_3.5.6_kerloud_202411.AppImage # 执行上述指令后重启电脑使设置生效 # start the app with command ./QGC_3.5.6_kerloud_202411.AppImage
Windows 11系统: https://github.com/cloudkernel-tech/qgroundcontrol/releases/download/v0.3/QGroundControl-pursuit-installer.exe
Windows 11系统中还需要安装数传天线的USB-UART串口驱动, 下载链接: https://www.silabs.com/developer-tools/usb-to-uart-bridge-vcp-drivers?tab=downloads
2. Nokov系统设置
请参考《ROS 与 Nokov 动作捕捉系统的通信-V2》文件,完成 XINGYING 软件的安装, VRPN软件的安装。在无人机上合适位置贴上反光球,将无人机设置成系统中的一个 Markerset, 可以通过软件查看到无人机的位姿,详细操作可以阅读《XINGYING操作说明书》。
3. Kerloud无人机设置
(1) 机载ROS软件
首先参考 供电和编程界面 进入机载电脑,
参考《ROS与Nokov动作捕捉系统的通信-V2》文件中“ROS 与 XINGYING 软件的通信”,在无人机机载电脑Jetson Nano中完成vrpn软件包的安装。
保证无人机机载电脑可以自动连接到XINGYING软件的同一网络,可以ping通;之后测试启动 vrpn_client_ros可以获取对应tracker的位姿信息(详见第11页操作),例如可以在机载电脑中看到”/vrpn_client_node/Tracker2/pose”的输出,请记录好对应本机的topic名称,该输出即是机器在运动捕捉环境下的位置和姿态,我们可以用该信息输入到飞控作为定位。
对于我们Kerloud无人机,需要启动mavros节点后订阅运动捕捉的位姿输出话题,即可把运动捕捉系统的测量位姿发布给飞控。
用户可以通过topic_tools将运动捕捉发布的位姿话题转发到mavros的/mavros/vision_pose/pose话题,注意修改对应的话题名称:
#please modify the topic name from vrpn_client_node here rosrun topic_tools relay /vrpn_client_node/<tracker_name>/pose /mavros/vision_pose/pose
启动mavros节点的方式为:
cd ~/src/uav_space/catkinws_offboard #customized mavros package is inside the catkinws_offboard workspace source devel/setup.bash roslaunch mavros px4.launch fcu_url:=”/dev/ttyPixhawk”
(2) 飞控参数设置
连接无人机和 QGC 地面站,针对运动捕捉环境,我们需要设置对应飞控的参数为:
EKF2_AID_MASK 24 #select vision position, vision yaw
EKF2_HGT_MODE 3 #vision height
注意:不同地面站版本显示的数据不一样,请确保参数数值分别为 24 和 3,可以手动输入。对于有光流配置的Kerloud无人机机型,可以勾选use optical flow选项,这样EKF2_AID_MASK为26。
重启飞控使设置生效。
4. 定位状态测试与室内飞行
(1) 定位状态测试
无人机在机载电脑端需要通过三个topic来核对它的定位信息,如果设置正确,这三个定位输出的数据应该很接近。
rostopic echo /vrpn_client_node/<tracker_name>/pose # position measurement from the motion capture system
rostopic echo /mavros/vision_pose/pose # external localization position sent to the autopilot
rostopic echo /mavros/local_position/pose # fused position from the autopilot
Note
📌 以上输出数据的单位需要是SI单位制
用户也可以在运动捕捉环境下手持移动无人机测试输出数据,比如往运动捕捉系统的X轴正向移动1米,则对应坐标输出X的值也会增加1。
(2) 室内飞行
请先校准无人机加速度计、陀螺仪、磁感计等传感器,参考: https://cloudkernel.cn/kerloud-uav/quickstart-zh.html 。 只需要进行其中的传感器校准环节,其他环节均在出厂时完成。
核查无人机桨叶方向安装正确,且螺母拧紧。
启动运动捕捉系统,核查定位输出正常。
启动无人机机载电脑端的vrpn_client_ros和mavros节点,核查飞机位置和姿态正常,可以通过手持无人机验证它的显示位姿。
尝试使用POSITION模式进行半自动飞行,参考无人机用户手册快速启动章节,如果POSITION模式下可以飞行,则无人机在运动捕捉环境下可以实现正确的定位,自动飞行也没问题。
进行自动飞行前,一定要核查飞行的航路点坐标在限定范围内,如果使用提供的off_mission节点,默认的航路点坐标需要修改,其中起飞高度是5米会超过室内限制。自动飞行前软件程序一定要通过软件仿真环境测试。
5. 常见问题
Q1: 如果室内飞行时动作捕捉系统的定位输出丢失,无人机会有什么反应,会直接炸机吗?
Ans: 无人机失去外部定位数据后,如果EKF2_AID_MASK设置中有选择光流optical flow,则无人机会默认切换到POSITION模式,光流进行水平定位,但高度会使用baro进行定位;如果没有光流,则无人机会失去定位信息,发生报警, 飞机会默认下降(但不是垂直下降,因为这时水平方向没有定位)。无人机不会直接翻转炸机。
建议:操作时注意运动捕捉环境的有效定位空间,只在有效空间里执行飞行任务;关注地面站的提醒,遇到问题切到手动stabilized模式,保障安全飞行。