在多架无人机同时在一台地面站上操作时,我们通常希望能够通过鼠标框选其中部分无人机,对选中的无人机执行相同的操作,例如解锁指令,如上图所示效果。此篇文章先对实现思路进行讲解,具体的实现代码机过程,在后续文章中。
实现思路
1、获取鼠标框选时按压和释放的鼠标坐标值,通过Qt Map组件的函数toCoordinate(),转换为地图上的经纬度值。
2、在MultiVehicleManager类中增填函数,用于判断所有连接的无人机的经纬度是否在鼠标框选的经纬度内,将在框选内的无人机ID号存入一个自定义的数组中。
3、在FlightDisplayView.qml(飞行地图页面)增加一个Rectangle矩形框,以列分布的方式放置Button按钮,软件开启时将矩形框隐藏,当鼠标右键释放,将矩形框显示,并修改坐标为鼠标释放点的坐标。当矩形框内按钮触发点击信号时,在将矩形框隐藏掉。
4、在MultiVehicleManager类中增加一个解锁函数,可根据选中无人机的ID数组,根据ID获取无人机Vehicle对象,并调用Vehicle对象的相应指令,例如解锁指令:setArmed(true)
5、在第3步骤中矩形框内相应按钮例如:解锁按钮触发点击事件,即可调用步骤4中的函数,从而实现对选中多架无人机进行解锁操作。