《机器人程序设计-仿人机器人竞技娱乐运动设计》课件第3章_第1页
《机器人程序设计-仿人机器人竞技娱乐运动设计》课件第3章_第2页
《机器人程序设计-仿人机器人竞技娱乐运动设计》课件第3章_第3页
《机器人程序设计-仿人机器人竞技娱乐运动设计》课件第3章_第4页
《机器人程序设计-仿人机器人竞技娱乐运动设计》课件第3章_第5页
已阅读5页,还剩256页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章基于Robobasic 的仿人机器人运动程序设计3.1引言3.2软件安装及操作界面说明

3.3roboBASICv2.803.4MF(MetalFighter)仿人机器人介绍3.5Robobasic语言语法介绍3.6前进一步动作的程序设计3.7后退一步动作的程序设计3.8连续行走程序设计3.9复杂动作程序设计3.10具有倾斜传感器的运动程序设计 3.11具有陀螺仪传感器的运动程序设计

3.1引言

Robobasic是用于控制机器人动作的专用语言,是由韩国MINIROBOT公司于2006年研发并且注册的语言。它适用于Hitec公司、Mini公司生产的伺服数字电机控制或者其他适用的电机。

3.2软件安装及操作界面说明

3.2.1开发环境roboBASICMFv2.80在Win7系统下的安装

安装步骤如下:

(1)安装“roboBASICMFv2.80”软件。在光盘目录里的“MetalFighter光盘\English\roboBASICMFv2.80E(20090708)_English”文件内容如图3-1所示,找到“setup.exe”文件,双击开始安装“roboBASICMFv2.80”软件(点击roboBASICMFv2.80.msi也可以安装)。

图3-1光盘内容

(2)点击“Next”,如图3-2所示。图3-2Win7系统下的安装步骤1

(3)选择安装路径,一般建议安装在C盘,因为roboBASIC本身占有的容量不大。选择好路径后,点击“Next”,如图3-3所示。图3-3Win7系统下的安装步骤2

(4)出现如图3-4所示界面,再点击“Next”。图3-4Win7系统下的安装步骤3

(5)程序开始默认安装,如图3-5所示。图3-5Win7系统下的安装步骤4

(6)当出现如图3-6所示的界面后,则表示安装成功,点击“Close”,即可退出安装界面。图3-6Win7系统下的安装步骤5

(7)此时会发现在桌面上已经出现了如图3-7所示的图标,双击即可进入roboBASIC软件界面,进行 *.bas文件的编译。图3-7Robobasic快捷方式图

(8)安装Windows7补丁。WindowsVista和Windows7中,有的时候会遇到这样的情况:按照上面的操作步骤正确安装了roboBASIC软件,打开后却不能正常使用和执行,比如说上面的按键显示为灰色,不能打开 *.bas文件等情况。一般原因是没有正确设置注册表,但不同的电脑出现的情况也有可能不同,这时就需要安装补丁。

在光盘目录里的“MetalFighter光盘\English\robobasic_Vista_Windows7_init”文件夹的内容如图3-8所示。图3-8安装光盘文件夹内容

WindowsOS有32 bit和64bit的区分。当是32 bitOS系统时,打开“robobasic_32bit_OS_init(windowsvista,7).bat”进行安装。当是64 bitOS系统时,打开“robobasic_64bit_OS_init(windowsvista,7).bat”进行安装。

下面给大家介绍一种需要自己动手安装补丁的方法。

在“开始/运行”中复制粘贴以下指令,然后点击“确定”。不同位数操作系统的补丁如下:注意:在Win7系统环境下,有时尽管正确安装了补丁,也不能完全保证roboBASIC可用。如何辨别安装成功与否呢?①可以看安装补丁的时候有没有报错。如果弹出一个对话框说模块缺失,一般情况下说明在Win7系统中roboBASIC无法正常使用;②打开roboBASIC软件,点击“文件”中的“新建”选项,会发现软件没有任何反应,不管进行任何操作,roboBASIC都还是如图3-9所示界面,这种情况下roboBASIC也是不能正常使用的。图3-9安装后不能正常使用roboBASIC3.2.2开发平台roboBASICMFv2.80在WindowsXP系统下的安装

