Android端集成大疆SDK(MSDK)

本文档详细介绍了如何在Android应用中集成大疆无人机SDK(MSDK),包括无人机接入准备、编译环境配置、核心代码实现以及项目源码分享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大疆无人机SDK集成项目

本项目主要是集成大疆SDK,并通过大疆API来获取无人机实时传递回来的h264数据,以及通过编解码API拿到YUV数据;
该项目里面封装了一些基础的API调用,方便后续集成调用。
 1. 无人机接入准备
 2. 编译环境准备
 3. 关键代码
 4. 项目地址

1. 无人机接入准备

 1. 本项目测试机型为大疆的御pro 2,遥控器为不带屏遥控器。(带屏遥控器是无法使用大疆SDK的)
 2. 集成使用要点:
	* 需先用测试手机下载大疆专用APP (DJI GO 4)软件进行无人机与遥控器之间的对频操作,此时应该注意,每次将手机和无人机进行USB连接时,会弹出默认启动应用弹框,应选择仅次一次;不然后续装上自己的应用后,连上无人机是无法拉起我们自己的应用的。
	* 当连接成功,可以正常起飞后,此时在手机端装入自己的应用,启动并执行 DroneModel中的 startRegisterSDK 方法,执行注册大疆SDK。
	* 注册成功后,会弹出登录弹框,提示登录大疆账号,此时应填入自己的大疆账号(国内每三个月登录一次,国外不受此限制)
	* 接口 setDjiProductStateCallBack 是回调产品数据,当存在产品时,会执行onAirPlaneStateChange(bool)方法,传入参数为true
	* 接口 setDroneH264VideoDataCallBack 回调,来获取无人机回传的H264数据,获取H264数据
	* 接口 DroneYUVDataCallBack回调,来获取无人机回传的数据,通过CodeManager解码后获取YUV数据
	* 方法 videoPreview方法,传入surfaceView,来执行无人机摄像头数据预览
	* 方法 setAirPlaneCameraParam方法,来设置无人机摄像头参数,具体参数请查看DJICameraParams类,其中有详细的说明
	* DroneModel是单例方法,直接通过getInstance拿到单例对象即可
	* FileUtils工具类提供了写入H264流到文件,写出的文件可以直接通过暴风影音来进行播放,查看H264是否正常

2. 编译环境准备

1. 当前编译环境:Android studio 3.2  gradle版本为:3.2.1  gradle-wrapper版本为:4.6
2. 大疆SDK导入 :在当前项目build.gradle 下导入
	1. build.gradle 配置
	   android {
		   defaultConfig {
			   ……
			   ndk {
				   // 这里只做了armeabi-v7a架构的支持,大疆SDK不支持armeabi架构
				    abiFilters 'armeabi-v7a'
			   }
		   }
		  dexOptions {
		    javaMaxHeapSize "4g"
		   }
		   
		  packagingOptions {
			doNotStrip "*/*/libdjivideo.so"
			doNotStrip "*/*/libSDKRelativeJNI.so"
			doNotStrip "*/*/libFlyForbid.so"
			doNotStrip "*/*/libduml_vision_bokeh.so"
			doNotStrip "*/*/libyuv2.so"
			doNotStrip "*/*/libGroudStation.so"
			doNotStrip "*/*/libFRCorkscrew.so"
			doNotStrip "*/*/libUpgradeVerify.so"
			doNotStrip "*/*/libFR.so"
			doNotStrip "*/*/libDJIFlySafeCore.so"
			doNotStrip "*/*/libdjifs_jni.so"
			doNotStrip "*/*/libsfjni.so"
			exclude 'META-INF/rxjava.properties'
		  }
		  dependencies {
			implementation 'com.android.support:multidex:1.0.2'
			implementation('com.dji:dji-sdk:4.9', {
			//if your app needn't support Mavic 2 Pro and Mavic 2 Zoom, pls exclude the library-anti-distortion module
			//like following
			//exclude module: 'library-anti-distortion'

			//Uncomment the following line if your APP does not need network RTK.
			//For Phantom 4 RTK and Matrice 210 RTK V2. Network RTK can be used as a virtual reference station to provide
			//cm level accurate position.
			//exclude module: 'library-anti-distortion'
			})
			compileOnly 'com.dji:dji-sdk-provided:4.9'
		  }
	   }
	2. AndroidManifest配置
	<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.distance.third.dji">	
		<uses-permission android:name="android.permission.VIBRATE" />
		<uses-permission android:name="android.permission.INTERNET" />
		<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
		<uses-permission android:name="android.permission.WAKE_LOCK" />
		<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
		<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
		<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
### 大疆 MSDK AI 开发教程 对于大疆移动软件开发工具包(MSDK)中的AI功能开发,官方文档提供了详细的指南来帮助开发者理解如何集成人工智能算法到应用程序中。通过MSDK可以访问无人机传感器数据并处理这些信息以实现高级特性,比如物体检测、跟踪以及场景解析等功能。 为了开始基于MSDK的AI项目,在安装必要的依赖项之后,建议熟悉Python编程环境和机器学习框架TensorFlow或PyTorch等。接着可以根据特定需求定制模型,并利用Jetson平台或其他支持硬件加速推理性能的设备来进行高效计算[^1]。 下面是一个简单的例子展示怎样使用预训练好的分类网络对图像进行预测: ```python from djitellopy import Tello import cv2 import numpy as np import tensorflow as tf # 初始化Tello对象并与之连接 drone = Tello() drone.connect() # 加载预先训练过的MobileNetV2用于图片识别 model = tf.keras.applications.MobileNetV2(weights='imagenet') while True: frame = drone.get_frame_read().frame # 预处理输入给定尺寸调整大小并标准化像素值范围至[-1, 1] img_array = cv2.resize(frame,(224, 224)) processed_image = (img_array / 127.5) - 1. # 扩展维度以便于匹配预期输入形状(batch_size, height, width, channels) input_data = np.expand_dims(processed_image,axis=0) predictions = model.predict(input_data) predicted_class_index=np.argmax(predictions[0]) label_map = { ... } # 定义标签映射表 class_name=label_map[predicted_class_index] print(f'Predicted Class Name:{class_name}') if cv2.waitKey(1)&0xFF==ord('q'): break cv2.destroyAllWindows() drone.end() ``` 此代码片段展示了如何设置DJI Tello无人机并通过其摄像头捕获实时视频流;随后应用了一个轻量级卷积神经网络——MobileNetV2 对每一帧执行推断操作从而获取最有可能的目标类别名称。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值