作者:李家俊, 常瑞康, 張志斌, 李世斌, 高華卓
單位:山西能源研究所
教練:趙浩成, 高敏
森林作為地球上可再生自然資源和陸地生態的主體,在人類生存和發展的歷史中發揮著不可替代的作用,它不僅可以提供國家建設和人民生活所需的木材和森林副產品,還可以肩負著氧氣的釋放來調節氣候和環境, 涵養水源、保水保土、防風固沙、美化環境、淨化空氣、降噪和旅遊保健等使命,同時,森林也是農牧業穩定高產的重要條件。然而,森林火災是森林最危險的敵人,是林業最可怕的災害,也會給森林帶來最有害和最具破壞性的後果。 森林大火不僅燒毀了成片的森林,傷害了森林中的動物,而且降低了森林的再生能力,造成土壤貧瘠,破壞了森林的節水作用,甚至導致生態環境失去平衡。 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] 護林員