Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/source/Support/bskReleaseNotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ Version |release|
- Fixed bug with recording message payload entries that are 2D arrays. This bug was introduced with the faster recording
strategy added in version 2.8.0.
- Add a desired relative attitude between spacecraft in :ref:`constraintDynamicEffector`.
- Configured the :ref:`prescribedMotionStateEffector` module for attachment of other state effectors to it
rather than the spacecraft hub.
- Configured the :ref:`spinningBodyOneDOFStateEffector`, :ref:`spinningBodyTwoDOFStateEffector`, and
:ref:`linearTranslationOneDOFStateEffector` modules for optional attachment to the prescribed motion state effector.
- Added two example branching scenarios to illustrate the prescribed motion branching capability. See
:ref:`scenarioPrescribedMotoinWithTranslationBranching` and :ref:`scenarioPrescribedMotoinWithRotationBranching`.


Version 2.8.0 (August 30, 2025)
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
64 changes: 30 additions & 34 deletions examples/scenarioDeployingSolarArrays.py
Original file line number Diff line number Diff line change
Expand Up @@ -252,36 +252,32 @@ def run(show_plots):
array2ElementList.append(prescribedMotionStateEffector.PrescribedMotionStateEffector())
array1ElementList[i].ModelTag = "array1Element" + str(i + 1)
array2ElementList[i].ModelTag = "array2Element" + str(i + 1)
array1ElementList[i].mass = mass_element # [kg]
array2ElementList[i].mass = mass_element # [kg]
array1ElementList[i].IPntPc_P = IElement_PntPc_P # [kg m^2]
array2ElementList[i].IPntPc_P = IElement_PntPc_P # [kg m^2]
array1ElementList[i].r_MB_B = r_M1B_B # [m]
array2ElementList[i].r_MB_B = r_M2B_B # [m]
array1ElementList[i].r_PcP_P = [- radius_array * np.cos(72 * macros.D2R),
array1ElementList[i].setMass(mass_element) # [kg]
array2ElementList[i].setMass(mass_element) # [kg]
array1ElementList[i].setIPntPc_P(IElement_PntPc_P) # [kg m^2]
array2ElementList[i].setIPntPc_P(IElement_PntPc_P) # [kg m^2]
array1ElementList[i].setR_MB_B(r_M1B_B) # [m]
array2ElementList[i].setR_MB_B(r_M2B_B) # [m]
array1ElementList[i].setR_PcP_P([- radius_array * np.cos(72 * macros.D2R),
0.0,
(1/3) * radius_array * np.sin(72 * macros.D2R)] # [m] For triangular wedge
array2ElementList[i].r_PcP_P = [radius_array * np.cos(72 * macros.D2R),
(1/3) * radius_array * np.sin(72 * macros.D2R)]) # [m] For triangular wedge
array2ElementList[i].setR_PcP_P([radius_array * np.cos(72 * macros.D2R),
0.0,
(1/3) * radius_array * np.sin(72 * macros.D2R)] # [m] For triangular wedge
array1ElementList[i].r_PM_M = r_PM1_M1Init1 # [m]
array2ElementList[i].r_PM_M = r_PM2_M2Init1 # [m]
array1ElementList[i].rPrime_PM_M = np.array([0.0, 0.0, 0.0]) # [m/s]
array2ElementList[i].rPrime_PM_M = np.array([0.0, 0.0, 0.0]) # [m/s]
array1ElementList[i].rPrimePrime_PM_M = np.array([0.0, 0.0, 0.0]) # [m/s^2]
array2ElementList[i].rPrimePrime_PM_M = np.array([0.0, 0.0, 0.0]) # [m/s^2]
array1ElementList[i].omega_PM_P = np.array([0.0, 0.0, 0.0]) # [rad/s]
array2ElementList[i].omega_PM_P = np.array([0.0, 0.0, 0.0]) # [rad/s]
array1ElementList[i].omegaPrime_PM_P = np.array([0.0, 0.0, 0.0]) # [rad/s^2]
array2ElementList[i].omegaPrime_PM_P = np.array([0.0, 0.0, 0.0]) # [rad/s^2]
array1ElementList[i].sigma_PM = sigma_PM1Init1
array2ElementList[i].sigma_PM = sigma_PM2Init1
array1ElementList[i].omega_MB_B = [0.0, 0.0, 0.0] # [rad/s]
array2ElementList[i].omega_MB_B = [0.0, 0.0, 0.0] # [rad/s]
array1ElementList[i].omegaPrime_MB_B = [0.0, 0.0, 0.0] # [rad/s^2]
array2ElementList[i].omegaPrime_MB_B = [0.0, 0.0, 0.0] # [rad/s^2]
array1ElementList[i].sigma_MB = [0.0, 0.0, 0.0]
array2ElementList[i].sigma_MB = [0.0, 0.0, 0.0]
(1/3) * radius_array * np.sin(72 * macros.D2R)]) # [m] For triangular wedge
array1ElementList[i].setR_PM_M(r_PM1_M1Init1) # [m]
array2ElementList[i].setR_PM_M(r_PM2_M2Init1) # [m]
array1ElementList[i].setRPrime_PM_M(np.array([0.0, 0.0, 0.0])) # [m/s]
array2ElementList[i].setRPrime_PM_M(np.array([0.0, 0.0, 0.0])) # [m/s]
array1ElementList[i].setRPrimePrime_PM_M(np.array([0.0, 0.0, 0.0])) # [m/s^2]
array2ElementList[i].setRPrimePrime_PM_M(np.array([0.0, 0.0, 0.0])) # [m/s^2]
array1ElementList[i].setOmega_PM_P(np.array([0.0, 0.0, 0.0])) # [rad/s]
array2ElementList[i].setOmega_PM_P(np.array([0.0, 0.0, 0.0])) # [rad/s]
array1ElementList[i].setOmegaPrime_PM_P(np.array([0.0, 0.0, 0.0])) # [rad/s^2]
array2ElementList[i].setOmegaPrime_PM_P(np.array([0.0, 0.0, 0.0])) # [rad/s^2]
array1ElementList[i].setSigma_PM(sigma_PM1Init1)
array2ElementList[i].setSigma_PM(sigma_PM2Init1)
array1ElementList[i].setSigma_MB([0.0, 0.0, 0.0])
array2ElementList[i].setSigma_MB([0.0, 0.0, 0.0])

