李广植,许林,张博
(南开大学机器人与信息自动化研究所,天津市智能机器人技术重点实验室,天津 300071)
基于嵌入式Linux的微小型侦察机器人控制系统设计
李广植,许林*,张博
(南开大学机器人与信息自动化研究所,天津市智能机器人技术重点实验室,天津 300071)
摘 要:本文设计了一种基于嵌入式Linux的微小型侦察机器人控制系统。整个系统分为主控制器模块、运动执行模块、视觉模块、无线通讯模块和电源模块。在S3C2440芯片上移植了Linux操作系统,开发了电机驱动程序,配置了MJPG-streamer视频服务器,实现无线控制命令的传输和电机控制。用户能够在智能手机上查看目标视频,通过点击视频图像中目标点位置的方式对机器人发送控制命令。最后,通过实验对系统功能和运动精度进行了测试。
关键词:微小型侦察机器人;嵌入式Linux;无线通讯;电机控制
本文引用格式:李广植,许林,张博.基于嵌入式Linux的微小型侦查机器人控制系统设计[J].新型工业化,2015,5(4):11-17
侦察机器人是指在危险场合以及人员不易进入的场合中,能够代替人类从事侦测、勘探、排险等工作的移动机器人。随着机电、控制、传感器等技术的飞速发展,各类侦察机器人正朝着智能化、微小化发展,应用范围扩大到环境探测、侦测、救援、辅助作战等多个方面。美国明尼苏达大学分布式机器人实验室在这方面进行了大量研究,开发了以eROSI[1]为代表的一系列微小型侦察机器人。美国Recon Robotics公司研发的可抛投军用微小型侦察机器人是美国海军陆战队士兵的装备之一。国内的南京航空航天大学[2]、北京理工大学[3-4]和北京航空航天大学[5]等也在该领域做了深入研究。
微小型侦察机器人体积小、重量轻,其运算能力和通信能力受到了限制,如何实现具有较好智能的微小型侦察机器人已经成为研究热点之一。目前的微小型侦察机器人为了满足体积小、重量轻的特点,普遍采用单片机作为主控制芯片,存在处理数据有限、控制系统运算速度低、人机交互方式单一等缺点。为此,本文设计了一种采用智能手机作为人机交互设备,基于嵌入式Linux的微小型侦察机器人控制系统。
嵌入式Linux是按照嵌入式操作系统的要求设计的小型操作系统。嵌入式Linux具有可裁剪、多线程、多任务的系统特征。与其他嵌入式操作系统相比,嵌入式Linux具有源代码开放、易于移植、性能稳定、支持多种嵌入式硬件、网络功能强等优点,更有利于侦察机器人的功能扩展和任务级命令的实现。
本文的研究目的是设计和实现一种基于嵌入式Linux的微小型侦察机器人。该机器人具有双轮驱动,图像采集和无线遥控的能力,使用智能手机作为人机交互设备,具有较好的可扩展性。
侦察机器人系统大体可以分为上位机和下位机两部分,上位机为安卓智能手机,下位机为侦察机器人本体,两者通过802.11g协议进行无线通讯。系统结构如图1所示。
图1 系统结构Fig.1 The system structure
本文将下位机设置为Wifi热点,上位机通过搜索下位机的Wifi网络进行无线连接,这种无线连接方式无需外部路由器,使侦察机器人结构简单、携带方便、连接快速。
侦察机器人本体采用两轮独立驱动结构,由主控制器通过电机驱动器对电机进行闭环的速度控制,通过霍尔传感器计算位置和速度信息。
选用CMOS摄像头作为获取视频数据的设备,在下位机中配置MJPG-streamer视频服务器,上位机通过无线网络连接到下位机后通过访问服务器进行视频数据的获取,在上位机中显示视频数据。
控制系统采用安卓智能手机作为人机交互设备,控制方式为用户点击上位机中显示的视频图像,上位机计算用户点击位置对应的实际地面位置,将地面目标点对侦察机器人的相对坐标作为控制命令发送到下位机。
下位机微小型侦察机器人的硬件部分主要由主控制器模块,运动执行模块,视觉模块,无线通讯模块以及电源模块五部分组成,如图2所示。
图2 控制系统硬件结构Fig.2 The hardware structure of control system
2.1主控制器模块
本文选用可移植嵌入式Linux操作系统的S3C2440芯片作为主控制芯片,其采用ARM920T内核,工作频率400MHz,板载64MB SDRAM和256MB Nand Flash,具有丰富的硬件设备资源。
主控制器在整个机器人系统中处于核心地位,所有的模块都由主控制器进行控制。侦察机器人同时完成视频数据、机器人状态信息和控制命令的传输,主控制器需要有多任务的功能,兼顾运算速度,网络性能、体积和功耗等因素,选择一种合适的主控制器对整个系统的影响至关重要。
2.2运动执行模块
选用Maxon公司生产的EC 20 flat 5 Watt直流无刷电机、Maxon29/1减速器和DEC Module 24/2电机驱动器组成侦察机器人的运动执行模块,设计外围电路实现驱动器与电机和主控制器的连接。电机驱动器通过I/O引脚、PWM引脚与主控制器进行通信。I/O引脚对应电机的数字模式选择,转动方向以及使能位,通过修改PWM占空比实现对电机速度的控制。
2.3视觉模块
视觉模块的功能是图像信息的采集和摄像头光轴倾角的测量。选用CMOS摄像头作为图像信息采集设备,通过USB接口与主控制器连接。选用MPU6050加速度计作为光轴倾角测量装置,将加速度计与摄像头平行放置,通过测量静止时与摄像头光轴方向的重力加速度分量计算出摄像头的光轴倾角,主控制器通过I2C总线获取MPU6050的加速度数据。
2.4无线通讯模块
无线通讯模块使用的是LB-LINK无线网卡,采用802.11g通讯协议。802.11g协议工作在2.4GHz频段,最高传输速率可达54Mbit/s。本文将无线网卡设置为Wifi热点,这种无线连接方式无需外部路由器,使侦察机器人结构简单、携带方便、连接快速。
2.5电源模块
选用锂电池为机器人供电,电压12V,容量3000mAh,尺寸为9cm×4.3cm×1.7cm。选用LM2596稳压模块为机器人系统提供9V、5V以及3.3V的电压输出。
本文通过交叉编译的模式对控制系统软件进行开发,选用的主机平台为Red Hat 9.0虚拟机,交叉编译器为arm-linux-gcc 4.1.2。
根据图3中的嵌入式Linux系统的层次结构可以将软件系统分为Linux操作系统层,设备驱动程序层以及用户应用层。根据软件系统实现的功能,在用户应用层又可以分为MJPG-streamer服务器程序,无线通讯程序,电机控制程序,倾角测量程序。
图3 Linux系统层次关系Fig.3 The relationship of Linux system layers
3.1嵌入式Linux操作系统的移植
根据嵌入式Linux操作系统的启动过程可以将嵌入式Linux操作系统的移植分为Bootloader移植,Linux内核移植和文件系统移植。
Bootloader作为嵌入式操作系统的引导程序,功能是初始化硬件设备,准备软件环境和调用操作系统内核。本文选用u-boot作为系统的引导程序,实现Nand Flash启动,引导zImage镜像文件,支持yaffs文件系统。
Linux内核是嵌入式Linux操作系统的核心部分,支持多种CPU架构。本文选用较为成熟的Linux2.6.31版本,在进行移植时修改内核文件使内核符合S3C2440芯片的ARM920T系统架构。
本文选用yaffs文件系统作为嵌入式文件系统,适用于大容量的存储设备,提供了损耗平衡和掉电保护,可以有效的避免意外掉电对文件系统一致性和完整性的影响。
3.2设备驱动程序开发
Linux操作系统将所有的设备都看作文件,以操作文件的方式访问设备。由用户编写的应用程序不能直接操作硬件,而是使用统一的接口函数调用硬件驱动程序 。这组接口被称作系统调用,包括open、close、read、write等函数。Linux2.6.31版本内核中含有V4L2摄像头驱动、8192无线网卡驱动以及I2C总线驱动,本文主要对电机控制驱动进行开发。
电机驱动程序中的函数可以分为接口函数和中断函数两部分。其中接口函数通过read、write等系统调用实现从应用程序接收电机参数和向应用程序提供电机信息的功能。中断函数包括一个1ms的内部中断和两个外部中断,内部中断通过修改PWM引脚的寄存器,实现每1ms进行一次电机的控制,外部中断负责记录两个电机返回的霍尔传感器脉冲数。
电机驱动程序的实现流程为:
1)通过write函数接收电机参数,包括左右电机转速和方向;
2)根据电机参数在内部中断中修改PWM寄存器以及控制电机方向的I/O引脚寄存器;
3)根据外部中断记录的脉冲数每100次中断计算一次电机转速;
4)通过read函数将电机的转速和记录的脉冲数提供给用户应用程序。
3.3应用程序开发
根据侦察机器人的功能可以将应用程序分为MJPG-streamer服务器程序、无线通讯程序、电机控制程序、倾角测量程序根据程序中数据的共享情况将4个程序分成2个进程。
MJPG-streamer服务器程序为视频进程,它是一个视频服务器,需要很少的CPU和内存资源就可以工作。本文在主机平台上修改源码,使用交叉编译器编译,获得可执行文件,配置侦察机器人无线网卡IP,通过安卓智能手机上的侦察机器人客户端获得视频图像。
电机进程采用多线程技术分别创建无线通讯线程、电机控制线程和倾角测量线程,多线程并行处理。其程序流程如图4。
图4 应用程序流程图Fig.4 The flow chart of application program
无线通讯线程采用802.11g通讯协议将侦察机器人的无线网卡设置为热点。8070端口作为控制命令的传输端口持续被监听将监听到的数据转化为目标点坐标。在完成接收数据的任务后,将侦察机器人的运动速度和摄像头倾角信息返回给上位机。
本文中侦察机器人选择直线路径作为起始点到目标点的移动路径,如图5所示,整个路径分为三个阶段:
图5 侦察机器人移动路径Fig.5 The moving path of recon robot
1)原地旋转到目标点方向;
2)直线移动到目标点;
3)原地旋转到初始方向。
电机控制线程首先对电机驱动器的数字模式和使能进行初始化设置,然后读取无线通讯线程获得的目标点坐标。接收到目标点后侦察机器人判断当前所处阶段,通过write函数修改驱动中的电机转速和转动方向,通过read接口函数读取的霍尔传感器脉冲数来判断阶段是否完成,该阶段完成后进入下一阶段,全部路径完成后继续读取目标点。
倾角测量线程通过I2C总线对MPU6050的寄存器的采样频率、地址等寄存器进行初始化操作。本文由MPU6050的X轴重力分量计算出摄像头光轴与水平方向夹角。由于受到机器人自身运动加速度的影响,上位机在使用夹角数值时,只考虑静止状态下的光轴倾角值。
在多个程序融合时根据数据的共享情况选择多线程技术。将电机控制程序、倾角测量程序和无线通讯程序放在一个进程下,可以有效的处理无线通讯程序调用数据的共享问题,使得程序的结构清晰,且多线程并行处理,使CPU的使用效率提升,程序的运行速度更快。
本文对微小型侦察机器人控制系统进行了实验测试,包括上位机获取机器人视频信息和机器人状态信息,上位机向机器人发送控制命令和侦察机器人的移动精度。
客户端通过访问机器人端MJPG-streamer服务器获取视频数据和机器人本体状态信息,将其显示在手机屏幕,如图6为客户端实现情况,侦察机器人系统可以有效的实现视频图像和机器人状态信息的传输。
图6 手机操作界面Fig.6 The operation interface of mobile phone
本文对侦察机器人的视频数据传输时间进行了测试,解码时间为10~90ms,平均解码时间为39.5ms,传输时间为70~460ms,平均传输时间为182.6ms,每帧图像时间为120~500ms,平均每帧图像时间为236ms,如图7所示。
图7 无线传输时间统计Fig.7 Time statistics of wireless transmission
用户通过点击屏幕上的地面位置指定目标点坐标,上位机将目标点坐标作为控制命令发送到机器人端,侦察机器人执行控制命令运动到目标点。命令执行情况如图8,侦察机器人可以有效的移动到目标点附近,移动的相对误差小于2%。
图8 目标点坐标与实际移动坐标对比Fig.8 Comparison between the targets coordinates and actual coordinates
本文设计一种基于嵌入式Linux操作系统的微小型侦察机器人控制系统,从用户操作方式、硬件和软件方面进行了分析。本文提出的微小型侦察机器人系统具有体积小,重量轻,功能模块化,接口丰富的特点。基于视觉的用户操作方式是任务级命令的实现,使得人机交互更简洁明了。通过实验测试了侦察机器人的移动精度,以及视频数据和控制命令的传输能力。在此基础上,S3C2440芯片丰富的外设接口为侦察机器人提供了强大的可扩展性。
参考文献:
[1]Walter M, Anderson M, Burt I.The Design and Evolution of the ROSI Robot[J].Proceedings of the IEEE International Conference on Robotics and Automation, 2007: 2984-2989.
[2]陈 卫.微型便携式侦察机器人设计与实现[D].南京航空航天大学, 2009.
[3]郑嫦娥, 黄 强, 黄远灿.微小型自主侦察机器人控制系统设计[J].微计算机信息, 2008, 24(25): 6-7.Zheng Chang,e, Huang Qiang, Huang Yuancan.Design of The Control System for a Miniature Autonomous Surveillance Robot[J].CONTROL & AUTOMATION, 2008, 24(25): 6-7.
[4]Zhang L, Huang Q, Huang Y.Mechanical Designs and Control System of Throwable Miniature Reconnaissance Robot[A].Proceeding of the IEEE International Conference on Information and Automation[C].2011: 431-436.
[5]Gao H, Bi S, Zhang R.The Design of a Throwable Two-Wheeled Reconnaissance Robot[A].Proceedings of the 2012 IEEE International Conference on Robotics and Biomimetics[C].2012: 2150-2155.
[6]王文婧.基于ARM9的移动机器人系统设计[D].暨南大学, 2013.
[7]赵九龙.基于嵌入式Linux系统的移动机器人无线控制技术[D].西安电子科技大学, 2013.
[8]Min H J, Drenner A, Nikolaos Papanikolopoulos.Vision-based Leader-Follower Formations with Limited Information[A].Proceedings of IEEE International Conference on Robotics and Automation[C].2009: 351-356.
[9]刘建邦, 赖旭芝, 吴 敏, 等.嵌入式遥操作机器人系统设计[A].第27届中国控制会议论文集[C].2008: 229-233.Liu Jianbang, Lai Xuzhi, Wu Min, et al.Design of Embedded Telerobotics System[A].Proceedings of the 27th Chinese Control Conference[C].2008: 229-233.
[10]陈晓鹏, 李成荣, 李功燕, 等.基于动力学模型的轮式移动机器人电机控制[J].机器人, 2008, 30(4): 326-332.CHEN Xiao-peng, LI Cheng-rong, LI Gong-yan, et al.Dynamic Model Based Motor Control for Wheeled Mobile Robots[J].ROBOT, 2008, 30(4): 326-332.
Design of Control System based on Embedded Linux for Micro Recon Robots
LI Guangzhi, XU Lin*, ZHANG Bo
(Institute of Robotics and Automatic Information System, Nankai University, Tianjin Key Laboratory of Intelligent Robotics, Tianjin 300071, China)
Abstract:This paper designs a control system based on embedded Linux for micro recon robots.In the system, the user sends control commands to the recon robots by clicking the screen of a smart phone.The robot system comprises the main controller module, the motion execution module, the vision module, the wireless communication module and the power supply module.Linux operating system is ported to S3C2440 processor to implement user application, motor driver development, MJPG-streamer video server configuration and wireless communication.The system functions and robot motion accuracy are verified by experiments.
Keywords:micro recon robots; embedded linux; wireless communication; motor control
DOI:10.3969/j.issn.2095-6649.2015.04.02
作者简介:李广植,男,硕士研究生;许林,男,博士,副教授;张博,男,硕士研究生。
*基金项目:此项工作得到国家自然科学基金资助,项目批准号:61174019;机器人技术与系统国家重点实验室资助,项目批准号:SKLRS-2012-ZD-01。
Citation: LI Guangzhi, XU Lin, ZHANG Bo.Design of Control System based on Embedded Linux for Micro Recon Robots [J].The Journal of New Industrialization, 2015, 5(4): 11‒17.