教学用机器人移动底盘系统设计与实现

2020-09-02 06:31张睿陈辰
软件导刊 2020年8期
关键词:底盘实践教学机器人

张睿 陈辰

摘 要:高校机器人教学已经越来越普及。为锻炼学生实践操作能力,提升教学效果,设计并实现了一种实用的教学机器人移动底盘系统。系统机械结构采用三轮万向结构和无刷电机驱动方案,底盘与上位机通信接口采用WiFi协议。设计了一个完整的控制交互协议,定义不同的控制和通信帧结构,完成对机器人底盘的移动控制和信息交互,便于学生操控和开发。经过实际测试和试用,功能可以满足机器人教学和相关科创活动需求。

关键词:机器人;底盘;实践教学; 交互协议

DOI:10. 11907/rjdk. 192655 开放科学(资源服务)标识码(OSID):

中图分类号:TP319文献标识码:A 文章编号:1672-7800(2020)008-0169-04

Abstract:Robot teaching in universities has become more and more popular. In order to train students practical operation ability and improve teaching effect, a practical teaching robot mobile chassis system is designed and realized. The mechanical structure of the system uses a three-wheel universal structure and a brushless motor drive scheme, and the communication interface between the chassis and the host computer uses the WiFi protocol. A complete control interaction protocol is designed, which defines different control and communication frame structures to complete the mobile control and information interaction of the robot chassis, and it is convenient for students to control and develop. The testing and trial prove that the function can meet the needs of robot teaching and related scientific and technological innovation activities.

Key Words: robot; chassis; experimental teaching; interactive protocol

0 引言

隨着技术的发展,机器人应用越来越广泛,逐渐从工业走入人们的日常生活,给人们带来了越来越多的便利。机器人技术已经成为科技发展前沿方向之一,我国许多高校[1-4]甚至中小学都开设了机器人相关课程[5-6],在各种各样的机器人平台上进行操控和实践。但由于机器人教学是一个全新领域,目前还没有形成统一的机器人实验平台结构和操作规范,基本上都是各自为政,由任课教师自行选择实验平台。有的文献[7-9]采用虚拟仿真环境进行实验,没有真实的机器人平台,要花费大量精力学习专门的机器人仿真软件,教学效果不佳;有些机器人是用单片机或者ARM处理器[10]控制的,需要在专用嵌入式编程开发环境下操作,实验平台功能简单,接口定义复杂,往往涉及到大量软硬件参数配置和初始化工作[11],需要学生具有专业知识和实践技能,降低了实践教学效率。

笔者结合多年科研和教学经验,对科研项目中研发的机器人平台进行梳理和改进,设计并实现了一套适合高校教学实践的机器人移动底盘系统。该系统包括硬件底盘平台和相应软件模块,可以很方便地实现全向运动。为便于操控和升级,专门设计定义了一套网络接口交互协议,能够实现对机器人底盘上的传感器信息的采集和运动控制。学生不需要额外学习专门的开发软件或仿真工具,可以选择自己擅长的编程工具,通过socks编程方式控制机器人。经过实际教学应用及多项科创活动检验,验证了系统平台的功能和可靠性,证明其适合高校机器人课程应用。

1 系统结构设计

底盘最重要的功能是运动,目前使用的机械运动结构主要有仿生足式、履带式和轮式等。从实现复杂度和可靠性方面考虑,轮式结构具有结构简单、容易实现、操控方便和成本低等优点,适合于教学应用。轮式结构又分为四轮驱动[10]、双轮差分驱动+随动轮、三轮全向驱动等,根据实际使用效果和功能分析,笔者选定三轮全向驱动方式进行移动底盘设计。其优点是:①三轮全向结构通过分别控制3个轮子的转速和方向,可以驱动底盘向任意方向平移和旋转,底盘运动方向和速度调整控制算法简单,容易实现;②全向轮受地面影响较小,前后平移距离和旋转角度控制比较准确,运动路线不容易偏移;③全向轮结构简单,对加工精度要求不高,相对于另一种常用的麦克纳姆轮[12]成本较低。

机器人底盘采用圆形结构,3个全向轮在底盘圆周均匀分布,编号依次为0~2,则底盘运动的前方就是与2号轮指向圆心方向。机械安装如图2所示。驱动电机选用无刷电机,每个电机驱动一个全向轮。电机选择GMP28-TEC2847-1280-100[13],12V供电,功率为5W,内置安装好的驱动器和减速器。全向机器人运动控制算法可以参考文献[14]。

为提高机器人对外界环境的感知能力,必须增加必要的传感器用来探测周围障碍物等信息,然后根据实际情况制定运动路线和控制策略,以提高机器人智能程度。从功能和成本等方面综合考虑,笔者选用常用的红外和声纳两种探测器进行底盘设计。其中红外探测器探测范围是10~50cm,探测距离固定,主要用于运动中的近距离障碍物探测,及时作出避障处理。而声纳的有效距离为20~1 000cm,用于较远距离的物体探测,可以探测物体的具体距离,用来做地图构建和路径规划等用途。

笔者设计的机器人底盘共安装了8个红外探障传感器和4个声纳传感器,结构如图3所示。红外传感器沿着圆周均匀分布,按照顺时针编号依次为0~7,其中0为正前方,各圆心角间隔为45度。声纳传感器编号为A~D,分别对应前、右、后、左4个方向。这些传感器能够满足大部分探障需求。

2 底盘系统软硬件设计

