资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
中国农业大学 课程论文 (2013-2014 学年秋季学期) 论文题目:论文题目:机器人创新实验(1)实验报告 课程名称:课程名称: 机器人创新实验(1) 任课教师:任课教师: 班级:班级: 姓名:姓名: 学号:学号: 成绩成绩 机器人创新实验(1)实验报告机器人创新实验(1)实验报告 关键字:ARM TKStudio 集成化编程 C 语言 传感器 舵机 控制 摘要:机器人创新实验课引导我们综合利用机械扩展、电子扩展、软件扩展及传 感器扩展能力,以创新为主题,自主完成从机器人的机构组装到编程控制。通过 这门课程, 我初步掌握了有关机器人技术的基本知识和机器人学所涉及的技术的 基本原理和方法,加深了对理论知识的理解和掌握。 一、认知实验:了解探索者一、认知实验:了解探索者 机器人实验一这门课用到的教学材料是探索者教学机器人创新套件。 通过这 个实验平台,我们可以完成机器人的创新设计、组装以及编程控制。在前期的认 知实验中,我们搭建了一个二轮驱动的自动避障小车,并且实现了对它的控制, 从而对探索者有了很好的了解。 (一)机械部分(一)机械部分 探索者的机械零件包括金属件、塑胶件、舵机、零配件四部分。其中金属件 共有 29 种,具有相同的壁厚和丰富的扩展孔。舵机分为圆周舵机和标准舵机两 种。同学们在创新设计的过程中可以根据零件的特点,灵活运用,合理搭配,从 而实现自己所设计的机械结构以及运动方式。 (二)控制部分(二)控制部分 我们使用的 Robotway ARM7 LPC2138 主控板采用 32 位高性能实时嵌入式芯 片,支持用户自定义开发,开放电路图、源代码、库函数。 探索者套件中包含了触碰传感器、触须传感器、近红外传感器、声控传感器 等八种传感器,可以实现寻线、避障、声光等多种控制。 (三)编写和烧录程序(三)编写和烧录程序 我们使用的编译环境是 TKStudio。由于我们并没有学习过单片机,所以编 程对我们来说是一个难点。我们先从实验指导书上简单的例程开始学习,结合 C 语言的知识,逐渐掌握了 ARM 的编程方法。 烧写程序的时候, 我们用到的是Philips Flash Utility软件。 使用的过程是 : 1、选择端口;2、读取主控板的 ID 号;3、擦除主控板中原有的程序;4、选择 自己的程序;5、上传。 (四)认知实验成果(四)认知实验成果 仿照扫地小车例子,我们制作了属于我们自己的自动避障小车,功能包括碰 到左右障碍在制作的过程中详细了解了安装机械部件的技巧以及圆周舵机、 传感 器等的控制方法,为之后的创新实验积累了宝贵的经验。 经验总结:经验总结: 1.检验器材: 在使用主板和传感器之前,要先对各个端口进行检查。做好前期的准备工作 是很重要的。具体方法是:编写一个让所有端口均输出令圆周舵机不停旋转信号 的程序,烧制程序至主板芯片中,然后启动芯片,将一个圆周舵机依次连接各端 口即可检查每个端口的完好性,同时这也是检验舵机完好性的好方法。在实验前 对器材进行测试是必要的。 2.构件连接: 机械结构可能会随着设计而进行局部的改变,因此拧连接螺钉时不必将所有 空位均固定牢靠,开始搭建时可以只对必要的空位进行连接,比如只拧紧对角线 两个螺钉,待到结构确认无误时在紧固所有螺钉,方便改造重组,节约时间。另 外为方便拆卸,应将螺母统一放置一侧,最好是便于使用扳手的部件外部。 3.程序编写: 编写程序前需按照教程进行相应配置,否则编译时即使没有语法错误,也无 法编译成功。在阅读例程并进行实验充分理解语句含义以及传感器、舵机、端口 的使用方法的基础上开始编程,为了便于调试编写相关语句(LedIn,LedOut)将 各个端口的工作状态用 led 信号灯表示出来, 实验时可根据 led 信号灯判断程序 运行是否正常,舵机、传感器是否运行正确。 二、创新实验方案设计二、创新实验方案设计 (一)结构组装(一)结构组装 在最后一次创新实验中, 我们最初的构想是一只可以切换运动方式的机器小 猫。第一种运动方式是标准四足的行走方式。由一个圆周舵机带动两组偏心轮四 杆机构,实现和动物相似的对角线交替的行走方式。如下图所示: 第二种运动方式为两轮驱动,四足静止的行走方式。两个车轮最初处于悬空 状态,声音传感器触发后,控制两个标准舵机转动一定角度,使车轮着地,完成 前进方式的转换。下面是我们依据这种构想搭建的机械小猫: 之后我们在不接传感器的情况下用简单的程序来测试机械猫两种方式下的 运动情况,结果却不尽人意。首先是舵机太多。其次整个机构的结构太繁琐,稳 定性不够,很难维持平衡。由于带动四杆机构的轴比较短,机构太重的话也不够 稳固。所以我们对整个机构进行了简化,舍弃了车轮的部分。下面是改进后的机 械小猫: (二)传感器设置(二)传感器设置 改进后,我们对机械小猫的功能设计为:电源启动后,圆周舵机工作,小猫 开始前进。如遇到前方有障碍物,则后退 10 秒。当接收到声音信号时,停止前 后运动,同时颈部的标准舵机转动一定角度,完成转头的动作。因此我们的小猫 中对应地设置了一个近红外传感器和一个声音传感器, 分别实现避障和转头的功 能。上图中的触须传感器是为了美观设置的。 (三)程序编写(三)程序编写 1.初步设计1.初步设计 端口元件类型安装位置及功能 Servo(1,*)圆周舵机左轮 前进、后退、转弯 Servo(2,*)圆周舵机右轮 前进、后退、转弯 Servo(3,*)标准舵机左臂 旋转 90 度收放左轮 Servo(4,*)标准舵机右臂 旋转 90 度收放右轮 Servo(5,*)标准舵机脖子 左右转动幅度 180 度 Servo(6,*)圆周舵机带动四足机构 单向匀速旋转 Input(1,1)触觉传感器左头部左侧 收到信号右转 Input(2,1)触觉传感器右头部右侧 收到信号左转 Input(3,1)红外传感器头部前方 收到信号后退并原地转弯 Input(4,1)声音传感器机身后方 收到信号由轮子跑模式切换到四足行走模式 #include config.h #include lib_io.h #include lib_arm.h int main(void) int i; unsigned int flag=1; Initial_ARM(); DelayNS(1500); while (1) if (Input(1,1)=1) /左触觉传感器触发 LedIn(1,2); LedIn(2,0); LedIn(3,0); LedIn(4,0); LedOut(1,1); LedOut(2,0);/信号灯标识舵机、传感器工作状态 Servo(1,60); /左轮向前转,右转 Servo(2,90); /右轮不动,右转 DelayNS(1500); /右转 1.5s flag=1; else if (Input(2,1)=1) /右触觉传感器触发 LedIn(1,0); LedIn(2,2); LedIn(3,0); LedIn(4,0); LedOut(1,0); LedOut(2,1);/信号灯标识舵机、传感器工作状态 Servo(1,90); /左轮不动,左转 Servo(2,120); /右轮向前转,左转 DelayNS(1500);/右转 1.5s flag=1; else if (Input(3,1)=1) /前方有障碍物,红外传感器触发 LedIn(1,0); LedIn(2,0); LedIn(3,2); LedIn(4,0); LedOut(1,1); LedOut(2,1);/信号灯标识舵机、传感器工作状态 Servo(1,120); Servo(2,60);/左右轮同向同速转,后退 DelayNS(1000);/后退 1s Servo(1,175); Servo(2,175); /左右轮反向同速转,原地旋转 DelayNS(2100); 原地打转 2.1s flag=1; else if (Input(4,1)=1) /声音传感器触发 Servo(1,90); Servo(2,90); /左右轮停止旋转 Servo(3,90); DelayNS(1000); Servo(4,90); DelayNS(1000);/标准舵机带动左右臂向前上方旋转,收起轮子 for (i=0;i6;i+) Servo(5,0);/脖子标准舵机左转至 0 度 DelayNS(200); Servo(5,180);/脖子标准舵机右转至 180 度 DelayNS(200); Servo(5,90);/脖子标准舵机回归原始方位 DelayNS(200); /以上程序实现脖子扭动数次 Servo(6,60);/圆周舵机匀速旋转,带动四足机构向前踱步 DelayNS(10000);/持续 10 秒 flag=1; if (flag=1) flag=0; LedIn(1,0); LedIn(2,0); LedIn(3,0); LedIn(4,2); LedOut(1,1); LedOut(2,1);/信号灯标识舵机、传感器工作状态 Servo(3,0); DelayNS(1000); Servo(4,180); DelayNS(1000);/标准舵机带动左右臂向下方旋转,放下轮子 Servo(1,60); Servo(2,120);/左右轮同速同向旋转,前进 /不经传感器触发,向前行走 return(1); 2.改进程序:2.改进程序: 端口元件类型安装位置及功能 Servo(1,*)圆周舵机带动四足机构 单向匀速旋转 Servo(2,*)标准舵机脖颈部 180 度范围内旋转摇头 Input(1,1)红外传感器头部前方 收到信号后退 Input(2,1)声音传感器机身后方 收到信号摇头 #include config.h #include lib_io.h #include lib_arm.h int main(void) int i; unsigned int flag=1; Initial_ARM(); DelayNS(1500); while (1) if (Input(1,1)=1)/声音传感器触发,摇头 for (i=0;i10;i+) Servo(2,0);/脖子标准舵机左转至 0 度 DelayNS(200); Servo(2,180);/脖子标准舵机右转至 180 度 DelayNS(200); Servo(2,90);/脖子标准舵机回归原始方位 DelayNS(200); flag=1; else if (Input(2,1)=1)/红外传感器触发,摇前方有障碍,后退 Servo(1,120); /圆周舵机带动四足机构进行后退踱步 DelayNS(10000); flag=1; if (flag=1) flag=0; Servo(1,60); /圆周舵机带动四足机构进行前进踱步 return(1); 编程设计经验总结:编程设计经验总结: 1)舵机控制: 实现机器人各个动作的核心是舵机控制,而我们的实验器材中有两种舵机, 一种是圆周舵机,可以实现正反向圆周转动;另一种是标准舵机,可实现 180 度 范围内的指定角度的旋转。 通过实验发现,圆周舵机的控制值范围为 0180,其中值为 90 时舵机静止, 小于 90 为逆时针(从舵机外部看,也就是从舵机伸向外部的旋转端看)旋转, 大于 90 为顺时针旋转,且值偏离 90 越多,速度越大,即 0 和 180 为正反向旋转 的最大速度。 标准舵机的控制值范围也为 0180,值得大小代表旋转的度数大小,可以进 行指定度数的旋转控制。 根据两种舵机的特性,我们设计将圆周舵机用于轮子的传动,并通过对左
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号