- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
智能机器人验设计报告
数理与信息工程学院
综合实验设计报告
课程名称:能力风暴智能机器人While(1)
{
…
}
这个语句是一个无限循环语句。While语句不断对其后()中的内容进行判定。当判断的值为1时就将{}内的语句执行一遍,然后再接着对()中的值进行判断。而在这里while后面()里的内容为1,所以这个语句会无限循环下去。
If()
…
else或者else if()
…
也是比较常见的判断语句,这种语句能够将问题的多种情形都罗列出来,分别进行处理。
红外传感器可以检测到正前方、左前方、右前方是否有障碍物,调用一次库函数ir_detector(),红外传感器就进行一次检测,并有返回值。返回值具体意义为 0=没有障碍, 1=左边有障碍, 2=右边有障碍, 4=前方有障碍;机器人的碰撞传感器,能够检测到前、后、左、右四个方向的碰撞,调用一次 bumper()函数,就进行一次碰撞检测,有返回值。其具体意义为: 1左前,2右前,4左后,8右后,3前,12后,5左,10右。
2、方案设计
方案的设计分为“过河”和“跟随”两个部分。
a)“过河”
过河的方案有很多,比如:直着过河、斜着过河、波浪式过河等,不同的过河方法,程序编写的难度有所不同,随后的小鸭“跟随”的难度也有所不同,波浪式过河,后面跟随的小鸭就比较容易跟丢,带小鸭成功过河的可能性就比较小。
b) “跟随”
要让小鸭能够跟随,这就需要用到红外传感器,当小鸭“看到”前方有物体时,就会主动跟上前去。这时候,如果小鸭的前进速度比较慢,它很可能就跟不上了,速度快又会撞到前面的小鸭,因此速度的设置比较重要。
如果小鸭撞到了前面的鸭子,该怎么办?可以让它停下来,再去检测前面有没有可以跟随的鸭子。
如果小鸭迷失了方向该怎么办呢?也让它停下来,在原地等着鸭妈妈。
具体的方法由大家自己来设计,能够完成整个活动的方案就是好方案!
3、画流程图
母鸭流程图好下:
[实验记录]
方案设计
母鸭过河程序设计
为便于实现,母鸭部分先用红外线传感器探测,以返回值判断前方是否有障碍物,若无,则前进:若有,则判断左前方向,左前方向无障碍物则左转前进,若有则再判断右前方向,右前方向无障碍物则右转前进,若有则停止运动。为避免母鸭碰到障碍物停止造成小鸭碰在一起,本设计先对前方进行试探,若前方都有障碍物无法行走,则母鸭不动,避免带动小鸭撞成一堆。母鸭部分程序如下:
void main()
{
int ir = 0;
int v_f =20;
int v_t =15;
ir = ir_detector();
while(1)
{
if(ir==0)drive(v_f,0);
else if(ir==4)
{
if(ir==1)
{
if(ir==2)stop();
else
{
drive(v_f, v_t);
drive(v_f,0);
}
}
else
{
drive(v_f, -(v_t));
drive(v_f,0);
}
}
else drive(v_f,0);
}
}
小鸭跟随程序设计
小鸭部分主要是跟随前面一只鸭子为主,基本设计思想是先用碰撞传感器检测是否与前一只鸭子连续发生碰撞,若是,则稍微停止片刻,若没有碰撞,则用红外传感器依次检测前方左方右方,检测到有物体的方向即为前面那只鸭子的运动方向,则转向该方向跟随运动。说明:每只小鸭的速度值都不一样,下面小鸭程序仅取母鸭后的第一只小鸭为例部分程序如下:
void main()
{
int ir = 0;
int bmp = 0;
int pre_bmp = 0;
int v_f =25;
int v_t =16;
while (1)
{
文档评论(0)