智能机器人实验
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
报告[资料]
综合实验设计报告
课程名称: 智能机器人
专业: 计算机科学与技术专升本
班级:
姓名:
学号:
教师:
综合性实验 群鸭过河 一、[任 务]
以小组的形式展开比赛,机器人作小鸭,它们能够一个跟在一个后面,一起安全“游”过“河”。安全过“河”的机器人个数最多的队获胜。如图一所示
图一 小鸭过河
二、[任务分析]
鸭妈妈带着一队小鸭过河,那么就需要为小鸭妈妈编写“过河”程序,其他小鸭能够一个跟着一个,那么就要为它们编写“跟随”程序。 1、活动准备
a) 物品准备
能力风暴智能机器人 5台
计算机 1台
b) 让机器人移动要用到库
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
drive(a,b),在前面已经作过相应的介绍,
在这里就不重复说明了。
c) 判断与循环语句的使用。
While(1)
,
…
,
这个语句是一个无限循环语句。While语句不断对其后()中的内容进行判定。当判断的值为1时就将,,内的语句执行一遍,然后再接着对()中的值进行判断。而在这里while后面()里的内容为1,所以这个语句会无限循环下去。
If()
…
else或者else if()
…
也是比较常见的判断语句,这种语句能够将问题的多种情形都罗列出来,分别进行处理。
d) 红外传感器可以检测到正前方、左前方、右前方是否有障碍物,调用一
次库函数ir_detector(),红外传感器就进行一次检测,并有返回值。
返回值具体意义为 0=>没有障碍, 1=>左边有障碍, 2=>右边有障碍, 4=>
前方有障碍;机器人的碰撞传感器,能够检测到前、后、左、右四个方
向的碰撞,调用一次 bumper()函数,就进行一次碰撞检测,有返回值。
其具体意义为: 1左前,2右前,4左后,8右后,3前,12后,5左,
10右。
2、
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
设计
方案的设计分为“过河”和“跟随”两个部分。
a)“过河”
过河的方案有很多,比如:直着过河、斜着过河、波浪式过河等,不同的过河
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
,程序编写的难度有所不同,随后的小鸭“跟随”的难度也有所不同,波浪式过河,后面跟随的小鸭就比较容易跟丢,带小鸭成功过河的可能性就比较小。
b) “跟随”
1) 要让小鸭能够跟随,这就需要用到红外传感器,当小鸭“看到”前方
有物体时,就会主动跟上前去。这时候,如果小鸭的前进速度比较慢,
它很可能就跟不上了,速度快又会撞到前面的小鸭,因此速度的设置
比较重要。
2) 如果小鸭撞到了前面的鸭子,该怎么办,可以让它停下来,再去检测
前面有没有可以跟随的鸭子。
3) 如果小鸭迷失了方向该怎么办呢,也让它停下来,在原地等着鸭妈妈。
具体的方法由大家自己来设计,能够完成整个活动的方案就是好方案~
3、画流程图
母鸭流程图好下:
三、 [实验
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
]
方案设计
(1)母鸭过河程序设计
为便于实现,母鸭部分先用红外线传感器探测,以返回值判断前方是否有障碍物,
若无,则前进:若有,则判断左前方向,左前方向无障碍物则左转前进,若有则再判断
右前方向,右前方向无障碍物则右转前进,若有则停止运动。为避免母鸭碰到障碍物停
止造成小鸭碰在一起,本设计先对前方进行试探,若前方都有障碍物无法行走,则母鸭
不动,避免带动小鸭撞成一堆。母鸭部分程序如下:
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);
}
}
(2)小鸭跟随程序设计
小鸭部分主要是跟随前面一只鸭子为主,基本设计思想是先用碰撞传感器检测是否
与前一只鸭子连续发生碰撞,若是,则稍微停止片刻,若没有碰撞,则用红外传感器依次检
测前方左方右方,检测到有物体的方向即为前面那只鸭子的运动方向,则转向该方向跟随运
动。说明:每只小鸭的速度值都不一样,下面小鸭程序仅取母鸭后的第一只小鸭为例部分程
序如下:
void main() {
int ir = 0;
int bmp = 0;
int pre_bmp = 0;
int v_f =25;
int v_t =16;
while (1)
{
ir = ir_detector();
bmp = bumper() & 0b0011;
if (pre_bmp && bmp)
{
stop();
wait(0.5);
}
else if (bmp)
stop();
else if (ir == 0)
stop();
else if (ir == 4)
drive(v_f,0);
else if (ir == 1)
drive(v_f, (- v_t));
else if (ir == 2)
drive(v_f, v_t);
wait(0.1);
pre_bmp = bmp;
}
}
后面的3只小鸭的代码与第一只小鸭的代码基本一样,不同的是v_f与v_t这2个决定小鸭前进速度和转速的参数值。在对于小鸭的调试,基本也是在这2个值上做调试。
四、[实验所遇问题]
序号 出现的现象 解决方法 1 后面小鸭速度过快顶开了母鸭 调整小鸭速度 2 碰撞后没有及时停止 碰撞传感器有问题,换了一个机器人 3 母鸭路线弯曲不定 路况问题,换地方调试 4 红外传感器返回值不变 传感器问题,换机器人
电池没电,或者机器人有问题,换机5 机器人按下开启不运行 器人
表1,1 现象及调试
实验感想:
这次的实验的难度有点大,是前几次实验的总结,调试了很多次的代码,和同组的同学不断讨论,不断的调试,最终才调试成功。
本次实验的难度主要有两点:1、母鸭和子鸭程序的设计;2、对于母鸭和子鸭速度参数的修改。我们小组分析出问题的所在后就对此做出合适的解决步骤: