基于Multi Agent的嵌入式六足机器人系统设计

2018-02-12 12:24瑚琦夏志迁雷航汪敏
软件导刊 2018年12期
关键词:CAN总线操作系统嵌入式系统

瑚琦 夏志迁 雷航 汪敏

摘要:针对目前集中结构和多层式架构控制系统实时性较低、容错能力较弱等问题,根据六足机器人系统对控制性能的要求,提出一种将多智体概念应用于嵌入式六足机器人控制系统的设计方法。该方法利用多智体相关概念分析、求解分布式多处理器机器人控制问题。与传统体系结构相比,基于MAS建立的分布式控制结构机器人系统有容错性强、集成能力强、可扩展性强等优点。智能体以嵌入式微控制器ARM为硬件核心,以μC /OS-Ⅱ和Linux操作系统为软件平台,各智能体通过CAN总线实现互连和信息交互,共同协调完成控制任务,实现无线控制与视频传输功能。经实验证明,该设计可以有效提高机器人控制性能,并且具有可移植性、可靠性及实时性强等优点,为多处理器复杂控制系统提供了一种将系统功能定义到具体实现的有效解决方案。

关键词:多智体;六足机器人;嵌入式系统;CAN总线;操作系统

Design Method of Embedded Hexapod Robot System Based on Multi Agent

HU Qi, XIA Zhi qian, LEI Hang, WANG Min

(School of Optical Electrical Information and Computer Engineering, University

of Shanghai for Science and Technology, Shanghai 200093, China)

Abstract:According to the requirements of six legs robot system for control performance,we present a new design to solve the problem that traditional centralized architecture and multi layer robot architecture are poor in real time performance and weak fault tolerance. The new design is based on multi agent system (MAS) concept , which uses the multi agent concept to analyze and solve the distributed multi processor robot control problem. Compared with the traditional centralized architecture and multi layer robot architecture, the MAS based distributed control structure has strong fault tolerance, integrated ability, scalability and other advantages. The agent takes the micro controller ARM as the hardware core, the embedded real time operating system μC/OS Ⅱ and Linux as the software platform. The agents can realize the interconnection and information interaction through the CAN bus, coordinate and complete the control tasks, and realize the wireless control and video transmission function. Experimental results prove that the design can improve the robot control performance effectively, and has the advantages of portability, reliability and real time. The paper also provides an effective solution for the design of complex embedded controllers from the definition of system functions to the realization of platform construction.

Key Words:Multi Agent; six legged robot; embedded system; CAN bus; operating system

0 引言

機器人有广阔的应用前景,可应用于太空探索[1 2]、防灾救援[3]、反恐排爆[4]及在人类不能到达的或对人体有危害的作业环境中替代人类工作。相较于常见的轮式机器人和履带式轮式机器人,多足步行机器人可留下离散运动轨迹,运动时可在地面上选择最佳支撑点,对崎岖地形适应性强,因此关于多足步行机器人的研究蓬勃发展。传统多足机器人的集中结构和多层式系统模型的设计,受限于机器人精确建模困难、计算量大、实时性和鲁棒性弱等问题,机器人整体控制性能较差[5 8]。

基于多处理器结构的嵌入式系统可实现复杂控制的应用,特别是作为多自由度系统的六足机器人,然而由于受到关键系统功能需求和约束,实际系统设计的难度也超出原先预期。多智能体(Multi-Agent)是分析和求解该类分布式控制问题的有效方法。智能体最早由计算机科学家马文·明斯基(Marvin Lee Minsky)提出,被认为是一个自治物理或抽象的实体,能够感知自身周围环境因素,经过思考作出反应,达到预期目的。基于多智能体方法构造的集散控制结构机器人系统有显著优势:控制任务划分清晰、控制系统鲁棒性强、系统功能易扩展、开发难度降低[9]。

本文为实现嵌入式六足机器人控制系统,利用多智体方法设计一套基于多处理器的六足机器人控制系统。该系统与面向单处理器的六足机器人设计不同, 将控制智体概念应用于嵌入式控制器设计,可形成一套高效、清晰的解决方案。最后通过实验测试该控制器体性能,并验证基于多智体的方法在复杂嵌入式控制器软硬件设计中的有效性。