教学用机器人的目的主要是面向教学实践以及科创竞赛,操作者一般都是学生和科创项目开发人员,经常会更改程序和进行平台运动测试。程序代码均在台式机或笔记本上进行,传统的软件下载到机器人底盘往往需要连接专门的调试线(如网线、串口线或者JTAG调试线等),会带来很多不便和安全隐患。笔者在前期教学实践中就希望能有一款无线操控的机器人底盘,学生可以通过很简单的API接口实现对机器人的控制。根据上述需求,本文设计了一款控制系统,包括硬件电路和软件模块,可用于课程实践活动。

2.1 机器人底盘硬件结构

机器人底盘选用一片FPGA芯片(Altera公司的EP4CE6),用于传感器信号采集和电机控制,主要功能有3个:①控制红外信号发送和接收,结果存放在一个寄存器中,每个bit对应一路红外传感器,1表示有障碍物,0表示无障碍物;②控制声纳发送和接收,返回结果为障碍物距离,声纳探测结果存放在一个16bit的寄存器中;③根据命令产生电机控制信号,包括方向和PWM值,同时接收电机的编码器反馈信号,通过闭环方式调整电机速度。

主控制器选用TI公司的MSP430F5438A[15]单片机芯片,主要进行整个系统的流程控制和数据通信。主要功能有:①通过UART接口外接WiFi模块,能够实现与上位机的无线数据交互,接收上位机命令或者向上位机传递反馈参数;②通过总线接口和GPIO接口与FPGA芯片连接,可以实现对各个模块的初始化和控制,同时接收对应的传感器信息或进行电机驱动。

硬件电路还预留了多个ADC、串口和GPIO接口,可以根据需求扩展外接设备,提升机器人底盘功能。

2.2 机器人底盘软件结构

底盘系统软件采用模块化设计,作用是接收上位机控制命令,根据命令进行传感器信息采集或电机驱动控制,同时把反馈信息发送给上位机。目前的标准配置包括红外避障、声纳探障和电机驱动3个基本模块,可满足一般教学需求。对于高水平的教学和科创活动,另外开发了家电遥控、光效控制、环境探测、自身姿态定位探测和安防控制等模块,可以酌情增减。

机器人底盘与上位机通信采用WiFi无线网络方式。设计了一个统一的接口控制协议,在上位机实现简易API接口,通过界面参数设置的方式操控机器人。允许学生直接根据协议自行选择编程工具,通过socks编程方式进行自主功能开发。

3 控制接口协议设计

操控机器人底盘系统时,上位机与底盘之间必须进行有效的命令和信息传递,笔者采用数据帧的格式定义控制协议。数据帧形式不受上下位机软件系统限制,开发人员可以选择任意编程语言和开发工具实现需要的功能。

数据帧长度统一规定为10个字节,具体定义如图6所示。

其中:Byte0~4:共5个字节,为帧同步序列,采用 “ROBOT”单词的ASCII码(0x52,0x4F,0x42,0x4F,0x54)作为数据帧的头部识别标志;Byte5:为命令字,对应不同的操作控制;Byte6-9:为命令参数,根据具体命令字而定。

Byte5命令字决定一个数据帧具体功能,定义如图7所示。

其中:Bit7-6:帧类型指示;

00:主动控制命令,不需要应答

01:主动控制命令,需要应答

10:应答帧

Byte5-2: 命令类别,对应不同的设备类型;

Byte1-0: 00表示读,01表示寫,10表示特殊操作。

3.1 运动控制命令解析

运动控制命令数据帧的Byte5中,命令类别定义为二进制数值0001。操作类别取值不同,后续参数定义也不同。有3种情况:

(1)操作类别=00。表示对电机的单个配置寄存器进行读操作, Byte6参数表示读取地址。底盘接收到读取命令(Byte5=0x04)后进行应答反馈,反馈帧Byte5=0x84(表示对电机读取命令的应答);Byte6=读取地址;Byte7=读取到的数据。

(2)操作类别=01。表示对电机的单个配置寄存器进行写操作,命令格式为Byte5=0x05,表示电机写入;Byte6参数为写入地址,Byte7为写入数据。可以具体配置每个电机的参数,分别控制电机转速和方向。

(3)操作类别=10。表示对底盘进行整体运动控制。命令格式为Byte5=0x06;Byte6为运动方向参数,有停止、平移(前、后、左、右等8个方向)、左转、右转等选择;Byte7值为0~255,表示运动速度。

上述命令中,整体运动控制命令③的使用比较简单,可以统一控制底盘运动状态,适合初学者对底盘进行操控。而命令②可以对每个电机的速度和方向进行设置,从而实现一些复杂的运动控制,适合于层次较高的教学应用和科创竞赛活动开发。

3.2 运动传感器命令解析

红外避障传感器和声纳都属于运动相关的传感器,数据帧Byte5中命令类别定义为二进制数值0010。为统一管理,所有传感器的控制参数和结果都存放在一个寄存器表中,可以对其中的每个寄存器(8bits)进行读写操作。具体安排如表1所示。

传感器地址编号最多有256个,现在仅定义了上述几种,其它编号可以用于后续改进扩展。

红外避障信息采集步骤:①先打开红外开关,发送命令字Byte5=0x09,Byte6=红外开关地址0,Byte7=启动参数;②读取红外结果,发送命令字Byte5=0x08,Byte6=红外探测结果地址1;③得到应答帧,Byte5=0x88,Byte6=红外探测结果地址1,Byte7=探测结果数据。如果红外开关一直打开,可以直接读取探测结果。

猜你喜欢
底盘实践教学机器人
茶学专业校企合作实践教学探索
《电气工程毕业设计》 课程的教学设计
高职院校商务礼仪课程教学改革探索刍议
铿锵回答“关键五问”夯实脱贫攻坚底盘
依维柯New Daily底盘改装房车中国首秀
瑞风S5车底盘异响