大疆 Mobile SDK云台控制的几个函数

前言

突然发现DJI官网上并没有关于无人机本身云台(万向节)的相关教程。搜索一波有人说大疆的Sample Code的demo里有。于是乎走一波。(找几个合适有用的函数)。

开始

大疆的Sample Code是可以运行的,在官网注册好相应的app Key。运行起来,找到相应的Gimbal界面,由于我用的无人机是 Mavic Air型号(有些功能不支持)。
与Gimbal相关的有三个界面
在这里插入图片描述 在这里插入图片描述在这里插入图片描述
我们看到只有几个按钮能按,但是没关系,对我来说就够了。Down,Stop,Up,Reset(第三张图没截出来),接下来就是找打相应的源码了。

打开 Sample Code
找到源码
在这里插入图片描述
三个类,对应三个界面
主要是打开MoveGimbalWithSpeedView这个,主要的函数都在这个里面。在这个类里面,声明一个时间任务GimbalRotateTimerTask(实现TimerTask),以后的按钮都是声明一个定时器用这个类去控制摄像头的俯仰。在这个类中调用Gimbal类中的roate函数,在roate函数中运用Build()重构万向节(云台)对象,达到控制摄像头的目的。
在这里插入图片描述
上升的函数
在这里插入图片描述下降的函数
在这里插入图片描述停止的函数
在这里插入图片描述但是,这里面有一个问题在上升或者下降的时候是不能直接相互切换的。意思是说在上升的时候点击下降是没有用的。问题在于在实现两个函数中只有

if (timer == null) {
            timer = new Timer();
            gimbalRotationTimerTask = new GimbalRotateTimerTask(-10);
            timer.schedule(gimbalRotationTimerTask, 0, 100);
        }

在云台移动时,timer不为null,所以不能直接相互切换,必须先点stop才能切换。
另外ModuleVerificationUtil和DJISampleApplication.getProductInstance()找不到需要重新建立,或者跟进函数,把相应的函数实现可以了。
Reset函数在GimbalCapabilityView类中

case R.id.btn_reset: {
                Gimbal gimbal = getGimbalInstance();
                if (gimbal != null) {
                    gimbal.reset(null);
                } else {
                    ToastUtils.setResultToToast("The gimbal is disconnected.");
                }
                break;

相应缺失的函数跟进就好了。

OK

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值