本帖最后由 MDebug 于 2017-1-24 11:32 编辑
项目介绍:
1、方案主题与功能
本项目实现了基于STM32F4 平台的全向运动平台,并实现与手机交互。该平台充分运用了STM32F4 平台的强大性能与平台控制系统的便利性,实现了视觉追踪与控制逻辑生成,采用Android ADK框架进行板间通信,具有较强的兼容性。该项目在工业和民用领域具有较好的实用价值,如自然语言交互机器人、自主移动拍摄平台等。 2、关键词 STM32F4,视觉追踪,人机交互,自动识别。 工作原理:
1、硬件组成与介绍;
整个系统分为运动平台和视觉追踪平台两部分。运动平台主要由Android设备、扩展板和执行机构构成,执行机构可以是很多种类的运动平台,本项目中是由电机驱动、电机、机架组成的全向移动平台。视觉追踪部分由摄像头、主控板和LCD构成。运动平台中的扩展板与视觉追踪部分的主控板均由同一块STM32F4 Discovery来实现。它们的功能如下图所示:
主控板:扩展板是一块以STM32F407VGT6为主控的核心控制板。其上有1路USB Host接口用以连接Android设备,3路USART接口以实现和电机驱动器的通信。扩展板的软件基于ST官方提供的USBH ADK类库,以USBHost方式与手机进行通讯。 摄像头:摄像头设备为视觉输入传感器,本平台选用OV7725和MT9M111两种CMOS传感器作为视觉输入设备,其中,OV7725能提供VGA分辨率60fps输出,而MT9M111能提供1280*960分辨率,15fps输出,且在色彩上更好一些,对于本次应用,两种平台均能成功实现。 Android设备:Android设备是一个运行有Android系统的硬件平台,最常见的为Android智能手机。它的作用是提供一个用户交互界面,采集自身传感器信息,将用户意图转化为信号量,并提供提示界面和拟物化的操作面板。在本项目中,Android手机负责收集自身的加速度计、陀螺仪、电子罗盘的信息,通过DCM互补滤波以及四元数矩阵融合转化成为Yaw,Pitch,Roll三个姿态角。通过人操纵手机改变手机的姿态,从而代替手柄的功能。同时,屏幕上放置按钮控件以实现抓取、放开等机械臂动作的控制。
电机驱动:电机驱动是一块基于STM32F103CBT6的控制板,通过USART接口与上位机通讯获得指令(目标速度、目标位置等),生成不同占空比的PWM波驱动一个H全桥。同时,电机上的编码器接回电机驱动板,以实现速度的闭环控制。 电机:电机是直接执行机构,本项目中使用有刷直流电机,电机自带两相正交旋转编码器,可以实现速度的大小和方向的测量。电机以及其安装的机架构成了3自由度机械臂执行机构,可以实现弯曲、伸展、转向等动作。 2、此项目中STM32的功能; STM32F407:此为STM32F407VGT6 主控芯片,基于ARM Cortex-M4架构,168Mhz主频,具备完备的通信接口与连接能力,集成32位浮点运算单元和单周期多指令执行器,可以完成一些较复杂的控制逻辑和算法。
3、软件流程
在本系统中,软件设计分为三个部分,第一部分为Android软件设计,第二部分为扩展板软件设计,第三部分为驱动板软件设计。Android设备程序为实现一个Activity类,在这个类中构造了读取传感器、姿态解算、读取按钮状态、发送指令、刷新UI等方法。在扩展板软件设计中,主要为USBH类的实现和消息读取,转化为电机目标速度。在电机驱动板程序中,主要实现了UART读取、PWM生成、正交编码器读取等函数。简要的软件流程如下图所示。蓝牙连接的流程图和下图基本一致,只是将USB发送和接收数据部分替换为蓝牙方式。
实物与演示
视频展示:
|