このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
衛星コンスタレーションから地上局へのアクセス
この例では、地上局と衛星のコンスタレーションに搭載された円錐形センサー間のアクセス分析を設定する方法を示します。地上局と衛星に属する円錐形センサーは、地上局が円錐形センサーの視野内にあり、円錐形センサーの地上局に対する仰角が後者の最小仰角以上である場合に、相互にアクセスできるとされます。このシナリオには、40 基の低軌道衛星で構成されるコンスタレーションと地理的な場所が含まれます。各衛星には視野角 90 度のカメラが搭載されています。衛星のコンスタレーション全体の任務は、北緯 42.3001 度、西経 71.3504 度に位置する地理的場所を撮影することです。写真は、2020 年 5 月 12 日午後 1 時 (UTC) から 2020 年 5 月 12 日午後 7 時 (UTC) の間に、サイトが太陽の光で十分に照らされているときに撮影する必要があります。大気の歪みを最小限に抑えて高品質の画像を撮影するには、サイトに対する衛星の仰角が少なくとも 30 度である必要があります (30 度は説明のために任意に選択されたことに注意してください)。6 時間の間隔で、各衛星が現場を撮影できる時間を決定する必要があります。また、この間隔中に少なくとも 1 つの衛星カメラがサイトを視認できる時間の割合を決定することも必要です。このパーセンテージの量は、システム全体のアクセス パーセンテージと呼ばれます。
衛星シナリオを作成する
satelliteScenario
を使用して衛星シナリオを作成します。datetime
を使用して、開始時刻を 2020 年 5 月 12 日午後 1 時 00 分 (UTC) に設定し、終了時刻を 2020 年 5 月 12 日午後 7 時 00 分 (UTC) に設定します。シミュレーションのサンプル時間を 30 秒に設定します。
startTime = datetime(2020,5,12,13,0,0);
stopTime = startTime + hours(6);
sampleTime = 30; % seconds
sc = satelliteScenario(startTime,stopTime,sampleTime)
sc = satelliteScenario with properties: StartTime: 12-May-2020 13:00:00 StopTime: 12-May-2020 19:00:00 SampleTime: 30 AutoSimulate: 1 Satellites: [1×0 matlabshared.satellitescenario.Satellite] GroundStations: [1×0 matlabshared.satellitescenario.GroundStation] Viewers: [0×0 matlabshared.satellitescenario.Viewer] AutoShow: 1
衛星シナリオに衛星を追加する
satellite
を使用して、TLE ファイル leoSatelliteConstellation.tle
からシナリオに衛星を追加します。TLE ファイルは、高度と傾斜角がそれぞれ約 500 km と 55 度のほぼ円形の低軌道にある 40 個の汎用衛星の平均軌道パラメータを定義します。
tleFile = "leoSatelliteConstellation.tle";
sat = satellite(sc,tleFile)
sat = 1x40 Satellite array with properties: Name ID ConicalSensors Gimbals Transmitters Receivers Accesses GroundTrack Orbit OrbitPropagator MarkerColor MarkerSize ShowLabel LabelFontColor LabelFontSize
衛星にカメラを追加する
conicalSensor
を使用して、各衛星に円錐形センサーを追加します。これらの円錐形のセンサーはカメラを表しています。MaxViewAngle
を 90 度に指定して、視野を定義します。
names = sat.Name + " Camera"; cam = conicalSensor(sat,"Name",names,"MaxViewAngle",90)
cam = 1x40 ConicalSensor array with properties: Name ID MountingLocation MountingAngles MaxViewAngle Accesses FieldOfView
衛星シナリオで撮影する地理的場所を定義する
groundStation
を使用して、撮影する地理的場所を表す地上局を追加します。MinElevationAngle
を 30 度に指定します。緯度と経度が指定されていない場合は、デフォルトで北緯 42.3001 度、西経 71.3504 度になります。
name = "Geographical Site"; minElevationAngle = 30; % degrees geoSite = groundStation(sc, ... "Name",name, ... "MinElevationAngle",minElevationAngle)
geoSite = GroundStation with properties: Name: Geographical Site ID: 81 Latitude: 42.3 degrees Longitude: -71.35 degrees Altitude: 0 meters MinElevationAngle: 30 degrees ConicalSensors: [1x0 matlabshared.satellitescenario.ConicalSensor] Gimbals: [1x0 matlabshared.satellitescenario.Gimbal] Transmitters: [1x0 satcom.satellitescenario.Transmitter] Receivers: [1x0 satcom.satellitescenario.Receiver] Accesses: [1x0 matlabshared.satellitescenario.Access] MarkerColor: [1 0.4118 0.1608] MarkerSize: 6 ShowLabel: true LabelFontColor: [1 1 1] LabelFontSize: 15
カメラと地理的サイト間のアクセス分析を追加する
access
を使用して、各カメラと地理的なサイト間のアクセス分析を追加します。アクセス分析は、各カメラがいつサイトを撮影できるかを決定するために使用されます。
ac = access(cam,geoSite);
% Properties of access analysis objects
ac(1)
ans = Access with properties: Sequence: [41 81] LineWidth: 3 LineColor: [0.3922 0.8314 0.0745]
シナリオを視覚化する
satelliteScenarioViewer
を使用して衛星シナリオ ビューアーを起動し、シナリオを視覚化します。ShowDetails
の名前と値のペアを false
に設定して、衛星と地上局の軌道とラベルを非表示にします。地理的な場所と衛星 4 のラベルを表示し、衛星を画面の中央に配置します。
v = satelliteScenarioViewer(sc,"ShowDetails",false);
sat(4).ShowLabel = true;
geoSite.ShowLabel = true;
show(sat(4));
ShowDetails
プロパティが false
に設定されている場合、衛星と地上局のみが表示されます。ラベル、軌道、視野、地上トラックは非表示になります。衛星や地上局の上にマウスを置くと、ラベルが表示されます。衛星または地上局をクリックすると、そのラベル、軌道、その他の非表示のグラフィックが表示されます。衛星または地上局をもう一度クリックすると、閉じます。
ビューアは、シナリオが正しく設定されていることを視覚的に確認するために使用できます。紫色の線は、衛星 4 のカメラと地理的サイトが相互にアクセスできることを示しています。これは、地理的な場所がカメラの視野内にあり、場所に対するカメラの仰角が 30 度以上であることを意味します。このシナリオでは、カメラが現場を正常に撮影できることを意味します。
カメラの視野を視覚化する
fieldOfView
を使用して、衛星 4 の各カメラの視野を視覚化します。
fov = fieldOfView(cam([cam.Name] == "Satellite 4 Camera"))
fov = FieldOfView with properties: LineWidth: 1 LineColor: [1 0.0745 0.6510] VisibilityMode: 'inherit'
輪郭の内側に地理的な場所が存在することは、それが衛星 4 号に搭載されたカメラの視野内にあることを視覚的に確認するものです。
視覚化をカスタマイズする
アクセス視覚化の色を赤に変更します。
ac.LineColor = 'red';
カメラが地理的な場所を撮影できる時間を決定する
accessIntervals
を使用して、各カメラと地理的なサイト間のアクセスがある時間を特定します。カメラで現場を撮影できる時間帯です。
accessIntervals(ac)
ans=30×8 table
Source Target IntervalNumber StartTime EndTime Duration StartOrbit EndOrbit
_____________________ ___________________ ______________ ____________________ ____________________ ________ __________ ________
"Satellite 1 Camera" "Geographical Site" 1 12-May-2020 13:36:00 12-May-2020 13:39:30 210 1 1
"Satellite 1 Camera" "Geographical Site" 2 12-May-2020 15:23:00 12-May-2020 15:25:00 120 2 2
"Satellite 2 Camera" "Geographical Site" 1 12-May-2020 14:30:30 12-May-2020 14:34:30 240 1 1
"Satellite 3 Camera" "Geographical Site" 1 12-May-2020 13:28:30 12-May-2020 13:32:30 240 1 1
"Satellite 4 Camera" "Geographical Site" 1 12-May-2020 13:00:00 12-May-2020 13:02:30 150 1 1
"Satellite 4 Camera" "Geographical Site" 2 12-May-2020 14:46:00 12-May-2020 14:48:30 150 2 2
"Satellite 5 Camera" "Geographical Site" 1 12-May-2020 16:28:30 12-May-2020 16:33:00 270 3 3
"Satellite 6 Camera" "Geographical Site" 1 12-May-2020 17:05:30 12-May-2020 17:09:30 240 3 3
"Satellite 7 Camera" "Geographical Site" 1 12-May-2020 16:20:00 12-May-2020 16:24:30 270 2 3
"Satellite 8 Camera" "Geographical Site" 1 12-May-2020 15:18:00 12-May-2020 15:20:00 120 2 2
"Satellite 8 Camera" "Geographical Site" 2 12-May-2020 17:03:30 12-May-2020 17:07:00 210 3 3
"Satellite 9 Camera" "Geographical Site" 1 12-May-2020 17:55:30 12-May-2020 17:57:00 90 3 3
"Satellite 10 Camera" "Geographical Site" 1 12-May-2020 18:44:30 12-May-2020 18:49:00 270 4 4
"Satellite 11 Camera" "Geographical Site" 1 12-May-2020 18:39:30 12-May-2020 18:44:00 270 4 4
"Satellite 12 Camera" "Geographical Site" 1 12-May-2020 17:58:00 12-May-2020 18:01:00 180 3 3
"Satellite 29 Camera" "Geographical Site" 1 12-May-2020 13:09:30 12-May-2020 13:13:30 240 1 1
⋮
上記の表は、特定のカメラがサイトを撮影できる各間隔の開始時刻と終了時刻で構成されています。各間隔の継続時間は秒単位で報告されます。StartOrbit と EndOrbit は、アクセスの開始時と終了時にカメラが取り付けられている衛星の軌道カウントです。カウントはシナリオ開始時間から開始されます。
play
を使用して、シナリオのシミュレーションを開始時間から終了時間まで視覚化します。カメラが地理的な場所を撮影できるときはいつでも、緑色の線が表示されることがわかります。
play(sc);
システム全体のアクセス率を計算する
各カメラが地理的な場所を撮影できる時間を決定することに加えて、システム全体のアクセス率、つまり、シナリオの開始時間から終了時間までに少なくとも 1 つの衛星が場所を撮影できる時間の割合を決定することも必要です。これは次のように計算されます。
各カメラについて、
accessStatus
を使用してサイトへのアクセス状況履歴を計算します。特定のカメラの場合、これは論理値の行ベクトルであり、ベクトル内の各要素は特定の時間サンプルに対応するアクセス ステータスを表します。True
の値は、カメラがその特定の時間サンプルでサイトを撮影できることを示します。各カメラのサイトへのアクセスに対応するすべての行ベクトルに対して論理
OR
を実行します。これにより、論理値の単一行ベクトルが生成されます。このベクトルでは、少なくとも 1 台のカメラが、1 つのシナリオ サンプル時間である 30 秒間、対応する時間サンプルでサイトを撮影できる場合に、特定の要素が true になります。ベクトル内で値が
True
である要素の数を数えます。この量に 30 秒のサンプル時間を掛けて、少なくとも 1 台のカメラがサイトを撮影できる合計時間 (秒単位) を決定します。この量をシナリオ期間の 6 時間で割り、100 を掛けると、システム全体のアクセス率が算出されます。
for idx = 1:numel(ac) [s,time] = accessStatus(ac(idx)); if idx == 1 % Initialize system-wide access status vector in the first iteration systemWideAccessStatus = s; else % Update system-wide access status vector by performing a logical OR % with access status for the current camera-site access % analysis systemWideAccessStatus = or(systemWideAccessStatus,s); end end
plot
を使用して、システム全体のアクセス ステータスを時間に対してプロットします。
plot(time,systemWideAccessStatus,"LineWidth",2); grid on; xlabel("Time"); ylabel("System-Wide Access Status");
システム全体のアクセス ステータスが 1 (True
) の場合、少なくとも 1 台のカメラがサイトを撮影できます。
nnz
を使用して、値が True
である systemWideAccessStatus
内の要素の数を決定します。
n = nnz(systemWideAccessStatus)
n = 203
少なくとも 1 台のカメラがサイトを撮影できる合計時間を決定します。これは、True
要素の数にシナリオのサンプル時間を掛けることによって実現されます。
systemWideAccessDuration = n*sc.SampleTime % seconds
systemWideAccessDuration = 6090
seconds
を使用してシナリオの合計期間を計算します。
scenarioDuration = seconds(sc.StopTime - sc.StartTime)
scenarioDuration = 21600
システム全体のアクセス率を計算します。
systemWideAccessPercentage = (systemWideAccessDuration/scenarioDuration)*100
systemWideAccessPercentage = 28.1944
カメラで地理的な場所を追跡することでシステム全体のアクセス率を向上させる
衛星のデフォルトの姿勢構成は、ヨー軸が天底(地球上の衛星の真下の点)に向かって真下を向くようになっています。デフォルトではカメラはヨー軸に沿って配置されているため、カメラも真下を向いています。その結果、カメラの仰角が 30 度を下回る前に、地理的な場所がカメラの視野外になります。したがって、累積アクセス率はカメラの視野によって制限されます。
代わりに、カメラが常に地理的な場所を向いている場合、地球が視線を遮らない限り、その場所は常にカメラの視野内にあります。その結果、システム全体のアクセス率は、カメラの視野ではなく、地理的なサイトの MinElevationAngle
によって制限されるようになります。前者の場合、アクセス間隔は、サイトがカメラの視野に入ったときと視野から出たときに開始および終了しました。カメラの仰角が 30 度を超えてからしばらくして視野に入り、仰角が 30 度を下回る前に視野から外れました。ただし、カメラが常に現場に向けられている場合、アクセス間隔は仰角が 30 度を超えたときに開始され、仰角が 30 度を下回ったときに終了するため、間隔の長さが長くなります。したがって、システム全体のアクセス率も増加します。
カメラは衛星にしっかりと取り付けられているため、各衛星は、ヨー軸が地理的な場所を追跡するように、軌道に沿って継続的に方向を変える必要があります。カメラはヨー軸に沿って配置されているため、カメラも現場に向けられます。pointAt
を使用して、各衛星のヨー軸が地理的な場所を追跡するようにします。
pointAt(sat,geoSite);
システム全体のアクセス率を再計算します。
% Calculate system-wide access status for idx = 1:numel(ac) [s,time] = accessStatus(ac(idx)); if idx == 1 % Initialize system-wide access status vector in the first iteration systemWideAccessStatus = s; else % Update system-wide access status vector by performing a logical OR % with access status for the current camera-site combination systemWideAccessStatus = or(systemWideAccessStatus,s); end end % Calculate system-wide access percentage n = nnz(systemWideAccessStatus); systemWideAccessDuration = n*sc.SampleTime; systemWideAccessPercentageWithTracking = (systemWideAccessDuration/scenarioDuration)*100
systemWideAccessPercentageWithTracking = 38.3333
システム全体のアクセス率は約36%向上しました。これは、カメラが地理的な場所を継続的に向けている結果です。これは、play
を再度使用することで視覚化できます。
play(sc)
カメラが地理的な場所を追跡しているため、カメラが真下を向いていないため、視野の輪郭は円形ではなくなります。
例の検証
この例では、地上局と衛星のコンスタレーションに搭載された円錐形センサー間のアクセス分析を設定する方法を示しました。円錐形のセンサーは衛星に搭載されたカメラを表し、地上局は撮影対象となる地理的場所を表します。アクセス解析を使用して、衛星搭載カメラが地理的な場所を撮影できる時間を決定しました。さらに、システム全体のアクセス率が計算され、6 時間の間に少なくとも 1 つの衛星がサイトを撮影できる時間の割合が決定されました。これらの結果はカメラが向いている方向によって異なることがわかりました。
これらの結果は、以下の要素によっても決まります。
衛星の軌道
地理的サイトの
MinElevationAngle
衛星に対するカメラの設置位置と位置
カメラが地理的な場所を継続的に向いていないときのカメラの視野(
MaxViewAngle
)
上記のパラメータを要件に合わせて変更し、アクセス間隔とシステム全体のアクセス率への影響を確認します。衛星の軌道は、satellite
を使用してケプラーの軌道要素を明示的に指定することで変更できます。さらに、カメラは衛星とは独立して回転できる gimbals
に取り付けることもできます。この方法では、衛星を真下に向けたまま(デフォルトの動作)、カメラが地理的な場所を独立して追跡するようにジンバルを構成できます。
参考
datetime
| satelliteScenario
| satelliteScenarioViewer
| Satellite
| GroundStation