roboBASICMFv2.80在WindowsXP系统下的具体安装方法与在Win7下的安装差不多,它与WindowsXP完全兼容,无须安装补丁。

安装步骤如下:

(1)安装“roboBASICMFv2.80”软件。在光盘目录里的“MetalFighter光盘\English\roboBASICMFv2.80E(20090708)_English”文件内容如图3-10所示。找到“setup.exe”文件,双击开始安装“roboBASICMFv2.80”软件(同样点击roboBASICMFv2.80.msi也可以安装)。

(2)点击“Next”,如图3-11所示。图3-10光盘内容图3-11WindowsXP系统下的安装步骤1

(3)先选择好安装路径,然后点击“Next”,如图3-12所示。图3-12WindowsXP系统下的安装步骤2

(4)当出现如图3-13所示的界面后,再点击“Next”。图3-13WindowsXP系统下的安装步骤3

(5)程序开始默认安装,如图3-14所示。图3-14WindowsXP系统下的安装步骤4

(6)当出现如图3-15所示的界面后,则表示安装成功,点击“Close”,即可退出安装界面。

(7)此时会发现在桌面上已经出现了如图3-7的图标,双击即可进入roboBASIC软件界面进行 *.bas文件编译。

roboBASIC在WindowsXP下的兼容性比在Win7中要好,建议使用WindowsXP系统安装roboBASIC,以免在后续工作中影响程序的编写。图3-15WindowsXP系统下的安装步骤5

3.3roboBASICv2.80

本节介绍安装roboBASICv2.80完成之后的roboBasic编程环境。roboBasic软件的开发环境界面如图3-16所示。图3-16roboBASIC软件开发环境界面3.3.1标题栏

图3-17所示的是roboBASIC软件的一个logo图标,点击它可以进行软件窗口的还原、移动、大小变换、最小化、最大化、关闭等快捷操作。图3-17roboBASIC软件的logo图标图3-18所示的是“roboBASICMF—”的字样,表明这个软件就是针对这款MF机器人而设计的。图3-18roboBASICMF图3-19所示的是所要编译的文件名,软件默认打开的文件名为“无题1.bas”(还未保存),若要更改文件名,可以在保存文件时进行修改。图3-19编译的文件名如图3-20所示,标题栏最右边是最小化,最大化和关闭按钮。图3-20最小化、最大化及关闭按钮3.3.2菜单栏

如图3-21所示为菜单栏,下面从左到右介绍菜单栏上各个按钮的功能及用法。图3-21菜单栏最左侧的“文件(F)”小图标的作用和标题栏上图标(如图3-17所示)的功能差不多。不过这里多了一项快捷功能“下一个”,该选项的作用是:在同一个roboBASIC软件界面下同时打开多个 *.bas文件时,点击“下一个”,可以进行这些 *.bas文件之间的切换,如图3-22所示。图3-22菜单栏

(1)点击“文件”按钮,可以看到如图3-23所示的下拉菜单。图3-23菜单栏中“文件”选项“文件”下拉菜单中各选项介绍如下:

“新序文件”:可以用来新建 *.bas文件。

“打开程序文件”:用来打开已经建立的 *.bas文件。

“关闭程序文件”:可以用来关闭当前窗口打开的 *.bas文件,但不关闭roboBASIC软件。

“储存程序文件”:可以储存当前 *.bas文件。

“另存为”:可以将已保存的文件保存到另外的文档路径。

“全部储存”:可以一键保存当下打开的所有 *.bas文件。

“打印程序文件”和“打印机设置”:针对需要打印的读者可以进行打印的相关设置,这里不作详细介绍。

“最新文档”:记录了用户最近使用过的 *.bas文件,方便用户随时调用。

“最新文?”:点击它,会发现上面有个对号,代表当打开roboBASIC软件时,软件会默认自动打开最近一次使用的文档(如果不想使用该功能,想让软件显示的是空白页面,可以取消上面的对号)。

“退出”:退出当前软件。如果当前页面有 *.bas文件未保存或者修改后未保存时,软件会提醒是否需要保存。

