A Mars rover simulation environment for collecting human navigation demonstrations in Godot game engine environment to train a mapless autonomous navigation model for mars like terrain
EfficientNet-B0 CNN model guiding a rover towards a destination point
With this repo you can do the following:
- Play a game/simulation with randomly generated mars-like terrain and a rover controllable by WASD and KL keys
- Collect navigation data from the user input
- Train a EfficientNet-B0 navigation model that imitates user-like motion
- Run the trained model in the simulation to test the model
- godot
- Terrain3D by Tokisan Games (godot plugin)
- numpy
- PIL
- torch
- torchvision
- tqdm
- jupyterlab
A training dataset is already available in huggingface, so you don't have to collect again. Instructions for data collection are still provided for anyone who wants to reproduce the results, retrain the model, or experiment with different datasets
- Open the
godotfolder in Godot game engine and hit play - Use WASD to move in the 4 directions. Use K and L key to rotate left and right respectively
- The goal is to move the rover to reach the big red beacon light
- The data of your movements will be recorded automaticaly to
dataset/godotfolder
Note
If the training doesn't collect any data, try changing the DataCollector/collect_data boolean parameter in godot to true
A trained model weights are already available in EfficientNet-B0/weights/AtlasEffB0_v0.pt, so you don't have to
train anything again. Instructions for data training are still provided for anyone who wants to reproduce the
results, retrain the model, or experiment with different datasets
- Run
dataset/process_image_data.py - Run
dataset/delete_data_bin_files.py - Open jupyterlab in
EfficientNet-B0folder - Run all (except the last) cells in
efficientnet_b0.ipynb
- Run
EfficientNet-B0/AtlasEffB0_v0_server.pyin a terminal (Keep it running for the entire duration of the simulation) - Open the
godotfolder in Godot game engine and hit play - The rover will now automatically moved by the model
Note
If the rover is not moved by the model, try changing the Rover/ModelController/use_model boolean parameter in godot to true
