メインコンテンツ

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

skyplot

衛星の方位角と標高データをプロットする

R2021a 以降

説明

skyplot(azdata,eldata) は、度単位の行列として指定された方位角と標高データを使用してスカイ プロットを作成します。方位角角は度単位で測定され、北方向から時計回りが正になります。仰角は地平線から測定され、90 度が真上になります。スカイ プロットの要素の詳細については、スカイ プロットの主な要素 を参照してください。

skyplot(azdata,eldata,labeldata) は、azdata および eldata 入力の各データ ポイントに対応する要素を持つ文字列列配列としてデータ ラベルを指定します。

skyplot(status) は、フィールド SatelliteAzimuthSatelliteElevation を持つ構造体で方位角と仰角のデータを指定します。

skyplot(___,Name,Value) では、前の構文の入力引数に加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。名前と値の引数は、SkyPlotChart オブジェクトのプロパティです。プロパティの一覧については、SkyPlotChart のプロパティ を参照してください。

skyplot(parent,___) は、parent によって指定された図、パネル、またはタブにスカイ プロットを作成します。

h = skyplot(___) は、スカイ プロットを SkyPlotChart オブジェクト、h として返します。チャートを作成した後、h を使用してチャートのプロパティを変更します。プロパティの一覧については、SkyPlotChart のプロパティ を参照してください。

すべて折りたたむ

GNSSセンサー モデルを gnssSensor (Navigation Toolbox) System object ™ として作成します。

gnss = gnssSensor; 

センサーの位置と速度を指定します。センサーの読み取りをシミュレートし、可視衛星からステータスを取得します。方位角と仰角をベクトルとして保存します。

pos = [0 0 0]; 
vel = [0 0 0]; 
[~, ~, status] = gnss(pos, vel); 
satAz = status.SatelliteAzimuth; 
satEl = status.SatelliteElevation; 

ローカル環境として機能する、最大仰角 30 度のランダムなローカル仰角マスクを作成します。

rng(8)
terrainMaskElevations = 30*rand(1,12); % elevations (degrees)
terrainMaskEdges = [0 24 48 100 132 180 204 240 276 288 300 312 360]; % azimuth edges (degrees)

標高マスクを使用して衛星の位置をプロットします。

skyplot(satAz,satEl,MaskElevation=terrainMaskElevations,MaskAzimuthEdges=terrainMaskEdges); 

Figure contains an object of type skyplot.

GNSSセンサーからの衛星位置の軌跡を時間の経過に沿ってアニメーション化します。

スカイ プロット図を初期化します。関連する時間ステップ情報を指定します。

skyplotHandle = skyplot(0,0); 

Figure contains an object of type skyplot.

numHours = 12; 
dt = 100; 
numSeconds = numHours * 60 * 60; 
numSimSteps = numSeconds/dt;

GNSSセンサー モデルを gnssSensor (Navigation Toolbox) System Object™ として作成します。

gnss = gnssSensor('SampleRate', 1/dt); 

時間ステップを反復して、次の操作を実行します。

  • センサーの読み取りをシミュレートします。固定センサーのゼロ位置と速度を指定します。

  • 方位角と仰角をベクトルとして保存します。

  • SkyPlotChart ハンドルの AzimuthData および ElevationData プロパティを直接設定します。

for i = 1:numSimSteps 

    [~, ~, status] = gnss([0 0 0],[0 0 0]); 

    satAz = status.SatelliteAzimuth; 
    satEl = status.SatelliteElevation; 

    set(skyplotHandle,'AzimuthData',satAz,'ElevationData',satEl);
    
    drawnow 
end 

Figure contains an object of type skyplot.

Adafruit® GPS衛星センサーによって生成されたログファイルから方位角と標高データを読み込みます。この例で提供されるデータには、各衛星の方位角と仰角、および疑似ランダム ノイズ (PRN) コードが含まれています。これらの値をベクトルとして保存します。

load('gpsHWInfo','hwInfo') 
satAz = hwInfo.SatelliteAzimuths; 
satEl = hwInfo.SatelliteElevations; 
prn = hwInfo.SatellitePRNs; 

PRN コードに基づいて衛星を分離します。各位置をグループに関連付けるには、categorical 配列を作成します。この衛星セットでは、PRN が 32 未満の衛星のみが測位ソリューションに使用されます。

