This project is part of a collaborative effort to develop a virtual robotics environment. It involves the creation and interaction of virtual robots within a simulated world, utilizing a combination of individual and group contributions to achieve specific missions.
Each member is responsible for:
- Robot AI: Develop basic logic for a robot to interact with the world according to a given mission.
- UI Displayer: Visualize the actions and status of a robot within the world.
Groups of 3-4 people are tasked with:
- Developing 1 virtual robot that interacts with the world, performing basic tasks.
- Creating 1 tool (sensor or actuator).
- Generating 1 world generator or another utility.
- WGL (Working Group Leader): Votes on changes to specifications.
- WGC (Working Group Coordinator): Ensures productive meetings, drafts specifications, and submits shared code.
The shared crate among all groups, containing:
- World: A 2D grid environment with various elements (grass, water, fire, etc.).
- Interface: The only means to interact with the world, implementing sensing and acting capabilities.
- Runner: Manages runtime logic and robot definitions.
- Energy: Defines energy and its management for robot operations.
- Test: Contains tests for the common crate components.
- Utils: Provides utility functions used across the crate.
Robots operate within the world, receiving a fixed amount of energy each tick to perform tasks using implemented tools.
Tools combine interfaces to provide robots with complex functionalities, provided sufficient energy is available.
- Early Stage: WGLs meet to agree on and fix specifications.
- Commons Crate Implementation: Initial development of individual contributions and components.
- Specification Freezing: By the 21st class, specifications are frozen except for typo corrections or unanimous WGL agreement.
- Faire (5th Dec): Groups showcase and commit to using sensors and world generators from other groups.
- Robot Development and Maintenance: Groups develop their robots using chosen sensors, providing support for their components.
- Hosted on
https://advancedprogramming.disi.unitn.it/. - Groups use personal access tokens for pushing and pulling crates.
- Dependencies are managed via
Cargo.toml, specifying components and versions.
- Crate names must include the group name or acronym.
- No use of
unsafecode or undocumentedpanic!. - Extensive testing is required.
- Public interfaces should expose only necessary components.
- Write idiomatic Rust code.
This project aims to foster collaboration and innovation in virtual robotics, challenging participants to develop efficient, creative solutions within a simulated environment.
