Tutorial3 <<
Previous Next >> Tutorial4
Distancesensor
https://cyberbotics.com/doc/reference/distancesensor
Derived from Device and Solid.
DistanceSensor {
MFVec3f lookupTable [ 0 0 0, 0.1 1000 0 ] # lookup table
SFString type "generic" # {"generic", "infra-red", "sonar", "laser"}
SFInt32 numberOfRays 1 # [1, inf)
SFFloat aperture 1.5708 # [0, 2*pi]
SFFloat gaussianWidth 1 # [0, inf)
SFFloat resolution -1 # {-1, [0, inf)}
SFFloat redColorSensitivity 1 # [0, inf)
}
在 Webots 的 DistanceSensor 設為紅外線(Infra-red, IR)模式時,lookupTable 欄位用於將感測器的原始輸出值(通常是類比值,例如AD值或電壓)對應到實際的距離(通常以米為單位)。這個對應關係並非線性,且會根據不同的紅外線感測器型號而有所不同,因此需要用 lookupTable 明確設定。
lookupTable 的格式說明
lookupTable 是一串三元組(triplet)組成的陣列,每個三元組代表:
[distance, value, standardDeviation]
distance:真實世界對應的距離(單位:公尺)。
value:感測器輸出的原始值(通常為電壓或AD值)。
standardDeviation:該點測量的誤差標準差(單位:公尺,非必需,可設為0)。
第一欄:輸入的距離(distance,單位:公尺)
第二欄:對應的感測器反應值(response value,通常是電壓或 AD 值)
第三欄:對應的標準差(standard deviation)
例如:
lookupTable [
0.05 100 0.01
0.20 400 0.01
0.80 800 0.01
]
這代表:
當輸出值為 100 時,對應距離為 0.05 公尺。
當輸出值為 400 時,對應距離為 0.20 公尺。
... 以此類推。
Webots 會用這些點做線性內插,將感測器讀數(例如 350)對應到距離。
設定 lookupTable 的方法
查閱感測器手冊:取得原廠提供的「輸出值 vs 距離」對照表。
選擇幾個代表性數值:通常選 3~5 組即可覆蓋感測範圍。
將其填入 lookupTable:
使用 lookupTable 設定的意義
lookupTable 告訴 Webots「當感測器輸出某值時,應該對應到什麼距離」。
因為紅外線測距不是線性的,所以線性內插比直接計算更準確。
這讓模擬更貼近真實感測器行為。
Tutorial3 <<
Previous Next >> Tutorial4