(2)点击“编辑”按钮,可以看到如图3-24所示的下拉菜单。图3-24菜单栏中的“编辑”选项“编辑”下拉菜单中各选项介绍如下:

“取消”:和平常使用的“撤销”功能一样,可以撤销当前操作,返回到前一步操作的程序状态。

“重复”:当选择“取消”次数超过预期时,可以通过“重复”来恢复后一步操作时的程序状态。

“剪切”、“复制”、“粘贴”、“删除”:与Word功能相同。

“设置注释领域”:当前选中的程序或者文字不需要或者对程序有影响需要注释时,可以通过“设置注释领域”来注释程序或者文字,也可以用它来添加备注。注释以后,注释的程序或者文字前面有“ ' ”,而且注释的内容由黑色字体变成粉红色,例如 'roboBASIC',注释的内容不参与编译。

“取消注释领域”:和“设置注释领域”功能相反,用来取消注释,操作后“ ' ”会消失,在实际操作过程中,可以直接在注释内容前从键盘删除“ ' ”。

“全选”:这是对于程序编写区域里的代码而言的,可以选中当前 *.bas文件中的全部程序代码。

“选择行”:选中当前鼠标所在的一整行,被选中的那一行会显示黄色背景。

“AlignProgram”:使roboBASIC软件中当前 *.bas文件的程序代码上下对齐。

“roboBASICNOTE”:roboBASIC便签,可以用来记录一些在编程过程中遇到的问题、心得和程序进展程度之类的信息,如图3-25所示。图3-25roboBASICNote

(3)点击“查找”按钮,可以看到如图3-26所示的下拉菜单。图3-26菜单栏中的“查找”选项“查找”下拉菜单中各选项介绍如下:

“查找”:查找当前 *.bas文件中需要的程序代码,点击“查找”会出现如图3-27所示的对话框,在光标闪烁的地方可以输入所需要寻找名称的关键字。图3-27“查找”界面

“查找下一个/上一个”:点击此二选项之一后,roboBASIC会默认地寻找下一个/上一个前面输入的名称的关键字。

“替换”:替换程序中用户想要替换的程序代码,“替换”里面已经包含了“查找”、“查找下一个”的功能。点击“替换”,出现如图3-28(a)所示的对话框,在1中可以输入名称关键字,然后点击“FindNext”,可以完成“查找”、“查找下一个”。在2中输入用户想要替换的新名称,比如说要把代码中的main替换为int,就可以在1中输入main,在2中输入int,然后点击“Replace”,点击一次,软件会进行一次替换,再点一次,再进行替换,如图3-28(b)所示。图3-28“替换”界面

“跳行至”:跳转至想要去的那一行,点击“跳行至”,弹出如图3-29所示的对话框。在弹出的对话框里,输入想要寻址的行数,然后点击“OK”,软件自动跳转到前面输入的那一行,并选中整行(背景呈现黄色)。图3-29“跳行至”界面

(4)点击“视图”按钮,会显示如图3-30所示的菜单。图3-30菜单栏中的“视图”选项“视图”下拉菜单中各选项介绍如下:

“显示菜单条”和“显示多重编辑卡”:两项均是软件默认选择的,取消图3-30中两项前的对号则表示不显示这两项的窗口。这两项的窗口如图3-31和图3-32所示。图3-32显示多重编辑卡图3-31显示菜单条

“显示辅助窗口”:可以帮助用户快捷地找到想要打开的文件,如图3-33所示。图3-33辅助窗口

“突出显示选择行”:可以突出光标所在的行,即用黄色背景突显。

“显示空格”:显示代码中原来的空格,用“”代替。

“显示所有文件格式”:在辅助窗口显示所有格式的文件。

(5)点击“设置”按钮,会显示如图3-34(a)所示的下拉菜单。

“设置”下拉菜单中各选项介绍如下:

“设置编辑器”:编辑器如图3-34(b)所示,可以对程序中的各项内容进行字体、大小、颜色的更改,这里不进行具体的介绍,用户可以自己尝试更改。图3-34设置菜单

