机器人技术实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(课程实验报告)
论文题目 机器人技术试验报告
学 院 工学院
专业名称 机械设计制造及自动化
班 级 机械08
学 号 081014104、081014404
姓 名 赵保顺、邹修贤
指导教师 郑嫦娥 实验日期
2011.05
实验一:仿生蛇形机器人
一、实验背景:
串联式机械手是一种重要的机械结构形式,蛇形机器人是一种重要的仿生机器人,相对于有足的仿生机器人而言,它具有他特别的用处,本实验设计一个仿生蛇。
有四部电机来控制它,使其具有四个自由度。
近几年来,仿生机器人学正在机器人领域占有越来越重要的位置,蛇形机器人由于其结构的特殊性,已成为仿生领域的研究热点。
蛇形机器人在战场上的扫雷,爆破,矿井和废墟中探测营救,管道维修以及外行星地表探测等条件恶劣,且要求有高可靠性的领域有着广阔的应用前景。
模块化设计和高冗余度设计等新思路的提出和逐步完善,使蛇形机器人成为研究的亮点。
SolidSnake II 结合了国内外蛇形机器人的发展现状,充分考虑了蛇类生物的运动特点,从仿生学的角度,结合机器人动力学和摩擦学等的相关理论,建立了基于行为控制理论的蛇类运动学模型,把蛇类生物的复杂运动形式化解为局部的、简单的行波状态,并以固定的相位差沿蛇体进行传播。
采用中央处理机(即蛇的大脑)集中控制的方式把各种运动方式进行合成,实现了机器蛇的蠕动、游动、侧移、侧滚、抬头、翻越障碍物等运动形式。
在对蛇类运动机理深入研究的基础上,得出了利用杆状结构的角度变化和运动时延,相位差去控制机器蛇运动的速率和运动方向的规律,并在实验中验证。
本次实验是以其为背景的展开的一次实验。
二、实验目的
1.了解蛇形机器人的概念,蛇形机器人的动作规划,步态规划的基本知识。
2.熟悉蛇形机器人的构架搭接。
3.掌握创意之星机器人的构建搭接的技巧与方法。
4.熟悉掌握各种搭建元件的使用方法和电机舵机的使用技巧。
三、实验材料
本实验使用博创科技的“创意之星”的全套实验器材,以及一些实验工具,电脑一台,参考书博创实验指导书。
四.实验步骤
1.清理自己的实验材料,找全本实验所需的各个器件。
2.关节的搭建
搭建一个关节
首先我们需要搭建出5 个单独的关节,以组合出完整的机器人。
单个关节的结构部分(不包括舵机和舵盘)如下图所示:
下图的装配示意图表明了该关节的安装方式。
A 为3 个M3x10 螺钉,D 是3 个M3 自锁螺母。
A 和D 把零件C、E 固定在一起。
C 为零件“U3-4-3”, E 为零件“舵机固定板2”。
B 为4 个M3x10 螺钉,G 是4 个M3 自锁螺母。
B 和G 把F(舵盘)固定在零件
C 上。
装配的时候需要注意的是以下几点:G 可以预先放到F 的螺母槽中,便于装配。
C 和 E 的连接要注意位置。
C 的中间横梁(图中连接位置)有三组孔,必须使用中间的一组孔。
并且,为了下一步安装舵机方便,这里只使用三组螺钉。
预先把螺母放进六角套筒,再用螺丝刀紧固螺钉,可以更方便、省力地连接。
请检查连接好后,各个位置是否如下图所示:
下一步是要装入舵机。
使用M3x10 螺钉和自锁螺母把舵机连接到“舵机固定架2”零件的安装孔上去。
如下图所示:
需要注意的是,连接舵机的一共有4 个螺钉孔位,但是我们只用其中三个,如上图所示。
空出一个来的原因是空位的空间紧凑,很难把螺母对到位置上去并拧紧。
我们在上一步中,连接 C 和 E 的时候只使用三颗螺钉也是为了留出空间来,便于拧紧固定舵机的螺母。
此处拧紧螺母仍然需要使用六角套筒。
完成的关节应该如下图所示:
完成整机装配
完成一个关节之后,重复上述过程,再完成其余的4 个关节。
只是,最后一个关节不需要安装舵机。
完成所有关节后,即可将它们组装在一起,如下图所示:
现在这个简单的机器蠕虫的结构已经完全搭建好。
美中不足的是舵机引出的电缆太短,并且散乱很不美观,还会影响运动。
所以我们最好用电缆套管将线缆包裹起来。
具体包裹方式并不固定,只需要以不影响运动、清晰明了为原则。
完成这一步后,蠕虫机器人就完成了。
3.下面我们需要连接所有线缆
需要连接的电缆一共有三种:
(1)3 芯的舵机线,共有4 个舵机,4 条线;按照从头到尾的顺序,把4 个舵机的引线分别顺序插入上面图 F 区的PW0~PW3。
黄色线是信号线,插好之后应该位于靠电路板内侧。
请注意,这里各个舵机的顺序必须是按照机体上的头尾顺序,从1 号到 4 号,或者从4 号到1 号。
(2)232 通讯电缆,需要和USB-232 转换电缆配合使用。
将232 通讯电缆和USB-232 转换电缆连接好,5 针插头插到图上 D 区的 5 针排针。
插好之后标签应该位于电路板的外侧。
USB 端子插入计算机的USB 接口,并从“控制面板/设备管理器”中查看新增加的RS-232 串口号,如下图所示。
记下这个端口号,后面我们在UP-MRcommander 软件中将要使用。
注意:这个端口号会随着插入的不同USB 端口而改变。
每次更换USB 端口的时候需要重新察看新的端口号是多少。
(3)电源线。
需要插到MultiFLEX 控制卡上以提供电源。
将适配器插上交流电源,输出端白
色端子插入MultiFLEX 控制卡的电源插座(图上A 区),控制卡上的红黄两色指示灯会亮起,表示工作正常。
验证完MultiFLEX 控制卡工作正常后,断开电源.
连接好电缆后应该如下图所示
完成电缆连接工作后,插上适配器电源,此时将会看到尚未完成的蠕虫机器人运动了。
它有可能处于一个扭曲的姿态,可能如上图所示,也可能是别的姿态。
这是因为我们在安装舵机的时候并没有调节它的初始位置。
舵机是依靠一个花键(可以当成一个有很多牙的圆柱)和舵盘上的花键槽连接的。
可以通过调整花键和花键槽之间的安装角度来调整舵机及与其相连的结构件的相对角度。
4 .机器人动作的写入
以上完成了硬件的结构搭建,下来为机器人导入动作:
1.打开UP-MRcommander 软件,如下图所示。
点击菜单栏中的按钮,打开“蛇形机器人/10 关节蠕动-步距0.125 波长-正弦波.mra”这个动作文件。
我们这里使用蛇形机器人的动作文件,是为了简单起见。
暂时不考虑怎么为它编写动作,尽快让我们的第一个机器人运动起来!调入动作文件后,程序界面如下图所示
通过调节对各个舵机进行控制,实现对机器人的控制。
完成各个动作,观察实验结果,分析蛇形机器人的运动。
五.实验总结:
在做这个试验后,掌握了机器人搭建的基本方法,知道了是怎么具体的控制每个运动,怎么实现预定的动作,怎么实现在线调试,怎么烧制程序到控制板中,怎么样才能把各个电路线路连接的整齐美观,完成一个机器人的构架的搭建,对于机械设计知识理解,对于自动控制都有了一个全面的认知。
而在做完蛇形机器人后,蛇形机器人可以完成一定的工作了。
这只是一个最原始的机器人,只有5 个自由度,并且不具备传感器,无法根据工作情况来调整自己的反应。
从这个意义上来说,它甚至不应该被称为“机器人”。
但是我们还要继续组装这样的各种构型的机器人。
我们的目的是通过这些组装和学习,掌握“创意之星”套件的使用,从而能够灵活地发挥自己的想象力,最终用这个套件设计和组装出自己的机器人。
也是自己对以前所学习的理论知识有了一个很好的掌握,现在将实际中动手操作,组装了一台机器人,对机器人,电机还有机械构架的装配有了更好而且切身的体会,现在对已整体刚度的理解和以后试验中要注意的事项有了一个更好的而且深刻的理解。
达到了自己做实验的目的。
同时也提高了自己动手能力,达到了理论和实际相结合的目的。
实验二:挖掘作业机器人结构搭建
一.实验目的:
挖掘机是一种典型的工程车辆,它具有强壮的底盘和一个大型的机械手,其末端有一个挖斗一辆挖掘机能替代数十人的同时劳动。
在本实验中,我们将构建一辆自动化的挖掘机,它有 4 个轮子,能原地转弯;能够自动地按程序执行一系列行进、挖掘并转移的工作。
1.了解轮式车辆的移动方式和转向方式;
2.了解几种常见的轮式驱动配置方式;
3.熟悉四轮独立驱动的挖掘机。
4.熟悉在UP-MRcommander软件中,熟悉直流电机的控制
5..掌握对于具有多种执行器(舵机、电机或者其他)的机器人,掌握搭建和调试要领。
直流电机的分类与特点,减速器的分类与特点,轮式驱动的分类与特点。
轮式驱动是最广泛使用的驱动方式。
大街上飞奔的汽车基本都是轮式车辆。
按照转向方式可分为左右差动转向和舵轮转向两种(不考虑全向移动机构);按照驱动轮个数可以分为两轮驱动、四轮驱动、六轮驱动等。
二.实验步骤
1.结构组装。
完成组装的机器人结构如下图所示:
其中操作手臂的结构如图所示:
3.
机器人构件搭接成的效果图:
2.线缆连接
按下表所示顺序连接指定关节的舵机的电缆到MultiFLEX 控制卡上:
3.初始姿态的调节
打开控制卡的电源,机器人会锁定初始姿势。
为了使用配套光盘中附带的动作程序,我们需要手动调整每个关节的姿势,调整方法同蛇形机器人类似小节的最后一段所述。
调整完毕后应该如下图所示:
4.动作的写入;
调整之后,再次打开电源。
我们应该看到组装完成的挖掘机器人保持如上图所示的状态。
此时在UP-MRcommander 软件中调入“UP-MRcommander\全向四驱小车+机械臂\机械臂+四驱车.mra”这个动作文件,并下载执行。
挖掘机器人就可以运动起来了。
5.在线控制各个动作的运动,调整设置各个动作。
二.实验总结:
选择做挖掘机器人是一个很有挑战的工作,说真的,真是一个很富有挑战性的实验,之前自己对于这个小车的装配图一看就觉得犯晕,自己亲手做了这个实验后自己才发现这个实验原来也是很不错的,只是自己以前太那个酱油了,对于所学的只是没有怎么做到理论学习与实际相结合,而本次的机器人技术实验真的做到了对于机器人的一个制造过程的完全认识,真的掌握了怎么去搭建机械构架,怎么去实现一个机器人的动作。
在这个挖掘机的搭建过程中,我们两个人相互合作,体会到了搭建实验的乐趣,体会到了怎么认真的将每一个螺栓。
螺母安装到构件上,怎么把每一个电机舵机好友码盘都安装在一起,怎么去固定,怎么样的看那个装配图实现反求设计,怎么在看着图片的情况下做到了,看着图完成构件的搭建,做好每一个零件的组装,整体的规划,对于整体方案的设计,每一步骤的计划,怎么安装怎么样才能实现预定的运动,怎么的结构才能在实际中能稳定的动作,做到每次的运动平稳,实现定向的控制。
总之,在这个挖掘机实验搭建过程,遇到了很多问题,在每一次的修正过程中,真的掌握了对于构件的搭建所需要的耐心。
体会了细致工作的重要性,在每一次的失败与调试中,体会了在以后实际工作中也需要不停地返回工作的过程,完成了对挖掘机的认识,同时也提高了实际操作的能力。
实验三:对挖掘机器人进行可编程的控制
一.实验目的
1.了解并掌握机器人的动作设置。
2.学习利用C语言编写程序来控制机器人的动作,对动作流程的设置。
3.熟悉程序编制环境。
4.对设置的动作进行程序化调试。
5.熟练掌握机器人的动作的调试,及反馈修正动作。
6.熟悉并掌握电机控制函数rc_moto_control()以及延时函数delay()的使用方法,理解
其函数定义。
7.熟悉并掌握利用函数控制舵机运动。
实验环境:已嵌入WinAVR的
AVRStudio4.12
二.实验器材
实验二做好的挖掘机器人。
MultiFlex控制卡1块、控制卡电源线1根、串口下载线1根、舵机4个。
三.实验步骤
本实验使用的实验环境为已嵌入WinAVR的AVRStudio4.12。
实验前做好准备,控制卡的PWM0-PWM3与4个舵机正确连接(连接方法参见实验指导书)2.控制卡与电脑之间用并口下载线正确连接 3.控制卡电源线正确连接。
1.新建工程,创建自己的工程。
2.动作的设置与分析。
3.将设置好的动作程序化
4.程序编译并将生成的.hex文件烧制到控制板中。
5.运行机器人,及时发现问题并修正程序。
实验程序代码:
*************************************************************************** *#include "Public.h"
#include "Usertask.h"
void user_task(void)
{
uint8
array_rc[23]={0};//舵机控制数组长度为24,可控制12路舵机,舵机运动函数要求array_rc[偶数]为舵机目标角度值,array_rc[奇数]为舵机运动速度值
array_rc[0]=90+20; //舵机1,中位为0度(对应数值90),目标角度+20度。
取值范围0-180,超过此范围程序会丢弃此数据
array_rc[1]=170;//舵机1,速度为170。
取值范围0-255,超过范围程序会丢弃此数据
array_rc[2]=90-20;//舵机2目标角度设置
array_rc[3]=170;//舵机2转动速度设置
array_rc[4]=90-20;//舵机3
array_rc[5]=170;
array_rc[6]=90+20;//舵机4
array_rc[7]=170;
rc_moto_control(array_rc);//将舵机运动信息交给舵机运动函数,实现舵机
运动
delay(50);//延时50*20MS= 1S,给舵机提供反应时间,此反应时间应大于舵机实际运动所需时间
array_rc[0]=90;
array_rc[1]=170;
array_rc[2]=90;
array_rc[3]=170;
array_rc[4]=90;
array_rc[5]=170;
array_rc[6]=90;
array_rc[7]=170;
rc_moto_control(array_rc);
delay(50);
}
*/
#include "Public.h"
#include "Usertask.h"
void user_task(void)
{
uint8 array_dc[7]={0};//电机控制数组长度为8,可控制4路舵机,电机运动函数要求array_dc[偶数]为电机转动速度,array_rc[奇数]为电机转动时间
uint8 array_rc[23]={0};
array_dc[0] = 0; // 前电机1,正转最大速度(0为正转最大转速,0xFE=254为反转最大转速,0x80=128代表电机停止)。
范围为0-254,超过此范围程序会丢弃此数据
array_dc[1] = 30; //电机1,转动时间30×0.1=3秒。
范围为0-255,超过此范围程序会丢弃此数据
array_dc[2] = 0xFE;//电机2,反转最大速度
array_dc[3] = 30;
array_dc[4] = 0xFE; // 前电机1,正转最大速度(0为正转最大转速,0xFE=254为反转最大转速,0x80=128代表电机停止)。
范围为0-254,超过此范围程序会丢弃此数据
array_dc[5] = 30; //电机1,转动时间30×0.1=3秒。
范围为0-255,超过此范围程序会丢弃此数据
array_dc[6] = 0;//电机2,反转最大速度
array_dc[7] = 30;
dc_moto_control(array_dc);//调用直流电机运动控制函数dc_moto_control(),参数为电机控制数组名
delay(150);//给电机反应时间150×20MS=3s,此反应时间应不小于电机实际运动时间
//uint8
//array_rc[23]={0};//舵机控制数组长度为24,可控制12路舵机,舵机运
动函数要求array_rc[偶数]为舵机目标角度值,array_rc[奇数]为舵机运动速度值array_rc[0]=90;
array_rc[1]=170;
array_rc[2]=90;
array_rc[3]=170;
array_rc[4]=90;
array_rc[5]=170;
array_rc[6]=90;
array_rc[7]=170;
rc_moto_control(array_rc);
delay(50);
// array_rc[0]=90;
//array_rc[1]=170;
array_rc[2]=90-35;//舵机2目标角度设置
array_rc[3]=170;//舵机2转动速度设置
// array_rc[4]=90;
// array_rc[5]=170;
//array_rc[6]=90;
/// array_rc[7]=170;
rc_moto_control(array_rc);
delay(50);
// array_rc[0]=90;
// array_rc[1]=170;
//array_rc[2]=90;
//array_rc[3]=170;
array_rc[4]=90-90;//舵机3目标角度设置
array_rc[5]=170;//舵机3转动速度设置
// array_rc[6]=90;
//array_rc[7]=170;
rc_moto_control(array_rc);
delay(100);
/*array_rc[0]=90;
array_rc[1]=170;
array_rc[2]=90;
array_rc[3]=170;
array_rc[4]=90;
array_rc[5]=170;*/
array_rc[6]=90+40;//舵机4目标角度设置
array_rc[7]=170;//舵机4转动速度设置
rc_moto_control(array_rc);
delay(100);
/*array_rc[0]=90;
array_rc[1]=170;
array_rc[2]=90;
array_rc[3]=170;
array_rc[4]=90;
array_rc[5]=170;*/
array_rc[6]=90+20;//舵机4目标角度设置
array_rc[7]=170;//舵机4转动速度设置
rc_moto_control(array_rc);
delay(50);
//array_rc[0]=90;
//array_rc[1]=170;
array_rc[2]=90+40;//舵机2目标角度设置
array_rc[3]=170;//舵机2转动速度设置
// array_rc[4]=90;
//array_rc[5]=170;
// array_rc[6]=90;
// array_rc[7]=170;
rc_moto_control(array_rc);
delay(50);
array_dc[0] = 0xFE; // 前电机1,正转最大速度(0为正转最大转速,0xFE=254为反转最大转速,0x80=128代表电机停止)。
范围为0-254,超过此范围程序会丢弃此数据
array_dc[1] = 30; //电机1,转动时间30×0.1=3秒。
范围为0-255,超过此范围程序会丢弃此数据
array_dc[2] = 0;//电机2,反转最大速度
array_dc[3] = 30;
array_dc[4] = 0; // 前电机1,正转最大速度(0为正转最大转速,0xFE=254为反转最大转速,0x80=128代表电机停止)。
范围为0-254,超过此范围程序会丢弃此数据
array_dc[5] = 30; //电机1,转动时间30×0.1=3秒。
范围为0-255,超过此范围程序会丢弃此数据
array_dc[6] = 0xFE;//电机2,反转最大速度
array_dc[7] = 30;
dc_moto_control(array_dc);//调用直流电机运动控制函数dc_moto_control(),参数为电机控制数组名
delay(150);//给电机反应时间150×20MS=3s,此反应时间应不小于电机实际运动时
array_rc[0]=90-90;//舵机1目标角度设置
array_rc[1]=128;//舵机1转动速度设置
/*array_rc[2]=90;
array_rc[3]=170;
array_rc[4]=90;
array_rc[5]=170;
array_rc[6]=90;
array_rc[7]=170;*/
rc_moto_control(array_rc);
delay(50);
//array_rc[0]=90;
//array_rc[1]=170;
array_rc[2]=90-30;//舵机2目标角度设置
array_rc[3]=128;//舵机2转动速度设置
/*array_rc[4]=90;
array_rc[5]=170;
array_rc[6]=90;
array_rc[7]=170;*/
rc_moto_control(array_rc);
delay(50);
/*array_rc[0]=90;
array_rc[1]=170;
array_rc[2]=90;
array_rc[3]=170;
array_rc[4]=90;
array_rc[5]=170;*/
array_rc[6]=90+50;//舵机4目标角度设置
array_rc[7]=170;//舵机4转动速度设置
rc_moto_control(array_rc);
delay(50);
}
*************************************************************************** 四.实验总结
本次实验主要是对于机器人的程序控制的练习,使用实验二完成的机器人模型,做好了在线调试的工作,记录下每一个步骤的实验数据。
在程序的编制过程中不断地烧制不断地进行实际运动的验证,对程序的功能实时反馈。
在本次试验中,体会了怎么用程序化的语言去控制一个机械结构实现一个特定的运动,实现特定的运动,体会了编程控制机电一体化的机构的运动,对于机器人的多多规划和程控的自动化有了深刻的体会。
实验分组:
本次实验我们两个人相互协作共同完成了各个实验的构件的搭建和程序的编制,实验报告编写赵保顺。