目录
2、介绍(Guidance SDK reference)... 8
Guidance SDK综述
概述:通过授予对Guidance的完全控制权,Guidance SDK使您能够轻松地开发各种基于视觉的应用程序,您可以轻松地从所有主流系统的指南中访问所有输出数据。
支持平台:Windows、Linux、Embeded systems
特征:
1、机身状态:输出机身的三维速度与位置(世界坐标系?)、输出到最近障碍物的距离(图像和超声波数据)
2、传感器数据:输出机身IMU数据(三轴加速度计和陀螺仪(机体坐标系))、输出到最近障碍物的距离
3、图像:输出固定分辨率为3x240的8或16位灰度图像、
4、相机配置:有权获取双目相机标定参数、有权访问和修改相机曝光模式和参数
硬件接口:
- USB:以高数据速率传输所有数据并精确控制相机参数
- UART:传输除图像以外的所有数据,适用于所有具有串行通信的系统
Guidance SDK文件(document)
1.1启动
官方Guidance SDK包,用于通过USB和UART访问指南的丰富类别的输出数据,并根据需要配置Guidance。
1.1.1文件
A、开发者指南
B、运行例程
C、建立视觉跟踪项目
D、Guidance SDK参考
1.1.2结构
A、demo:使用Guidance SDK的演示应用程序
B、doc:文件
C、examples:USB和UART的例程
D、include:Guidance SDK的头文件
E、lib:Windows的库文件
2010/X64:使用Visual Studio 2010 64位生成
2010/X86:使用Visual Studio 2010 32位生成
2013/X64:使用Visual Studio 2013 64位生成
2013/X86:使用Visual Studio 2013 32位生成
F、so:Linux的库文件
X64:用g++在64位Linux系统上构建
X86:用g++在32位Linux系统上构建
XU3:用g++在XU3系统上构建
arm:在嵌入式ARM系统上,用最新的arm-linux-gnueabi-g++构建,通过下面语句安装交叉编译工具链:sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
还要注意,为了使ROS用户能够快速下载,我们有一个单独的ROS报告,其规模要小得多:Guidance-SDK-ROS.
1.1.3用法
A、Windows
USB和UART的例子在examples/usb_example、examples/uart_example,包括待编译的Makefile文件。请记住将相应的DjiGuang.dLL文件复制到输出二进制位置所在的相同目录。
B、Linux
USB和UART的例子在examples/usb_example、examples/uart_example,包括待编译的Makefile文件。请记住将相应的DjiGuang.dLL文件复制到输出二进制位置所在的相同目录。
请注意,Linux中读写USB端口需要root权限,为了解决每次运行SDK应用程序时键入sudo的麻烦,建议将一个规则添加到/etc/udev/rules.d目录中,这可以在doc/51-guidance.rules中找到。或从终端输入以下行:
sudo sh -c 'echo "SUBSYSTEM==\"usb\", ATTR{idVendor}==\"fff0\", ATTR{idProduct}==\"d009\", MODE=\"0666\"" > /etc/udev/rules.d/51-guidance.rules'
1.2 运行例程
Guidance SDK提供了从Guidance系统获得数据的例子。本节将指导您如何执行这些示例。我们使用OpenCV来查看从Guidance传输的图像,因此建议在系统上安装OpenCV。但是,如果没有OpenCV,也可以获得除图像以外的所有数据。
我们提供Linux和Windows系统的CMAKLIST.TXT,它自动检测是否安装了OpenCV。
1.2.1用CMake编译USB实例
注:CMake是必需的。在Windows上,也需要VisualStudio(2010或2013)。
A、cd Guidance-SDK\examples\usb_example\DJI_guidance_example
B、mkdir build
C、cd build
D、cmake ..
E、build:
a、Linux系统:make
b、Windows系统:您将看到生成一个解决方案文件。打开它并建立项目dji_guidance_usb
1.2.2 Linux系统下运行USB例程
A、设置环境
Guidance SDK使用libusb-1.0.9库从Guidance系统读取数据。请参考 http://www.libusb.org/编译并安装源代码的LUBSB-1.0.9库。
B、复制相关文件
提供Makefile且已测试过。 用户无需更改任何内容即可运行示例代码。要在自己的项目中使用Guidance,用户可以按照以下说明操作:
- 复制libDJI_guidance.so到自己项目的库文件路径
- 复制DJI_guidance.h到头文件路径
- 在项目的Makefile中添加库,如下所示:
LDFLAGS = -Wl,-rpath,./ -lpthread -lrt -L./ -L/usr/local/lib/ -l **DJI\_guidance** -lusb-1.0
C、编译例程
进入项目目录并输入:Make -f Makefile_noOpenCV
注意:这里我们假设您没有安装OpenCV并使用Makefile_noOpenCV。 您可以根据自己的情况在make期间指定makefile。 例如,如果安装了OpenCV,请使用其他makefile:make –f Makefile
D、通过USB连接Guidance并运行
如果尚未按照开发人员指南中的说明将51-guidance.rules文件添加到/etc/udev/rules.d/目录,则需要root权限才能运行此示例。
sudo ./guidance_example
运行结果如下所示:
1.2.3 Windows下运行USB例程
A、配置环境
Guidance SDK使用libusb库从Guidance系统读取数据。 请确保正确安装Guidance Assistant软件,其中包括用于指导的DJI USB驱动程序。
B、安装Visual studio
提供并测试了不同版本的Visual Studio的解决方案。 用户无需更改任何内容即可运行示例代码。
要在自己的项目中使用Guidance,建议使用examples \ usb_example文件夹中提供的属性表文件。 用户只需要更改属性表文件中的头文件和库文件的目录。
或者,用户可以直接复制文件并按如下方式配置Visual Studio:
- 复制DJI_guidance.dll 、DJI_guidance.lib到自己项目的库文件路径
- 复制DJI_guidance.h到头文件路径
- 将DJI_guidance.lib添加到Visual Studio项目的其他依赖项中
C、编译
使用Microsoft Visual Studio编译示例项目。
如果安装了OpenCV,还可以通过在源文件main.cpp中或在Visual Studio的预处理设置中定义HAVE_OPENCV来将Visual Studio配置为使用OpenCV。
D、连接Guidance系统并进行测试
结果如下所示
1.2.4 Linux下运行UART例程
A、订阅UART数据
参考2.1.2激活UART
B、编译
进入uart_example目录并make:
C、连接Guidance系统并进行测试
1.2.5 Windows下运行UART例程
A、订阅UART数据
参考2.1.2激活UART
B、编译
使用VS编译
- 连接Guidance系统并测试
2、介绍(Guidance SDK reference)
2.1 背景
此文档提供了关于SDK的结构和API函数的详细解释。我们假设你有:
1、一个Guidance系统,
2、一台安装了OpenCV的计算机
并且你:
1、熟悉Linux编程,
2、或者熟悉Windows编程和Microsoft Visual Studio使用。
2.2 简介
本节介绍指导SDK的结构。该SDK分为三个层次:
应用: 该层处理由HAL层传来的数据,由开发者编写。
HAL: 硬件抽象层。该层打包/解析从驱动层传来的数据,由示例代码实现(串口)SDK库(用于USB)实现,例如libDJI_guidance.so。
驱动: 该层通过USB或者串口从Guidance接收数据,由操作系统或第三方库(如_libusb_)实现。
接口:
Guidance SDK支持两种通信协议:USB和串口。
1. USB
支持的数据类型包括速度数据,障碍物距离数据,IMU数据,超声波数据,灰度图像和深度图像。有两种方法可以通过USB订阅数据。
I、Guidance Assist软件
用户可以使用Guidance Assist软件中的“DIY-> API - > USB”选项卡来订阅数据。
A、使用USB线连接Guidance和PC,将Guidance上电
B、选择“启用”复选框
C、根据您的需求选择数据
注: 可用带宽是受制于选择的图像数据和输出频率。订阅图像数据和输出频率的选择将被保存在Guidance系统上,并在Guidance下一次启动时生效。
II、Guidance API
用户可以通过Guidance API订阅数据,这些API函数的名字都以"select"开头。
注: 如果用户通过Guidance API函数来订阅图像数据和输出频率,它只会在Guidance上电期间临时生效,Guidance断电后将恢复到Guidance Assist设置的状态。
2、串口
串口的输出数据类型包括速度数据,障碍物距离数据,IMU数据和超声波数据。由于带宽限制,图像数据不通过UART输出。
注: Guidance串口目前只支持115200波特率。
A、订阅数据
您只能使用Guidance Assist软件订阅UART数据。从“DIY-> API - > UART”页面启用串口。与USB相同,该配置将被保存在Guidance系统上,除非你在“UART”选项卡中取消选择“启用”选项。
B、协议说明
协议帧格式:
SOF LEN VER RES SEQ CRC16 DATA CRC32
协议帧解释:
名称 |
字节索引 |
大小(位) |
说明 |
SOF |
0 |
8 |