Atta is a robot simulator for 2D and 3D applications mainly focused on multi-robot systems with tons of similar robots. The objectives for this simulator are:
- Fast to develop new simulations
- Easy to understand
- Distribute the processing across CPUs / GPUs / Clusters
- Interface between simulated and physical robots
- Cross-platform (including web support to easily share the simulations)
Check out the atta website for a getting started guide. You can also test the web build online here.
Check the atta progress by clicking on the buttons below. Issues with bugs and discussions with new ideas are very welcome :)
Atta is composed of decoupled system, the current systems are:
- Component System: Manage entities and components
- Event System: Publish and subscribe to atta internal events
- File System: OS agnostic interface to serialize and deserialize data to files
- Graphics System: Online and offline rendering with different levels of realism
- IO System: OS agnostic interface to peripherals (USB, socket, bluetooth, serial, ...)
- Memory System: Manage atta internal memory to allow fast allocation and deallocation with minimum memory fragmentation
- Physics System: Manage supported physics engines, simulate physics, and solve physics queries (collision, ray casting, ...)
- Resources System: Load, save, and manage memory for resources like meshes, textures, video, ...
- Script System: Compile and link user scripts automatically (hot reloading)
- Sensor System: Update simulated/real sensors at each step
- UI System: User interface graphics layer and UI rendering helpers
Arrows show dependencies between systems. Green boxes show which systems/features are implemented.
"Atta" comes from the scientific name of a type of leaf-cutting ant that can build nests of up to millions of individuals capable of working together to perform complex tasks. This project aims to simulate complex systems like this, mainly composed of robots.
To build atta properly, you need to have cmake installed. You will also need the dependencies for glfw (necessary to create windows) and cpprestsdk (necessary to access the network).
Dependencies for some operating systems:
Windows:
choco install cmake
vcpkg install cpprestsdk cpprestsdk:x64-windows
MacOS:
brew install cmake boost openssl
Ubuntu:
sudo apt-get install cmake xorg-dev openssl libssl-dev libboost-all-dev
This step is operating system indepentent. Be sure to have your github ssh key properly configured. Atta should build without errors when the compiller supports C++17. If you found any errors, please do not hesitate to create an issue.
git clone [email protected]:brenocq/atta.git
cd atta
mkdir build && cd build
cmake ..
make -j
./bin/atta_test
./bin/atta
If you want to contribute, have ideas, or have questions about atta, feel free to start a discussion.
- (Book) Physically Based Rendering
- (Book) Game Physics Engine Development
- (Book) Real-Time Collision Detection
- (Book) Computer Graphics Principles and Practice
- (Book) Programming Massively Parallel Processors
- (Book) Numerical Recipes: The Art of Scientific Computing
- (Book) Game Programming Patterns
- (Book) Game Engine Architecture
- (Book) C++ Templates: The Complete Guide
This project is licensed under the MIT License - check LICENSE for details.