1 基于多智能体的机器人系统设计与构建方法

在基于多智能体的机器人操作控制中,智能体作为自主控制单元,从传感器获取目标任务环境信息,独立采取适当的控制行为,并可与其它智能体互相配合完成预定任务。从系统整体角度看,目标任务是智能体通过功能分布和并行执行完成。

构建基于多智能体的操作机器人控制系统时,首先考虑智能体定义,定义智能体指将所有需要实现的控制任务映射于智能体实体,进而实现机器人控制功能,智能体的定义需综合考虑功能模块划分、软硬件实现形式等因素,最后根据设计指标,给出恰当的控制系统架构。常见有基于关节结构和基于分层结构的定义方法,功能定义是否清晰决定控制系统成败,实际多智能体控制系统应基于这两种混合式系统;其次需考虑智能体之间的协同机制,智能体在完成目标任务的过程中,为使智能体群协同运作,必须进行同步通信并共享信息资源,消除之间的冲突。常见的协同机制有中心式(Centralized)和去中心式(Decentralized)。在中心式控制系统中,需要一个控制智能体协调其它智能体,去中心式通过完善的多主通信协议使各个智能体平等交互信息。

在具体实现中,需要软硬件协同处理的方法[10]。硬件层次上,控制智体的实现需要相关物理结构的支持, 需要根据智体任务目标难易程度和实际情况,选择合适的CPU计算资源、内存资源、传感器和通信接口等;软件层次上,控制智体的目标任务具体实现可借助实时操作系统(RTOS)多任务处理和任务间协调机制,增强智体任务处理实时性和并发性,根据任务实际情况分配独立的任务堆栈和任务优先级,多智体实现流程如图2所示。在实际开发中,多智体间通信协议接口也是需慎重考虑的因素,协议应匹配MAS系统特点,如分布式、鲁棒性和易扩展性,好的协议简单、容易实施。实际应用表明,CAN现场总线非常适用于多控制器机器人应用[11],CAN(Controller Area Network)是一种结构简单、符合ISO国际标准化的串行通讯协议,由于其优秀的协议架构,在工业界得到了广泛应用,适合迅速构建实时多主式分布式控制系统。

2 六足机器人系统架构

本系统中的六足机器人每条腿都有3个旋转自由度,由直流舵机驱动,由于六足机器人每条腿都是一个相互独立整体,结合仿生控制模型与多智能体方法,将控制系统总体设计为中心式协调机制的二级智体架构,一级智体为中央协调Agent , 二级智体由6个归一化设计的运动伺服Agent组成,如图1所示。

中央协调Agent负责处理复杂高级控制视觉信息任务及规划具体工作任务等与运动控制无关的工作,尽量将更多涉及运动学、动力学及 PID 算法的运动控制功能放在腿部底层运动伺服Agent中,这样各层控制器之间任务分配合理,可大幅提高机器人实时性。

中央协调Agent控制器通过无线通信接收操控者控制指令信息,并及时向操控者传送机器人实时存储的运行状态数据,同时通过机身惯性测量 IMU 单元得到的数据进行姿态解算与调节,并接收来自运动伺服Agent通过CAN通信总线发送的关节信息及足部压力信息[12],通过步态规划、位置控制及阻抗控制等算法求解得到机器人关节序列,发送到运动伺服Agent。运动伺服Agent接收關节序列信息,结合自身对各个腿单元传感器采集处理得到的数据,对驱动机构进行位置与力的伺服控制,并把采得的数据反馈给中央协调Agent。

3 六足机器人硬件设计

运动伺服Agent控制器硬件原理如图3所示,采用ST公司生产的STM32F103RET6微控制器作为处理器,时钟运行频率可达72MHz,微控制器共有4个16位定时器,可产生驱动舵机的PWM波,同时芯片提供丰富的I2C、SPI外围接口,方便连接外部传感器模块,且芯片内部集成2.0B的CAN控制器,无需外接独立的控制器芯片,有利于减少制版面积,降低系统功耗,增强系统抗干扰能力,CAN电平信号收发由CAN驱动器TJA1050实现。

