AGV(Automated Guided Vehicle,無人搬運車)是一種自動化運輸設備,通常在工廠、倉庫、醫院等場所用來搬運物品。
紅外線技術在 AGV 中的原理
紅外線技術應用實例
紅外線技術的優勢
挑戰與限制
在AGV無人搬運車的障礙偵測技術上,有相當長的應用歷史,且相對穩定許多。但是紅外線唯一的天敵就是深色表面,甚至是黑色表面的物體,由於黑色表面對於紅外線來說,會有「吸光」的效果,也就是打到黑色或深色表面的紅外線,能夠反射回到接受器的值趨近於零。
參考 Web: Bit 循跡自走的教學介紹:
「循跡」這個功能,是透過 MoonCar 底盤前方的那兩個 IR 循線感測器來感應路面上的路線狀況。這兩個循線感應器,會根據路面狀況產生反應,並在 MoonCar 底盤上方相對應位置的 綠色 LED 反映出相對應的結果。
黑色會吸收紅外光線,其他顏色則會反射紅外光。因此,可用黑色筆或膠帶來畫(貼)出希望行走的軌跡。實作時,我們可以先用(套件附贈的)黑色膠帶,在地面或桌面貼出要讓 MoonCar 行走的路徑。
一定有讀者會問,為什麼不用影像辨識?影像辨識需要大量的 CPU 運算,成本太高。用三個紅外線循線感測器,不到 100 元台幣。
透過三個一組的組合,要來偵測黑色軌道,就可以輕鬆用實惠的方法解決。
我們可以參考 CAVEDU 教育團隊的 Jetbot 升級新技能 part 1:結合紅外線感測器來循跡!
解說,您會更清楚偵測判斷的方式。(但要注意的是,這篇文章用的是黑底白線的地圖,跟平常常見的例子比較不同,但原理還是一樣。)
WiFiBoy 玩學機要怎麼接線呢?
from machine import Pin
from utime import sleep
# 初始化紅外線感測器的引腳
left_sensor = Pin(2, Pin.IN) # 左側感測器連接到 GPIO 2
center_sensor = Pin(5, Pin.IN) # 中間感測器連接到 GPIO 5
right_sensor = Pin(21, Pin.IN) # 右側感測器連接到 GPIO 21
def read_sensors():
left = left_sensor.value()
center = center_sensor.value()
right = right_sensor.value()
return left, center, right
def check_track():
left, center, right = read_sensors()
if center == 1 and left == 0 and right == 0:
print("AGV 運行正常")
elif left == 1 and center == 0:
print("AGV 偏離軌道: 要往右調整")
elif right == 1 and center == 0:
print("AGV 偏離軌道: 要往左調整")
else:
print("AGV 脫離軌道")
while True:
check_track()
sleep(0.1)
除了判斷軌道是否有偏離外,我們也可以利用距離太遠紅外線幾乎不反射的特性,來做一個防車輛掉落的偵測器。
當距離地面很近,回傳值為 0 代表沒有掉落的危險。如果回傳值為 1 則代表紅外線發散沒有收到回傳值,即很有機會會掉落,此時應該車輛停止甚至是要往後退。
from machine import Pin
from utime import sleep
while True:
center = Pin(2, Pin.IN, Pin.PULL_DOWN)
print(center.value())
if center.value() == 1:
wb.cls()
wb.str("Dangerous!", 10, 20, 5)
else:
wb.cls()
sleep(1)