智能科技论文机器人的RobotBasic编程与控制
所属栏目:智能科学技术论文
发布时间:2014-04-21 09:20:49 更新时间:2014-04-21 09:50:48
ZKRT-300型机器人是全国职业院校职业技能大赛官方指定的比赛机器人,对学生们来说原机器人编程与其说是进行机器人编程不如说是在进行单片机编程,因为原机器人编程就是传统的KEIL平台的C51程序编制。能不能让我们的学生使用机器人编程语言,并对机器人进行控制呢?RobotBASIC最初是由美国德锐大学约翰·布兰肯希普教授和塞缪尔·米沙勒编写。
【摘要】ZKRT-300型机器人是全国职业院校职业技能大赛官方指定的比赛机器人。本文阐述了使用机器人编程语言RobotBasic编程并直接控制机器人运作的二次开发过程。介绍了开发所需要完成的主要工作:机器人改造(无线通讯);控制命令及协议编制;机器人断命令翻译及执行程序设计等。
【关键词】RobotBasic,无线通信,机器人编程
1.引言
RobotBASIC能够对含多种类型的传感器的机器人进行仿真(软件模拟器模拟的机器人)、在现实世界的控制角度使用的无线协议控制一个真正的机器人、创建动画模拟和视频游戏、处理复杂的工程问题以及从教育角度激励学生学习。选择这样的课题旨在让我们的学生使用RobotBASIC进行机器人编程,利用RobotBASIC进行仿真,同时能对真实的机器人:ZKRT-300型机器人进行控制。
RobotBASIC是免费使用的,学校不需要投入前期成本、更不会重复发生费用或许可证。布置家庭作业更是没问题,每个学生都可以下载自己的个人副本。
要用RobotBasic控制ZKRT-300型机器人我们要做需要完成以下工作:机器人改造(添加无线通讯模块);编写控制命令及协议;机器人命令翻译及执行程序设计。
2.RobotBasic简介
RobotBasic是一种集成机器人模拟器的解释性编程语言,与标准Basic语言相似,具备所有编程语言的特点,即语法简单、易编写和易调试。在使用中,可以直接利用模拟器来研究与环境相关的传感器,可以改变传感器的类型和安装方式,使其适合不同的软件,也可以完成对各类现实环境进行模拟算法测试,并且可用于原型设计。
RobotBasic语言功能强大,远不止普通的机器人模拟器功能。无论是普通的图形、动画还是复杂的数学计算,本编程语言都可以予以支持,甚至能支持从I/O口到蓝牙技术。进行合理的编程和设置后,还可以用其来控制现实中的机器人。
学习RobotBasic语言编程之前,是不需要特地组装一台机器人的,以往动辄数月的时间完全可以省下来。学习时可以直接进行编程,由于这是模拟控制过程,也不会出现电池需要充电或损坏设备的问题。基本的远程遥控、避障,或者是专业的除草、破解迷宫、目标定位等机器人功能,都能直接模拟。
3.ZKRT-300型机器人简介
ZKRT-300型自动堆垛式载运机器人是面向职业教育类、工程教育类学生教学与实训而开发的教学机器人。它体现了基于工程设计的机械机构、机械传动技术和控制技术的完美结合,基于工程设计理念而开发,结构精巧,符合工程化设计标准,典型机构运用别具匠心,采用工业传感器,工程化布线、接线,融合多项核心专利技术开发而成。本产品非常适合于中等职业教育和高等职业教育类学生机器人课程的教学以及机器人竞赛使用。
ZKRT-300型自动堆垛式载运机器人由机器人行走底盘、回转机构、升降机构、平移机构、手爪机构以及单片机控制系统组成。主要可实现如下功能:循线计数行走、路径规划;自动取物、自动堆垛;多种货物取放任务方案可自由设计;可自行更换手爪结构以满足不同尺寸、形状货物的抓取任务。
4.电脑和机器人无线通信
ZKRT-300型自动堆垛式载运机器人上设计有与电脑通信用的串行接口,使用usb转串口线实现对机载MCU的程序下载和EPPOM修改,现设计采用蓝牙串口模块接收电脑蓝牙适配器发出的指令并转发给机载MCU串口,同时机载MCU也可以从串口发送数据,由蓝牙模块转发给电脑,从而实现电脑和机器人的无线通信,其示意图如图1所示:
4.1RobotBASIC控制命令
(1)rCommPortne_PortNum{,ne_BaudRate{,ne_NumBits{,ne_Parity{,ne_StopBits{,ne_Protocol}}}}}
打开串口ne_PortNum。
(2)rCommand(ne_Command,ne_Data)
这个函数将两个字节ne_command和ne_data发送给串口并将字符串中返回5个字节的数据(字节缓冲区)。用于指定指令,可以用来发送控制手抓、升降和回转电机的命令,实现对货物的取放。
(3)rLocatene_X,ne_Y(code3)
该命令初始化真正的机器人和启动命令的过程。发送两个字节03和ne_x。它将接收5个字节,最后两个是没有用的。
(4)rForwardne_Amount(code6or7)
这个命令发送两个字节6(或7)和Abs(ne_amount)。6是前进7是倒退。ne_amount表示移动距离,为正值则发送6,为负值则发送7。接收到的数据包含5字节,但只有前3的使用。他们将用来表示传感器的状态。
(5)rTurnne_Amount(code12or13)
这个命令发送两个字节12(或13)和Abs(ne_Amount).12表示右转13表示左传。ne_Amount表示转动角度,为正发送12,如果为负发送13。
(6)rSpeedne_Speed(code36)
这个命令发送两个字节36和ne_speed。用于设置机器人行进速度,ne_speed表示速度(0~255)。同时命令还等待接收5字节。前3个字节表示传感器的状态。最后的两个字节没用到,可以为0。4.2控制命令和协议编制
机器人将接收到的控制命令有以下两个部分:移动地盘部分控制命令包括前进(6)、后退(7)、左转(13),右转(12)、初始化(3)和速度设置(36);手臂部分控制命令包括手抓(101)、平移(102)、升降(103)和回转(104)。
机器人需要在接收到控制命令后回传5个字节的数据,包括3个字节的传感器数据。第一个字节为8位循线传感器数据、第二三个字节为其他12路传感器的数据。这些数据将由RobotBasic存放在缓存内供传感器函数使用。
机器人端协议执行流程如图2所示,首先等待接收2个字节的控制命令,接收到命令后、执行命令对应的控制程序代码,然后回传5个字节数据。
5.二次开发的意义
将集成机器人模拟器的RobotBasic编程语言,嫁接到ZKRT-300型自动堆垛式载运机器人上,学生们使用RobotBasic进行编程,同时可以充分使用模拟器,对代码进行仿真(移动平台部分)学习和教学,摆脱3个束缚:
让学习不再被束缚在机器人实验室。现有的系统,学生写完程序,需要将目标文件下载到微控器的ROM中,再观察机器人运行的结果,从而评估自己所编写的程序,提出修改方案。使用RobotBASIC编写程序,学生在家就可以在电脑屏幕上看到仿真效果,从而验证自己的算法。
让学生摆脱微控器的束缚。在RobotBASIC平台实现更复杂的算法,不再需要考虑RAM、ROM不够的问题,不再考虑哪个IO口、哪个寄存器等问题。
让学生摆脱机器人本体的束缚。只要考虑让机器人做什么,而不要考虑机器人如何去完成工作。
参考文献
[1]JohnBlankenship,SamuelMishal.RobotProgrammer’sBonanza[M].McGraw-Hill,2008:36-182.
[2]金聪,戴上平等.人工智能教程[M].北京:清华大学出版社,2007:20-26.
[3]朱映辉.RobotBasic应用于人工智能课程的实践教学研究[J].现代计算机(专业版),2012,03:23-25.