由于项目开发需要用电脑控制Mavic进行飞行。最终选择的方案是用手机做一个中转,即“电脑->手机app->遥控器->飞行器”,电脑和手机之间采用TCPSocket通信。
循序渐进,本文主要介绍如何编写手机app来控制Mavic飞行。
编写UI
UI上一共放置了18个Button,用来模拟遥控器,主要包括左右两套摇杆、起飞、降落、使能手机控制、关闭手机控制,以及四个备用Button。具体代码就不写了,最终实现的界面如下。
按钮响应
最主要的一个Button就是EN(使能手机控制),点击之后,进行一系列初始化的工作。在onClick()方法里编写。
public void onClick(View v){
switch (v.getId()) {
case R.id.button_enable_virtual_stick:{
//使能控制
DJISampleApplication.getAircraftInstance().
getFlightController().
setVirtualStickModeEnabled(true, new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
}
});
//设置飞行器坐标系和控制模式
DJISampleApplication.getAircraftInstance().getFlightController().
setRollPitchCoordinateSystem(FlightCoordinateSystem.BODY);
DJISampleApplication.getAircraftInstance().getFlightController().
setVerticalControlMode(VerticalControlMode.POSITION);
DJISampleApplication.getAircraftInstance().getFlightController().
setYawControlMode(YawControlMode.ANGULAR_VELOCITY);
DJISampleApplication.getAircraftInstance().getFlightController().
setRollPitchControlMode(RollPitchControlMode.VELOCITY);
//定时器用来定时,200ms发送一次数据