标签:boa blank ken review 通过 ftl pcl preview htc
本文简要介绍如何通过调用DJI Mobile SDK,实现获取和释放无人机的控制权限、模拟遥控器按钮控制无人机的飞行、获取无人机的回传视频、获取无人机参数、实现和onboard SDK的数据透传。
下面逐个介绍以上内容,余下内容将在以后的文章介绍(文章末尾附上GitHub链接):
1、获取flightController 对象;
DJIFlightController flightController;
//对flightController进行实例化
public void setAircraft(DJIBaseProduct djiAircraft){
if(djiAircraft==null){
return;
}
flightController=((DJIAircraft)djiAircraft).getFlightController();
if(flightController!=null) {
}
}
2、通过flightController对象调用方法获取和释放无人机的权限:
//获取无人机的控制权限
public void enable(){
flightController.enableVirtualStickControlMode(
new DJIBaseComponent.DJICompletionCallback() {
@Override
public void onResult(DJIError djiError) {
if (djiError == null) {
}
}
}
);
if(mSendVirtualStickDataTimer==null) {
mSendVirtualStickDataTimer = new Timer();
mSendVirtualStickDataTimer.schedule(new MyTimerTask(this), 100, 200);
}
isEnable=true;
VirtualStickApplication.logInfo("已获取对无人的控制权限!");
}
//释放无人机的控制权限
public void disable(){
isEnable=false;
flightController.disableVirtualStickControlMode(
new DJIBaseComponent.DJICompletionCallback() {
@Override
public void onResult(DJIError djiError) {
if (djiError == null)
{
}
}
}
);
if(taskReference!=null) {
taskReference.cancel();
taskReference=null;
}
if(mSendVirtualStickDataTimer!=null) {
mSendVirtualStickDataTimer.cancel();
mSendVirtualStickDataTimer.purge();
mSendVirtualStickDataTimer=null;
}
}
1、获取flightController 对象(如上所示);
2、通过flightController对象调用方法实现无人机的起飞、降落、上升、下降、左旋、右旋以及往前后左右四个方向飞行;
起飞
//实现无人机的起飞操作
public void takeOff(){
if(flightController instanceof dji.sdk.FlightController.c){
dji.sdk.FlightController.c tmp=(dji.sdk.FlightController.c)flightController;
tmp.takeOff(new DJIBaseComponent.DJICompletionCallback() {
@Override
public void onResult(DJIError djiError) {
if (djiError != null)
VirtualStickApplication.logError("TakeOff error:", djiError);
}
});
VirtualStickApplication.logInfo("无人机开始起飞!");
}
}
降落
//实现无人机的降落
public void land(){
if(flightController instanceof dji.sdk.FlightController.c){
dji.sdk.FlightController.c tmp=(dji.sdk.FlightController.c)flightController;
tmp.autoLanding(new DJIBaseComponent.DJICompletionCallback() {
@Override
public void onResult(DJIError djiError) {
if (djiError != null)
VirtualStickApplication.logError("AutoLanding error:", djiError);
}
}
);
VirtualStickApplication.logInfo("无人机开始降落!");
}
}
上升
public void leftUpClick(){
if(mThrottle<6)
mThrottle++;
}
下降
public void leftDownClick(){
if(mThrottle>=1)
mThrottle--;
}
左旋
public void leftLeftClick(){
mYaw= -yawSpeed;
}
右旋
public void leftRightClick(){
mYaw= yawSpeed;
}
前行
public void rightUpClick(){
mRoll =rollPitchSpeed;
}
后退
public void rightRightClick(){
mPitch =rollPitchSpeed;
}
左行
public void rightDownClick(){
mRoll =-rollPitchSpeed;
}
右行
public void rightLeftClick(){
mPitch=-rollPitchSpeed;
}
其中,获取和释放权限、起飞、降落函数推荐在onclick事件中进行调用,控制无人机飞行的函数推荐在OnTouch事件中进行调用(也可利用自己写Timer控制每个函数的执行时间等)。
Github链接:https://github.com/MrJoeyM/sky-app
标签:boa blank ken review 通过 ftl pcl preview htc
原文地址:http://www.cnblogs.com/C7523/p/7226002.html