基于Arduino的服务机器人控制系统设计与实现
按照国际机器人联盟(IFR)的分类[1],机器人可分为工业机器人和服务机器人,工业机器人一般用于制造业生产环境,其工作环境为已知,对精确度要求高,而服务机器人一般用于生活等非制造业环境,需要在复杂多变或不确定的环境下自主运行,注重对环境和事物的识别,需具备感知、理解、判断、人机交互以及独立行动等能力.近年来服务机器人技术在家庭、教育、公共服务、医疗等领域实现了一系列突破性应用.根据麦肯锡全球研究院(McKinsey Global Institute)的预测[2],到2025年,全球服务机器人产业每年将产生1.1~3.3万亿美元的经济效益.
我国各级政府主管部门对机器人产业的发展给与了高度重视,2016年3月,工信部、发改委、财政部联合发布了《机器人产业发展规划(2016—2020年)》[3].2015年8月,国务院发布了强化高端制造业的国家战略规划《中国制造2025》[4],在列出的重要产品中指明:“重点开发养老助残、家政服务、社会公共服务、教育娱乐等消费服务领域机器人;重点开发医疗康复机器人、空间机器人、救援机器人、能源安全机器人、无人机等特种机器人”.
本文设计并实现了一个面向家庭服务机器人的控制系统,实现了移动平台运动性和自由度控制,在该平台上可通过搭载各种功能模块以实现远程监控、视觉分析、路径规划、行为感知、自然语言交互等智能扩展.
1 控制系统总体方案
本项目的服务机器人从逻辑框架上可分为移动平台和主控端两部分,系统框图如图1所示:
![](https://qkk.lw71.com/uploads/image/2018/01/1727657545ac178617488d9e25d545be.png)
图1 基于Arduino的服务机器人总体框图
(1)移动平台:基于Arduino开源电子平台的智能小车.智能小车为本系统提供移动定位和功能模块搭载能力,通过蓝牙模块接收主控端下达的命令,可移动定位到任意位置,并通过小车搭载的舵机精确控制多种外设的状态,如摄像头、机械臂等,同时,采集移动平台的状态信息和各传感器信息并上传给主控端.
(2)主控端:PC机或智能手机.主控端控制智能小车移动和舵机定位,控制智能小车上搭载的外设的动作,以及获取智能小车上搭载的各种传感器数据并进行融合、分析、判断和决策.
2 硬件子系统设计
舵机是由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统,控制器通过发送信号,可精确指定舵机输出轴转动的角度.本项目选取的舵机的型号为SG90,尺寸:21.5 mm×11.8 mm×22.7 mm,重量9 g,无负载速度0.12 s/60度(4.8 V),堵转扭矩:1.2~1.4 kg/cm(4.8 V),工作电压:4.8~6 V.
2.1 Arduino单片机模块—UNO R3
直流电机属于大功率的器件,所需电流较大,而微处理器I/O口所能提供的电流较小,必须通过驱动电路板给直流电机单独提供电源输入.该电源除为直流电机提供电源外,还可通过L298N驱动板上的降压电路输出5 V电源,供给Arduino控制板和电机驱动板自身的逻辑电路使用.
本文采用ZHL碱性无氰镀银液进行滚镀。针对滚镀的工件占槽比(指工件体积与滚筒容积之比)、电流密度、滚筒转速、镀液温度、镀液浓度等影响因素进行大量基础实验,获得适合该工艺的最佳工作范围。
PPP项目根据回报机制不同可分为三类,分别为使用者付费、可行性缺口补助(即政府市场混合付费)和政府付费类项目。PPP项目的具体模式也存在多种分类,参照世界银行的分类,主要可分成特许经营权、外包、私有化三大体系。特许经营权主要包括BOT 模式(建设—运营—移交)、BT模式( 建设—移交)、TOT 模式(转让—拥有—经营)、BOOT模式(建设—拥有—经营—移交);外包主要包括DB 模式(设计—建设转让)、DBMM 模式( 设计—建造—主要维护)、Q&M 模式(经营维护)、DBO模式(设计—建造—经营);私有化主要包括BOO模式(建设—拥有—经营)、PUO模式(购买—更新—经营)、股份化转让。
本项目选取的是Arduino Uno R3原型板,微控制器为8位微处理器ATmega328,该处理器片内包含32 KB Flash,其中BootLoader占用了0.5 KB,2 KB SRAM,1 KB EEPROM,时钟频率为16 MHz.
2.2 电机驱动模块—L298N
使用直流电机必须要解决三个问题:1)如何增大驱动;2)如何实现换向;3)如何实现调速.上述问题可以通过纯硬件、纯软件或硬软结合的方法解决.当前绝大多数产品中一般直接选用专用驱动芯片,常见的专用驱动芯片有L298N、BST7970、MC33886等.从价格、驱动电流及压降等方面综合考虑,本项目选择了基于L298N芯片的电机驱动板.L298N是ST公司生产的一种高电压,大电流的电机驱动芯片,可以驱动一台两相步进电机和四相步进电机,或驱动两台直流电机.以左电机为例,如果要对直流电机进行PWM调速,则首先设置IN1和IN2,确定电机的转动方向,然后对使能端ENA输出PWM脉冲,即可实现调速.
本项目中通过现有的APP软件蓝牙串口助手来快速实现手机上控制指令的下达,而在系统实用阶段,可根据需要在手机上开发专用界面.打开手机的蓝牙模块,与移动平台的蓝牙模块配对,配对成功后,即可进入上下位机通信测试.蓝牙串口助手可以自定义按键发送的字符串.
接好连线后,就可以在手机上通过蓝牙串口助手与移动平台上蓝牙模块进行配对,配对成功后,则可进入下一步的通信测试.蓝牙配对成功后,直接占用Arduino的Rx/Tx端口与蓝牙主机进行通信,因此在代码里看到是读取串口,并没有初始化蓝牙模块的函数.
2.3 电源模块—L298N+18650电池组
Arduino是一款开源电子设计平台,核心控制器为低价格的AVR系列微控制器,可在类似Java、C的开发环境下,通过基于Wiring的Arduino编程语言进行编程,编译成二进制文件后烧录进Arduino微控制器中[5].Arduino开发环境将编程中的常用功能封装成对应的子函数供开发者调用,开发者只需着眼于程序的逻辑实现,从而得以从繁杂的底层函数具体编码中解脱出来,显著降低了系统开发的难度.
本项目选择了型号为37B280的两个减速直流电机作为移动平台的驱动轮,其输入电压为4.5 V,每分钟102转.选用2个2 500 mah的18650锂电池串联为直流电机提供的外部电源,同时经过L298N电机驱动板上的降压电路为驱动板自身及Arduino控制板提供5 V电源.18 650锂电池具有容量大、寿命长、安全性能高等特点,适合嵌入式、便携式电子产品使用.将一个直流电机到接驱动板的out1/out2引脚时,电机驱动板与Arduino控制板之间的引脚接线对应关系见表1.
表1 电机驱动板与Arduino UNO引脚连接关系
![](https://qkk.lw71.com/uploads/image/2018/01/cfb640b1abce570a4cb8a8653cdd18b3.png)
L298N驱动板ArduinoUno说明GNDGND+5V5VENA引脚6高电平有效,也可接入PWM接口给电机A调速IN112控制电机A转向IN213控制电机A转向out1/out2接4.7V102rpm减速直流电机Vcc18650电池组,7.4V
2.4 蓝牙模块—HC-06
本项目采用蓝牙模块来实现上下位机之间的数据通信的原因为:1)蓝牙模块成本低,便于对底层运行平台进行扩展;2)大多数Android智能手机均配有蓝牙模块,且基于蓝牙的串口通信程序较多;3)蓝牙通信模式为一对一的通信,可以避免远距离时对机器人的误操作.HC-05和HC-06是现在使用较多的两种蓝牙模块.两者之间的区别是HC-05是主从一体机,而HC-06只能工作在从机模式下.本项目选取了HC-06模块.其与Arduino控制板间的接线引脚说明见表2.
青辰把鹰卵摆在自己的身前,又将天葬刀摆在身侧,以防止岩鹰猝起发难的时候,自己来不及抵挡。洞外阴风阵阵,初时听了让人心慌,但后来,随着这种声音的不断重复,他开始慢慢适应,再到后来,这些声音传到他的耳中,简直成了一段不断重放的催眠曲,让他越来越困。
2.5 舵机模块—SG90
硬件子系统包括了控制模块、电源及驱动子系统、传感器及外设模块、机械结构等.下面仅对控制主芯片、电机驱动板、电源、蓝牙、舵机模块的实现进行说明.
用Arduino控制舵机的方法有两种:1)通过Arduino的普通数字传感器接口产生占空比不同的方波,模拟产生PWM信号进行舵机定位;2)直接利用Arduino自带的Servo函数进行舵机的控制,其优点在于易于程序编写,但只能控制2路舵机.本项目采用了第二种控制方式.
3 软件设计
本项目中的软件设计主要分为上位机和下位机两大部分,上位机软件运行在充当主控端的Android智能手机上,下位机软件运行在Arduino控制器上.两者之间通过蓝牙模块进行数据通信.上位机向下位机发送指令,下位机接收并解析指令,并控制移动平台完成对应的动作,下位机同时定期采集移动平台上相关模块的状态及各传感器的数据,并上传给上位机显示及后续分析.
3.1 上位机(手机端)软件
Arduino通过函数analogWrite()改变PWM占空比来给直流电机调速,该函数给指定端口写入一个模拟值(PWM波),即可实现以不同的速度驱动马达.analogWrite()函数在指定端口输出一个可定义占空比的方波,直到有下一个设置命令到达.
二级运算放大电路主要用于将一级放大结果放大调理以满足A/D转换芯片输入范围,获取最大的检测精度。其电路结构如图4所示。
3.2 下位机/Arduino控制器程序
Arduino控制板上的程序实现接收并分析上位机下发的指令,同时采集移动平台上搭载的相关模块状态及传感器的数据并上传至上位机.下位机上的程序可分为蓝牙通信模块、命令解析模块、电机控制模块、舵机控制模块、继电器控制模块、传感器数据采集及上传模块等.下位机程序处于循环体中,直到系统断电停机.下位机主体程序流程图如图2所示.
简短的宣誓仪式后,我们沿路折返。抬头望去,太阳灿烂而耀眼,天空澄明而透亮,雪山纯净而巍峨,大地静默而厚实。这是真实的所在,我们不忍打破这静谧,沉默着步履匆匆地行进,却在心底涌动着爱的热流。离乡万里来援疆,我只是一位平凡的教师,是这天地中的一粒微尘,我愿在疏附二中的三尺讲台上,像那石头小屋般驻守,为我的学生们留一盏爱的心灯。
![](https://qkk.lw71.com/uploads/image/2018/01/6c557275fd004ae95e3f2bf357618ee7.png)
图2 下位机控制程序流程图
4 联调与测试
将直流电机、舵机、LCD、蓝牙、L298N、继电器、电池模块等器件都安装到智能小车的车架上,通过车载的面包板进行线路连接,然后进行系统整体联调.系统联调成功时PC侧Arduino IDE窗口调试信息和手机侧蓝牙串口APP界面见图3.
3.1.6 部分护理人员法律风险意识不足,责任心不够 临床工作中有部分护理人员对患者责任心不够,整体护理的服务意识淡薄,对于护理相关文件的书写部分护士存在麻痹大意的现象,不能充分认识到护理文书的真实客观所具备的法律效力[10],他们认为只要按照医嘱来实施各种护理工作、操作,完成本班内自身的护理工作任务即可。对于液体出入量记录的重大意义及准确记录液体出入量与救治效果的相关性没有足够的重视,导致液体出入量的记录不能够保质保量的完成,不能及时监测总结液体出入量的平衡状态,向管床医师反映液体出入量的平衡情况也不够及时,以致延误治疗时机。
![](https://qkk.lw71.com/uploads/image/2018/01/60c84883d8853ca6abdb5a08c80e7011.png)
图3 系统联调窗口截屏图
5 结论
本项目实现了家庭服务机器人的移动平台和主控平台原型系统,在此基础上,可以在移动平台上加入循迹、避障、wifi等功能模块实现对应的功能扩展,还可再搭载其他处理器板实现视频传输、手势识别、语音对话、姿态识别等功能.而主控平台可编写对应的控制界面及实现传感器信息融合、分析决策等.本项目实现的服务机器人具有控制方式灵活,系统扩展能力强,开发成本低等特点,适用于教育、科研、家庭等多种应用场合,也可作为机器人研究的载体平台,具有广阔的应用前景.
参考文献:
[1] 陈 亮.IFR发布最新全球服务机器人统计报告[J].机器人产业,2016,18(2):27-34.
[2] 李牧风.从机器走入“人”的时代[J].中国科技奖励,2015 (8):21-23.
[3] 工业和信息化部、国家发展改革委、财政部.《机器人产业发展规划(2016—2020年)》[R].北京:工业和信息化部、国家发展改革委、财政部,2016.
[4] 国务院.《中国制造2025》[R].北京:国务院,2015.
[5] 王尊冉,庞俊腾,陈均键,等.基于Arduino控制板的数据采集智能小车的控制系统设计与实现[J].计算技术与自动化,2017,36(1):66-73.