舵机驱动信号是微控制器配置定时器产生的PWM波,运动伺服Agent各产生3组PWM信号。STM32是低功耗芯片,PWM波最高电压只有3.3V,而舵机所需的PWM波最高电压是 4.5V~5.5V。所以,需将微处理器产生的PWM信号进行电压转换,电压转换模块由TL291-4光耦芯片和SN74LS04反向器芯片组成,该电路优点是光耦可实现控制信号与驱动信号的电气隔离,减少的对主控芯片的干扰;反相器可略去输入信号纹波,使输出驱动信号更加稳定。

为使机器人足部关节及时反馈舵机即时转角,在六足机器人关节控制算法的实现中添加角度传感器,舵机转动时带动角度传感器运动,改变角度传感器电位器滑头位置,改变电位器输出的电压,控制器通过采集电位器对应的电压得到此时舵机转角。机器人足端设有压力开关,当足端接触地面并达到一定压力时,会按下按键产生接触信号,控制芯片通过检测接触信号,判断机器人足端是否接触到地面,增加足端接触检测可确保机器人在行走过程中机器人足端接触地面牢靠,使机器人行走更加平稳。

中央协调Agent控制器硬件原理如图4所示,本系统选择SamsungARM Cortex-A9四核CPU的Exynos4412, 主频达到1.4~1.6GHz,处理器提供丰富的外围接口,如WLAN、蓝牙、GPS、CMOS图像传感器等,并且芯片提供2D和3D图形处理器、视频处理和集成电源管理,可为系统后期视觉处理单元构建提供坚实硬件基础。中央协调Agent控制器选择独立的CAN控制器MCP2515,主控芯片通过SPI接口与其通信, SN65HVD230是TI公司生产的配套CAN驱动器,负责CAN电平信号收发。为增强系统设备通用性,图像模块和无线传输模块选择USB接口设备。

4 软件设计

4.1 六足机器人中央协调Agent

中央协调Agent软件设计包括嵌入式平台搭建、驱动设备移植、远程视频传输与无线控制。

本部分简要介绍嵌入式平台搭建。嵌入式平台搭建包括4个要素:工具链、引导加载程序、内核和根文件系统[13]。工具链主要用于将源代码编译成目标设备运行,主要包括Binutils、GNU编译器集合和C库;引导加载程序(Boot Loader)是嵌入式设备在启动后执行的第一段程序,作用是基本系统初始化和内核载入;内核是操作系统核心,负责管理资源及硬件接口的组件,在平台搭建过程中,需根据项目需要进行内核裁剪,然后对应硬件平台生成内核镜像UImage;在根文件系统中,根目录文件系统是系统默认的目录结构,固定地将系统启动时所需文件放在指定位置。

(1)驱动设备移植。本系统主要外围硬件为USB摄像、USB无线网卡和CAN驱动。Linux系统USB摄像头分为两种:GSPCA标准和UVC标准。GSPCA是早期USB摄像头的标准,需将摄像头驱动加入内核后重新编译;UVC是Microsoft和一些主流设备厂商共同定义的、为USB视频捕获设备的协议标准,Linux 2.6后的内核包含UVC驱动,并且默认配置UVC选择,符合UVC规格硬件设备要求,支持免驱使用,本文选择UVC标准的摄像头。

Linux下无线网卡分为SDIO-WiFi和USB无线网卡,相较于USB网卡,SDIO-WiFi生产商很少,资料也较少,不利于系统快速开发,本系统选择一款USB无线网卡雷凌3070,芯片型号ralink3070。

