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.
- Download and install Anaconda for python package management.
- Create a virtual environment with python version 3.9
conda create -n FREEDOM python=3.9
- Activate the conda FREEDOM virtual environment
conda activate FREEDOM
- Clone the Github repo
git clone https://github.com/neu-spiral/FREEDOM221
- Install python packages
pip install -r requirements.txt
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.
# 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=125More 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)
Michael Potter - linkedin - [email protected]
Paul Ghanem -
Shuo Tang -
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.
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} }
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.