机器人课程设计讲解Word格式.docx
- 文档编号:20400709
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:20
- 大小:1.02MB
机器人课程设计讲解Word格式.docx
《机器人课程设计讲解Word格式.docx》由会员分享,可在线阅读,更多相关《机器人课程设计讲解Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
场地如图2所示。
1.3、运行框图
第二章机器人触觉导航
本章你将通过给你的机器人增加触觉传感器学习如何使用这些端口来获取外界信息。
实际上,对于任何一个自动化系统(不仅仅是机器人),无非都是通过传感器获取外界信息,通过接口进入计算机(或者单片机),由计算机或单片机根据反馈信息进行计算和决策,生成控制命令,然后通过输出接口去控制系统相应的执行机构,完成系统所要完成的任务。
因此,学习如何使用单片机的输入接口同学习使用输出接口同等重要。
许多自动化机械都依赖于各种触觉型开关,例如当机器人碰到障碍物时,接触开关就会察觉,通过编程让机器人躲开障碍物;
旅客登机桥在靠近飞机时为了保护昂贵的飞机,在登机桥接口安装触须,当登机桥离飞机很近后触须就会碰到飞机,立即通知控制器提醒离飞机已经很近了,需要降低靠近速度;
工厂利用触觉开关来计量生产线上的工件数量;
在工业加工过程中,也被用来排列物体。
在所有这些实例中,触觉开关提供的输入通过计算机或者单片机处理后生成其它形式的程序化的输出。
本章中,你将在机器人前端安装并测试一个称为胡须的触觉开关。
你将对机器人大脑编程来监视触觉开关的状态,以及决定当它遇到障碍物时如何动作。
最终的结果就是通过触觉给机器人自动导航。
2.1、安装并测试机器人胡须
编程让机器人通过触觉胡须导航之前,首先必须安装并测试胡须。
图3所示是安装机器人触觉胡须所需的硬件元件清单,包括:
1.金属丝2根
2.平头M3×
22盘头螺钉2个
3.13mm圆形立柱2个
4.M3尼龙垫圈2个
5.3-pin公-公接头2个
6.220Ω电阻2个
7.10kΩ电阻2个
图3胡须硬件
安装胡须
1.拆掉连接主板到前支架的两颗螺钉
2.参考图4,进行下面操作
3.螺钉依次穿过M3尼龙垫圈、13mm圆形立柱
4.螺钉穿过主板上的圆孔之后,拧进主板下面的支架中,但不要拧紧
5.把须状金属丝的其中一个钩在尼龙垫圈之上,另一个钩在尼龙垫圈之下,调整它们的位置使它们横向交叉但又不接触
6.拧紧螺钉到支架上
7.参考接线图5,搭建胡须电路。
注意:
右边胡须状态信息输入是通过P1口的第4脚完成,而左边胡须状态信息输入是通过P2口的第3脚完成
8.确定两条胡须比较靠近,但又不接触面包板上的3-pin头。
推荐保持3mm的距离。
9.图6所示是实际的参考接线图。
10.安装好触觉胡须的机器人如图7所示。
图4安装机器人胡须
图5胡须电路示意图
图6教学底板上胡须接线图图7安装好触须的机器人
2.2、测试触须传感器
先执行一段简单的程序,下面的程序是让小车前行的,修改参数调舵机,使舵机保持前行,然后在通过设置程序让左须子触碰障碍物时左转,右须子触碰障碍物是右转,这样进行调试,来检测传感器。
死区程序很关键,以中断的方式写入,避免其一直困在墙角里出不来。
2.3、C语言程序如下
#include<
BoeBot.h>
uart.h>
intP1_4state(void)//获取P1_4的状态,右胡须
{return(P1&
0x10)?
1:
0;
}
intP2_3state(void)//获取P2_3的状态,左胡须
{return(P2&
0x08)?
voidForward(void)
{P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
voidsiqu(void)interrupt0
{if(condition1)
{commandsforcondition1
If(condition2)
{commandsforbothcondition2andcondition1}
else
{commandsforconditio1butnotcondition2}}
Else
{commandsfornotcondition1}
voidLeft_Turn(void)
{inti;
for(i=1;
i<
=26;
i++)
{P1_1=1;
delay_nus(1300);
P1_0=1;
P1_0=0;
delay_nms(20);
}}
voidRight_Turn(void)
{inti;
delay_nus(1700);
voidBackward(void)
=65;
}}
intmain(void)
{inti=1;
intz=0;
uart_Init();
printf("
ProgramRunning!
\n"
);
while
(1)
{if((P1_4state()==0)&
&
(P2_3state()==0))
{if(z==0)
{Backward();
//向后
Left_Turn();
//向左
for(i;
100;
i++)
{P1_1=1;
}
Left_Turn();
z=1;
else
{Backward();
Right_Turn();
//向右
z=0;
elseif(P1_4state()==0)
{if(z==0)
elseif(P2_3state()==0)
else
Forward();
//向前
}
将上述程序下载到小车中进行调试。
第三章机器人红外导航
现在许多遥控装置和PDA都使用频率低于可见光的红外线进行通信,而机器人则可以使用红外线进行导航。
可以使用一些价格非常便宜且应用广泛的部件,让机器人的C51微控制器可以收发红外光信号,从而实现机器人的红外线导航。
3.1、使用红外线发射和接收器件探测道路
许多机器人使用雷达(RADAR)或者声纳(SONAR)来探测物体而不需同物体接触。
我们使用红外光来照射机器人前进的路线,然后确定何时有光线从被探测目标反射回来,通过检测反射回来的红外光就可以确定前方是否有物体。
由于红外遥控技术的发展,现在红外线发射器和接收器已经很普及并且价格很便宜。
这对于机器人爱好者而言是一个好消息。
红外前灯
你将要在机器人上建立的红外光探测物体系统在许多方面就象汽车的前灯系统。
当汽车
前灯射出的光从障碍物体反射回来时,人的眼睛就发现了障碍物体,然后大脑处理这些信息,
并据此控制身体动作驾驶汽车。
机器人使用红外线二极管LED作为前灯,如图8所示。
图8用红外光探测障碍物图9本章需要用到的新部件
红外线二极管发射红外光,如果机器人前面有障碍物,红外线从物体反射回来,相当于机器人眼睛的红外检测(接收)器,检测到反射回的红外光线,并发出信号来表明检测到从物体反射回红外线。
机器人的大脑——单片机AT89S52基于这个传感器的输入控制伺服电机。
红外线(IR)接收/检测器有内置的光滤波器,除了需要检测的980nm波长的红外线外,它几乎不允许其它光通过。
红外检测器还有一个电子滤波器,它只允许大约38.5kHz的电信号通过。
换句话说,检测器只寻找每秒闪烁38,500次的红外光。
这就防止了普通光源象太阳光和室内光对IR的干涉。
太阳光是直流干涉(0Hz)源,而室内光依赖于所在区域的主电源,闪烁频率接近100或120Hz。
由于120Hz在电子滤波器的38.5kHz通带频率之外,它完全被IR探测器忽略。
3.2、搭建并测试IR发射和探测器
本任务中,我们将搭建并测试红外线发射和检测器。
元件清单:
(1)两个红外检测器
(2)两个IRLED
(3)四个470□电阻
(4)两个9013三极管
搭建红外线前灯
电路板的每个角安装一个IR组(IRLED和检测器)
电路图如图10
图10左侧和右侧IR组原理图
3.3、测试红外发射探测器
用P1_3发送持续1毫秒的38.5kHz的红外光,如果红外光被小车路径上的物体反射回来,红外检测器将给微控制器发送一个信号,让它知道已经检测到反射回的红外光。
让每个IRLED探测器组工作的关键是发送1毫秒频率为38.5kHz的红外信号,然后立刻将IR探测器的输出存储到一个变量中。
下面是一个例子,它发送38.5kHz信号给连接到P1_3的IR发射器,然后用整型变量irDetectLeft存储连接到P1_2的IR探测器的输出。
for(counter=0;
counter<
38;
counter++)
{
P1_3=1;
delay_nus(13);
P1_3=0;
irDetectLeft=P1_2state();
上述代码给P1_3输出的信号高电平13微秒,低电平为13微秒,总周期为26微秒,即频率
约为38.5kHz。
总共输出38个周期的信号,即持续时间约为1毫秒(38*26约等于1000微秒)。
当没有红外信号返回时,探测器的输出状态为高。
当它探测到被物体反射的38500Hz红外信号时,它的输出为低。
因红外信号发送的持续时间为1毫秒,因此IR探测器的输出如果处于低,其持续状态也不会超过1毫秒,因此发送完信号后必须立即将IR探测器的输出存储到变量中。
这些存储的值会显示在调试终端或被机器人用来导航。
输入保存运行程序进行调试
当你将物体移开时是否显示
irdetectleft=1?
3.4、探测和避开障碍物
改变触须程序使其适应IR检测和躲避
3.4.1调用函数<
VoidIRLaunch(unsignedcharIR)来进行红外线发射>
VoidIRLaunch(unsignedcharIR)
{intcounter
If(IR=’L’)
For(counter=0.counter<
counter++)//左边发射
{LeftLaunch=1
_nop_();
_nop_();
LeftLaunch=0;
if(IR'
R'
)
counter++)//右边发射
RightLaunch=1;
RightLaunch=0;
}
修改if…else语句存储IR检测信息的变量。
if((irDetectLeft0)&
(irDetectRight0))//两边同时接收到红外线
elseif(irDetectLeft0)//只有左边接收到红外线
elseif(irDetectRight0)//只有右边接收到红外线
else
Forward();
3..4.2验证机器人的行为和和运行程序RoamingWithIr.c时除不需要接触是否非常像
例程:
RoamingWithIr.c
counter++)//发射时间比胡须长
{LeftLaunch=1;
LeftLaunch=0;
)//右边发射
{RightLaunch=1;
voidForward(void)//向前行走子程序
voidLeft_Turn(void)//左转子程序
for(i=1;
i++)
}voidRight_Turn(void)//右转子程序
voidBackward(void)//向后行走子程序
intmain(void)
{intirDetectLeft,irDetectRight;
while
(1)
{IRLaunch('
//右边发射
irDetectRight=RightIR;
//右边接收
IRLaunch('
L'
//左边发射
irDetectLeft=LeftIR;
//左边接收
if((irDetectLeft0)&
{Backward();
elseif(irDetectLeft0)//只有左边接收到红外线
elseif(irDetectRight0)//只有右边接收到红外线
else
}
第四章心得体会
通过这次课程设计,我从中学到了很多东西,不仅是知识方面,还有动手方面等。
随着科技的发展,机器人的应用也越来越普遍了。
所以这次课程设计不仅是一次机器人知识的普及,也是一次与机器人亲密接触的机会。
在没有做课程设计之前,我对机器人并不很了解,慢慢的接触之后,我明白了机器人是自动执行工作的机器装置。
它既可以接受人类指挥,又可以运行预先编好的程序。
在这次课程设计中我们通过软件调试又巩固了单片机和C语言的相关知识。
我们通过硬件调试锻炼了自己的动手能力。
在课程设计中,我们也遇到很多的困难,在老师和同学的帮助下,最后都一一解决了。
通过这次课程设计,使我的理论知识又上升到了一个新的层次,同时在设计中也加深了我对理论知识的更深理解,另外,这次课程设计不仅使我的知识有了很大提高,而且使我学到许多其他方面的知识,总之,通过这次课程设计我不仅学到了新知识,而且提高了我考虑问题、分析问题的全面性,是我的综合能力有了很大提升。
总之,通过课程设计我既学到了知识,有锻炼了能力。
非常感谢学校和老师为我们提供了这么宝贵的机会去学习机器人并完成设计,谢谢。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器人 课程设计 讲解
![提示](https://static.bdocx.com/images/bang_tan.gif)