Skip to content

mlpotter/OptimalTrackingAndControl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

78 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Issues MIT License


Logo

ARL FREEDOM Project Task 2.2.1

Cognitive Radar: Mobility

The first thrust of the FREEDOM project task 2.2.1 focused on optimizing the position of mobile radars to enhance radar range measurements of multiple targets, taking into account dynamic and mission constraints.

Our approach improves upon previous approaches by:

  • Using a distance-dependent range measurement model, where measurement noise increases with distance, unlike previous methods with constant covariance noise.
  • Optimizing the Model Predictive Control objective using Model Predictive Path Integrals, which are computationally efficient and can handle non-smooth, nonconvex objectives, unlike previous methods that use deterministic solvers like CasADi.
  • Highlighting the pitfalls of the constant covariance measurement noise and stationary radars.

(back to top)

Built With

Jax NumPy Anaconda Python

(back to top)

Getting Started

Prerequisites

  1. Download and install Anaconda for python package management.
  2. Create a virtual environment with python version 3.9
    conda create -n FREEDOM python=3.9
  3. Activate the conda FREEDOM virtual environment
    conda activate FREEDOM
  4. Clone the Github repo
    git clone https://github.com/neu-spiral/FREEDOM221

Installation

  1. Install python packages
    pip install -r requirements.txt

(back to top)

Usage

To run a basic example of 3 radars tracking 4 targets over 1000 time steps, with the radars maintaining a distance of 125 meters from the targets.

(back to top)

# change to the folders related to mobile radars
cd OptimalTrackingAndControl\src_faster

python main_expectation.py --N_radar=3 \
                         --fim_method=SFIM \
                         --alpha2=1000 \
                         --alpha3=500 \
                         --seed=123 \
                         --experiment_name=test \
                         --N_steps=1000 \
                         --R2T=125

(back to top)

More details on experiment parameters may be found by running python main_expectation.py -h

python main_expectation.py -h

optional arguments:
  -h, --help            show this help message and exit
  --seed SEED           Random seed to kickstart all randomness (default: 123)
  --frame_skip FRAME_SKIP
                        Save the images at every nth frame (must be a multiple of the update on the control frequency, which is dt control / dt ckf) (default: 4)
  --dt_ckf DT_CKF       Frequency at which the radar receives measurements and updated Cubature Kalman Filter (default: 0.025)
  --dt_control DT_CONTROL
                        Frequency at which the control optimization problem occurs with MPPI (default: 0.1)
  --N_radar N_RADAR     The number of radars in the experiment (default: 6)
  --N_steps N_STEPS     The number of steps in the experiment. Total real time duration of experiment is N_steps x dt_ckf (default: 600)
  --results_savepath RESULTS_SAVEPATH
                        Folder to save bigger results folder (default: results)
  --experiment_name EXPERIMENT_NAME
                        Name of folder to save temporary images to make GIFs (default: experiment)
  --move_radars, --no-move_radars
                        Do you wish to allow the radars to move? --move_radars for yes --no-move_radars for no (default: True)
  --remove_tmp_images, --no-remove_tmp_images
                        Do you wish to remove tmp images? --remove_tmp_images for yes --no-remove_tmp_images for no (default: True)
  --tail_length TAIL_LENGTH
                        The length of the tail of the radar trajectories in plottings (default: 10)
  --save_images, --no-save_images
                        Do you wish to saves images/gifs? --save_images for yes --no-save_images for no (default: True)
  --fim_method FIM_METHOD
                        FIM Calculation [SFIM,PFIM,SFIM_bad,PFIM_bad] (default: SFIM)
  --fc FC               Radar Signal Carrier Frequency (Hz) (default: 100000000.0)
  --Gt GT               Radar Transmit Gain (default: 200)
  --Gr GR               Radar Receive Gain (default: 200)
  --rcs RCS             Radar Cross Section in m^2 (default: 1)
  --L L                 Radar Loss (default: 1)
  --R R                 Radius for specific SNR (desired) (default: 500)
  --Pt PT               Radar Power Transmitted (W) (default: 1000)
  --SNR SNR             Signal-Noise Ratio for Experiment. Radar has SNR at range R (default: -20)
  --acc_std ACC_STD     MPPI init heading acc std (default: 25)
  --ang_acc_std ANG_ACC_STD
                        MPPI init angular acc std (default: 0.7853981633974483)
  --horizon HORIZON     MPC Horizon (default: 15)
  --acc_init ACC_INIT   Initial Heading Acceleration (default: 0)
  --ang_acc_init ANG_ACC_INIT
                        Initial Angular Acceleration (default: 0.0)
  --num_traj NUM_TRAJ   Number of MPPI control sequences samples to generate (default: 250)
  --MPPI_iterations MPPI_ITERATIONS
                        Number of MPPI sub iterations (proposal adaptations) (default: 25)
  --temperature TEMPERATURE
                        Temperature on the objective function. Lower temperature accentuates the differences between scores in MPPI (default: 0.1)
  --elite_threshold ELITE_THRESHOLD
                        Elite Threshold (between 0-1, where closer to 1 means reject most samaples) (default: 0.9)
  --AIS_method AIS_METHOD
                        Type of importance sampling. [CE,information] (default: CE)
  --gamma GAMMA         Discount Factor for MPC objective (default: 0.95)
  --speed_minimum SPEED_MINIMUM
                        Minimum speed Radars should move [m/s] (default: 5)
  --R2T R2T             Radius from Radar to Target to maintain [m] (default: 125)
  --R2R R2R             Radius from Radar to Radar to maintain [m] (default: 10)
  --alpha1 ALPHA1       Cost weighting for FIM (default: 1)
  --alpha2 ALPHA2       Cost weighting for maintaining distanace between Radar to Target (default: 1000)
  --alpha3 ALPHA3       Cost weighting for maintaining distance between Radar to Radar (default: 500)
  --alpha4 ALPHA4       Cost weighting for smooth controls (between 0 to 1, where closer to 1 means no smoothness (default: 1)
  --alpha5 ALPHA5       Cost weighting to maintain minimum absolute speed (default: 0)

Contact

Michael Potter - linkedin - [email protected]
Paul Ghanem -
Shuo Tang -

(back to top)

Acknowledgments

Research was sponsored by the Army Research Laboratory and was accomplished under Cooperative Agreement Number W911NF-23-2-0014. The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of the Army Research Laboratory or the U.S. Government. The U.S. Government is authorized to reproduce and distribute reprints for Government purposes notwithstanding any copyright notation herein.

Citing This Paper

Please cite the following paper if you intend to use this code or dataset for your research.

@article{potter2025continuously, title={Continuously Optimizing Radar Placement with Model Predictive Path Integrals}, author={Potter, Michael and Tang, Shuo and Ghanem, Paul and Stojanovic, Milica and Closas, Pau and Akcakaya, Murat and Wright, Ben and Necsoiu, Marius and Erdo{\u{g}}mu{\c{s}}, Deniz and Everett, Michael and others}, journal={IEEE Transactions on Aerospace and Electronic Systems}, year={2025}, publisher={IEEE} }

Note

The timing benchmark of 26-27 Hz was reported on an old version of this code which had functions inline with the main script and more accurate placement of the timing blocks, leading to better timing of the MPPI controller. For better readability, code related to the Cubuture Kalman Filter prediction rollout and actuation of the MPPI final control on the radar states is included in the MPPI_control function which leads to slower timing results.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors