付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
引 背 编写目 概 术语定 需求设 开发运行环 系统架 整体架 架 动作模式编辑ODE仿真下位机程 动作模式编辑设 步骤流程 实时控制界面设 编辑界面设 类层次结 自定义控件关 MyArea ImageButton 动作模式 EditAction EditCanvas 右键菜 执行流 接收与解 保存数 封装类的使 作说 基本操 编辑操 仿真器仿真操 引背够对其进行编辑控制,也就提出了图形化编辑器的设计。行编辑动作,进行。1999SONYAIBO的AIBO的诞生仅代表了一个机器宠物的诞生加重要的是AIBO具备了工智能科技,朝提供生活的方向发展。在AIBO的,有一块极小的,就是它让机器AIBO能非常强大,但还是需要技术才能够对其进行编程控制。前综合性公司BANDA(万代推出了一款 Pet"(聪明的宠物,这是一款App与实物结合的产品。SmartPet的实物底座就是宠物的身体,为宠物脸,两者连接后,可以透过的App与触摸屏来让宠物做出很多有趣可爱的动作,App还能使用的前镜头,根据人在镜头前挥动势来与宠物互动。同样,SmartPet也只是预先保存了动作后,通过与其交互,进行调入一个全新的时代本也正是基于宠物机器(8关节四足机器人的研究并且是宠物机器人的动作进行图形化编辑,是非常有意义有价值的研究。编写目本多关节机器人动作模式编辑的主要目的是简化编程,降低对编程的要求的门槛。通过利用多关节机器人动作模式编辑(上位机)编辑机器人各个关节(舵机)的运 概术语定动作模式编辑:动作模式编辑是多关节机器人动作模式编辑的简称,多关节机器人:多关节机器人即是包含多个度舵机的机器人PCsinSinsin*.mact:自定义文件后缀,myaction需求设经过一系列的分析与,得出以下几点需求5sin开发运行环1)环本开发的系统为WindowsXP/Windows7。多关节机器人动作模式编辑的开发平台为JDK1.6,外加串口包,开发工具为eclipse3.6和NetBeansIDE7.1.1。仿真1.02)CPU:In1.40GHz或以上、内存:512M以上、硬盘剩余空间100M以上,外设:USB系统架整体架图1 送数据到串口,而是将数据保存到文件里。整个系统的架构如图2所示。动动作模式编文件操文件操串口通文多关节机器解析执行动接受动作数ODE仿解析执行动动作数据文发送或保存动作数据封装动作数编辑动作序图2架动作模式编串口通信模动作模式编文件读写模ODE控制器仿真,模拟机器人的处理器,对动作模式编辑生成的数据文件进行数据的数据,本体仿真模舵机仿真模3D下位机程据保存到EEPROM中,以便关机后,重新启动时直接以保存的动作数据。串口通信模读写模EEPROM解析执行模动作模式编辑设步骤流程图3编辑动作的主要流利用多关节机器人动作模式编辑编辑机器人动作的主要步骤如图3所示。其中一实时控制界面设实时控制界面如488FileWriter||5图4编辑界面设动作编辑界面如图5所示,左下方可以选择需要编辑的舵机个数,还可以输入每个单位的时间间隔(这里的单位是指将一个动作模式分成几段ms按钮后便可以将动作序列发送到下位机中查看实际运行效果,预览的次数可以自己设置。图5EEPROM文件中,同时在数据列表中可以看到保存的动作名称。下次打开后可以在列表中选择,右下大半部分为自定义的控件继承Jcomponent类,类似一个大的Canvas画布,并放到JScrollPaneJavaswing变化、线性变化、折线、曲线和sin线。右侧为编辑区域有n个舵机编辑区域组成。可以将动作模式添加进去,如图5类层次结相应的属性,由此将动作编辑界面中的类设计成如图6自定义控件关
图6在编辑界面中一整个编辑区域都是自定义Jcomponent控件,同时将该控件放到JScrollPane容器中使其能够滑动扩大编辑区而在这个自定义的控件是由一些自设计的类构成,因此在这里很有必要说明一下这个控件的结构,如图7所。EditAction舵机序列编辑MyArea
图7MyArea域的大小,以及获取该区域的一些信息,具体成员结构如图8图8MyAreaMyArea(intx,inty,intwidth,intheightMyArea(intmleft,intmtop,intmright,intmbttom,booleanopoptsetArea(修改区域大小和位置。getCenterX()和getCenterY()函数分别是用来获得区域中心位置,因为后面需要用的中心位置。getWidth()和getHeight()函数则分别是获得区域的长和宽。isClicked(intx,inty)函数则是判断点击位置x,y是否在该区域,是则返回true,代表点击了该按钮;ImageButtonImageButton类继承了MyArea类,并添加了成员变量以及一些相应函数,成员结构如图9图9ImageButton构造函数在MyArea基类的基础上添加了成员。并可以通过setImage()来设置和getImage()来获得。动作模式动作模式的Model类继承了ImageButton类,并添加了动作模式的一些属性,如所占有几个单位,微调角度等,具体成员结构如图10图10Model30minitrim0,即不微调。式或模式,都需要移动模式,距离可为正可为负,为负数则向左移动;为HorizontalModel类HorizontalModel类继承了Model类,代表了水平横线模式,即让舵机保持一定角度一定时间,时间的计算为模式所占的单位数乘以单位时间间隔,其类结构如图11图11HorizontalModel该类多了个拷贝构造函数,即特定水平模式。其中vaule变量即代表着舵机旋转角LinerModel或线性递减,其类结构如图12图12LinerModel该类多了个拷贝构造函数,即特定线性模式。其中startPoint代舵机开始的角endPointgetInfo()息。FoldModel再线性递减,或者先线性递减再线性递增,其类结构如图13图13FoldModel该类同样有个拷贝构造函数,即特定折线模式。其中startPoint代表舵机开始的CurveModelsin14图14CurveModel过该类期间变化是sin曲线。其中startPoint代表舵机开始的角度,centerPoint代表舵机中间点角度,endPoint代表舵机结束的角度,期间做sin曲线变化。getInfo()函数返回SinModelSinModel类同样是继承Model类,代表sin曲线变化模式,即让舵机在一定时间内曲线变化,用到的是sin曲线变化,与曲线变化模式有点不同的是,该模式变化是完整的sin线,其类结构如图15图15SinModel该类同样有个拷贝构造函数,即特定sin曲线模式其中startPoint代表舵机开始的角度,maxPoint代表舵机最大角度,期间做sin曲线变化。getInfo()函数返回当前模式EditAction动作模式连起来,代表着舵机的运动轨迹。类结构如图16图16EditActionhorList、linerList、foldList、curveList、sinList为List类,分别保存五actionListintinsertPos用来记录动作模式点的位置maxPos和minPos分别记录动作模式在EditAction当中的最大值和最小值,方便EditActioncopyModel(int,int,int,EditAction)指定动作模式findInsert(int,int)查找动作模式并模式模式findPos(int,int)找到动作模式点位置getHorItem(getLinerItem(getFoldItem()getCurveItem(recordPos。isExist(int,intMoveModel(int,int,intEditCanvasEditCanvas类继承Jcomponent类,同时还继承了鼠标事件MouseListener,MouseMotionListenerEditCanvas(1)采缓冲技Java用paint函数进行绘制图像。也正是这种先用背景色覆盖控件再重绘图像的方式,导致了屏另外,用paint(Graphicsg)函数在屏幕直接绘制图像的时候,因为执行的语句比较多,updatepaint果。getGraphics()方法去获得绘画这幅图像的画笔,接着利用画笔在图像上画想画的图形,最后将绘画好的图像全部的显示到屏幕,从而达到减少paintprivateBufferedImageoff_screen_buf;privateGraphicsoff_screen_g;off_screen_buf=newBufferedImage(CANVAS_WIDTH,CANVAS_HEIGHT,BufferedImage.off_screen_g=// publicvoidoff_screen_g.fillRect(0,0,CANVAS_WIDTH,}publicvoidpaint(Graphicsg){// 直接贴到前if(g!=g.drawImage(off_screen_buf,0,0,}(2)鼠标按下事EditCanvas类继承了鼠标事件Listener,当鼠标按下时候会触发mousePressed(MouseEvente)事件,并根据MouseEvent来判断触发事件的来源,如左键、右键、中间滑因为本可以根据不同舵机数目进行编辑因此需要创建相应个数的舵机动作编辑类privateArrayList<EditAction>servo;privateArrayList<EditAction>servo;//创建对象servo=new publicvoidsetServo(intnum){if(num>servo.size()){while(num>servo.size()Imageim2=newImageIcon(getClass().getClassLoader().EditActionservo1=newEditAction(100,*servo.size(),im2.getWidth(null),im2.getHeight(null),im2);}}elseif(num<while(num<servo.size()){}}}设置属性性框。首先,需要获得点击的EditAction对象,再去获得EditAction对象中具体的动publicvoidpublicvoidEditActiontempservo=intmode=tempservo.getSelectMode(); caseHorizontalModeltemph= if(temph.getUnit()!=horDlg.getUnit()){}temph.value=horDlg.getValue();}caseSLASH:caseFOLD_LINE:caseCURVE:caseSIN:}}publicStringpublicStringStringBuilderstrb=newStringBuilder();for(inti=0;i<servo.size();i++){EditActiontempEA=servo.get(i);Stringstr;str=}return}右键菜右键弹出的,如图17图17动作模式右键菜动作模式右键菜单“微调““到其后“后移一个单位“删除”“属就是将所选的动作模式到“剪贴板,其实是调用拷贝构造函数进行属性信息的。其后与差不多,只是直接在所选模式后面粘贴就是了,不需要在点舵机序列编辑条右多选表示多个动作模式和删除多个动作模式框本界面中用到的框总共有6都为模态框分别为微调框水平模式性框线性模式属性框折线模式属性框曲线模式属性框sin模式性框。后5种框当点击属性后会根据所选的动作模式弹出。微调图18微调水平模式属性图19水平模式属性90°。线性模式属性图20线性模式属性30°,140°。折线模式属性图21折线模式属性30°,150°30°。曲线模式属 图22曲线模式属性30150°,30°。sin模式属性图23sin模式属性90°,120°,0,暂时未用到。Arduino下位机编Arduino是个注重实际动手操作的产品被一些电子疯狂者用来设计机器人Arduino据保存到EEPROM中,以便关机后,重新启动时直接以保存的动作数据。执行流Arduino的编程也比较简单,因为Arduino已经封装好了一些类库,开发者只需要调用相关方法就可以了。C语言程序运行是从main函数开始的,而Arduino已经在定义了Arduinosetup()loop(死循环。而在loop()函数开始,其会检测是否有串口输入数据,若有,则会执行serialEvent()loop()24开开接收与解
图24“list”“S145145°。动作数(ms“list10410ms,4循环接收各个动作模式的数据。如“220100 50,“100”作模式有100个单位,开始角度为151°,结束角度为136°。下一个模式一样。保存数EEPROM封装类的使SPlayer类,用户只需要调用几个SPlayerinitServo(intnum)num代表需要用到的舵机41setup函数中,初始化标记变量,用于记录是否已调用过串口数据函数,实现串口函数只调用一次。接着,在loop()函数中,调用getSerialData()函数串口数据,而在函数实现部分增加了接受到“”空格数据时,才开始接受动作数据。只需在动作模式编辑选择串口模式后,按空格便会发送空格数据,之后便可以接受数据了。最后,调用doAction(inttodo_pos)函数执行动作,其中todo_pos为将要做的动作下标,todo_pos需小于已接收的动作数目。#include<Servo.h>#include"SPlayer.h"#include#include<Servo.h>#include"SPlayer.h"#include<EEPROM.h>SPlayermySPlayer;intflag=0;void{ //初始化舵flag=}void{if(flag==flag=1;}for(inti=0;i<3;i++)for(inti=0;i<3;for(inti=0;i<3;i++)for(inti=0;i<3;i++)} 作说基本操打开动作模式编辑件,启动后,会出现以下界面,如图25所示。图25动作模式编辑界需要说明的是,要运行本需安装java的运行环境,否则无法运行新建动快。点击“确定”按钮,便看到图28图26图27新建动作图28打开动作文选择一个文件即可打开该动作。打开的动作如图31图29图30打开动作图31保存动点击菜单栏中的“菜单”→“保
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年存算一体架构项目营销方案
- 2026年刚性充气艇项目营销方案
- 2026年共享厨房与烘焙空间项目营销方案
- 广东深圳深思实验室2026届校园招聘备考题库附答案详解(a卷)
- 2026福建临汕能源科技有限公司直聘人员招聘7人备考题库及答案详解1套
- 2026海南澄迈县教育部直属师范大学公费师范毕业生招聘13人备考题库含答案详解(黄金题型)
- 2026江苏南通市紫琅中等职业技术学校教师岗位招聘16人备考题库及完整答案详解
- 2026第一季度重庆医科大学附属大学城医院考核招聘高层次和紧缺人才17人备考题库含答案详解(夺分金卷)
- 2026福建厦门市集美区新亭幼儿园非在编教职工招聘1人备考题库带答案详解(能力提升)
- 2026湖北恩施供销好农友现代农业有限公司市场营销部人员招聘备考题库及答案详解(新)
- 2026年金融科技支付创新报告及全球市场应用分析报告
- 2025至2030心理咨询行业市场发展分析与发展前景及有效策略与实施路径评估报告
- 初中英语单词表2182个(带音标)
- 医患沟通学课件
- 钢结构施工方案模板及范例
- 2025至2030中国闪烁体行业调研及市场前景预测评估报告
- 云南省食品安全管理制度
- 华为性格测试攻略
- 低促性腺激素性腺功能减退症
- 第八章医学病毒总论
评论
0/150
提交评论