APM:Copter参考手册目录6.6-光流传感器

APM:Copter参考手册目录6.6-光流传感器

目录

1 光流传感器(基于鼠标传感器版本)
2 连接传感器至 APM1
3 连接传感器至APM2
4 连接传感器至 APM2.5
5 测试传感器
6 从传感器捕获图像
7 它是如何工作的
8 已知问题
9 致谢:

光流传感器(基于鼠标传感器版本)

为了提高不能用GPS的环境的位置保持的精度,APM:Copter现在支持基于鼠标传感器的光流传感器。

连接传感器至 APM1

直接把线焊到盖板上面,如下图所示
默认的安装方式是镜头朝下,引脚朝前

连接传感器至APM2

电源、地、NCS引脚应连接到 A3
MISO, MOSI 和 SCLK 引脚应直接焊接到下图所示的引脚
默认的安装方式是镜头朝下,引脚朝前

连接传感器至 APM2.5

注:截止 2012 年 9 月 15 日,在 APM 2.5 上支持光流的代码还没有发布。

如下图所示,连接 VCC, GND, MISO, MOSI, SCLK 和 NCS 引脚
默认的安装方式是镜头朝下,引脚朝前

断开板子背面 的 MISOLVL 跳线,重新焊接使 MISO 引脚工作在 3.3v。 这非常重要,确保光流传感器不会干扰 MPU6000。

测试传感器

上传测试sketch到APM:

如果使用的是APM2,你可以在下载区下载hex文件,然后使用Mission Planner的初始设置 > Install Firmware > Load custom firmware的链接,上传到你的APM2
如果你使用的是APM1,你需要打开Arduino IDE 加载AP_OpticalFlow_test.pde,编译并上传到你的APM1

用串口监视器或 AP Mission Planner终端连接 APM
输入 'c',确保传感器响应APM
输入 'm',把摄像头前后启动,检查 x,y 值变化。 如果没有变化,左右旋转镜头调整焦距。

从传感器捕获图像

为了检查你的镜头是否对焦合适,你可以从传感器直接捕捉一张图片,并用一个 Python 写的查看器显示该图片。

把 AP_OpticalFlow_test.pde 上传到 APM (参见上方)

安装 Python 2.7(或更新的版本)http://www.python.org/getit/(对于windows用户,为了pyserial兼容性,您应安装32位版本即使您使用的是64位Windows)

安装 PySerial 2.5。 Windows 安装包在 (这里)。
启动 Python IDLE 编辑器

File(文件),Open(打开),…/arduino-0022/libraries/AP_OpticalFlow/examples/ADNS3080ImageGrabber/ADNS3080ImageGrabber.py

Run(运行),Run Module(运行模块) – 会先出现 Python 命令行,然后出现 ADNS3080ImageGrabber应用
在 ADNS3080ImageGrabber 界面, 把默认 com 端口改成 APM 用的端口,点击 Open
按 Send 按钮启动/停止捕获图片 (每 2 秒应该出一张新图片)

注1: 捕获图像后,你需要重置传感器(即拔掉插回它)来将其恢复到正常运动捕获模式。
注2:你可以在 Python 命令行窗口看见 AP_OpticalFlow_ADNS3080 的菜单和任何错误提示

它是如何工作的

鼠标传感器返回它看见的表面特征的平均运动(x 和 y 方向)。 单个像素点的运动不会使传感器输出 "1"。 它会返回一个更高的 5 左右的值。 这个值在下面成为 scaler。

在下面的例子中,返回值大约是 1.6 ( (-5+5+5) / 3)

传感器的 x 和 y 值可以根据高度转换为实际距离

为了把传感器输出值转换成实际运动的距离,我们需要考虑高度。 从下面的两张图中可以看到,如果两个四轴运动了同样距离,但是一个低,一个高,低的一个会看到表面特征运动得更远,所以光流数值会更大。


我们弥补飞行器侧倾和俯仰变化

飞行器的侧倾和俯仰的变化也将导致传感器返回的X和Y值的变化。 与横向运动的计算不同,这些都不依赖于可见物体的距离。 在下面的图片中,你可以看到的四轴已经侧倾了10度,但第一张图中视角中心的两个花都移到了第二张图片的视角边缘。

传感器值预期的变化可以根据下面的公式用侧倾和俯仰的变化算出。
我们把这些预期的变化从传感器返回的实际值中减去。

我们得到的 x/y 轴的运动后,就可以与当前的偏航相结合结合,用于估计位置。

已知问题

传感器只能在光线好的环境下工作
因为使用定焦镜头,所以不能对近于30厘米的物体对焦。
旋转传感器将使传感器混乱

致谢:

Marko Klein Berkenbusch的 用鼠标传感器保持位置

研究论文光流用于位置保持

研究论文光流用于避障

标签: UAV教程, 光流传感器, 鼠标传感器版本, 测试传感器, 传感器捕获图像