我目前正在尝试使用信标技术开发一个实时位置查找应用程序。因此,为此,我需要使用信标扫描仪网关跟踪信标标签。我正在使用 Node Js,并使用trilat 库来计算 x,y 坐标。但每次它只计算一个质心位置!
这是我计算 x 和 y 坐标的代码,以及使用 RSSI 值计算的距离。
应用程序.js
var trilat = require('trilat');
var gatway1rssi=-30;
var gatway2rssi=-79;
var gatway3rssi=-29;
var d1 = calc_dist(gatway1rssi);
var d2 = calc_dist(gatway2rssi);
var d3 = calc_dist(gatway3rssi);
//gatway coordinates
var gatway1_X_axis= 150;
var gatway1_Y_axis= 209.5;
var gatway2_X_axis= 305;
var gatway2_Y_axis= 169.5;
var gatway3_X_axis= 280;
var gatway3_Y_axis= 345;
var input = [
// X Y R
[ gatway1_X_axis, gatway1_Y_axis, d1],
[ gatway2_X_axis, gatway2_Y_axis, d2],
[ gatway3_X_axis, gatway3_Y_axis, d3],
];
// [
// [ 150, 209.5, 0.35481338923357547 ],
// [ 305, 169.5, 100 ],
// [ 280, 345, 0.31622776601683794 ]
// ]
var output = trilat(input);
console.log(output)
// [ 233.81590601205798, 219.6331375609171]
function calc_dist(rss){
var a='-39';//tx power
var n='2';//noise
var cal_d = Math.pow(10,((rss-a)/(-10*n)));
return cal_d;
}