智能昆虫机器人与移动设备交互通信的设计与实现
扫描二维码
随时随地手机看文章
0 引 言
近年来,随着机器人技术的逐渐完善,国内外对机器人技术的发展越来越感兴趣,机器人技术已被认为是未来高新产业发展的重要基础之一 [1]。美国在智能机器人的技术研究方面一直保持领先,在航天、军事等方面都使用了机器人技术, 该技术具有性能可靠,精确度高,适应性好等特点。日本在家用机器人研究方面发展迅速,发明了各种类型的机器人,可做寿司、帮助客人倒茶、喂食老人等。而欧洲各国也投入大量精力和财力来支持机器人技术的研发。我国也越来越重视机器人技术的发展,清华大学、哈尔滨工程大学以及中科院等高校和研究所也积极推动机器人技术的发展 [2]。机器人技术不仅涉及工业制造、野外深空深海勘探勘测、医疗服务、教育娱乐、家庭陪护等领域,还涉及交通、消防、军事等方面, 由此产生了不同用途的机器人,如工业机器人、轮式 / 履带式移动机器人、外星探索机器人、水下机器人、飞行机器人、医疗与康复机器人和仿生机器人等[3]。这些机器人在面临一些复杂环境完成相应任务时,其自身对周围环境的认知就直接影响了任务的完成,所以对机器人环境感知、人机交互等方面提出了很高的要求。昆虫机器人属于仿生机器人的一种,它和依靠轮子或履带式移动的机器人相比,在崎岖不平的地面上或有陡斜坡、阶梯的地段上移动时,稳定性和可操作性更好。
Arduino 是一个开源电子制作平台,包括硬件(各种型号的Arduino 控制板)和软件(Arduino 的集成开发环境和编程接口)。Arduino 体积小、易于上手,是一款非常实用的开源硬件[4]。该平台的硬件部分可以独立购买加以改造,重新组装成新的电路板,且 Arduino 提供多种编程接口,既有类似于C 语言的开发环境,也可以直接使用Flash 或Processing 等软件来实现功能[5]。Arduino 还提供了 USB 等接口,使其扩展性更强,用户可以通过反复编程来实现功能,因此广泛应用于环境监测、可穿戴设备、智能家居等多个领域,特别是在机器人和自动化领域。基于Arduino 开发的机器人,易于操作, 设备简单,非专业人士也可以按照自己的想法来设计开发。
随着移动设备和移动机器人使用的频繁、移动互联网的普及,人们对移动设备和移动机器人的用户体验要求越来越高, 研究智能机器人与移动设备交互通信并给出实用的App 系统对增强用户体验具有积极意义。本文基于开源硬件Arduino 实验平台,给出了一个在 Android 环境下运行的与昆虫机器人交互的应用系统,使得移动设备和昆虫机器人可实现很好的通信。
1 总体架构
系统设计之初,考虑移动设备与昆虫机器人的交互可以通过无线通信来实现,无线通信包括红外、蓝牙、WiFi 和NFC等。NFC 是近距离无线通讯技术,其基础是非接触式射频识别及互连技术,具有能耗小、成本低等优点。由于其安全性高,因此在刷卡领域(门禁系统、交通一卡通、支付领域等)应用广泛。红外通信采用红外线传输数据,此方式具有成本低、简单易用、低功耗等优点,广泛用于移动设备(笔记本电脑、移动通讯设备等)之间的数据交换以及电视、空调遥控等,但其不适用于传输障碍较多的场景。WiFi 是使用最广泛的一种无线网络通信技术,它基于IEEE802.11 标准,可以解决大数据量传输问题,使得任何接入WiFi 的设备之间都可以相互交换数据。蓝牙也属于短距离无线传输技术,有着成本低、功耗低等优点,可实现固定设备(打印机、音响等)、移动设备(手机、平板电脑、笔记本等)以及一些小型设备之间的数据交换。相比 NFC和红外,虽然这些技术同属短距离传输,但蓝牙的距离一般可达 10 m(红外的使用距离为 1 m, NFC 的使用距离为 0.1m),并且在传输速率上也优于 NFC 和红外。相比WiFi,不仅WiFi 的成本高、实现较复杂,其安全性也不高,因此蓝牙通信技术广泛应用于物联网技术中。在本系统的设计和实现中,采用蓝牙通信技术。
系统主要包括硬件和软件部分。
硬件部分包括智能昆虫机器人和蓝牙模块。智能昆虫机器人采用DFRobot 开源硬件组装而成,包括前腿舵机、中腿舵机、后腿舵机、红外传感器、光线传感器和 Arduino 主控板。硬件调试采用Arduino 开发环境来实现, 文中使用Arduino-1.6.7 版本。
软件部分的开发环境为Android Studio,采用Android_ studio_2.1.0.0 版本,针对Android 环境。整个系统通过蓝牙模块来实现移动设备和智能昆虫机器人之间的通信。移动设备在测试阶段采用基于Android 系统的手机,用户通过手机 App 进行操作,然后App 通过调用手机蓝牙将操作对应的指令发送给机器人,机器人根据指令执行相应的动作。
系统整体架构如图 1 所示。
2 蓝牙模块的安装及调试
采用Risym HC-05 无线蓝牙模块。Arduino 主板已集成支持串口通信,分别为TX 和RX 引脚,需手动引出。虽然串口通信引脚在 USB 接口中已有集成,但只适用于测试使用, 若在机器人运行中使用,不仅占用USB,还需从USB 口引出USB 数据线用于串口通信,结构相对复杂,不稳定。这里使用杜邦线引出,可直接用插拔的方式与蓝牙模块连接。具体包括以下操作:
(1)双层板拆离;
(2)去排针 + 去旧焊锡;
(3)焊接新排针;
(4)将Arduino主板、底板和蓝牙模块与杜邦线连接。在 Arduino软件环境中,通过设置串口通信波特率即可进行蓝牙通信调试。在setu(p)函数中通过 Serial.begi(n9600)语句来初始化波特率,然后在loop()函数中循环等待蓝牙连接后接受数据,定义的通讯协议为F:前进 ;B:后退 ;L: 左转;R:右转;A:自主移动。进行蓝牙通信时,首先通过BluetoothAdapter获取蓝牙适配器对象,在打开蓝牙、获取蓝牙适配器时,可能需要用户通过对话框进行确认。获取蓝牙适配器之后,进行可配对设备搜索时,首先判断 isDiscovering()的状态,如果此时状态正忙,则通过cancelDiscovery() 重置 startDiscovery()的状态后再进行搜索;如果此时状态空闲,则直接调用 startDiscovery()进行搜索。搜索完成后, 点击可配对设备列表中的设备即可通过 connectToPairedEquip 进行设备配对。配对成功之后即可通过 getOutputStream 与 getInputStream 进行通信,不过需注意,由于蓝牙通信的对象 为嵌入式片上系统(System on Chip,SOC),使用 AT 指令协 议进行通信,所以需要调用 getHexBytes()方法将字符转换 为十六进制才能正常通信。具体流程如图 2 所示。手机控制应 用得到的结果如图 3 所示,显示了可配对设备与当前配对设备。
3 核心代码的设计与实现
昆虫机器人集成了各种精密传感器数据处理模块,可以通过手机的控制应用程序来实现左转、右转、直行等操作。在具体操作过程中,通过各传感器来检测昆虫机器人周围是否有障碍物,当检测到障碍物时,则回避障碍物,从而实现自动避障,在避开障碍物后继续前进。避障具体流程如图 4 所示。
此处主要通过analogRead()函数来获取左右光线传感器与距离传感器ADC 接口与输入模拟电压相对应的数值,然后将获得的传感器数值与设置的碰撞触发阈值相比较来判断周围是否有障碍物。如果在直行过程中发现前方有障碍物,则昆虫机器人会调整前、中、后舵机的角度后退几步,根据左右光线传感器数据来决定左转或右转,从而实现避障 ;如果在左转或右转过程中发现存在障碍物,则会根据左右光线传感器的数据来判断应后退还是保持不动。
4 结 语
通过对智能昆虫机器人与移动设备交互通信的研究,给 出了一个在 Android 环境下运行的与智能昆虫机器人交互的控 制应用程序,不仅可以应用于手机、平板电脑等移动设备,也 可以在所有Android 环境下使用。未来将对软件进行进一步优 化改善,使其拥有更好的用户体验,达到比较稳定的程度。后 期可将成熟的产品推广到智能家居,可穿戴设备等领域,同时 还应考虑该机器人的商业化发展方向,使其拥有更广阔的应用 前景。