Atta
[![Linux](https://github.com/Brenocq/Atta/actions/workflows/linux.yml/badge.svg)](https://github.com/Brenocq/Atta/actions/workflows/linux.yml)
[![MacOS](https://github.com/Brenocq/Atta/actions/workflows/macos.yml/badge.svg)](https://github.com/Brenocq/Atta/actions/workflows/macos.yml)
[![Windows](https://github.com/Brenocq/Atta/actions/workflows/windows.yml/badge.svg)](https://github.com/Brenocq/Atta/actions/workflows/windows.yml)
[![Web](https://github.com/brenocq/atta/actions/workflows/web.yml/badge.svg)](https://github.com/brenocq/atta/actions/workflows/web.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[Website](https://atta.brenocq.com) · [**Projects**](https://atta.brenocq.com/projects) · [Planning](https://github.com/users/brenocq/projects/14)
Atta is a robotics simulator, mainly focused on multi-robot systems with tons of similar robots. The objectives for this simulator are:
- :books: Easy to get started
- :shipit: Distribute processing across CPUs / GPUs / Clusters
- :running: Fast development (with hot-reload)
- :electric_plug: Interface between simulated and physical robots
- :open_file_folder: Easy to share simulation with others (published projects)
- :computer: Cross-platform (linux/macos/windows/web)
Check out the atta website for a getting started guide.
Progress
Check the atta progress by clicking on the buttons below. Issues with bugs and discussions with new ideas are very welcome :bowtie:.
[![ComponentModule](https://storage.googleapis.com/atta-images/main/component_system_button_github_progress.png?)](https://github.com/brenocq/atta/projects/8)
[![EventModule](https://storage.googleapis.com/atta-images/main/event_system_button_github_progress.png?)](https://github.com/brenocq/atta/projects/13)
[![FileModule](https://storage.googleapis.com/atta-images/main/file_system_button_github_progress.png?)](https://github.com/brenocq/atta/projects/14)
[![GraphicsModule](https://storage.googleapis.com/atta-images/main/graphics_system_button_github_progress.png?)](https://github.com/brenocq/atta/projects/16)
[![IOModule](https://storage.googleapis.com/atta-images/main/io_system_button_github_progress.png?)](https://github.com/brenocq/atta/projects/17)
[![MemoryModule](https://storage.googleapis.com/atta-images/main/memory_system_button_github_progress.png?)](https://github.com/brenocq/atta/projects/15)
[![PhysicsModule](https://storage.googleapis.com/atta-images/main/physics_system_button_github_progress.png?)](https://github.com/brenocq/atta/projects/6)
[![ResourceModule](https://storage.googleapis.com/atta-images/main/resource_system_button_github_progress.png?)](https://github.com/brenocq/atta/projects/12)
[![ScriptModule](https://storage.googleapis.com/atta-images/main/script_system_button_github_progress.png?)](https://github.com/brenocq/atta/projects/11)
[![SensorModule](https://storage.googleapis.com/atta-images/main/sensor_system_button_github_progress.png?)](https://github.com/brenocq/atta/projects/10)
[![UIModule](https://storage.googleapis.com/atta-images/main/ui_system_button_github_progress.png?)](https://github.com/brenocq/atta/projects/9)
[![Docs](https://storage.googleapis.com/atta-images/main/docs_button_github_progress.png?)](https://github.com/brenocq/atta/projects/18)
Obs: There is a github workflow to update the progress bar of each icon automatically heh
Architecture
Atta is composed of decoupled modules, the current modules are:
- Component Module: Manage entities and components
- Event Module: Publish and subscribe to atta internal events
- File Module: OS agnostic interface to serialize and deserialize data to files
- Graphics Module: Online and offline rendering with different levels of realism
- IO Module: OS agnostic interface to peripherals (USB, socket, bluetooth, serial, ...)
- Memory Module: Manage atta internal memory to allow fast allocation and deallocation with minimum memory fragmentation
- Physics Module: Manage supported physics engines, simulate physics, and solve physics queries (collision, ray casting, ...)
- Resources Module: Load, save, and manage memory for resources like meshes, textures, video, ...
- Script Module: Compile and link user scripts automatically (hot reloading)
- Sensor Module: Update simulated/real sensors at each step
- UI Module: User interface graphics layer and UI rendering helpers
Arrows show dependencies between modules. Green boxes show which features are implemented.
Why Atta?
"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.
Build & test
Windows
Dependencies
To build atta properly, you need to have cmake installed.
choco install cmake
Also, be sure that your compiller supports C++17 (g++ >= 9.0).
Run
git clone git@github.com:brenocq/atta.git
cd atta
mkdir build
cd build
cmake ..
You can now use Visual Studio to open the atta.sln
file.
MacOS
Dependencies
To build atta properly, you need to have cmake installed.
brew install cmake
Also, be sure that your compiller supports C++17 (g++ >= 9.0).
Run
git clone git@github.com:brenocq/atta.git
cd atta
./scripts/build.sh --help
./scripts/build.sh
./build/release/bin/atta_test
./build/release/bin/atta
Linux
Dependencies
To build atta, you need:
Ubuntu:
sudo apt-get install g++ cmake git xorg-dev curl
Note: If your ubuntu is old, you may need to install the latest cmake/g++ manually.
Fedora:
sudo yum install g++ cmake git glfw-devel curl
Arch:
sudo pacman -Sy g++ cmake git glfw-x11 curl
Run
git clone git@github.com:brenocq/atta.git
cd atta
./build.sh --help
./build.sh
./build/release/bin/atta_test
./build/release/bin/atta
If you found any errors, please do not hesitate to create an issue :wink:.
Discussions
If you want to contribute, have ideas, or have questions about atta, feel free to start a discussion.
References
License
This project is licensed under the MIT License - check LICENSE for details.