Beacon을 사용하여 위치 추정 할 때의 메모 (GPS 측량, RSSI → 거리)

Beacon에서 위치 추정할 때 어떻게 해서는 안 되는 사람을 위해 쉽게 메모해 둡니다.

측량법



지문, 삼각 측량, 삼변 측량, GPS 측량 또는 다양한 측량 방법이 있습니다. 솔직히 잘 모르겠어요.
지문은 일반적으로 정밀도가 높다고 하지만 사전 학습이 번거롭거나 하기 때문에, 이번에는 GPS 측량으로 사용되고 있는 방식을 이용합니다.

GPS 측량은 좌표가 알려진 3점(위성)으로부터의 거리를 알면 수신하는 단말의 상대 좌표를 알 수 있다는 원리입니다(실제로는 시간 동기화를 위해 4대의 위성이 필요하지만 이번에는 생각하지 않습니다 음). 이 위성을 Beacon으로 바꾸는 것으로 실내에서의 위치 추정이 가능합니다.
즉 이하의 계산을 할 수 있으면 k입니다.
  • Beacon으로부터의 거리
  • 상대 좌표

  • Beacon으로부터의 거리는 전파 강도(RSSI)에서 구할 수 있습니다.
    상대 좌표도 좌표가 알려진 3개의 Beacon과 RSSI로부터 구한 거리를 이용해 구할 수 있습니다. 공식 등은 참고 문헌이 알기 쉬웠으므로을 참조하십시오. 아래에 구현 예를 적어 둡니다.

    구현



    여기에서는 예로서 Objective-c로 표기해 둡니다.

    - RSSI를 거리로 변환 -
    /*RSSIを距離へ変換*/
    
    -(CGFloat)value:(float)num power:(int)val{
        CGFloat ans,x,k;
        k = 2;  //フリスの伝達公式(自由空間では2くらい)
        x = (num+val)/(-10*k);
        ans = powf(10, x);
        return ans;
    }
    

    - 위치 좌표 계산 -
    /*位置座標を計算*/
    
    
    - (CGPoint)manPoint:(CGPoint)a beaconB:(CGPoint)b beaconC:(CGPoint)c distanceA:(CGFloat)dA distanceB:(CGFloat)dB distanceC:(CGFloat)dC {
    
        CGFloat Va, Vb, x, y ;
        Va = ((powf(dB,2)-powf(dC, 2))-(powf(b.x, 2)-powf(c.x, 2))-(powf(b.y, 2)-powf(c.y, 2)))/2;
        Vb = ((powf(dB,2)-powf(dA, 2))-(powf(b.x, 2)-powf(a.x, 2))-(powf(b.y, 2)-powf(a.y, 2)))/2;
    
        y = (Vb*(c.x-b.x)-Va*(a.x-b.x))/((a.y-b.y)*(c.x-b.x)-(c.y-b.y)*(a.x-b.x));
        x = (Va-y*(c.y-b.y))/(c.x-b.x);
    
        return CGPointMake(x, y);
    }
    
    

    참고문헌



    [1] htp // // 역시 rx. st. p한다. 에즈/ゔぃ에w c/do w 응아 d? 도 = 10.1.1.684.6710&레 p=레 p1&tyぺ=pdf
    [2] htps : // pdfs. 세만치 cs 쵸 r. rg / 69b0 / A 4b23d06f5244975394542fd6829 A0E 92658. pdf

    좋은 웹페이지 즐겨찾기