“设置端口”:可以进行串行端口的设置,这里设置的端口是COM7。端口可以任意设置,但是必须与电脑分配给下载线的端口相同,才能进行通信。若要查看USB线的端口,可以右键点击“我的电脑”→“管理”→“设备管理器”→“端口”,更改这里的端口。也可以在roboBASIC软件里,也就是“端口设置窗口”里进行设置,如图3-35(a)所示。在Win7下的端口设置步骤和WindowsXP下一样,总之需要遵循的原则就是要保证USB的端口与roboBASIC里的端口一致,否则无法使电脑与机器人进行连接。另外在“端口设置窗口”里可以进行通讯超时的设置,这里默认的是3000 msec,如图3-35(b)所示,用户可以根据实际的需要进行更改,在数字框里直接输入数字或者在下面的滑块上进行滑动调节(传输速度自左向右从小变大)。图3-35端口设置如图3-36所示为MF机器人进行数据传输的串行口名称(为默认),无法自行更改。图3-36数据传输的串行口

“MF? 置零点”(中文版软件有误,应为“MF设置零点”):针对MF机器人的零点调节。机器人出厂时,可能没有完全地调节好机器人零点,需要用户自己进行调节,主要是双脚上的电机零点的调节,如图3-37(a)所示,首先需要连接机器人,读取当前机器人的电机零点角度,然后根据实际需要进行调节。图3-37零点调整

“24Port?置零点”(中文版软件有误,应为“24个端口零点设置”):针对MF机器人芯片上24个端口的零点调节。如图3-37(b)所示,MF机器人出厂时默认设置了16个端口,对应着机器人的16个电机(左臂、右臂各3个电机,左脚、右脚各5个电机),而实际上MF机器人的芯片上提供了24个端口,还提供了可扩展端口,所以用户可以根据自己的实际需要进行适当的改装,比如在MF机器人的头上装一个电机,可以使其进行左右扭动,使机器人更加具备人的特性。

(6)点击“编译”按钮,会看到如图3-38所示的下拉菜单。图3-38菜单栏中的“编译”选项“编译”下拉菜单中各选项介绍如下:

“生成目标代码”:点击此选项后,roboBASIC会自动生成一个 *.obj文件。

“下载”:把 *.obj文件下载到机器人存储器内,点击“下载”,会出现如图3-39(a)所示界面,点击“确定”后,当看到如图3-39(b)所示界面时,则说明程序正在下载。图3-39下载窗口

“全编译执行”:一步生成 *.obj文件和下载界面。

“调试”:显示MF机器人的16个电机当前状态下的电机角度参数,用户可根据需要,对各个电机进行角度调整,调试界面如图3-40所示。图3-40调试界面

(7)点击“控制”按钮,会看到如图3-41所示的下拉菜单。图3-41菜单栏中的“控制”选项“控制”下拉菜单中各选项介绍如下:

“控制器情报”:显示控制器的固件版本、控制器ID等一些硬件信息以及下载程序的名称、下载时间和文件大小,如图3-42所示。图3-42控制器情报界面

“伺服电机实时控制”:更加详细地给出了每个电机的控制角度,而且可以通过控制界面对电机进行打开、关闭的操作。“伺服电机实时控制”界面如图3-43所示,“CaputureAll”可以获得当前机器人的状态下各个电机的角度参数值,点击此按钮后界面上的参数表盘会自动地进行相应调整。“<”和“>”是用来隐藏和显示电机组参数表盘的,这里点击A组的“<”,则A组的电机组参数表盘就会被隐藏,如图3-44所示。将“全选”框中可以对各个电机组进行打开和关闭操作,要达到同样的效果也可以在参数表盘上面的小框里打钩或者取消打钩,如图3-45所示。点击“插入More”可以将当前电机组的状态参数插入程序中。“CaputureGroup”用来获得当前机器人的一个电机组的参数,点击它之后界面上的参数表盘会进行相应的调整,也可以用鼠标控制上面的参数表盘(前提是在那个电机组motor打开的情况下),直接调节机器人上相应电机的参数角度。图3-43伺服电机实时控制窗口图3-44A组的电机组参数表盘被隐藏图3-45一个电机组的打开和关闭操作

“MFMotorControl”:与前面提到的“调试”功能一样,“Mode”下的“Syncronization”是同步的意思,在“Syncronization”上打钩后,如图3-46所示,当调节一个电机时,则另外一个相对应的电机也将作出相同的调整,例如当调整了14号电机(右手臂第三个电机),把原来的80改为82,则相应的8号电机(左手臂第三个电机)也做出同样的调整,由原来的80变为了82,如图3-47所示。当取消“Syncronization”后,则可以对单边进行单独操作,比如把14号电机改为78,则右手臂仍为82,如图3-48所示。图3-46“Syncronization”上打钩后界面图3-47调整14号电机后,8号做出同样调整图3-48取消“Syncronization”后调整14号电机“Capture”:获得当前电机组的状态参数。

“Copy&Exchange”:对手臂、脚的角度参数进行复制或交换。如图3-49所示,以手臂为例,原先右手臂参数从上到下为100、30、78,左手臂参数从上到下为100、30、82,点击“R_Arm=>L_Arm”后右手臂的参数复制给了左手臂,即左手臂的参数也变为100、30、78,如图3-49所示,“R_Arm<=L_Arm”同理;而“R_Arm<=>L_Arm”的作用,就是将左右手臂的参数进行互换,点击后右手臂参数从上到下变为为100、30、82、左手臂参数从上到下变为100、30、78,至于Leg,同理。图3-49“R_Arm=>L_Arm”后,左右手臂参数一样“GroupEnble”:可以控制全部电机motor的打开和关闭,“AllMotors”是对所有电机的控制,下面的Arm、Leg则是对手臂、双脚的分别控制。

“插入”:将当前机器人的状态参数插入程序中,“Wait”:插入Wait命令。

下面结合程序给大家介绍控制菜单下的一些按钮的作用。

“直接运行行代码”:只执行光标所在行的代码。例如下面一段代码:

“直接?行行代?”:运行所有电机组的代码参数。以上述代码为例,当鼠标在这段代码任意位置时(但不能在stand_pose和WAIT那一行上),点击“直接?行行代?”后,机器人的所有电机组都做出了相应的改变,执行后的效果就是机器人做出一个标准站立的动作。

“清除存储器”:将机器人存储器上的缓存内容清空,这个操作一般情况下不需要进行。当烧入的程序代码有误或者另外一些意外情况下导致机器人做出随机性的动作或者动作紊乱时,点击“清除存储器”后会出现“清除存储器”对话框,如图3-50所示。图3-50“清除存储器”对话框然后点击“确定”,清除成功后会跳出清除成功对话框(见图3-51),再点“确定”,这时可以打开伺服电机实时控制窗口,会看到所有电机的motor已经关闭,如图3-52所示。图3-51清除成功图3-52执行“清除存储器”后所有motor自动关闭

“控制器运行模式”:执行控制器中的代码;

“控制器暂停模式”:暂停控制器正在执行的代码;

“控制器重启模式”:重新启动控制器;

“MotorAllOFF”:关闭所有电机组的motor;

“MotorAllON”:打开所有电机组的motor;

“InsertMotorPosition”:将当前所有电机组的状态参数插入程序中,如图3-53所示。图3-53插入状态参数到程序中

(8)点击“窗口”按钮,会看到如图3-54所示的下拉菜单。图3-54菜单栏中的“窗口”选项“窗口”下拉菜单中各选项介绍如下:

“水平平铺”:将程序窗口在竖直方向上展开,如图3-55所示。图3-55“水平平铺”界面

“垂直平铺”:将程序窗口在水平方向上展开,如图3-56所示。图3-56“垂直平铺”界面

“层叠”:将程序窗口层叠展开,如图3-57所示。图3-57“层叠”界面

“关闭所有窗口”:关闭所有的软件窗口,如图3-58所示。图3-58点击“关闭所有窗口”后的软件窗口

“窗口目录”:显示了当前打开的所有程序的名称。

(9)在菜单栏的最右侧有图3-59所示的“最小化”、“最大化”和“关闭”按钮,不过此处的这些操作与图3-20不一样,此处仅针对当前打开的程序文件进行操作,而图3-20是针对roboBASIC软件进行操作。图3-59菜单栏中的“最小化”、“最大化”和“关闭”按钮3.3.3工具栏