移植步骤包括:①进行内核配置,将Ralink driver support选型设为M,把Ranlink相关选型设置为空,下载雷凌最新USB驱动,拷备到Linux目录并解压,进入该目录,打开Makefile,芯片ID设为与其对应的CHIPSET = 3070,修改config.mk文件,令编译源码HAS_WPA_SUPPLICANT=y,把RT2870STA.dat、rt3070sta.ko拷贝到/etc/Wireless/RT2870STA目录下, 并在启动文件中加载该驱动,执行ifconfig ra0 up 启动无线网卡;②再执行ifconfig ra0 192.168.1.230 netmask 255.255.255.0,为网卡设置IP地址和子网掩码。执行iwlist ra0 scan进行扫描无线网络,执行iwpriv ra0 SSID="xxx"連接到SSID为“XXX”的AP中,执行route add default gw 192.168.1.1,添加网卡,即完成机器人无线接入。

本文使用SPI子系统注册MCP2515 CAN总线驱动[14],MCP2515在Linux内核中实现了Socket CAN驱动,只要通过配置MCP2515芯片内核选项,即可使用MCP2515 CAN总线进行Socket编程。 Socket CAN是在Linux下实现的一种CAN协议, Socket CAN使用Socket接口和Linux网络协议栈,该方法允许CAN设备驱动程序通过网络接口进行调用。

(2)视频监控与控制功能。视频监控与控制功能采用B/S架构,上位机通过浏览器获取机器人状态信息和下达命令。网页视频监控需搭建基于HTTP协议的Web服务器,本系统使用BOA作为嵌入式的Web服务器,BOA本身不支持视频服务,故选用Mjpg-streamer作为视频服务软件;控制功能通过CGI应用程序与Web页面交互,CGI程序将控制命令通过CAN向运动伺服Agent发送指令,运动伺服Agent定时上传机器人状态,并发布到网页端。

Mjpg-streamer视频服务器是一个轻量级视频服务器软件,可用于基于IP的网络中,从摄像头获取并传输JPEG图像到浏览器或客户服务端。Mjep-streamer依赖于JPEG库,因此,移植Mjep-streamer需要先移植Libjpeg库。移植步骤[15 16]包括:①移植Libjpeg库。解压代码并进入该目录,使用命令 ./configure –host=arm-linux –prefix=/usr&&make , 将头文件jerror.h、jmorecfg.h、jpeglib.h、jconfig.h复制到交叉编译工具链的include目录中,将动态库“.libs/libjepg.so”复制到交叉编译工具链用户库目录中,将动态库复制到开发板文件系统中;②移植Mjep-streamer。解压代码并进入该目录,修改顶层Makefile文件和plujins目录的各层级Makefile文件,将文件中所有CC=gcc变更为CC=arm-linux-gcc,执行make命令进行编译,复制相关库文件到开发板,执行如下命令:#cp *.so /nfs/rootfs/usr/lib -d #cp mjep-steamer /nfs/rootfs/usr/bin

BOA网页服务器是一个小巧高效的Web服务器,是一个在Unix或Linux上运行的单任务HTTP服务器,支持CGI,适用于嵌入式系统。具体移植步骤如下:①从官网获得源码包后解压并进入源码目录,使用命令 ./configure 生成Makefile文件,修改Makefile文件,找到CC=gcc后改为CC = arm-linux-gcc , 再找到CPP = gcc -E ,将其改为CPP= arm-linux-gcc -E,修改生成config.h,注释以下两行:#define HAVE_TM_GMTFF 1 #define HAVE_TM_ZONE 1;使用命令make编译源码,将BOA复制到开发板根文件系统的/usr/sbin目录下;②完成BOA配置,使其能够支持CGI程序执行。先在开发板的/etc目录下建立Boa目录,把Boa的配置文件boa.conf复制到该目录中。

4.2 运动伺服Agent 软件设计

μC/OS II是一个可基于 ROM运行的实时多任务操作系统 [17]。该系统控制移植了μC/OS II操作系统,用以管理整体片上资源和多任务运行。运动伺服Agent控制器软件任务主要包括:腿部状态上传任务、任务命令解析任务、运动控制任务、传感信息采集、空闲任务等,程序流程如图5所示。