scObject.addStateEffector(array1ElementList[i])
scObject.addStateEffector(array2ElementList[i])
Expand Down Expand Up @@ -463,9 +459,9 @@ def run(show_plots):
array1ElementRefMsgList2 = list()
for i in range(num_elements):
array1ElementList[i].prescribedTranslationInMsg.subscribeTo(array1ElementTranslationMessage)
array1ElementList[i].r_PcP_P = [0.0, 0.0, - (2/3) * radius_array * np.sin(72 * macros.D2R)]
array1ElementList[i].r_PM_M = r_PM1_M1Init2 # [m]
array1ElementList[i].sigma_PM = sigma_PM1Init2
array1ElementList[i].setR_PcP_P([0.0, 0.0, - (2/3) * radius_array * np.sin(72 * macros.D2R)])
array1ElementList[i].setR_PM_M(r_PM1_M1Init2) # [m]
array1ElementList[i].setSigma_PM(sigma_PM1Init2)

array1RotProfilerList[i].setThetaInit(array1ThetaInit2) # [rad]
array1RotProfilerList[i].setThetaDDotMax(array1MaxRotAccelList2[i]) # [rad/s^2]
Expand Down Expand Up @@ -527,9 +523,9 @@ def run(show_plots):
array2ElementRefMsgList3 = list()
for i in range(num_elements):
array2ElementList[i].prescribedTranslationInMsg.subscribeTo(array2ElementTranslationMessage)
array2ElementList[i].r_PcP_P = [0.0, 0.0, - (2/3) * radius_array * np.sin(72 * macros.D2R)]
array2ElementList[i].r_PM_M = r_PM2_M2Init2 # [m]
array2ElementList[i].sigma_PM = sigma_PM2Init2
array2ElementList[i].setR_PcP_P([0.0, 0.0, - (2/3) * radius_array * np.sin(72 * macros.D2R)])
array2ElementList[i].setR_PM_M(r_PM2_M2Init2) # [m]
array2ElementList[i].setSigma_PM(sigma_PM2Init2)

array2RotProfilerList[i].setThetaInit(array2ThetaInit2) # [rad]
array2RotProfilerList[i].setThetaDDotMax(array2MaxRotAccelList3[i]) # [rad/s^2]
Expand Down
Loading
Loading