Guidance and Control Networks with Periodic Activation Functions
The datasets allow to train regression models representing the optimal control policy for three different control problems and the value function (only for the Interplanetary transfer): Drone racing Filenames: eps_XXX_num_10000_spaice.npz where XXX denotes the value used for epsilon, see paper referenced below. Asteroid landing Filename: training_50000_100_[0.02,0.02,0.008,0.008,0.001,0.001]_[0.75,0.75,0.8,0.8,1.0,1.0]_[100000.0,150000.0,0.0,25.0,-25.0,20.0].pk Interplanetary transfer Filename control policy: training_100000_100_[0.001, 0.001, 0.08, 0.08]_[1.0, 1.0, 1.0, 1.0].pk Filename value function learning: training_50000_200_[15.0, 1.0, 0.08, 0.08, 0.001, 0.001]_[1.0, 1.0, 1.0, 1.0, 1.0, 1.0]_xyzvxvyvztgrid.pk The datasets were used in our paper: Origer, S. and Izzo, D.: "Guidance and Control Networks with Periodic Activation Functions" - https://arxiv.org/abs/2405.18084 - where we were interested in comparing the performance of SIREN networks with traditional activation functions (such as Relu and Softplus) in the field of G&C. The datasets for the drone racing case can be opened using (the code below works in python and you need the pytorch and numpy libraries to run it !): class TrajectoryDataset(Dataset): def __init__(self, dataset, indices): self.dataset = dataset self.indices = indices def __len__(self): return len(self.indices) def __getitem__(self, index): i, j = self.indices[index] X = torch.tensor([ self.dataset['dx'][i, j], self.dataset['dy'][i, j], self.dataset['dz'][i, j], self.dataset['vx'][i, j], self.dataset['vy'][i, j], self.dataset['vz'][i, j], self.dataset['phi'][i, j], self.dataset['theta'][i, j], self.dataset['psi'][i, j], self.dataset['p'][i, j], self.dataset['q'][i, j], self.dataset['r'][i, j], self.dataset['omega'][i, j, 0], self.dataset['omega'][i, j, 1], self.dataset['omega'][i, j, 2], self.dataset['omega'][i, j, 3] ], dtype=torch.float32) U = torch.tensor([ self.dataset['u'][i, j, 0], self.dataset['u'][i, j, 1], self.dataset['u'][i, j, 2], self.dataset['u'][i, j, 3] ], dtype=torch.float32) return X, U # SPAICE paper dataset_path = "eps_1.0_num_10000_spaice.npz" dataset_path = "eps_0.75_num_10000_spaice.npz" dataset_path = "eps_0.5_num_10000_spaice.npz" dataset_path = "eps_0.25_num_10000_spaice.npz" dataset_path = "eps_0.0_num_10000_spaice.npz" dataset = dict() print('loading dataset...') with np.load("datasets_spaice/"+dataset_path) as full_dataset: # total number of trajectories num = len(full_dataset['dx']) print(num, 'trajectories') dataset = {key: full_dataset[key] for key in [ 't', 'dx', 'dy', 'dz', 'vx', 'vy', 'vz', 'phi', 'theta', 'psi', 'p', 'q', 'r','omega', 'u', 'omega_min','omega_max', 'k_omega' ]} length_trajectory = len(dataset[str('dx')][0]) print(f'Dataset contains trajectories with {length_trajectory} nodes + midpoints.') The datasets for the asteroid landing and interplanetary transfer can be opened as (we use the inbuilt pickle library as import pickle as pkl): with open("filename.pk", "rb") as f: data = pkl.load(f) data has the following shape: (# of optimal trajectories, # of sampled points per trajectory, # of states + # of controls + optimal time-of-flight). For the drone racing case, the states are given in SI units and controls in RPM. For the asteroid landing case, the states (x, y, z, vx, vy, vz, m) are given in non-dimensional units: Unit for length = 200000 Unit for velocity = 87.47423049104232 Unit for mass = 600 and the controls are: throttle (0 to 1) and thrust direction as unit vector (ix, iy, iz). For the interplanetary transfer case, the states (x, y, z, vx, vy, vz) are given in non-dimensional units: Unit for length = 149597870691.0 Unit for velocity = 29784.6918 The dataset used to learn the control policy contains the controls: thrust direction (ix, iy, iz) as unit vector and the dataset used for value function learning contains the optimal remaining time-of-flight in non-dimensional units: Unit for time = 5022642.8909
Institutions
- European Space Research and Technology Centre (NL)
Publication Details
- Journal
- Zenodo (CERN European Organization for Nuclear Research)
- Published
- 2025-05-14
- DOI
- https://doi.org/10.5281/zenodo.15410858
- Primary Topic
- Spacecraft Dynamics and Control
- Type
- article
- Field-Weighted Citation Impact
- 0.00