This disclosure relates generally to orbital space vehicles and, more particularly, to methods and apparatus to minimize command dynamics of a satellite.
Space vehicles such as satellites or resident space objects (RSO) typically utilize actuators such as thrusters and/or momentum devices to maintain an orbit around a celestial body. Typically, a satellite or an RSO orbiting the Earth employs deployable solar panels to power onboard electronics. The onboard electronics provide critical functionalities such as determining a position of a target of interest, determining a position of the satellite, etc. The onboard electronics control an ability of the satellite to simultaneously point to the target of interest while keeping the solar panels pointed toward a power source such as the Sun.
Typical satellites maintain an orbit around a celestial body by controlling thrusters and/or momentum devices using commands generated using attitude steering laws. Typically, attitude steering laws involve calculating two vectors to describe a full rotation representation for an orbit. As a satellite pursues an orbit, the two vectors may change with respect to each other, bringing the two vectors closer together in some instances, and pushing the two vectors farther apart in other instances. As the two vectors change with respect to each other, the attitude steering laws may generate commands that produce undesirable satellite behavior due to practical limitations of the satellite and various considerations that influence calculations of the two vectors.
An example apparatus includes a steering law module to calculate a first set of vectors to maneuver a space vehicle, and calculate a second set of vectors based on projecting the first set of vectors onto a fixed plane. The apparatus further includes an attitude controller to generate an attitude command based on the first and the second sets of vectors to prevent an unplanned rotation by the space vehicle.
An example method includes calculating a first set of vectors to maneuver a space vehicle, calculating a second set of vectors based on projecting the first set of vectors onto a fixed plane, and generating an attitude command based on the first and the second sets of vectors to prevent an unplanned rotation by the space vehicle.
An example tangible computer-readable storage medium comprising instructions that, when executed, cause a machine to at least calculate a first set of vectors to maneuver a space vehicle, calculate a second set of vectors based on projecting the first set of vectors onto a fixed plane, and generate an attitude command based on the first and the second sets of vectors to prevent an unplanned rotation by the space vehicle.
Wherever possible, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts. The figures are not to scale.
Methods and apparatus to minimize command dynamics of a satellite are disclosed herein. Typically, spacecraft or space vehicles such as satellites or resident space objects (RSO) utilize actuators such as thrusters and/or momentum devices to maintain an orbit around a celestial body such as the Earth. For example, a satellite may maintain a geosynchronous orbit (GEO) around the Earth to transmit, relay, and/or repeat communications from another satellite to a target on the Earth (e.g., an antenna station in Los Angeles). The satellite may maintain the orbit by controlling the thrusters and/or the momentum devices of the satellite by using commands generated using attitude steering laws.
Typically, an attitude steering law involves calculating two vectors (e.g., a set of nominal vectors) to describe a full rotation representation for a satellite to complete an orbit. The two vectors may be a primary vector (e.g., a nominal primary vector) and a secondary vector (e.g., a nominal secondary vector). Attitude steering laws may be used to generate commands to control an attitude of a satellite. As used herein, the term “attitude” refers to an orientation and/or a position in space with respect to one or more celestial bodies (e.g., the Earth, the Sun, etc.). A primary vector may be a vector from a center of gravity of the satellite pointing towards a target (e.g., a point on the Earth). A secondary vector may be a vector from the center of gravity of the satellite pointing towards a power source (e.g., a light source from a celestial body, the Sun, etc.). As the satellite moves along the orbit, the two vectors may change with respect to each other, bringing the two vectors closer together in some instances, and pushing the two vectors farther apart in other instances. As the two vectors change with respect to each other, the attitude steering laws may be used to generate commands that produce undesirable satellite behavior due to practical limitations of the satellite and various considerations that enter calculations of the two vectors.
In some examples, an attitude steering law is used to calculate two vectors based on inertial reference frames. For example, an attitude steering law may be used to calculate a primary vector and a secondary vector based on targets on the Earth and the Sun, where the Earth and the Sun are fixed in time (i.e., time-independent) and space (i.e., location-independent). For example, if an accelerometer were placed on the Earth and/or the Sun, the accelerometer would detect zero acceleration. Due to the inertial reference frames (e.g., the Earth, the Sun, etc.) and a cyclical nature of a satellite traveling along an orbit, an angle between the two vectors may produce a singularity condition. As used herein, the term “singularity condition” may refer to a condition where two vectors (e.g., the primary vector and the secondary vector) are collinear to each other, and a vector cross-product of the two vectors produces a vector of magnitude zero. For example, twice during an orbit (e.g., twice during an orbit around the Earth), the satellite may be in line with the Earth and the Sun. Thus, once an orbit, the angle between the two vectors may be 0 degrees because the two vectors become collinear with respect to each other. Similarly, once an orbit, the angle between the two vectors may be 180 degrees because the two vectors become collinear with respect to each other. At these moments, the attitude steering law may be used to generate a vector of magnitude zero, thus producing a singularity condition.
During a singularity condition, an attitude steering law of a satellite may produce a command (e.g., an attitude command) to slew the satellite 180 degrees about a primary vector of the satellite at an instantaneous rate. Further, as the satellite experiences two singularity conditions for every orbit, the satellite slews 180 degrees twice per orbit, effectively forcing a rotation of 360 degrees per orbit about the primary vector of the satellite. For example, as the primary vector and the secondary vector of the satellite move away from orthogonality, a rate (e.g., a command rate, a thrust rate, etc.) required to follow the commands generated by the attitude steering law may approach infinity. As the commands approach infinity, the attitude steering law may quantitatively result in the calculation of a 180-degree rotation at an instantaneous rate. The instantaneous rate may exceed a maneuvering capability of the satellite and produce undesirable command dynamics.
Example satellite controller apparatus disclosed herein are operative to minimize command dynamics of a satellite. As used herein, the term “command dynamics” refers to one or more effects of a space vehicle performing a command generated using an attitude steering law. For example, an effect may be a payload of the satellite that is not able to update a vector (e.g., a primary vector, a secondary vector, etc.) fast enough to compensate for a 180-degree rotation at an instantaneous rate. In another example, an effect may be one or more bus attitude actuators of the satellite that are unable to drive attitude control error to zero at all times.
Example satellite controller apparatus disclosed herein minimize command dynamics of a satellite by calculating and using a set of alternate vectors during a time period when a singularity takes place. Alternatively, the example satellite controller apparatus may use a combination (e.g., a blending) of the set of alternate vectors and the set of nominal vectors (e.g., the nominal primary vector and the nominal secondary vector). The example satellite controller apparatus may determine when a singularity occurs based on projecting a primary vector and a secondary vector of the satellite from a three-dimensional (3-D) plane to a two-dimensional (2-D) plane. The example satellite controller apparatus may calculate a vector normal to the projected vectors (e.g., the projected primary and secondary vectors) and an angle between the projected vectors. The example satellite controller apparatus may determine that a singularity occurs as the angle between the projected vectors approaches 0 degrees or 180 degrees.
Example satellite controller apparatus disclosed herein calculate a set of alternate vectors to the set of nominal vectors. For example, in addition to the nominal primary vector, the nominal secondary vector, the nominal normal vector, etc., the satellite controller apparatus may calculate an alternate primary vector, an alternate secondary vector, an alternate normal vector, etc. Transitioning between the nominal set of vectors and the alternate set of vectors may result in smoothed maneuvers of the satellite by avoiding unplanned jerks, rotations, slews, etc. of the satellite. The example satellite controller apparatus may use the set of nominal vectors, the set of alternate vectors, and/or a combination thereof to minimize command dynamics of a satellite.
In operation, the satellite 100 may communicate with external systems (e.g., transmit as well as receive) via the antennas 106 to maneuver the satellite 100 between orbital paths and/or orbital heights and/or to provide data to external ground-based systems, for example. In particular, the satellite 100 of the illustrated example is maneuvered by activating (e.g., firing) the thrusters 112, which are electric (e.g., ion-based, an ion propulsion system, xenon-based thrusters, etc.). For example, the satellite 100 may vary a duration and/or a pulse of different thrusters of the thrusters 112 to maneuver the satellite 100, and/or control an attitude of the example satellite 100 relative to a celestial body (e.g., a space body) that the satellite 100 orbits.
In the illustrated example of
In the illustrated example of
In the illustrated example of
In some examples, the orientation module 204 determines an orbital reference frame plane based on the current primary vector of the satellite 100. In some examples, the orientation module 204 calculates a principle sensitive axis (e.g., the axis 116) of the satellite 100. In other examples, the orientation module 204 accesses mass/inertia data and/or a pre-defined sensitive axis of the satellite 100 from the database 214. In yet other examples, the sensitive principle axis is assigned (e.g., received from, continuously received from, uploaded from, etc.) the ground-based communication system 216. In some examples, the orientation module 204 calculates an attitude shift (e.g., an attitude delta) of the satellite 100 required to orient the principle sensitive axis of the satellite 100 to the orbital reference frame plane. Additionally or alternatively, the example orientation module 204 may calculate an attitude of the satellite 100 in which the principle sensitive axis is oriented to the orbital reference frame plane and a thrust vector of the satellite 100 is perpendicular to the principle sensitive axis to move the satellite 100 into the higher orbit while reducing (e.g., minimizing) gravity gradient torques acting on the satellite. Alternatively, the example orientation module 204 may be a manually controlled interface via the ground-based communication system 216. The example orientation module 204 may store data (e.g., orientation coordinates) in and/or retrieve data from the example database 214.
In the illustrated example of
In some examples, the steering law module 206 generates a nominal normal vector. For example, the steering law module 206 may calculate a vector normal (e.g., a nominal normal vector) to both the nominal primary vector and the nominal secondary vector as described below in Equation (1):
{right arrow over (v)}norm={right arrow over (v)}p×{right arrow over (v)}s Equation (1)
In the illustrated example of Equation (1) above, the variable -norm represents a nominal normal vector, the variable {right arrow over (v)}p represents a nominal primary vector, and the variable {right arrow over (v)}s represents a nominal secondary vector.
In some examples, the steering law module 206 normalizes the nominal normal vector {right arrow over (v)}norm as described below in Equation (2):
In the illustrated example of Equation (2) above, the variable p represents a nominal normal unit vector, and the variable {right arrow over (v)}norm represents the nominal normal vector. In some instances, the steering law module 206 creates an attitude representation triad for a target of interest (e.g., a point on the Earth) with respect to the inertial reference frame (e.g., the Earth). The example steering law module 206 may generate the attitude representation triad as described below in Equation (3) and Equation (4):
{right arrow over (v)}3={right arrow over (v)}p Equation (3)
{right arrow over (v)}1={right arrow over (v)}norm×{right arrow over (v)}p Equation (4)
In the illustrated example of Equation (3) above, the variable {right arrow over (v)}3 represents a third vector of the attitude representation triad, and the variable {right arrow over (v)}p represents the primary vector. In the illustrated example of Equation (4) above, the variable {right arrow over (v)}norm represents the nominal normal vector as calculated above in Equation (1), and the variable {right arrow over (v)}p represents the primary vector. In the illustrated example of Equation (4) above, the variable {right arrow over (v)}1 represents a first vector of the attitude representation triad based on a vector cross-product between {right arrow over (v)}norm and {right arrow over (v)}p.
To complete the attitude representation triad, the example steering law module 206 may calculate a second vector {right arrow over (v)}2 based on {right arrow over (v)}1 and {right arrow over (v)}3 as determined by Equation (3) and Equation (4) above. The example steering law module 206 may calculate {right arrow over (v)}2 as described below in Equation (5):
{right arrow over (v)}2={right arrow over (v)}3×{right arrow over (v)}1 Equation (5)
The example steering law module 206 may generate the attitude representation using a transformation matrix (e.g., a direction cosine matrix) as described below in Equation (6):
In the illustrated example of Equation (6), the variable CtI represents a direction cosine matrix that transforms vectors specified in an inertial frame I to a target frame t. In the illustrated example of Equation (6), the superscript of the vectors in the matrix represent the first, second, and third element of the vector specified by the subscript. For example, the variable {right arrow over (v)}21 represents the first element of the vector {right arrow over (v)}2.
In some examples, the boresight vector {right arrow over (v)}bs is not aligned with a geometric body frame axis (e.g., an axis of the satellite body 102). The example steering law module 206 may perform a second rotation to derive a full rotation tensor that transforms vectors from the inertial frame to the body frame as described below in Equation (7):
CBI=CBtCtI Equation (7)
In the illustrated example of Equation (7) above, the variable CBI represents a direction cosine matrix of the body frame (e.g., the satellite body 102) with respect to the inertial frame (e.g., the target on the planet 218). In the illustrated example of Equation (7) above, the variable CBt represents a direction cosine matrix of the body frame with respect to the boresight frame, and the variable CtI is described above in Equation (6). The example steering law module 206 may transmit the direction cosine matrices as described above in Equation (6) and Equation (7) to the example attitude controller 208 to maneuver the satellite 100.
In some examples, the steering law module 206 calculates a set of alternate vectors to minimize command dynamics due to a singularity. For example, the steering law module 206 may calculate a nominal normal vector {right arrow over (n)}nominal, and an adjusted normal vector {right arrow over (n)}adjusted based on the set of nominal vectors, the set of alternate vectors, and/or a combination thereof. For example, the steering law module 206 may calculate the nominal normal vector {right arrow over (n)}nominal of the satellite 100 as described below in Equation (8):
{right arrow over (n)}nominal={right arrow over (v)}p×{right arrow over (v)}s Equation (8)
In the illustrated example of Equation (8) above, the variable {right arrow over (n)}nominal represents a nominal normal vector, the variable {right arrow over (v)}p represents a nominal primary vector, and the variable {right arrow over (v)}s represents a nominal secondary vector. In the illustrated example of Equation (8) above, the nominal normal vector {right arrow over (n)}nominal is equal to a cross-product of the nominal primary vector {right arrow over (v)}p and the nominal secondary vector {right arrow over (v)}s, or normal to {right arrow over (v)}p and {right arrow over (v)}s. In the illustrated example of Equation (8) above, {right arrow over (n)}nominal is equal to the nominal normal vector {right arrow over (v)}norm as described above in Equation (1). Alternatively, the nominal normal vector {right arrow over (n)}nominal may be equal to a vector cross-product of a primary vector and a secondary vector not described above in Equation (1).
In some examples, the steering law module 206 calculates the alternate normal vector {right arrow over (n)}alternate, which may be used as an alternative to the nominal normal vector {right arrow over (n)}nominal. The example steering law module 206 may calculate {right arrow over (n)}alternate, where {right arrow over (n)}alternate is normal to the primary vector {right arrow over (n)}p as described above in Equation (1), but not necessarily normal to the secondary vector {right arrow over (n)}s as described above in Equation (1). Alternatively, {right arrow over (n)}alternate may be normal to {right arrow over (n)}s.
In some examples, the steering law module 206 calculates {right arrow over (n)}alternate by determining an intersection of two planes (e.g., geometric planes) and a direction (e.g., a vector direction). In response to determining the intersection, the example steering law module 206 may determine an ideal {right arrow over (n)}alternate, where the ideal {right arrow over (n)}alternate produces minimum slew. For example, the steering law module 206 may define a first geometric plane that is normal to {right arrow over (v)}p. The steering law module 206 may define a second geometric plane that is normal to the direction of {right arrow over (v)}norm as vectors {right arrow over (v)}p and {right arrow over (v)}s approach a separation extremum or a singularity point. The example steering law module 206 may determine a direction of a vector along a line formed by the first and second geometric planes, where the direction is chosen to produce a minimum angle between {right arrow over (n)}nominal and {right arrow over (n)}alternate. The example steering law module 206 may use {right arrow over (n)}alternate as an aid for producing {right arrow over (n)}adjusted, therefore the steering law module 206 automatically projects {right arrow over (n)}alternate to be perpendicular to {right arrow over (n)}p. Thus, {right arrow over (n)}alternate provides a midpoint between the attitudes equidistant in time before and after a separation extremum.
In some examples, the steering law module 206 determines that an exact calculation of {right arrow over (n)}alternate is not necessary, as any vector that satisfies the first example criterion and is less than 90 degrees from the nominal normal vector {right arrow over (n)}nominal is a satisfactory choice for {right arrow over (n)}alternate. As a result, a sensitivity of {right arrow over (n)}alternate may not be significant. In some examples, the steering law module 206 calculates {right arrow over (n)}alternate to provide a midpoint between a first attitude for the duration of time t prior to the singularity and a second attitude for the same duration of time t after the singularity. For example, the steering law module 206 may calculate {right arrow over (n)}alternate to be a vector normal to an orbital plane of the satellite 100.
In some examples, the steering law module 206 estimates when a singularity occurs. For example, a singularity may occur when an angular separation between the nominal primary vector {right arrow over (n)}p and the nominal secondary vector {right arrow over (n)}s is at a minimum angular separation (e.g., approximately 0 degrees), or at a maximum angular separation (e.g., approximately 180 degrees). However, calculating an angular separation extremum (e.g., a minimum or a maximum angular separation) may be difficult due to one or more considerations when calculating {right arrow over (n)}p, {right arrow over (n)}s, etc. For example, {right arrow over (n)}p may be a function of an orbit (e.g., a GEO), an orbital position, a random vector chosen at any time by a user, etc. of the satellite 100. In another example, {right arrow over (n)}s may be a function of the orbit, the orbital position, a user chosen direction (e.g., a sun vector, a moon vector, a relay asset vector, etc.) of the satellite 100. As a result, the example steering law module 206 may determine that the angular separation extremum exists between any interval less than and including [0, 180] degrees, therefore the minimum angular separation and/or the maximum angular separation cannot be hardcoded in the steering law module 206.
Alternatively, the example steering law module 206 may simulate an orbit geometry, one or more nominal vectors (e.g., {right arrow over (n)}p, {right arrow over (n)}s, etc.), etc. prior to executing an attitude command. However, the example steering law module 206 performing a simulation prior to execution may impose implementation restrictions, introduce operation complexities, increase power consumption of the satellite controller 104, etc. However, the examples disclosed herein illustrate apparatus, methods, and articles of manufacture that do not require the example steering law module 206 to perform simulations prior to execution.
In some examples, the steering law module 206 calculates the angular separation extrema in real-time operation. Alternatively, the example steering law module 206 may calculate the angular separation extrema in non-real-time operation (e.g., an offline mode of operation). The example steering law module 206 may calculate the angular separation extrema in real-time operation by transforming {right arrow over (n)}p and {right arrow over (n)}s into transformed vectors corresponding to an orbit fixed frame plane defined via a position vector and/or a velocity vector of a space vehicle (e.g., the satellite 100). As used herein, the term “orbit fixed frame plane” refers to a plane normal to a vector produced by a cross-product of a position vector and a velocity vector. The example steering law module 206 may choose an orbit fixed frame plane because it may be desirable to capture a motion of and {right arrow over (n)}p and {right arrow over (n)}s with respect to the motion of the satellite 100. The example steering law module 206 may project the transformed vectors onto the orbit fixed frame plane subtended by the position vector and/or the velocity vector of the satellite 100. The transformed, projected vectors may include {right arrow over (v)}pproj and {right arrow over (v)}sproj, where {right arrow over (v)}pproj represents the transformed, projected primary vector onto the orbital fixed frame plane, and {right arrow over (v)}sproj represents the transformed, projected secondary vector onto the orbital fixed frame plane. The example steering law module 206 may compute a normal projected vector to the projected vectors via (1) a cross product of the projected vectors, and (2) an angle, θproj, between the projected vectors.
In some examples, the steering law module 206 determines to toggle a sign of the nominal normal vector {right arrow over (n)}nominal when one or more components of the projected vectors (e.g., the normal projected vector) are outside the orbit fixed frame plane. For example, the steering law module 206 may toggle a positive sign of {right arrow over (n)}nominal to a negative sign when a component of the normal projected vector is outside the orbit fixed frame plane. In some instances, a user (e.g., an operator) may manually toggle the sign of {right arrow over (n)}nominal such that the user controls whether {right arrow over (n)}nominal is above or below the orbit fixed frame plane. Additionally or alternatively, the user may override a change in sign of {right arrow over (n)}nominal by the example steering law module 206. In some examples, the steering law module 206 flips the sign of {right arrow over (n)}nominal precisely when the satellite 100 experiences an angular separation extremum to prevent the attitude controller 208 from generating a large, potentially unstable, step command (e.g., a step attitude command).
In some instances, the steering law module 206 calculates the adjusted normal vector {right arrow over (n)}adjusted based on the set of nominal vectors, the set of alternate vectors, and/or a combination thereof. For example, the steering law module 206 may use a weight factor, a, to determine a contribution of the set of nominal vectors and/or a contribution of the set of alternate vectors to calculate {right arrow over (n)}adjusted. In some instances, α is limited to values within a range [0,1]. Alternatively, a may have a value outside the range [0,1]. In some examples, the steering law module 206 calculates {right arrow over (n)}adjusted using a linear method as described below in Equation (9):
{right arrow over (n)}adjusted=((1−α)*{right arrow over (n)}alternate)+(α*{right arrow over (n)}nominal) Equation (9)
In the illustrated example of Equation (9) above, the variable {right arrow over (n)}adjusted represents the adjusted normal vector, the variable a represents the weight factor, the variable {right arrow over (n)}alternate represents the alternate normal vector, and the variable {right arrow over (n)}nominal represents the nominal normal vector. In some examples, each of the vectors described above in Equation (9) are unit vectors and/or are required to be specified in the same coordinate frame. In some instances, the steering law module 206 renormalizes {right arrow over (n)}adjusted after the steering law module 206 calculates {right arrow over (n)}adjusted as described above in Equation (9). Additionally or alternatively, the example steering law module 206 may calculate {right arrow over (n)}adjusted using any other method such as, for example, an exponential method, a random-value generation method, a sinusoidal method, etc.
The example steering law module 206 may calculate α using various mathematical methods. The example steering law module 206 may determine to use a particular method or a combination of methods dependent on one or more factors such as, for example, processing power available to the steering law module 206, latency time requirements for updating parameters of the satellite controller 104, etc. An example method to calculate α may be a linear method as described below in Equation (10):
In the illustrated example of Equation (10) above, the variable a represents the weight factor, and the variable θproj represents the angle between the projected vectors onto the orbit fixed frame plane (e.g., the angle between {right arrow over (v)}pproj and {right arrow over (v)}sproj). In the illustrated example of Equation (10) above, the floor function truncates the decimal of the quantity indicated. The example steering law module 206 may utilize the linear method as described above in Equation (10) to minimize resulting command dynamics while still transitioning fully between the set of nominal vectors and the set of alternate vectors. In the illustrated examples of Equation (9) and Equation (10) above, the steering law module 206 utilizes the set of nominal vectors (e.g., utilizes the nominal normal vector) at 90 and 180 degrees, while utilizing the set of alternate vectors (e.g., utilizes the alternate normal vector) at 0 and 180 degrees. For example, α=1 when θproj=90 degrees, resulting in {right arrow over (n)}adjusted={right arrow over (n)}nominal.
In some examples, the steering law module 206 may calculate α using a sinusoidal method as described below in Equation (11):
In the illustrated example of Equation (11) above, the variable a represents the weight factor, and the variable θproj represents the angle between {right arrow over (v)}pproj and {right arrow over (v)}sproj. In the illustrated example of Equation (11) above, a changes sinusoidally within the range [0,1] based on θproj. In the illustrated example of Equation (9) and Equation (11) above, the steering law module 206 utilizes the set of nominal vectors at 90 and 270 degrees, while utilizing the set of alternate vectors at 0 and 180 degrees.
In some instances, the steering law module 206 calculates a using an exponential method as described below in Equation (12):
α=∥{right arrow over (v)}pproj×{right arrow over (v)}sproj∥x Equation (12)
In the illustrated example of Equation (12) above, the variable a represents the weight factor, the variable {right arrow over (v)}pproj represents the primary vector projected onto the orbit fixed frame plane, and the variable {right arrow over (v)}sproj represents the secondary vector projected onto the orbit fixed frame plane. In the illustrated example of Equation (12) above, the variable x represents a tuning parameter that determines a sharpness of the transition from the set of nominal vectors to the set of the alternate vectors. In the illustrated example of Equation (12) above, α is calculated based on the cross product between the projected vectors raised to the x power. The example steering law module 206 may utilize the exponential method to transition between the set of nominal vectors to the set of alternate vectors at an exact time that the set of nominal vectors are at or near a singularity condition.
In some examples, the steering law module 206 utilizes the exponential method to calculate a value of α that maximizes an alignment of an axis (e.g., the axis 116) of the satellite 100, the satellite body 102, etc. to the nominal secondary vector. For example, the steering law module 206 may use the exponential method to maximize an amount of power generated by the solar panels 108 due to an alignment of one or more components of the satellite 100 to the nominal secondary vector. However, the example steering law module 206 may generate an attitude representation (e.g., a transformation matrix) using the exponential method that results in high command dynamics.
In some examples, the steering law module 206 assigns a value to α to disable flip prevention. For example, the steering law module 206 may assign α=1 to turn off mitigating and/or preventative measures to a singularity (e.g., singularity handling). For example, {right arrow over (n)}adjusted={right arrow over (n)}nominal as described above in Equation (9) when α=1. The example steering law module 206 may turn off singularity handling in sun-synchronous orbits. In another example, the steering law module 206 may assign α=0 to turn off singularity handling. By assigning α=0, the example steering law module 206 generates an attitude representation solely via {right arrow over (n)}alternate. For example, {right arrow over (n)}adjusted={right arrow over (n)}alternate as described above in Equation (9) when α =0. In the illustrated example, when the steering law module 206 calculates an ideal vector for {right arrow over (n)}alternate (e.g., a vector normal to the orbital plane), the steering law module 206 generates an attitude representation corresponding to standard orbit normal steering, where an axis (e.g., the axis 116) of a space vehicle (e.g., the satellite 100) is aligned with the orbital frame. Additionally or alternatively, a user may flip a sign of {right arrow over (n)}nominal prior to the example steering law module 206 calculating α using one or more methods such as, for example, the linear method, the sinusoidal method, and/or the exponential method as described above. Additionally or alternatively, a user may flip a sign of {right arrow over (n)}adjusted to generate an attitude representation corresponding to a space vehicle rotating 180 degrees about a nominal primary vector of the space vehicle. Additionally or alternatively, a user may change a value of α as calculated by the example steering law module 206.
In some instances, a range of values for α is limited to a smaller range than [0,1]. The example steering law module 206 may manipulate α to limit an angular displacement from a nominal normal vector solution with respect to an alternate normal vector solution, or vice versa. For example, the steering law module 206 may manipulate α to enable a space vehicle to slew about a target vector (e.g., a nominal primary vector) by no more than 30 degrees away from orbit normal (e.g., an alternate normal vector). The example steering law module 206 may limit the range to reduce a maximum transition between the set of nominal vectors and the set of alternate vectors. However, a prior simulation of a space vehicle or a constellation (i.e., a related group) of space vehicles for a given orbit may be required to determine an acceptable limited range for α. Alternatively, the example steering law module 206 may calculate (e.g., iteratively calculate) a separation angle between a desired trajectory and a current trajectory of the space vehicle based on {right arrow over (n)}adjusted including components from the set of nominal vectors, the set of alternate vectors, and/or a combination thereof. The example steering law module 206 may determine a value for a based on the separation angle, where the separation angle may be a minimum angle, a maximum angle, etc.
In response to the example steering law module 206 calculating a value for {right arrow over (n)}adjusted, the steering law module 206 determines an attitude representation as described above. For example, the steering law module 206 may determine a transformation matrix representation based on setting {right arrow over (v)}norm={right arrow over (n)}adjusted. The example steering law module 206 may convert the transformation matrix to another format (e.g., quaternion, Euler angles, etc.) based on a format or input requirement for the attitude controller 208. For example, the steering law module 206 may convert the transformation matrix into an attitude quaternion (e.g., a right-handed quaternion where a last element of the quaternion is a scalar element). As used herein, the term “attitude quaternion” is a four-element vector that may be used to encode any rotation in a 3-D coordinate system. The example steering law module 206 may transmit the resulting attitude quaternion to the attitude controller 208 to issue one or more appropriate torque commands to slew a space vehicle. The example steering law module 206 may store data (e.g., components of vectors, weight factors, etc.) in and/or retrieve data from the example database 214.
In the illustrated example of
In the illustrated example of
In the illustrated example of
While an example manner of implementing the satellite controller 104 of
In the illustrated example of
In the illustrated example of
In the illustrated example of
In the illustrated example of
In the illustrated example of
In the illustrated example of
In the illustrated example of
Flowcharts representative of example methods for implementing the example satellite controller 104 of
As mentioned above, the example methods of
At block 606, the example satellite controller 104 calculates a boresight vector. For example, the targeting module 202 may calculate a boresight vector of the satellite 100. At block 608, the example satellite controller 104 calculates a normal vector. For example, the steering law module 206 may calculate a normal vector (e.g., {right arrow over (n)}adjusted) based on a set of nominal vectors, a set of alternate vectors, and/or a combination thereof. At block 610, the example satellite controller 104 normalizes the normal vector. For example, the steering law module 206 may normalize the adjusted normal vector {right arrow over (n)}adjusted. At block 612, the example satellite controller 104 generates an attitude representation triad. For example, the steering law module 206 may generate the attitude representation triad (e.g., {right arrow over (v)}1, {right arrow over (v)}2, and {right arrow over (v)}3). At block 614, the example satellite controller 104 generates an attitude representation. For example, the steering law module 206 may generate a transformation matrix (e.g., a direction cosine matrix), a quaternion, etc.
At block 616, the example satellite controller 104 generates an attitude command. For example, the attitude controller 208 may generate an attitude command based on the transformation matrix. At block 618, the example satellite controller 104 controls a thruster and/or a momentum device of the satellite. For example, the attitude controller 208 may transmit a command to the thrusters 112 to maneuver the satellite 100. At block 620, the example satellite controller 104 determines whether further attitude adjustment is necessary. For example, the attitude controller 208 may determine that an attitude zero is approximately zero. If, at block 620, the example satellite controller 104 determines that further attitude adjustment is necessary, control returns to block 602 to calculate another primary vector of the satellite, otherwise the example method 600 concludes.
At block 706, the example satellite controller 104 determines a sign of a nominal normal vector. For example, the steering law module 206 may determine to toggle a sign of the nominal normal vector based on projecting the nominal primary vector, the nominal secondary vector, etc. to an orbit fixed frame plane. At block 708, the example satellite controller 104 calculates a weight factor. For example, the steering law module 206 may calculate a weight factor α based on the linear method, the sinusoidal method, the exponential method, etc. as described above. At block 710, the satellite controller 104 determines an adjusted normal vector (e.g., {right arrow over (n)}adjusted). For example, the steering law module 206 may calculate an adjusted normal vector based on the nominal normal vector (e.g., {right arrow over (n)}nominal), the alternate normal vector (e.g., {right arrow over (n)}alternate), the weight factor α, etc.
The processor platform 800 of the illustrated example includes a processor 812. The processor 812 of the illustrated example is hardware. For example, the processor 812 can be implemented by one or more integrated circuits, logic circuits, microprocessors or controllers from any desired family or manufacturer.
The processor 812 of the illustrated example includes a local memory 813 (e.g., a cache). The processor 812 of the illustrated example executes the instructions to implement the example targeting module 202, the example orientation module 204, the example steering law module 206, the example attitude controller 208, the example sensor interface 210 and/or, more generally, the example satellite controller 104. The processor 812 of the illustrated example is in communication with a main memory including a volatile memory 814 and a non-volatile memory 816 via a bus 818. The volatile memory 814 may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM), and/or any other type of random access memory device. The non-volatile memory 816 may be implemented by flash memory, and/or any other desired type of memory device. Access to the main memory 814, 816 is controlled by a memory controller.
The processor platform 800 of the illustrated example also includes an interface circuit 820. The interface circuit 820 may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface.
In the illustrated example, one or more input devices 822 are connected to the interface circuit 820. The input device(s) 822 permit(s) a user to enter data and commands into the processor 812. The input device(s) can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, isopoint, and/or a voice recognition system coupled to a ground communication system communicatively coupled to the processor platform 800.
One or more output devices 824 are also connected to the interface circuit 820 of the illustrated example. The output devices 824 can be implemented, for example, by display devices (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display, a cathode ray tube display (CRT), a touchscreen, a tactile output device, a printer and/or speakers) coupled to a ground communication system communicatively coupled to the processing platform 800. The interface circuit 820 of the illustrated example, thus, typically includes a graphics driver card, a graphics driver chip, or a graphics driver processor.
The interface circuit 820 of the illustrated example also includes a communication device such as a transmitter, a receiver, a transceiver, a modem and/or network interface card to facilitate exchange of data with external machines (e.g., computing devices of any kind) via a network 826 (e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, coaxial cable, a cellular telephone system, a satellite communication system, etc.).
The processor platform 800 of the illustrated example also includes one or more mass storage devices 828 for storing software, and/or data. Examples of such mass storage devices 828 include floppy disk drives, hard drive disks, compact disk drives, Blu-ray disk drives, RAID systems, magnetic media, and digital versatile disk (DVD) drives. The example mass storage 828 implements the example database 214.
Coded instructions 832 to implement the methods represented by the flowcharts of
From the foregoing, it will be appreciated that the above disclosed methods, apparatus, and articles of manufacture enable a space vehicle to maneuver in an orbit with minimized command dynamics. The example satellite controller apparatus disclosed herein prevent the space vehicle from generating a command resulting in a large slew angle, an unnecessary yaw flip, an unstable rotation, etc. based on the space vehicle approaching or experiencing a singularity condition. The example satellite controller apparatus disclosed herein enable singularity handling for a space vehicle orbiting a celestial body by calculating a set of alternate vectors during a transfer orbit, a final orbit, etc.
Although certain example methods, apparatus and articles of manufacture have been disclosed herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the claims of this patent.