?作者:李佳駿、常???、張智斌、李世斌、高華聳
單位:山西能源學(xué)院
指導(dǎo)老師:趙浩成、郜敏
1. 研究背景
? ? ? 森林作為地球上可再生自然資源及陸地生態(tài)的主體,在人類生存和發(fā)展的歷史中起著不可代替的作用,它不僅能提供國(guó)家建設(shè)和人民生活所需的木材及林副產(chǎn)品,而且還肩負(fù)著釋放氧氣調(diào)節(jié)氣候環(huán)境,涵養(yǎng)水源、保持水土、防風(fēng)固沙、美化環(huán)境、凈化空氣、減少噪音及旅游保健等多種使命,同時(shí)森林還是農(nóng)牧業(yè)穩(wěn)產(chǎn)高產(chǎn)的重要條件。然而,森林火災(zāi)是森林最危險(xiǎn)的敵人,也是林業(yè)最可怕的災(zāi)害,也會(huì)給森林帶來(lái)最有害、具有毀滅性的后果。森林火災(zāi)不只是燒毀片片森林,傷害林內(nèi)動(dòng)物,而旦還降低森林的更新能力,引起土壤的貧瘠和破壞森林涵養(yǎng)水源的作用,甚至號(hào)致生態(tài)環(huán)境失去平衡。2019年3月30日,四川省涼山州木里縣就曾經(jīng)發(fā)生過(guò)一次非常嚴(yán)重的森林火災(zāi)。2019年3月30日是一個(gè)雨天,木里縣喇嘛寺溝附近下午5點(diǎn)左右出現(xiàn)了雷雨天氣,雖然只是一次持續(xù)了30秒左右的陣雨,但是隆隆雷聲卻一直回蕩在天空,不絕于耳。下午6點(diǎn)時(shí)一場(chǎng)森林火災(zāi)在山上悄然而至,起火點(diǎn)位于海拔3800余米的山上,山中地形復(fù)雜,遍布溝壑,無(wú)論是交通還是通訊情況都非常不好,消防官兵難以迅速趕往現(xiàn)場(chǎng)進(jìn)行救援。經(jīng)過(guò)相關(guān)部門得知消息后初步判斷本次火災(zāi)的原因,可能是由于之前降兩時(shí)的雷擊導(dǎo)致,多個(gè)起火點(diǎn)都位于山崖上,火場(chǎng)平均海拔高達(dá)4千米。31日下午,689位救火人員帶著各種設(shè)備登山,前往海拔4000余米的原始森林開展救火工作,由于當(dāng)日風(fēng)向不定,風(fēng)力風(fēng)向突變導(dǎo)致山火爆燃形成一個(gè)巨大的火球。救火人員兵分兩路進(jìn)行避險(xiǎn),其中一路安全撤離,另一路的27位森林消防指戰(zhàn)員和三名地方救火人員就此和其他人失去了聯(lián)系。4月2日早晨六點(diǎn)30分,田火山山上的明火終于被撲滅。而制作山林隔離帶是有效制止森林大火蔓延的的有效方式,且該方面大多是通過(guò)人工下地來(lái)完成的,所以我們?cè)O(shè)計(jì)了一款可通過(guò)遠(yuǎn)程遙控來(lái)實(shí)現(xiàn)砍伐、運(yùn)輸一體化的全地形機(jī)器人,減少人工的需求量和危險(xiǎn)性。同時(shí),目前生活中的伐木大多由人工實(shí)地操作,我們的作品也可以代替其完成系統(tǒng)化的作業(yè)。
2. 主要功能
? ? ? 本小組作品的主要功能有在大火發(fā)生時(shí),及時(shí)進(jìn)入火場(chǎng)中,對(duì)還未涉及到的地域進(jìn)行砍伐樹木,降低火災(zāi)面積。本小車為全地形小車,可以適應(yīng)森林中的各種地形,如山坡、地坑等等。小車一側(cè)設(shè)有抓夾,在另一側(cè)砍伐完樹木后抓夾可以及時(shí)將樹枝抓起放到車后部,最終由小車將其帶出森林。在救援的同時(shí)小車前部設(shè)有攝像頭以及濕度傳感器,實(shí)時(shí)監(jiān)控并記錄火災(zāi)情況。本作品不僅可以用作在森林防護(hù)中制作隔離帶的一體化工作,也可以用作日常生活中做伐木一體機(jī)器人使用。
3. 場(chǎng)景調(diào)研
? ? ? 森林火災(zāi)的起因主要有兩大類:人為火和自然火。人為火包括:生產(chǎn)性火源(農(nóng)、林、牧業(yè)生產(chǎn)用火,林副業(yè)生產(chǎn)用火,工礦運(yùn)輸生產(chǎn)用火等)、非生產(chǎn)性火源(野外吸煙、做飯、燒紙、取暖等)、故意縱火。自然火包括:雷電火、自燃等。由于我國(guó)的森林火災(zāi)中,由吸煙、燒荒和上墳燒紙引起的火災(zāi)占了絕大多數(shù),所以我們小組場(chǎng)地模擬森林火災(zāi)的起因?yàn)闊?。在?shí)際的地形中會(huì)存在山坡和小斷層,我們小組在模擬時(shí),模擬機(jī)器人爬小山坡和爬小臺(tái)階(斷層)。同時(shí),模擬了砍伐樹木的過(guò)程,再砍伐完后,車另一側(cè)的抓夾會(huì)將樹木夾起搬運(yùn)出森林。在進(jìn)行就救援以及砍伐樹木時(shí),車前的攝像頭可進(jìn)行實(shí)時(shí)監(jiān)控,可記錄下在砍伐樹木時(shí)周遭的實(shí)時(shí)動(dòng)態(tài),同時(shí)還有濕度傳感器的實(shí)時(shí)監(jiān)測(cè)。
4. 機(jī)器人本體技術(shù)路線說(shuō)明
? ? ? ① 機(jī)械結(jié)構(gòu):整體車身分為兩部分,前端車體運(yùn)用柔性結(jié)構(gòu),并采用履帶式車輪,后部采用傳統(tǒng)輪胎,有著很好的抓地力。車體大致結(jié)合軍用坦克的履帶的優(yōu)越性并結(jié)合實(shí)際,改裝了后置輪胎,使得前后輪可以通過(guò)配合,從而順利翻越一些工作途中所遇到的障礙。
? ? ? ② 驅(qū)動(dòng)系統(tǒng):該車加裝了6個(gè)雙直流電機(jī)共同驅(qū)動(dòng),六個(gè)電機(jī)同時(shí)驅(qū)動(dòng),為小車提供了足夠的動(dòng)力,減少了動(dòng)力的損失,為通過(guò)障礙物提供了足夠的動(dòng)力條件,電鋸有單舵機(jī)制作的機(jī)械臂和電機(jī)控制的電鋸體實(shí)現(xiàn)橫向自由伸展,砍伐樹木。機(jī)械爪由兩個(gè)舵機(jī)控制的機(jī)械臂和單舵機(jī)控制的爪體構(gòu)成,可實(shí)現(xiàn)橫向伸展并調(diào)整爪子的擺動(dòng),實(shí)現(xiàn)抓取。
? ? ? ③ 控制系統(tǒng):主板采用了Basra主控板,通過(guò)ESP8266Wi-Fi模塊與電腦連接實(shí)現(xiàn)遠(yuǎn)程實(shí)時(shí)無(wú)限操作,通過(guò)攝像頭、溫濕度傳感器來(lái)實(shí)時(shí)反饋現(xiàn)場(chǎng)情況,為人們的勘測(cè)和救援提供信息幫助。
? ? ? ④ 感知系統(tǒng):車體全程操作由人工在遠(yuǎn)程通過(guò)WiFi模塊實(shí)時(shí)操作,在車體的前方和中段均裝有攝像頭,前部攝像頭可幫我我們鎖定目標(biāo)樹木的方向,也可以規(guī)避障礙物,在側(cè)端的攝像頭可對(duì)目標(biāo)數(shù)目進(jìn)行定位,當(dāng)其進(jìn)入合適位置后進(jìn)行砍伐和搬運(yùn)。在車的頂部同時(shí)也裝配了溫濕度傳感器,對(duì)周圍環(huán)境進(jìn)行監(jiān)控,并及時(shí)反饋,為人工救援行動(dòng)提供保障。
5. 示例程序
#include <Servo.h>
int _ABVAR_1_data = 0 ;
int in1 = 5;
int in2 = 6;
int in3 = 9;
int in4 = 10;
int in5 = 12;
int SERVO_SPEED=20; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//定義舵機(jī)轉(zhuǎn)動(dòng)快慢的時(shí)間
int ACTION_DELAY=200; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//定義所有舵機(jī)每個(gè)狀態(tài)時(shí)間間隔
Servo myServo[4];
int f = 50; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //定義舵機(jī)每個(gè)狀態(tài)間轉(zhuǎn)動(dòng)的次數(shù),以此來(lái)確定每個(gè)舵機(jī)每次轉(zhuǎn)動(dòng)的角度
int servo_port[4] = {3,4,7,8}; ? ? ? ? ? ? ? ? ? ? ? ? ? ?//定義舵機(jī)引腳
int servo_num = sizeof(servo_port) / sizeof(servo_port[0]); ? ? //定義舵機(jī)數(shù)量
float value_init[4] = {10, 40, 20, 40}; ? ? ? ? ? ? ? ?//定義舵機(jī)初始角度
//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] = {10, 130, 60, 30}; ? ? ? ? ? ? ? ?//定義舵機(jī)初始角度
//float value_init[6] = {0, 40, 40, 40};
void setup()
{
Serial.begin(9600);
pinMode(in1, OUTPUT);
?pinMode(in2, OUTPUT);
?pinMode(in3, OUTPUT);
?pinMode(in4, OUTPUT);
? ?pinMode(in5, OUTPUT);
? ? ? for(int i=0;i<servo_num;i++){
? ?ServoGo(i,value_init[i]);
?}
}
void 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)
?{
? ?if(where==201) ServoStop(which);
? ?else
? ?{
? ? ?ServoStart(which);
? ? ?myServo[which].write(where);
? ?}
?}
}
void servo_move(float value0, float value1, float value2, float value3)
{
?float value_arguments[] = {value0, value1, value2, value3};
?float value_delta[servo_num];
?for(int i=0;i<servo_num;i++)
?{
? ?value_delta[i] = (value_arguments[i] - value_init[i]) / f;
?}
?for(int i=0;i<f;i++)
?{
? ?for(int k=0;k<servo_num;k++)
? ?{
? ? ?value_init[k] = value_delta[k] == 0 ? value_arguments[k] : value_init[k] + value_delta[k];
? ? ?/**************************串口查看輸出*****************************/
// ? ? ?Serial.print(value_init[k]);
// ? ? ?Serial.print(" ");
? ?}
// ? ?Serial.println();
? ? ?/**************************串口查看輸出*****************************/
? ?for(int j=0;j<servo_num;j++)
? ?{
? ? ?ServoGo(j,value_init[j]);
? ?}
? ?delay(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);
}
}
6. 創(chuàng)新點(diǎn)
? ? ? 小車行進(jìn)結(jié)構(gòu)利用“太極”式剛?cè)峤Y(jié)合進(jìn)行翻越障礙。當(dāng)小車遇到有一定角度的傾斜坡的時(shí)候,此時(shí)小車的剛性材料組成的車輪即可派上用場(chǎng),通過(guò)調(diào)整履帶的旋轉(zhuǎn)自由度,使得小車在上坡的過(guò)程中不會(huì)發(fā)射管前傾和后傾。在小車遇到有斷崖(臺(tái)階)的地面環(huán)境時(shí),其柔性材料做成的車輪,經(jīng)過(guò)調(diào)整前輪的自由度和前輪和后輪之間的距離,可以做出俯仰抬頭的動(dòng)作,從而輕松爬上斷崖(臺(tái)階}。與此同時(shí),倆種不同材料組成的車輪,也解決了在移動(dòng)過(guò)程中出現(xiàn)的打滑問(wèn)題,使小車的穩(wěn)定性更高。其次,小車的機(jī)械臂可以180°進(jìn)行旋轉(zhuǎn),不僅使小車在工作時(shí)候可接觸的范圍更廣,還減小了車的體積,從而加快了小車的速度,車身在此期間也可以保持到最佳的位置。在此期間,同時(shí)可以利用小車體積小的優(yōu)勢(shì),可以順利通過(guò)小的隧道進(jìn)行工作。最后,我們?cè)O(shè)計(jì)的小車使其重心集中在了整個(gè)小車的最中心,減少了了在通過(guò)障礙工作途中造成小車前傾或者后傾,從而翻車的情況,加強(qiáng)了小車的穩(wěn)定性。
7. 作品難點(diǎn)
? ? ? ① 本作品在左右兩側(cè)分別裝有不同的機(jī)械結(jié)構(gòu),應(yīng)對(duì)其進(jìn)行有效合理的位置和結(jié)構(gòu)設(shè)計(jì),保證其相對(duì)應(yīng)與其他傳感器的配合。
? ? ? ② 小車在運(yùn)行過(guò)程中需通過(guò)不同的障礙結(jié)構(gòu),而由于車身較小,故掌握小車在登臺(tái)階和上坡時(shí)的平衡很是關(guān)鍵,防止側(cè)翻。故我們?cè)谶M(jìn)行上(下)坡(臺(tái)階)會(huì)將左右機(jī)械臂擺至前(后)進(jìn)行平衡。
? ? ? ③ 在小車砍到設(shè)計(jì)的隔離帶樹木后,放在車后方拉出時(shí),怎么樣去尋找最合適的路線去拉走樹木,從而防止其他樹木在路途中阻擋砍到的樹木撤離火源。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-777914.html
更多詳情請(qǐng)見 :【S043】森林管理員文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-777914.html
到了這里,關(guān)于機(jī)器人制作開源方案 | 森林管理員的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!