ConicalSensor
Description
ConicalSensor
defines a conical sensor object belonging to a
satellite scenario.
Conical sensor is a generic ground truth sensor. You can understand the use of a conical
sensor in Satellite Constellation Access to Ground Station.
You can use the conical sensor to approximate an antenna, camera or any other sensor. You can
set its MaxViewAngle which defines the field of view to the antenna beamwidth, and use
it with Access
analysis.
Creation
You can create the ConicalSensor
object using the conicalSensor
object function
of the Satellite
, GroundStation
, Platform
(Satellite Communications Toolbox), or
Gimbal
objects.
Properties
Name
— Conical sensor name
"Conical sensor idx"
(default) | string scalar | string vector | character vector | cell array of character vectors
You can set this property only when calling the conicalSensor
function. After you call the conicalSensor
function, this property
is read-only.
Conical sensor name, specified as a name-value argument consisting of
'Name'
and a string scalar, string vector, character vector, or a
cell array of character vectors.
If you are adding only one conical sensor, specify
Name
as a string scalar or a character vector.If you are adding multiple conical sensors, specify
Name
as a string scalar, character vector, string vector, or a cell array of character vectors. All conical sensors that you add as a string scalar or a character vector are assigned the same specified name. The number of elements in the string vector or cell array of character vectors must equal the number of conical sensors that you are adding. Each conical sensor is assigned the corresponding name from the vector or cell array.
In the default value, idx is the ID assigned by the satellite scenario.
Data Types: char
| string
ID
— ConicalSensor ID assigned by simulator
real positive scalar
This property is set internally by the simulator and is read-only.
ConicalSensor ID assigned by the simulator, specified as a positive scalar.
MountingLocation
— Mounting location with respect to parent
[0; 0; 0]
(default) | three-element vector | matrix
Mounting location with respect to the parent object in meters, specified as a
three-element vector or a matrix. The position vector is specified in the
body frame of the input parent
.
If you are adding one conical sensor,
MountingLocation
is a three-element vector. The elements specify the x, y, and z components of the Cartesian coordinates in the body frame of conical sensor.If you are adding multiple conical sensors,
MountingLocation
can be a three-element vector or a matrix. When specified as a vector, the same set of mounting locations are assigned to all specified conical sensors. When specified as a matrix,MountingLocation
must contain three rows and the same number of columns as the conical sensors. The columns correspond to the mounting location of each specified conical sensor and the rows correspond to the mounting location coordinates in the parent body frame.
When the AutoSimulate
property of the satellite scenario is
false
, you can modify the
MountingLocation
property only when SimulationStatus
is NotStarted
. You
can use the restart
function to reset
SimulationStatus
to
NotStarted
, but doing so erases the simulation
data.
Data Types: double
MountingAngles
— Mounting orientation with respect to parent object
[0; 0; 0]
(default) | three-element row vector of positive numbers | matrix
Mounting orientation with respect to parent object in degrees, specified as a three-element row vector of positive numbers. The elements of the vector correspond to yaw, pitch, and roll, in that order. Yaw, pitch, and roll are positive rotations about the z-axis, intermediate y-axis, and intermediate x-axis of the parent.
If you are adding one conical sensor,
MountingAngles
is a three-element vector.If you are adding multiple conical sensors,
MountingAngles
can be a three-element vector or a matrix. When specified as a vector, the same set of mounting angles are assigned to all specified conical sensors. When specified as a matrix,MountingAngles
must contain three rows and the same number of columns as the conical sensors. The columns correspond to the mounting angles of each specified conical sensor and the rows correspond to the yaw, pitch, and roll angles in the parent body frame.
When the AutoSimulate
property of the satellite scenario is
false
, you can modify the MountingAngles
property only when SimulationStatus
is NotStarted
. You can use the
restart
function to
reset SimulationStatus
to NotStarted
, but doing
so erases the simulation data.
Example: [0; 30; 60]
Data Types: double
MaxViewAngle
— Field of view angle
30
(default) | scalar in the range [0, 180] | vector
Field of view angle in degrees, specified as a scalar in the range [0, 180] or a vector.
If you add one conical sensor,
MaxViewAngle
must be a scalar.If you add multiple conical sensors,
MaxViewAngle
can be a scalar or a vector. WhenMaxViewAngle
is a scalar, the same field of view angle is assigned to all conical sensors that you are adding. WhenMaxViewAngle
is a vector, the length ofMaxViewAngle
must equal the number of conical sensors in the parent. Each element ofMaxViewAngle
is assigned to the specified corresponding conical sensor.
When the AutoSimulate
property of the satellite scenario is
false
, you can modify MaxViewAngle
while the
SimulationStatus
is NotStarted
or
InProgress
.
Data Types: double
Accesses
— Access analysis objects
row vector of Access
objects
You can set this property only when calling access
.
After you call access
, this property is
read-only.
Access analysis objects, specified as a row vector of
Access
objects.
CoordinateAxes
— Coordinate axes triad graphic object
CoordinateAxes
object (default)
You can set this property only when calling coordinateAxes
.
After you call coordinateAxes
,
this property is read-only.
Coordinate axes triad graphic object, specified as CoordinateAxes
object.
FieldOfView
— Field of view objects
row vector of FieldOfView
objects
You can set this property only when calling ConicalSensor
. After you
call ConicalSensor
, this property is read-only.
Field of view objects, specified as a scalar of FieldOfView
objects.
Note
The properties Name
,
MountingLocation
, MountingAngles
, and MaxViewAngle
can be specified as name-value arguments in the
conicalSensor
object
function. The size of specified name-value pairs determines the number of conical sensors
that you can specify. Refer to these properties to understand how they must be defined when
specifying multiple conical sensors.
Object Functions
aer | Calculate azimuth angle, elevation angle, and range of another satellite or ground station in NED frame |
access | Add access analysis objects to satellite scenario |
fieldOfView | Visualize field of view of conical sensor |
coordinateAxes | Visualize coordinate axes triad of satellite scenario assets |
Examples
Calculate Maximum Revisit Time of Satellite
Create a satellite scenario with a start time of 15-June-2021 8:55:00 AM UTC and a stop time of five days later. Set the simulation sample time to 60
seconds.
startTime = datetime(2021,6,21,8,55,0);
stopTime = startTime + days(5);
sampleTime = 60; % seconds
sc = satelliteScenario(startTime,stopTime,sampleTime)
sc = satelliteScenario with properties: StartTime: 21-Jun-2021 08:55:00 StopTime: 26-Jun-2021 08:55:00 SampleTime: 60 AutoSimulate: 1 Satellites: [1×0 matlabshared.satellitescenario.Satellite] GroundStations: [1×0 matlabshared.satellitescenario.GroundStation] Platforms: [1×0 matlabshared.satellitescenario.Platform] Viewers: [0×0 matlabshared.satellitescenario.Viewer] AutoShow: 1
Add a satellite to the scenario using Keplerian orbital elements.
semiMajorAxis = 7878137; % meters eccentricity = 0; inclination = 50; % degrees rightAscensionOfAscendingNode = 0; % degrees argumentOfPeriapsis = 0; % degrees trueAnomaly = 50; % degrees sat = satellite(sc,semiMajorAxis,eccentricity,inclination,rightAscensionOfAscendingNode, ... argumentOfPeriapsis,trueAnomaly)
sat = Satellite with properties: Name: Satellite 1 ID: 1 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] Eclipse: [1x0 Aero.satellitescenario.Eclipse] GroundTrack: [1x1 matlabshared.satellitescenario.GroundTrack] Orbit: [1x1 matlabshared.satellitescenario.Orbit] CoordinateAxes: [1x1 matlabshared.satellitescenario.CoordinateAxes] OrbitPropagator: sgp4 MarkerColor: [0.059 1 1] MarkerSize: 6 ShowLabel: true LabelFontColor: [1 1 1] LabelFontSize: 15 Visual3DModel: Visual3DModelScale: 1
Add a ground station, which represents the location to be photographed, to the scenario.
gs = groundStation(sc,Name="Location to Photograph", ... Latitude=42.3001,Longitude=-71.3504) % degrees
gs = GroundStation with properties: Name: Location to Photograph ID: 2 Latitude: 42.3001 degrees Longitude: -71.3504 degrees Altitude: 0 meters MinElevationAngle: 0 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] Eclipse: [1x0 Aero.satellitescenario.Eclipse] CoordinateAxes: [1x1 matlabshared.satellitescenario.CoordinateAxes] MarkerColor: [1 0.4118 0.1608] MarkerSize: 6 ShowLabel: true LabelFontColor: [1 1 1] LabelFontSize: 15
Add a gimbal to the satellite. You can steer this gimbal independently of the satellite.
g = gimbal(sat)
g = Gimbal with properties: Name: Gimbal 3 ID: 3 MountingLocation: [0; 0; 0] meters MountingAngles: [0; 0; 0] degrees ConicalSensors: [1x0 matlabshared.satellitescenario.ConicalSensor] Transmitters: [1x0 satcom.satellitescenario.Transmitter] Receivers: [1x0 satcom.satellitescenario.Receiver] CoordinateAxes: [1x1 matlabshared.satellitescenario.CoordinateAxes]
Track the location to be photographed using the gimbal.
pointAt(g,gs);
Add a conical sensor to the gimbal. This sensor represents the camera. Set the field of view to 60 degrees.
camSensor = conicalSensor(g,MaxViewAngle=60)
camSensor = ConicalSensor with properties: Name: Conical sensor 4 ID: 4 MountingLocation: [0; 0; 0] meters MountingAngles: [0; 0; 0] degrees MaxViewAngle: 60 degrees Accesses: [1x0 matlabshared.satellitescenario.Access] FieldOfView: [0x0 matlabshared.satellitescenario.FieldOfView] CoordinateAxes: [1x1 matlabshared.satellitescenario.CoordinateAxes]
Add access analysis to the conical sensor between the camera and the location to be photographed.
ac = access(camSensor,gs)
ac = Access with properties: Sequence: [4 2] LineWidth: 3 LineColor: [0.3922 0.8314 0.0745]
Visualize the field of view of the camera by using the Satellite Scenario Viewer.
v = satelliteScenarioViewer(sc); fieldOfView(camSensor);
Determine the intervals during which the camera can see the geographical site.
t = accessIntervals(ac)
t=35×8 table
Source Target IntervalNumber StartTime EndTime Duration StartOrbit EndOrbit
__________________ ________________________ ______________ ____________________ ____________________ ________ __________ ________
"Conical sensor 4" "Location to Photograph" 1 21-Jun-2021 10:38:00 21-Jun-2021 10:55:00 1020 1 2
"Conical sensor 4" "Location to Photograph" 2 21-Jun-2021 12:36:00 21-Jun-2021 12:58:00 1320 2 3
"Conical sensor 4" "Location to Photograph" 3 21-Jun-2021 14:37:00 21-Jun-2021 15:01:00 1440 3 4
"Conical sensor 4" "Location to Photograph" 4 21-Jun-2021 16:41:00 21-Jun-2021 17:04:00 1380 5 5
"Conical sensor 4" "Location to Photograph" 5 21-Jun-2021 18:44:00 21-Jun-2021 19:07:00 1380 6 6
"Conical sensor 4" "Location to Photograph" 6 21-Jun-2021 20:46:00 21-Jun-2021 21:08:00 1320 7 7
"Conical sensor 4" "Location to Photograph" 7 21-Jun-2021 22:50:00 21-Jun-2021 23:04:00 840 8 8
"Conical sensor 4" "Location to Photograph" 8 22-Jun-2021 09:51:00 22-Jun-2021 10:02:00 660 13 13
"Conical sensor 4" "Location to Photograph" 9 22-Jun-2021 11:46:00 22-Jun-2021 12:07:00 1260 14 15
"Conical sensor 4" "Location to Photograph" 10 22-Jun-2021 13:46:00 22-Jun-2021 14:10:00 1440 15 16
"Conical sensor 4" "Location to Photograph" 11 22-Jun-2021 15:49:00 22-Jun-2021 16:13:00 1440 16 17
"Conical sensor 4" "Location to Photograph" 12 22-Jun-2021 17:53:00 22-Jun-2021 18:16:00 1380 18 18
"Conical sensor 4" "Location to Photograph" 13 22-Jun-2021 19:55:00 22-Jun-2021 20:18:00 1380 19 19
"Conical sensor 4" "Location to Photograph" 14 22-Jun-2021 21:58:00 22-Jun-2021 22:16:00 1080 20 20
"Conical sensor 4" "Location to Photograph" 15 23-Jun-2021 10:56:00 23-Jun-2021 11:16:00 1200 26 27
"Conical sensor 4" "Location to Photograph" 16 23-Jun-2021 12:56:00 23-Jun-2021 13:19:00 1380 27 28
⋮
Calculate the maximum revisit time in hours.
startTimes = t.StartTime;
endTimes = t.EndTime;
revisitTimes = hours(startTimes(2:end) - endTimes(1:end-1));
maxRevisitTime = max(revisitTimes) % hours
maxRevisitTime = 12.666666666666666
Visualize the revisit times that the camera photographs of the location.
play(sc);
Version History
Introduced in R2021a
See Also
Objects
Functions
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)