运动控制任务是 50ms 周期任务,作为运动控制系统核心任务,其主要功能是按照操控下达的控制命令,根据当前系统状态和控制策略,生成底层单足控制系统所需的关节角度控制量;任务命令解析主要负责接收CAN消息时,并解析控制命令,通过消息队列将信息发送给运动控制任务;传感器采集任务时需收集关节角度信息和压力信息,通过消息队列给腿部状态上传任务,由上传任务上传机器人腿部信息;空闲任务是操作系统空闲任务,当没有其它任务运行时,执行该任务。

5 实验结果

根据六足机器人软硬件研究和设计,制作出机器人样机(见图6),并对机器人控制系统的功能和控制算法进行验证,结果显示控制系统具有良好的可靠性与实时性,该实验结果验证了机器人系统良好的运动性能,该性能是实现后续复杂功能的基础和保障。

6 结语

本文从软硬件协同的角度,将多智体方法应用于多处理器系统设计与实现,总结基于多智体的设计流程,借助多处理架构和实时操作系统,实现机器人控制系统从设计方法到实际构建的转换与分布式智能结构及具有并行计算能力的机器人控制系统,对多智体方法应用于其它领域具有重要理论和实际意义。

参考文献:

[1] BARES J E, HEBERT M, KANADE T, et al. Ambler: an autonomous rover for planetary exploration[J]. Computer, 1989,22(6):18 26.

[2] OBLAK J, CIKAJLO I, MATJACIC Z. Universal haptic drive: a robot for arm and wrist rehabilitation[J]. IEEE Transactions on Neural Systems & Rehabilitation Engineering, 2010,18(3):293.

[3] FLANNIGAN W C, NELSON G M, QUINN R D. Locomotion controller for a crab like robot[C]. IEEE International Conference on Robotics and Automation, 1998(1):152 156.

[4] NONAMI K, HUANG Q J, KOMIZO D, et al. Humanitarian mine detection six legged walking robot[C]. Proceedings of the third international conference on climbing and walking robots, 2000,3:861 868.

[5] 韩建海,赵书尚,张国跃,等.基于PIC单片机的六足机器人制作[J].机器人技术与应用,2003(6):29 32.

[6] 庄严,宋鸣,张劭凤,等.基于51单片机的六足机器人控制系统设计与制作[J].价值工程,2013,32(30):51 53.

[7] 王洪斌,李程,王跃灵,等.基于Arduino和蓝牙技术的六足机器人控制系统设计[J].黑龙江大学自然科学学报,2015,32(4):533 537.

[8] 伍立春,王茂森,黄顺斌.基于STM32的六足机器人控制系统设计[J].机械制造与自动化,2014,43(5):150 153+161.

[9] 张传清,陈恳,赵正大,等.操作机器人控制的多智能体方法研究综述[J].机械设计与制造,2011(10):142 144.

[10] 托马斯·布劳恩.嵌入式机器人学[M].刘锦涛,辛巧,陳睿,译.西安交通大学出版社,2012.

[11] 史久根,张培仁,陈真勇.CAN现场总线系统设计技术[M].北京:国防工业出版社,2004.

[12] 张赫.具有力感知功能的六足机器人及其崎岖地形步行控制研究[D].哈尔滨:哈尔滨工业大学,2014.

[13] VENKATESWARAN S.精通Linux设备驱动程序开发[M].宋宝华,何昭然,史海宾,等,译.人民邮电出版社,2016.

[14] 冯巍.基于嵌入式Linux下的CAN总线智能节点的设计[D].杭州:杭州电子科技大学,2011.

[15] 范展源,刘韬.深度实践嵌入式Linux系统移植[M].北京:机械工业出版社, 2015.

[16] 唐人财,刘连浩.基于嵌入式Linux远程图像监控系统的设计[J].计算机与现代化,2010(11):31 34.

[17] 王田苗.嵌入式系统设计与实例开发:基于ARM微处理器uC/OS Ⅱ实时操作系统[M].北京:清华大学出版社,2002.

猜你喜欢
CAN总线操作系统嵌入式系统
基于嵌入式的汽车辅助制动系统研究
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究