The ACME Helium-3 Lunar Mining Operations (AHLMO) Simulator models our fully autonomous mining operations, consisting of:
- autonomous mining trucks
- autonomous unloading stations
AHLMO supports N mining trucks and M unloading stations that carry out mining operations over the course of a 72-hour mining "day."
- CMake 3.15 or higher
- Conan 2.x package manager
- C++17 compatible compiler
AHLMO uses CMake and Conan for dependency management. Conan automatically handles the Google Test dependency.
-
Install dependencies with Conan:
conan install . --output-folder=build --build=missing -
Configure the build with CMake:
cd build cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release -
Build the applications:
cmake --build .
From the project root directory:
conan install . --output-folder=build --build=missing && \
cd build && \
cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release && \
cmake --build .For a debug build, use -DCMAKE_BUILD_TYPE=Debug instead of Release:
cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=DebugNote: You'll need to run conan install again with --settings build_type=Debug for debug builds.
To start fresh:
rm -rf buildAHLMO supports a small suite of unit tests; run them by invoking:
./build/acme-unit-testsRun the AHLMO simulator with this command:
./build/acme-mining N Mwhere N is the number of trucks, and M is the number of unloading stations.
AHLMO will take about 3-1/2 minutes to simulate a 72-hour mining day, and will produce a log and several time-stamped CSV files suitable for further statistical analysis.
- Conan manages all external dependencies (currently Google Test)
- The
--build=missingflag ensures Conan builds any dependencies not available as pre-built binaries - No system-wide installation of Google Test is required
This simulation was developed to manage a lunar Helium-3 space mining operation, tracking the efficiency of mining trucks and unload stations over a continuous 72-hour operation.
Mining Trucks: Autonomous vehicles that perform the actual mining tasks.
Mining Sites: Locations on the moon where trucks extract Helium-3. The simulation assumes an infinite number of sites, ensuring trucks always have access to mine without waiting.
Mining Unload Stations: Designated stations where trucks unload the mined Helium-3. Each station can handle one truck at a time.
- There are n mining trucks and m mining unload stations (configurable)
- Mining trucks spend a random duration between 1 to 5 hours mining at the sites
- Travel time between a mining site and an unload station is 30 minutes
- All trucks start empty at a mining site when the simulation begins
- Unloading mined Helium-3 at a station takes 5 minutes
- Trucks are assigned to the first available unload station
- If all stations are occupied, trucks queue at the station with the shortest wait time and remain in their chosen queue
- Configurable to accommodate various numbers of mining trucks (n) and unload stations (m)
- Calculates and reports statistics for the performance and efficiency of each mining truck and unload station
- Represents 72 hours of non-stop mining
- Executes faster than real-time to provide timely analysis
This project is implemented in C++ leveraging object-oriented programming principles where appropriate, including:
- State machine-based truck control
- Event-driven simulation architecture
- Modular design with clear separation of concerns
- Comprehensive logging and statistical analysis output
