scenarioSmallBodyNav

Overview

This scenario demonstrates how to use the smallBodyNavEKF() for state estimation about a small body. In this example, Bennu is used. However, any small body could be selected as long as the appropriate gravitational parameter is set.

In this scenario, Module: simpleNav and Module: planetEphemeris provide measurements to the EKF in the form of NavTransMsgPayload, NavAttMsgPayload, and EphemerisMsgPayload input messages. The EKF takes in these measurements at each timestep and updates the state estimate, outputting this state estimate in its own standalone message, a SmallBodyNavMsgPayload, as well as navigation output messages - NavTransMsgPayload, NavAttMsgPayload, and EphemerisMsgPayload.

Furthermore, an Module: mrpFeedback module is also created to demonstrate using the filter output as an input into an attitude control algorithm.

Note

This module is only meant to provide a somewhat representative autonomous small body proximity operations navigation solution for attitude control modules or POMDP solvers. Therefore, realistic measurement modules do not exist to support this module, and not every source of uncertainty in the problem is an estimated parameter.

The relative position estimate and the estimation error and covariance may be found in the plots below.

../_images/scenarioSmallBodyNav1.svg../_images/scenarioSmallBodyNav3.svg

Likewise, the relative velocity estimate and the estimation error and covariance may be found in the plots below.

../_images/scenarioSmallBodyNav2.svg../_images/scenarioSmallBodyNav4.svg

In the next four plots, the attitude and rate estimates of both the spacecraft and small body with respect to the inertial frame are displayed.

../_images/scenarioSmallBodyNav5.svg../_images/scenarioSmallBodyNav6.svg../_images/scenarioSmallBodyNav7.svg../_images/scenarioSmallBodyNav8.svg

The script is found in the folder basilisk/examples and executed by using:

python3 scenarioSmallBodyNav.py
scenarioSmallBodyNav.plot_pos_error(time, r_err, P)[source]

Plot the position estimation error and associated covariance.

scenarioSmallBodyNav.plot_position(time, r_BO_O_truth, r_BO_O_est, r_BO_O_meas)[source]

Plot the relative position result.

scenarioSmallBodyNav.plot_vel_error(time, v_err, P)[source]

Plot the position estimation error and associated covariance.

scenarioSmallBodyNav.plot_velocity(time, v_BO_O_truth, v_BO_O_est, v_BO_O_meas)[source]

Plot the relative velocity result.

scenarioSmallBodyNav.run(show_plots)[source]

The scenarios can be run with the followings setups parameters:

Parameters

show_plots (bool) – Determines if the script should display plots