户手机、PC管理平台、服务器、四轴飞行器的配合使用,使快递公司 和客户之间可以直接对接,使四轴飞行器的快递运输更加便捷、高效、方便。
【附图说明】
[0099] 下面结合附图和【具体实施方式】对本发明做进一步说明。本发明保护范围不仅局限 于以下内容的表述。
[0100] 图1为服务器工作流程图。
[0101] 图2手机客户端邮寄快递主界面。
[0102] 图3客户确认四轴飞行器是否降落界面。
[0103] 图4客户确认快递装填完毕界面。
[0104] 图5手机客户端接收快递主界面。
[0105] 图6快件信息实时显示。
[0106] 图7手机客户端的处理流程图。
[0107] 图8PC管理平台客户信息界面。
[0108] 图9PC管理平台快递管理界面。
[0109] 图10PC中转平台工作流程。
[0110] 图11单向信息模式图。
[0111] 图12事务处理模式图。
[0112] 图13真实光流和平移光流的融合示意图。
[0113] 图14客户发送快递流程。
[0114] 图15客户发送快递流程。
【具体实施方式】
[0115] 如图所示,本发明包括以下几方面,采用C/S架构的客户手机端软件和PC管理平 台,服务器,四轴飞行器操作系统及单目避障。
[0116] 手机客户端采用JAVA语言编写安卓版本,PC端采用C#和JAVA联合编写管理平 台,服务器端采用ApacheTomcat7. 0. 4搭建,数据库采用开源的MySQL,服务器端、手机客 户端以及PC中转站管理平台均采用Socket套接字方式与服务器通信。在现有四轴飞行器 硬件平台上,搭建操作系统,使用单目摄像头实现空中避障功能。管理平台和四轴飞行器之 间使用GPRS方式进行数据通讯。以达到解决快递公司与客户之间对接问题,在数据量大的 情况下,四轴飞行器资源受限处理能力不足,四轴飞行器空中低成本避障,从而实现一套完 整的基于四轴飞行器的完整快递运输系统及解决方案。
[0117] 手机客户端用于向服务器发送快递信息,PC客户端用于向无人机发送GPS坐标, 客户信息等定位和快递信息,服务器负责存储并中转手机和PC的快递信息。
[0118] 服务器端:
[0119] 服务器端的主要作用是接收并存储客户手机客户端发送过来的快递基本信息 (主要包括:寄件人电话、姓名、详细地址,收件人电话、姓名、详细地址,邮寄物品类型等), 提供用户快递信息查询。采用ApacheTomcat7. 0. 4搭建,数据库采用开源的MySQL,手机客 户端以及PC中转站管理平台均采用Socket套接字方式与服务器通信。服务器监听9527 端口,手机客户端和PC中转平台通过该端口与服务器进行通信。
[0120] 其中,服务器中MySQL数据库存储的客户快递信息格式如下:
[0121]
[0122] 表1客户快递信息格式
[0123] 数据库中快递信息表设计如下:
[0124]
[0125] 表2数据库中快递信息表
[0126] 手机客户端:
[0127] 手机客户端主要用来接收用户输入的快递信息,并将其发送给服务器。
[0128] 客户邮寄快递界面如图2所示。
[0129] 客户确认四轴飞行器是否降落,如图3所示。
[0130] 客户确认快递装填完毕界面,如下图4所示。
[0131] 客户接收快递界面如图5所示。
[0132] 其中,GPS坐标信息由手机的GPS模块自动获取,其余信息由用户手动输入,输入 完毕后点击确认发送将信息发送到服务器端并存入数据库。
[0133] 获取信息按钮会向服务器请求四轴飞行器的GPS信息,服务器返回GPS信息后,客 户端根据该GPS信息将四轴飞行器的位置实时显示在地图(此处调用百度地图开放接口实 现)上,如图6所示。
[0134] 手机客户端的处理流程如图7所示。
[0135] PC管理系统:
[0136] 一、读取服务器中存储的快递信息,将其发送给无人机并向无人机下达指令;
[0137]二、接收无人机发送的信息(如:无人机的GPS坐标、快件信息等),并将这些信息 存储到服务器中或由服务器进行下一步的转发。
[0138] PC管理平台客户信息界面如图8所示。
[0139] PC管理平台快递管理界面如图9所示。
[0140] PC端的工作流程如图10所示。
[0141] 四轴飞行器操作系统:
[0142] 本四轴飞行器使用的是atmega2560单片机。
[0143]为了使小型四轴飞行器能够高效的进行采集图像及接收飞行控制信号,高效的进 行任务的协调及执行。操作系统内核设计时旨在高效实现如下功能:中断处理,任务通信, 任务同步,内存管理,时间片服务,任务优先级分配。采用AVR汇编语言实现。
[0144] 系统具有多任务的特性允许将其应用问题分成小的易于管理的程序段,称为"任 务"(task),通常一个任务是执行一个特殊功能的代码段,它们之间可以互相独立地执行, 这些任务的执行可视为是并发的,任务间的通讯是靠传输内部缓冲区或外部存储器信息 段的指针来实现的。当任务被创建时,每一个任务都会被分配一个优先级(在ITD表中设 置),系统中任务的优先级从〇 (最低)至7 (最高),系统根据优先级来判断当某一个任务 在运行时哪些任务被禁止,以及决定哪一个就绪任务去运行,拥有高优先级的任务在竞争 CHJ资源时会占得先机。一个任务的状态与其优先级和与之相关的"事件"有关,这个"事 件"可能是一个中断(interrupt)、消息(message)、时间间隔(timeinterval)报告或超时 (timeout)报告。任务的状态有睡眠(asleep)态、就绪(ready)态、运行(running)态、空 闲(idle)态。实时多任务操作系统模块化设计思想,各模块介绍如下:
[0145] 1.任务管理模块
[0146] 任务管理基本任务就是管理构成应用系统的16个任务,它提供了如下手段:创建 一个用户任务;删除一个用户任务;查看任务的功能ID值;挂起一个任务。
[0147]CREATETASK:动态的创建及调度任务;
[0148]DELETETASK:删除系统中特定的任务;
[0149]GETFUNCTIONID:获得任务ID号(其值范围从00H至FFH);
[0150]WAIT:悬停正执行的任务;
[0151]GETMEM:获得系统中可用的具体有特定长度的内存块的首地址;
[0152]RELESEMEM:返还某一特定长度的内存块给系统内存区。
[0153] 本系统设计了两种任务创建方式:
[0154] (1)静态创建
[0155] 它是在初始产生这个应用系统时,由用户用ITD表的格式来编写的。
[0156] (2)动态创建
[0157] 输入参数:任务的序号指针,它是装着将要创建任务的ITD表首地址的两字节变 量,它被装在DPTR中。
[0158] 输出参数:任务的ITD号,它是一个双字节变量,被放在寄存器R15、R16中:
[0159] (a)如果创建成功,它是任务的序号值,范围在0至15之间。
[0160] (b)如果创建失败,则它存放错误的原因,即8X号错误。
[0161]该系统调用动态地创建一个以ITD表为特性的新任务。如果创建成功,系统将给 它可用ITD号中最小的一个,如果不成功,则在寄存器R17中装错误原因码。
[0162] 同时,当创建一个任务时,还要初始化其如下属性表:
[0163] 填TASK_BUF_BLOCK_TAB表:将任务申请的缓冲块的长度和首地址填入该表。
[0164] 填TASK_PRR_TAB:将该任务的优先级填入该表。
[0165] 填INT_MASK_TAB:将此优先级任务运行时允许的中断的中断位向量填入该表。
[0166] 填TASK_INT_TAB:将该任务的中断源位向量填入该表。
[0167] 填INT_S0UREC_TAB:将该中断源相关的ITD号填入该表。
[0168] 填FID_TAB:将该任务的FID值填入该表。
[0169] 填TASK_ADDR_TAB:将该任务的代码首地址填入该表。
[0170] 填TASK_MSG_TAB:该任务的信息链中信息的个数,第一个信息的首地址,最后一 个信息的首地址填入该表。
[0171] 为了更好的区别任务,除了ITD号作为其属性之外,我们为任务引入了FID值属 性;对于用户,是可以用FID值识别是哪一个任务,但对于系统识别任务的办法是看其ITD 号,它是任务创建次序的序列号。
[0172] 当系统执行DELETETASK系统调用时,这个被删除的任务就不再存在,并且它占用 的系统资源,如ITD号,栈区也将归还给系统变为可再用的,这时系统可以再创建任务,并 且系统还支持任务删除它自己。当删除了一个任务后,系统将:
[0173](1)收回所有与该任务相关的中断源;
[0174] (2)如果这个任务是使用创建任务系统调用CREATETASK动态产生的,将把其栈 空间归还给系统缓冲池;
[0175] (3)使这个ITD号对新任务可用;
[0176] (4)终止任何为该任务设置的时间间隔计时和超时计时;
[0177] (5)使该任务的FID值变为零;
[0178](6)清除该任务的数据存储单元参数;
[0179] (7)如果删除时这个任务处于就绪状态,则将其从就绪链表中除去;
[0180] (8)若删除的任务是正运行的,那么系统将从就绪链表中再查出一个来,使之运行 或进入idle态(当没有就绪态任务时)。
[0181] 内存管理分如下两种方式:
[0182] (1)系统初始化时内存管理:在系统初始化时,系统内存区systemmemory pool(SMP)被创建和修改,首先执行SUB1子程序来创建SMP,当初始化时需要创建任务,系 统需要用CREATE10子程序在SMP的顶部为这些任务创建堆栈,特定长度的堆栈就为任务所 建立,最后系统缓冲池systembufferpool(SBP)就被创建,它们是一系列固定长度的缓冲 块,SBP被创建当系统按照系统缓冲块的初始值划分剩下的SMP空间为尽可能多的缓冲块 时。之后剩余