DJI Mobile SDK(2):多自由度控制飞行(Virtual Stick)

本文介绍了使用DJI Mobile SDK开发手机应用来控制Mavic飞行的过程。通过电脑与手机间的TCPSocket通信,实现了电脑控制手机App进而控制无人机的飞行。内容包括UI设计、按钮响应设置,以及如何通过DJI Assistant模拟器进行安全的飞行调试。
摘要由CSDN通过智能技术生成

  由于项目开发需要用电脑控制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发送一次数据
                
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值