灭火机器人的设计实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
motor( 2 , 30 );
}
}
}
void SubRoutine_4( )
{
if(gi_2 == 1)
{
ir_1=ir_detector();
printf( "ir_1 =%d\n" ,ir_1);
float tim_1=0.0;
int gi_1=0;
int gi_2=0;
int gi_3=0;
void main()
{
gi_1 = 1 ;
gi_2 = 1 ;
gi_3 = 1 ;
while(gi_3 == 1)
{
if(gi_1 == 1)
{
SubRoutine_4 ();
photo_1 =(photo(1)+photo(2))/2;
三、使用到的硬件设备
机器人的硬件:
(1)传感器:碰撞传感器、红外传感器、火焰传感器、
(2)控制单元:微控制器、外部存储器、复位系统和电源
(3)驱动器:直流电动机、LCD
(4)灭火风扇
四、程序的思路
在机器人灭火实验中,要求机器人实现在实验场地里迅速找到蜡烛将其熄灭,在寻找过程中要避免碰撞墙壁与蜡烛,如果发现火源,启动灭火程序,灭火,没有发现火源,走迷宫,寻找火源,所以机器人必须实现以下功能:
stop();
}
else
{
if(ir_1 == 4)
{
drive( 0 , 100);
wait( 0.250000 );
stop();
}
else
{
motor( 1 , 20 );
motor( 2 , 80 );
}
}
bmp_1 = bumper();
if( bmp_1 != 0)
{
drive( -40 ,0);
{
if(gi_1 == 2)
{
drive( 0 , 80);
wait( 0.600000 );
stop();
gi_1 = 3 ;
}
else
{wk.baidu.com
if(gi_1 == 3)
{
ir_1 =ir_detector();
if( ir_1 == 1)
{
drive( 0 , 100);
wait( 0.250000 );
(1)由于在实验场地中,实验规定的房间内都有可能摆放蜡烛,所以机器人必须能够实现搜索所有的房间,在行走过程中不允许碰撞墙壁,而且尽可能快的搜索所有房间,不走重复的路程。在此过程中,本人采用了迷宫法则里的左手法则(左手法则:看到墙壁往右转,没看不到墙壁往左转)。
(2)机器人在行走过程中要不断的判断是否有火源;如有还要判断火源在机器人的哪个方位、离机器人的距离等。在此过程中,需要设计一个亮度检测来寻找火源。
灭火机器人的设计
一、项目任务
在能力风暴机器人AS-UII的基础上,组装一个灭火机器人,并编写程序,让其能完成灭火任务。(任务的详细内容请参见《国际灭火比赛规则2010》)
二、项目要求
设计的机器人能在5分钟内把灭火场地中的蜡烛熄灭。每次运行时,蜡烛被任意放置在不同的房间内。
其它详细要求请参见《国际灭火比赛规则2010》
}
else
{
ir_1 =ir_detector();
if( ir_1 == 1)
{
printf( "ir_1 =%d\n" ,ir_1);
motor( 1 , 30 );
motor( 2 , 20 );
}
else
{
printf( "ir_1 =%d\n" ,ir_1);
motor( 1 , 20 );
{
drive( 0 , -20);
wait( 0.100000 );
stop();
}
else
{
if(photo_1 < 20)
{
drive( 0 , 20);
wait( 0.100000 );
stop();
}
else
{
drive( 100 ,0);
wait( 0.090000 );
stop();
motor( 1 , 0 );
motor( 1 , 30 );
motor( 2 , 20 );
}
else
{
printf( "ir_1 =%d\n" ,ir_1);
motor( 1 , 20 );
motor( 2 , 30 );
}
tim_1 =seconds();
if( tim_1 > 60.000000)
{
gi_2 = 2 ;
}
if( ir_1 == 1)
{
motor( 1 , 80 );
motor( 2 , 30 );
}
else
{
if(ir_1 == 4)
{
motor( 1 , 80 );
motor( 2 , 50 );
}
else
{
motor( 1 , 40 );
motor( 2 , 80 );
}
}
bmp_1 = bumper();
if(photo_1 < 20)
{
}
if((photo_1 < 30) && (photo_1 > -30))
{
SubRoutine_2 ();
SubRoutine_5 ();
}
}
if(gi_1 == 2)
{
}
}
}
void SubRoutine_1( )
{
if(gi_1 == 1)
{
ir_1 =ir_detector();
motor( 2 , 0 );
motor( 3 , 100 );
gi_3 = 0 ;
}
}
return;
}
void SubRoutine_3( )
{
if(gi_1 == 1)
{
ir_1 =ir_detector();
if( ir_1 == 2)
{
printf( "ir_1 =%d\n" ,ir_1);
if( bmp_1 != 0)
{
drive( -40 ,0);
wait( 0.200000 );
stop();
drive( 0 , 100);
wait( 0.250000 );
stop();
}
tim_1 =seconds();
if( tim_1 > 60.000000)
{
gi_1 = 2 ;
}
}
else
(3)找到火源后,机器人自动启动灭火装置(风扇)迅速将火熄灭,火源熄灭后,风扇停止转动。
根据以上的思路设计,在VJC编程环境下,编辑机器人行为控制程序,下载并反复调试控制程序,实现机器人灭火实验。
程序流程图如下(主模块):
程序的代码如下:
int ir_1=0;
int photo_1=0;
int bmp_1=0;
wait( 0.500000 );
stop();
drive( 0 , 100);
wait( 0.250000 );
stop();
}
}
}
}
}
void SubRoutine_2( )
{
photo_1 =photo(1)-photo(2);
if(photo_1 < 20)
{
}
if(photo_1 < 20)
}
}
}
void SubRoutine_4( )
{
if(gi_2 == 1)
{
ir_1=ir_detector();
printf( "ir_1 =%d\n" ,ir_1);
float tim_1=0.0;
int gi_1=0;
int gi_2=0;
int gi_3=0;
void main()
{
gi_1 = 1 ;
gi_2 = 1 ;
gi_3 = 1 ;
while(gi_3 == 1)
{
if(gi_1 == 1)
{
SubRoutine_4 ();
photo_1 =(photo(1)+photo(2))/2;
三、使用到的硬件设备
机器人的硬件:
(1)传感器:碰撞传感器、红外传感器、火焰传感器、
(2)控制单元:微控制器、外部存储器、复位系统和电源
(3)驱动器:直流电动机、LCD
(4)灭火风扇
四、程序的思路
在机器人灭火实验中,要求机器人实现在实验场地里迅速找到蜡烛将其熄灭,在寻找过程中要避免碰撞墙壁与蜡烛,如果发现火源,启动灭火程序,灭火,没有发现火源,走迷宫,寻找火源,所以机器人必须实现以下功能:
stop();
}
else
{
if(ir_1 == 4)
{
drive( 0 , 100);
wait( 0.250000 );
stop();
}
else
{
motor( 1 , 20 );
motor( 2 , 80 );
}
}
bmp_1 = bumper();
if( bmp_1 != 0)
{
drive( -40 ,0);
{
if(gi_1 == 2)
{
drive( 0 , 80);
wait( 0.600000 );
stop();
gi_1 = 3 ;
}
else
{wk.baidu.com
if(gi_1 == 3)
{
ir_1 =ir_detector();
if( ir_1 == 1)
{
drive( 0 , 100);
wait( 0.250000 );
(1)由于在实验场地中,实验规定的房间内都有可能摆放蜡烛,所以机器人必须能够实现搜索所有的房间,在行走过程中不允许碰撞墙壁,而且尽可能快的搜索所有房间,不走重复的路程。在此过程中,本人采用了迷宫法则里的左手法则(左手法则:看到墙壁往右转,没看不到墙壁往左转)。
(2)机器人在行走过程中要不断的判断是否有火源;如有还要判断火源在机器人的哪个方位、离机器人的距离等。在此过程中,需要设计一个亮度检测来寻找火源。
灭火机器人的设计
一、项目任务
在能力风暴机器人AS-UII的基础上,组装一个灭火机器人,并编写程序,让其能完成灭火任务。(任务的详细内容请参见《国际灭火比赛规则2010》)
二、项目要求
设计的机器人能在5分钟内把灭火场地中的蜡烛熄灭。每次运行时,蜡烛被任意放置在不同的房间内。
其它详细要求请参见《国际灭火比赛规则2010》
}
else
{
ir_1 =ir_detector();
if( ir_1 == 1)
{
printf( "ir_1 =%d\n" ,ir_1);
motor( 1 , 30 );
motor( 2 , 20 );
}
else
{
printf( "ir_1 =%d\n" ,ir_1);
motor( 1 , 20 );
{
drive( 0 , -20);
wait( 0.100000 );
stop();
}
else
{
if(photo_1 < 20)
{
drive( 0 , 20);
wait( 0.100000 );
stop();
}
else
{
drive( 100 ,0);
wait( 0.090000 );
stop();
motor( 1 , 0 );
motor( 1 , 30 );
motor( 2 , 20 );
}
else
{
printf( "ir_1 =%d\n" ,ir_1);
motor( 1 , 20 );
motor( 2 , 30 );
}
tim_1 =seconds();
if( tim_1 > 60.000000)
{
gi_2 = 2 ;
}
if( ir_1 == 1)
{
motor( 1 , 80 );
motor( 2 , 30 );
}
else
{
if(ir_1 == 4)
{
motor( 1 , 80 );
motor( 2 , 50 );
}
else
{
motor( 1 , 40 );
motor( 2 , 80 );
}
}
bmp_1 = bumper();
if(photo_1 < 20)
{
}
if((photo_1 < 30) && (photo_1 > -30))
{
SubRoutine_2 ();
SubRoutine_5 ();
}
}
if(gi_1 == 2)
{
}
}
}
void SubRoutine_1( )
{
if(gi_1 == 1)
{
ir_1 =ir_detector();
motor( 2 , 0 );
motor( 3 , 100 );
gi_3 = 0 ;
}
}
return;
}
void SubRoutine_3( )
{
if(gi_1 == 1)
{
ir_1 =ir_detector();
if( ir_1 == 2)
{
printf( "ir_1 =%d\n" ,ir_1);
if( bmp_1 != 0)
{
drive( -40 ,0);
wait( 0.200000 );
stop();
drive( 0 , 100);
wait( 0.250000 );
stop();
}
tim_1 =seconds();
if( tim_1 > 60.000000)
{
gi_1 = 2 ;
}
}
else
(3)找到火源后,机器人自动启动灭火装置(风扇)迅速将火熄灭,火源熄灭后,风扇停止转动。
根据以上的思路设计,在VJC编程环境下,编辑机器人行为控制程序,下载并反复调试控制程序,实现机器人灭火实验。
程序流程图如下(主模块):
程序的代码如下:
int ir_1=0;
int photo_1=0;
int bmp_1=0;
wait( 0.500000 );
stop();
drive( 0 , 100);
wait( 0.250000 );
stop();
}
}
}
}
}
void SubRoutine_2( )
{
photo_1 =photo(1)-photo(2);
if(photo_1 < 20)
{
}
if(photo_1 < 20)