isUnused = (prn > 32);
group = categorical(isUnused,[false true],["Used in Positioning Solution" "Unused"]);

衛星を可視化し、GroupData 名前値引数でカテゴリ グループを指定します。各ポイントのラベルとして PRN を指定します。凡例を表示します。

skyplot(satAz,satEl,prn,GroupData=group) 
legend('Used','Unused')

Figure contains an object of type skyplot.

受信機の位置、RINEX ナビゲーション ファイル、マスク角度、時間ステップ サイズ、および RINEX ファイルからサンプリングするデータの時間数を指定します。

recPos = [42 -71 50];
navfile = "GODS00USA_R_20211750000_01D_GN.rnx";
maskAngle = 25;
dt = 60; % seconds
numHours = 4;

ナビゲーション ファイルを読み取り、ファイル内にキャプチャされたすべての衛星のGPSデータを取得します。

data = rinexread(navfile);
[~,satIdx] = unique(data.GPS.SatelliteID);
navmsg = data.GPS(satIdx,:);

開始時刻をナビゲーションメッセージの初期時刻に設定します。次に、時間ベクトル t を作成します。

startTime = navmsg.Time(1);
secondsPerHour = 3600;
timeElapsed = 0:dt:(secondsPerHour*numHours);
t = startTime + seconds(timeElapsed);

方位角と仰角のベクトルを初期化します。次に、すべての衛星について、時刻 t に方位角と仰角のデータを収集します。

numSats = numel(navmsg.SatelliteID);
allAz = NaN(numel(t),numSats);
allEl = allAz;
for idx = 1:numel(t)
    [satPos,~,satID] = gnssconstellation(t(idx),RINEXData=navmsg);
    [az,el,vis] = lookangles(recPos,satPos,maskAngle);
    allAz(idx,:) = az;
    allEl(idx,:) = el;
end

高度が 0 未満の地平線の下にあるすべての衛星を欠落としてマークします。

allEl(allEl < 0) = missing;

スカイプロットを作成し、AzimuthData および ElevationData プロパティを更新して、衛星の軌跡をアニメーションとして表示します。

figure
sp = skyplot(allAz(1,:),allEl(1,:),satID,MaskElevation=maskAngle);
for idx = 1:size(allAz, 1)
    set(sp,AzimuthData=allAz(1:idx,:),ElevationData=allEl(1:idx,:));
    drawnow limitrate
end

Figure contains an object of type skyplot.

入力引数

すべて折りたたむ

可視衛星位置の方位角角。角度の n 要素ベクトルまたは角度の tn 列の行列として指定します。n はプロット内の可視衛星位置の数、t は衛星の時間ステップの数です。方位角角は度単位で測定され、北方向から時計回りが正になります。

例: [25 45 182 356] は、1 つの時間ステップで 4 つの衛星の方位角角を指定します。

s

データ型: double

可視衛星位置の仰角。角度の n 要素ベクトルまたは角度の tn 列の行列として指定します。n はプロット内の可視衛星位置の数、t は衛星の時間ステップの数です。仰角は地平線から測定され、90 度が真上になります。

例: [45 90 27 74] は、1 つの時間ステップで 4 つの衛星の仰角を指定します。

データ型: double

目に見える衛星の位置のラベル。n 要素の文字列列配列として指定されます。n は、プロット内に表示される衛星の位置の数です。

例: ["G1" "G11" "G7" "G3"]

データ型: string

構造体または構造体配列として指定された衛星ステータス。衛星ステータス構造には、フィールド SatelliteAzimuthSatelliteElevation が含まれます。通常、このステータス構造は、衛星の位置と速度をシミュレートする gnssSensor (Navigation Toolbox) オブジェクトから取得されます。

例: gnss = gnssSensor; [~,~,status] = gnss(position,velocity)

データ型: struct

親コンテナー。Figure オブジェクト、Panel オブジェクト、Tab オブジェクト、TiledChartLayout オブジェクト、または GridLayout オブジェクトとして指定します。

出力引数

すべて折りたたむ

スカイ プロット チャート。スタンドアロン可視化である SkyPlotChart オブジェクトとして返されます。h を使用して、スカイ プロットチャートのプロパティを設定します。詳細については、SkyPlotChart Properties (Navigation Toolbox)を参照してください。

詳細

すべて折りたたむ

バージョン履歴

R2021a で導入

すべて展開する

参考

関数

プロパティ

オブジェクト