大疆M300MSDK V4虚拟摇杆控制

按照官方demo拿到的虚拟摇杆控制方法,比如想要实现3m/s的速度往上飞,发送指令如下
FlightControlData(roll左右,pitch前后,yaw旋转,throw升降)大疆这么说明的

mFlightController.sendVirtualStickFlightControlData(
                new FlightControlData(
                        0, 0, 0, 3
                ), djiError -> {
                    if (djiError != null) {
                        LogUtils.d(TAG, "控制失败");
                    } else {
                        LogUtils.d(TAG, "控制成功");
                    }
                }
        );

发现这样处理,并没有按照预设的飞行速度往上飞,甚至无人机在大于3m的时候还要往下降。

后来通过各种测试和设置发现,需要配置一些MODE,除非默认的状态是对的,这里根据文档和API介绍,和大疆自己描述的接口设置简单模式如下,自己读注释能看明白

//这个是升降控制,position模式是指定高度,velocity模式是增量模式最大是4m/s,最小是-4m/s
mFlightController.setVerticalControlMode(VerticalControlMode.VELOCITY);
//控制旋转 ANGLE 偏航值设置为相对于北向的角度,最大偏航角定义为 180 度。最小偏航角定义为-180度,控制旋转 ANGULAR_VELOCITY 正角速度和负角速度分别代表飞行器顺时针和逆时针旋转 最大偏航角速度定义为 100 度/秒
mFlightController.setYawControlMode(YawControlMode.ANGULAR_VELOCITY);
//控制 ANGLE  VELOCITY这个是飞机的倾斜角度,比较危险不这么玩 VELOCITY将横滚和俯仰值设置为速度
mFlightController.setRollPitchControlMode(RollPitchControlMode.VELOCITY);
//设置机身坐标系
mFlightController.setRollPitchCoordinateSystem(FlightCoordinateSystem.BODY);
//FlightControlData(roll左右,pitch前后,yaw旋转,throw升降)
按照上面的设置,再发送对应的控制指令,就都是按照输入的速度和角速度来执行动作了,合并如下
private void setViticalMode() {
        mFlightController.setVerticalControlMode(VerticalControlMode.VELOCITY);//升降模式,速度模式
        mFlightController.setRollPitchControlMode(RollPitchControlMode.VELOCITY);//前后左右,速度模式
        mFlightController.setYawControlMode(YawControlMode.ANGULAR_VELOCITY);//旋转,角速度模式
        mFlightController.setRollPitchCoordinateSystem(FlightCoordinateSystem.BODY);//机身坐标系
    }
再首次发送指令之前调用setViticalMode()方法就好。自己做记录,希望也能帮助到你。
给个大疆参考链接:虚拟摇杆的推荐设置是什么?
https://sdk-forum.dji.net/hc/zh-cn/articles/6332932395161-%E8%99%9A%E6%8B%9F%E6%91%87%E6%9D%86%E7%9A%84%E6%8E%A8%E8%8D%90%E8%AE%BE%E7%BD%AE%E6%98%AF%E4%BB%80%E4%B9%88-
这里主要做参考,自己可以根据MODE查看大疆API
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值