下面以从左到右的顺序介绍工具栏中各工具图标的使用。3.3.4辅助窗口

辅助窗口中会显示系统的文件,并且可以快捷地打开文件,界面如图3-60所示。图3-60辅助窗口界面3.3.5状态栏

状态栏显示打开的 *.bas文件,当前光标所在的位置(总行数),以及大写锁、数字锁、大写键的关闭和打开显示。3.4MF(MetalFighter)仿人机器人介绍

MF机器人(金刚战士)是韩国Mini公司生产的一款具有16个自由度(即16个电机)组成的仿人型机器人。MF仿人机器人站立姿态结构示意图如图3-61所示。它有脚、手臂和头

(含红外接收模块)等主要结构。根据16个自由度不同的组合,可以模仿人类做出很多不同的动作,例如跳舞、走路、踢球等复杂动作。它的背上是一块MR-C3024FX主控板,如图3-62所示,负责对机器人运动的控制。主控板上有40个输入/输出端口,能同时控制24个伺服电机的控制器。MR-C3024内置了64 KB的闪存,能编成大量的程序,同时支持最多32个数码输入/输出(I/O),它还具有8个频率的模拟输入功能(A/D),加速传感器及超音波传感器输入功能,操作器远距离接收信号功能等多种功能。用户可以通过电缆接口在电脑里下载完整的程序代码,使机器人做出动作并且可以随时训练机器人,以便更容易操作双足步行机器人。图3-61MF仿人机器人站立姿态结构示意图图3-62MR-C3024FX控制板结构示意图控制器简介:

CPU:ATMELATMEGA128;内存为56 KB闪存型;协议接口;伺服参数设置功能;可选LED指示单元;3种PWM输出;8个A/D接口;最多支持4个陀螺仪;支持蓝牙,红外控制;支持语音控制;内置电压蜂鸣器,兼容6oct音乐;兼容多种编程语言。

机器人使用的电机是伺服电机(直流和交流),它能将电压信号转化为转矩和转速。其特点是当信号电压为零时无自转现象,转速随着转矩增加而匀速下降,体积小,重量轻,输出功率和转矩大,方便调试。以Hitec公司生产的HSR8498HB型电机和HSR5990TG型电机为例,其外形如图3-63所示,参数如表3-1所示。图3-63HSR8498HB型电机(左)与HSR5990TG型电机(右)表3-1HSR8498HB型与HSR5990TG型电机具体参数

3.5Robobasic语言语法介绍

3.5.1Robobasic语言介绍

Robobasic语言类似于BASIC语言,其指令可以分为与声明、定义相关的指令,流程控制指令,数字信号输入输出指令,内存指令,LCD指令,操作数相关操作,电机控制指令,电机组参数分配,音乐控制指令,外部通讯指令,模拟信号处理指令,处理指令,其他指令和内部指令等类别。本书以Robobasic在MetalFighter型仿人机器人上的应用为例,对部分指令进行详细介绍。3.5.2Robobasic语言基本语法

1)标示符集

Robobasic标示符集由英语字母、数字和特殊符号组成。特殊意义的符号如表3-2所示。表3-2Robobasic特殊意义标示符集

2)表达式和运算符

表达式由非变量、变量、数及运算符组成。一个运算符对给定值执行算术或逻辑运算,在Robobasic中运算符的分类如表3-3所示。表3-3运算符分类表算术运算符是执行计算的标示符,和一般BASIC语言一样,“+、-、*、/、%”在Robobasic中可以使用,但是Robobasic和BASIC有些不同的地方。

(1)运算符中没有优先级。

(2)复杂的数学计算会产生意想不到的错误。

(3) Robobasic只支持Byte类型和整数类型,小数点将被忽略。

关系运算符用来比较两个值,如表3-4所示,运算输出为TRUE或FALSE,输出结果用来在IF语句中控制程序流向。

表3-4关系运算符含义当算术运算和逻辑运算组合到一个式子里时,算术运算优先于逻辑运算。

