1、申请理由
说到定位大家都会想起GPS,这个东西很强大,被应用的很广,各行各业都有使用。虽然优势很明显,但是也有一个很突出的缺点,就是室内不能定位,而且民用的精度很低,一般都是10左右,功耗也不低。相对于室内定位导航的要求还有一段距离。随着智能手机的普及,以及移动互联网的发展,地图与导航类软件将进入一个新的时代——室内导航。近几年来,室内定位技术不断更新,2014年较为有看头的就是苹果公司开发的蓝牙4.0 BLE定位,后来在安卓君上也得以应用,在安卓4.3版本上就已经可以使用了。
但是这样还是不够的,我们需要把它应用到更广的领域。比如大型商场里面借助室内导航快速找到出口、电梯,家长用来跟踪小孩的位置避免小孩在超市中走丢,房屋根据你的位置打开或关闭电灯,商店根据用户的具体位置向用户推送更多关于商品的介绍等等。
我希望可以借助这次SINLNX提供的硬件,进行进一步开发,加助现较为流行的Linux系统,在我原有的小车上增加蓝牙定位的功能,为我的robot再添一颗明亮的眼睛,也希望可以将SINLNX的硬件发挥到极致,沾点BLE的光彩,并期望SINLNX和BLE的定位技术可以得到大家的认可。
二、研发的项目及名称
基于BLE的室内定位机器人
三、研发的命题方向及思路:
1、机器人是移动式的,那就是需要携带电源,现在的电源往往是容量较小,加上机器人有电机和WiFi视频传输,耗电量是非常大的,我们需要一个会自己跑去充电的机器人,自己定位充电源的位置并去充电。
2、对应机器人简单的一下动作,比如后期需要增加机械臂等、还有在其他各个领域都需要用到的室内定位,基于室内定位的需求领域广。例如大型商场里面借助室内导航快速找到出口、电梯,家长用来跟踪小孩的位置避免小孩在超市中走丢,房屋根据你的位置打开或关闭电灯。
3、在SINLNX上跑openwrt系统,利用开源的软件mjpg-streamer进行视频的传输,和动作指令控制。
4、对现在安卓开源的BLE软件进行底层到中控和应用的移植,在板卡上面使用BLE。(重点)
4、利用STM32与OPENWRT进行串口通信,传输数据控制机器人的方向和云台等。
5、利用安卓、ISO、PC的设备可进行控制和接收室内位置和视频等。
四、个人目前的技术知识技能及工作经验,从事的工作的方向,等......
目前从事嵌入式软件开发、嵌入式系统开发,工作领域是医疗器械。掌握LINUX系统的底层驱动、应用编程、系统开发。熟悉JAVA、C#、Android编程;对安卓的底层驱动和中控也有一定的了解。
之前有做过一个视频机器人的项目,就是利用STM32微控和跑openwrt的路由做的,实现了视频向安卓个PC的传输和指令的控制,项目已经完结。现在工作之余星期六日可以专心研究BLE定位,期望可以增加上这个使用急切可以解决电源问题和得到更广阔应用,如有成就根据SINLNX的申请条件会开发源代码、原理图等!
五、详细说明
一、SINLNX是小车的核心,跑openwrt系统。
1、负责驱动一个USB蓝牙(接收器,可接收多个信号)根据事先布置在周围的蓝牙基站计算出当前小车精确位置,实现电量低时可自动跑到安置在室内的无线充电圈或者有线充电底座进行充电。
2、由于SINLNX引脚引出来了,也计划用它来控制小车的电机驱动,进行方向的控制。
3、由于之前的小车已经实现了wifi视频的传输,SINLNX也将移植视频流服务器实现wifi视频的功能,另视SINLNX的性能选择是否移植opencv对图像进一步处理再进行传输,提高视频的质量和传输量大的负担。
二、经过1的解释可见,小车上的蓝牙是跟附近布置的蓝牙基站通信的,切切的说是定位并非通信,目的让小车知道自己现在所在位置和怎么走到目的位置。
三、最终目标:
1、小车可自主定位实现自动充电。
2、小车可向上位机传输视频。
3、上位机实时接收小车的视频和位置信息。
4、上位机可对小车进行方向控制、特定位置移动控制(控制小车移动到特定的位置)
四、蓝牙定位目前的研究是实现Android手机APP计算出跟蓝牙基站的具体距离,这个主要是通过手机蓝牙当接收器接收基站的蓝牙的信号,计算距离。这个Android的蓝牙4.0是有开放的开发包,但由于环境的复杂性,信号不能保持相对时刻的均衡,接下来这里需要研究一下其他的算法,实现更精确的定位(数据滤波和根据移动速度对数据预测)。
具体实现目前需重点研究的有两个:
1、移植蓝牙接收器到SINLNX。
2、更精确稳定的定位算法。
3、其他的除了SINLNX较陌生一点之外,由于之前都已经实现倒不太大担心。解决方案:
1、根据官网的开发包尝试直接移植驱动和APP到SINLNX的linux系统。
2、由于现在淘宝开发板商家有不少都有像A8之类的板子上都能驱动蓝牙4.0的开源方案和代码,利用这个移植可能会是最快的方案。3、至于算法,目前可能只能靠自己寻找一些论文参考,首先解决定位精确度(滤波计算)然后再研究数据预测,确保数据更加稳定。