作者:李家俊, 常瑞康, 张志斌, 李世斌, 高华卓
单位:山西能源研究所
教练:赵浩成, 高敏
森林作为地球上可再生自然资源和陆地生态的主体,在人类生存和发展的历史中发挥着不可替代的作用,它不仅可以提供国家建设和人民生活所需的木材和森林副产品,还可以肩负着氧气的释放来调节气候和环境, 涵养水源、保水保土、防风固沙、美化环境、净化空气、降噪和旅游保健等使命,同时,森林也是农牧业稳定高产的重要条件。然而,森林火灾是森林最危险的敌人,是林业最可怕的灾害,也会给森林带来最有害和最具破坏性的后果。 森林大火不仅烧毁了成片的森林,伤害了森林中的动物,而且降低了森林的再生能力,造成土壤贫瘠,破坏了森林的节水作用,甚至导致生态环境失去平衡。 2024年3月30日,四川省凉山州木里县发生特大森林火灾。 2024年3月30日,下雨天,下午5时许,木里县喇嘛司沟附近出现雷雨,虽然只是持续约30秒的阵雨,但隆隆的雷声在天空中不断回荡,无休止。 下午6点,一场森林大火悄然降临山上,第一个点位于海拔3800多米的山上,山内地形复杂,沟壑纵横,交通通讯情况十分恶劣,消防员难以迅速赶赴现场救援。 相关部门获悉消息后,初步判断起火原因可能是由于前两次雷击所致,许多**点位于悬崖上,平均火灾高度高达4公里。 31日下午,689名消防员带着各种装备爬上山,前往海拔4000多米的原始森林开展灭火工作。 消防员在其中一条路线上被安全疏散,另一条道路上的27名森林消防员和三名当地消防员与其他人失去了联系。 4月2日早上6时30分,田火山山上的明火终于被扑灭。 森林隔离带的制作是有效阻止林火蔓延的有效途径,而这方面大部分都是通过人工落地完成的,因此我们设计了一种全地形机器人,可以通过远程控制实现切割和运输的一体化,从而减少劳动力的需求和危险。 同时,目前生活中的伐木工作大多是在野外人工进行的,我们的工作也可以代替它完成系统化的作业。
该小组工作的主要功能是在火灾发生时及时进入火灾现场,在尚未涉及的地区砍伐树木,从而减少火灾面积。 这款手推车是全地形手推车,可以适应森林中的各种地形,如山坡、坑道等。 手推车的一侧有一个抓夹,另一侧的树木被砍倒后,抓夹可以及时捡起树枝放在车后座,最后车子会把它们带出森林。 同时,小车前部设有摄像头和湿度传感器,实时监控和记录火灾情况。 这项工作不仅可以作为森林保护中制作隔离带的综合工作,还可以作为日常生活中伐木的集成机器人。
森林火灾主要有两种类型:人为火灾和自然火灾。 人为火灾包括:生产性火源(农林牧生产用火、林副生产用火、工矿运输生产用火等)、非生产性火源(户外吸烟、烹饪、烧纸、取暖等)、故意纵火。 自然火灾包括:雷击火灾、自燃等。 由于我国绝大多数森林火灾都是由吸烟、焚烧荒地和坟墓烧纸引起的,因此我们集团网站模拟了森林火灾的原因。 在实际地形中,会有山坡和小断层,我们团队在模拟过程中模拟了机器人爬小山丘和爬小台阶(断层)。 同时模拟砍伐树木的过程,砍伐完成后,汽车另一侧的抓手将捡起树木并将它们带出森林。 在抢救和砍伐树木时,车辆前方的摄像头可以实时监控周围情况,并且可以记录树木被砍伐时周围区域的实时动态,湿度传感器可以实时监控。
机械结构:整体车身分为两部分,前体采用柔性结构,采用履带轮,后部采用传统轮胎,抓地力好。 该车的车身大致结合了军用坦克履带的优越性,结合实际情况,对后轮胎进行了改装,使前后轮协调一致,从而平稳地爬过了上班途中遇到的一些障碍物。
驱动系统:该车配备6台双直流电机一起驱动,6台电机同时驱动,为小车提供足够的动力,减少动力损耗,为通过障碍物提供足够的动力条件,电锯具有单舵机由机械臂和电机控制的电锯本体,实现水平自由伸展, 砍伐树木。机械爪由两个伺服控制的机械臂和一个伺服控制的爪体组成,可实现横向伸展,调节爪子的摆动,实现抓取。
控制系统:主板采用BASRA主控板,通过ESP8266 Wi-Fi模块与电脑连接,实现远程实时无限操作,通过摄像头和温湿度传感器对现场进行实时反馈,为人员勘察救援提供信息和帮助。
感知系统:通过远程范围内的wifi模块实时手动操作车身的整个操作,车身前部和中部部分都装有摄像头,前置摄像头可以帮助我们锁定目标树的方向,也可以避开障碍物,侧端的摄像头可以定位目标的数量, 当它在切割和处理后进入适当的位置时。同时,车顶还装有温湿度传感器,对周围环境进行监测,及时反馈,为人工救援行动提供保障。
#include
int _abvar_1_data = 0 ;
int in1 = 5;
int in2 = 6;
int in3 = 9;
int in4 = 10;
int in5 = 12;
int servo_speed=20;定义舵机转动的快慢。
int action_delay=200;定义所有舵机的每个状态的时间间隔。
servo myservo[4];
int f = 50;定义舵机在每个状态之间旋转的次数,从而确定每个舵机每次旋转的角度。
int servo_port[4] = ;定义伺服引脚。
int servo_num = sizeof(servo_port) / sizeof(servo_port[0]);定义舵机的数量。
float value_init[4] = ;定义舵机的初始角度。
10, 110, 20, 40chu 100, 110, 60, 30 kaishi 100, 40, 60, 30zhua 100, 40, 40, 30qi 10, 40, 60, 30weizhi
float value_init[6] = ;定义舵机的初始角度。
float value_init[6] = ;
void setup()
serial.begin(9600);
pinmode(in1, output);
pinmode(in2, output);
pinmode(in3, output);
pinmode(in4, output);
pinmode(in5, output);
for(int i=0;ivoid servostart(int which)
if(!myservo[which].attached())myservo[which].attach(servo_port[which]);
pinmode(servo_port[which], output);
void servostop(int which)
myservo[which].detach();
digitalwrite(servo_port[which],low);
void servogo(int which , int where)
if(where!=200)
void servo_move(float value0, float value1, float value2, float value3)
float value_arguments = ;
float value_delta[servo_num];
for(int i=0;ifor(int i=0;i/ serial.println();
**串口视图输出***
for(int j=0;jdelay(servo_speed);
delay(action_delay);
void loop()
servo_move(10, 40, 20, 40);
delay(500);
servo_move(100, 20, 20, 40);
delay(500);
servo_move(100, 110, 20, 40);
delay(500);
servo_move(100, 110, 60, 40);
delay(500);
servo_move(100, 40, 60, 40);
delay(500);
servo_move(10, 40, 60, 40);
delay(500);
servo_move(10, 40, 20, 40);*/
abvar_1_data = serial.read()
if ((abvar_1_data ) == ( 1 )
analogwrite(in1, 0);
analogwrite(in2, 0);
analogwrite(in3, 0);
analogwrite(in4, 160);
delay (10);
if ((abvar_1_data ) == ( 2 )
for(int i=0;i<10;i++)
analogwrite(in1, 160);
analogwrite(in2, 0);
analogwrite(in3, 0);
analogwrite(in4, 0);
delay (10);
if ((abvar_1_data ) == ( 12 )
for(int i=0;i<10;i++)
servo_move(190, 40, 20, 130);
analogwrite(in1,150);
analogwrite(in2,0);
analogwrite(in4,150);
analogwrite(in3,0);
delay (1000);
if ((abvar_1_data ) == ( 3 )
analogwrite(in1,150);
analogwrite(in2,0);
analogwrite(in4,150);
analogwrite(in3,0);
delay (1000);
if ((abvar_1_data ) == ( 0 )
analogwrite(in1,0);
analogwrite(in2,0);
analogwrite(in4,0);
analogwrite(in3,0);
if ((abvar_1_data ) == ( 4) )//jixiebi1
servo_move(10, 40, 40, 130);
delay(500);
delay(500);
delay(500);
analogwrite(in5, 250);
delay(500);
if ((abvar_1_data ) == ( 5) )//jixiebi1
servo_move(10, 40, 20, 60);
delay(500);
analogwrite(in5, 0);
if ((abvar_1_data ) == ( 7) )//10, 110, 20, 40chu 100, 110, 60, 30 kaishi 100, 40, 60, 30zhua 100, 40, 40, 30qi 10, 40, 60, 30weizhi
servo_move(100, 110, 60, 30);
delay(500);
if ((abvar_1_data ) == ( 8) )//qi
servo_move(100, 40, 60, 30);
delay(500);
if ((abvar_1_data ) == ( 9) )//fan
servo_move( 100, 40, 40, 30);
delay(1000);
if ((abvar_1_data ) == ( 10) )//fan
servo_move( 10, 40, 60, 30);
delay(1000);
if ((abvar_1_data ) == ( 11) )//fan
servo_move(10, 40, 20, 40);
delay(500);
servo_move(100, 20, 20, 40);
delay(500);
servo_move(100, 130, 20, 40);
delay(500);
servo_move(100, 130, 50, 40);
delay(500);
servo_move(100, 40, 50, 40);
delay(500);
servo_move(10, 40, 50, 40);
delay(500);
servo_move(10, 40, 20, 40);
小车行走结构采用“太极拳”刚柔结合,翻越障碍物。 当小车遇到一定角度的斜坡时,由小车刚性材料组成的车轮此时可以派上用场,并调整轨道的旋转度,使小车在上坡过程中不会前后发射管子。 当小车遇到有悬崖(台阶)的地面环境时,由柔性材料制成的车轮可以通过调节前轮的自由度和前轮与后轮之间的距离来做出俯仰和升降运动,从而轻松爬上悬崖(台阶}。 同时,由两种不同材料组成的车轮也解决了行驶过程中打滑的问题,使汽车的稳定性更高。 其次,小车的机械臂可以旋转180°,这不仅使小车在工作时具有更宽的接触范围,而且还减小了小车的体积,从而加快了小车的速度,并且在此期间还可以将车身保持在最佳位置。 在此期间,同时可以利用小车体积小的优势,通过小隧道顺利进行工作。 最后,我们设计的手推车使其重心集中在整个手推车的中心,减少了手推车在通过障碍物工作的途中向前或向后倾斜,从而倾覆的情况,并加强了手推车的稳定性。
这项工作在左右两侧配备了不同的机械结构,应进行有效合理的位置和结构设计,以保证其与其他传感器的相应配合。
小车在运行过程中需要通过不同的障碍物结构,并且由于车身较小,因此在爬台阶和上坡时掌握小车的平衡性很重要,以防止其翻车。 因此,当我们上(下)坡(台阶)时,我们会将左右机械臂摆动到前(后)以保持平衡。
汽车砍伐设计的挡障树后,当它们从汽车后部拉出时,如何找到最合适的路线将树木拉开,以防止其他树木在途中阻挡被砍伐的树木疏散火源。
更多细节可以在这里找到: [S043] 护林员