逻辑运算符用来比较组合条件,计算结果返回TRUE或FALSE,输出用来在IF语句中控制程序流向。逻辑运算符包括AND(与)、OR(或)和XOR(异或)三种运算方式,详见表3-5。表3-5逻辑运算在机器人控制器中常使用一些变量以简化输入输出端口的位控制。使用位运算符对这些变量执行计算。对一位的运算有位或(OR)、位与(AND)和位异或(XOR)。在Robobasic中,运算符左移“<<”,右移“>>”和“.”用来移动一位到一个指定的位置。

例3-2

设A的值为33(二进制为00100001),B的值为15(二进制为00001111),使用位运算符执行计算。

3)数据变量/常量和其他语法解释

(1)数据类型。Robobasic中,只有两种数据变量,分别为字节(Byte)类型数据和整型(Integer)数据。其范围如下:字节类型为1个字节(8 bit),即0~255的范围;整型类型为2个字节(16 bit),即0~65 535的范围。由于Robobasic不支持负数,所以当“+”或者“-”加在一个数前面时,运算会产生错误。例如如下情况发生时,编译器都会出错:“a = + 9”,“a =-6”。

(2)真数。Robobasic中,可以使用二进制数(Bin)、八进制数(Oct)、十进制数(Dec)、十六进制(Hex)。例如:61用二进制表示为&B111101,八进制表示为&O75,十进制表示为61;十六进制表示为&H3D。

(3)常量和变量。Robobasic中,常量在程序执行中的值不变,Robobasic可定义Byte类型和Integer类型的常量。常量类型根据数的范围自动确定。一旦常量被定义,就不能被重定义。定义常量对程序大小没有影响,当一个数被频繁使用时可以定义该数为常量,这样能简化程序的修改。

例3-3

常量使用示例。

CONSTOFF=0

CONSTmotor_speed=200该例定义了OFF和motor_speed这样两个字符串为常量,分别赋值为0和200。

微小型机器人控制器的内存有限,因此在符合对象的情况下变量声明应使变量占用内存最小。

声明常量或变量时,遵守以下规则:

①首字母用英语字母,“_”可用在变量名和常量名中。

②常量名和变量名长度均不可超过64。

③相同常量名和变量名只能声明一次,大小写无区别。

④声明常量大于65536会出错。

4)位操作

Robobasic中变量可按位操作。位操作使用位操作符“.”。只有数字和常量能使用,如例3-4。

6)行标记

行标记用来指示程序里的位置。可以用字母和数字,规则如下:

①标记不能超过64个字符长,第一个字符必须为英语字母。

②标记符后跟“:”。

③在0~65 536范围内的数字可用来做标记名字,不需要“:”。

④标记符不能重复,大小写无区别。

7) Robobasic声明命令描述

Robobasic中,声明一个变量采用如下方式:

DIM…AS…

该方法可以进行单变量和多变量的声明,其语句结构分为:

(1)单变量声明:

DIM[变量名]AS[变量类型]

(2)多变量声明:

DIM[变量名]AS[变量类型],[变量名]AS[变量类型]命令解释:

变量必须用DIM声明且必须用AS声明类型,变量名大小写无区别但不能重复。

变量用来处理传感器的值或模拟信号转换的值,因此使用合适的变量,程序将更有效率。各机器人控制器可使用的变量数不同,例如MR-C3000为256字节。

3.6前进一步动作的程序设计

仿人机器人步行模拟人类步行原理,需先对人类行走的动作进行分解,再根据人走路的姿态和关节状态来设计机器人关节电机的旋转角度,从而实现步行这一过程,如图3-64和图3-65所示。图3-64人类连续步行示意图图3-65人类连续步行分解示意图连续行走一步的姿态控制流程图如图3-66所示,以左脚起步为例。图3-66步行姿态控制流程图根据以上流程图中的5个阶段分别建立相应的静态动作截图,如图3-67和图3-68所示。图3-67侧面截图图3-68正面截图以上程序若直接下载到机器人控制板中,机器人会出现摔倒现象。其原因是在不同动作的衔接上有偏差。人在走路的时候,肌肉会不断地协调动作来保持人体的平衡性,而机器人就像喝醉的人,在没有传感器协助的情况下无法自我调节,因此在设计静态动作的同时也必须考虑动作之间的协调性。对上面的代码进行优化后形成以下代码:优化后的步态流程如图3-69示。

优化前和优化后比较发现,两者主要结构一样,不同的是优化后在动作上做了平滑处理,让动作在前后的衔接上更加合理。同时优化后也增加了动作的稳定性,这对步态设计来说是非常重要的。图3-69优化后的步态流程图

3.7后退一步动作的程序设计

通过上一节前进一步的代码设计,不难发现其实仿人机器人步行的难点在于对其重心处与支撑区域的稳定性控制和不同动作之间合理的过渡衔接。

后退一步的动作绝非前进一步动作的逆过程那么简单,即如果用前一节的代码调换执行顺序,下载到机器人进行实际测试,会出现机器人直接摔倒的情况。但后退和前进的动作结构是类似的,首先还是要考虑重心的变化。根据前进的步态控制流程来规划后退的动作流程,如图3-70所示。图3-70后退动作分解流程图后退动作截图如图3-71和图3-72所示。图3-71正面截图图3-72侧面截图 3.8连续行走程序设计

连续行走的实现方式有很多种,这里列举两种典型的方法。

(1)最简单的就是使用前进一步的方法,然后将之循环。当然在设计的时候,必然是左右脚交替变换,走两步为一个循环,流程图如图3-73所示。图3-73连续行走流程图代码的设计请参考3.6节的方法,在该代码的最后添加循环语句即可完成连续行走。

(2)仿人走路方法。其流程如图3-74所示。图3-74连续行走流程图此方法和方法(1)相比,不同之处在于循环体。方法(1)是对整个动作进行循环,方法(2)则是把动作进一步分解为启动动作和循环体。启动动作是直立到循环体的一个缓冲动作。循环体相对于方法(1)中的循环要简单很多,去掉了冗余动作,代码设计量会少很多,错误的发生率也会减小很多,同时也保证了代码的简洁性。

连续行走机器人正面截图如图3-75所示。图3-75连续行走机器人正面截图连续行走机器人侧面截如图3-76所示。图3-76连续行走机器人侧面截图 3.9复杂动作程序设计

3.9.1单杠运动程序设计

单杠运动需要考虑机器人的直腿摇摆、弯腿摇摆、倒立、正向旋转、反向旋转等动作,并对这些动作进行规划,同时还需考虑动作的观赏性。首先需要对MF机器人的手进行机械性加工,让机器人能固定在单杠上,手和杆子之间存在空隙,而动作实现的关键在于如何使惯性的叠加给机器人提供旋转的动力。

机器人单杠运动示意图如图3-77所示。实物图如图3-78所示。图3-77机器人单杠运动示意图图3-78机器人单杠运动实物图3.9.2单腿独立运动程序设计

1.flying动作模型设计

机器人flying动作的正面截图如图3-79所示。图3-79机器人flying动作的正面截图

2.left_foot_sit_standup动作模型设计(左右脚原理相同,以左脚为例)

机器人left_foot_sit_standup动作的正面截面如图3-80所示。图3-80机器人left_foot_sit_standup动作的正面截图3.9.3倒立运动程序设计

倒立对于人来说是一个比较高难度的动作,但是如果掌握了倒立的技巧,倒立动作其实也不难。这里的倒立并非是双手撑地,而是采用三点触地来支撑起身体。以两只手和头部为支撑点构成三角形区域来实现倒立支撑的稳定性。因为倒立过程是一个重心变化很大的动作,所以对重心运动轨迹的设计要连续、合理。

机器人倒立运动的正面截图如图3-81所示。图3-81机器人倒立运动的正面截图根据以上截图,整个倒立运动的流程如图3-82所示。

根据流程图可将倒立运动分为倒地、倒立、起立三个过程。设计代码也分为三个部分去实现。主函数为hand_standing(倒立),调用front_lie_down(倒地)和back_standup(起立)两个函数,三个函数相互配合使用,这样的模式思路清晰,结构简单,易懂且出错了容易发现。图3-82机器人倒立运动流程图3.9.4翻滚运动程序设计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论