Skip to content

Releases: cg-tuwien/AgroEcoSim

AgroEcoSim

13 Dec 14:20
Compare
Choose a tag to compare

This is the first beta release of the simulation and rendering. It wraps improvements in visualization, finally a correct irradiance interface and an improved simple metabolism model.

Changelog

  • The plant parts accumulate availability of external resources and their efficiency in production of metabolic substances over a day
  • Plants behave normally if there is enough energy reserve, then those parts with best access to external resources get the energy. If the energy is reserve is low, plant parts producing the most metabolic substances get the most energy.
  • Visualization of the new data added to Godot.
  • Automatic screenshots in Godot.
  • Reduced rendering times since only leafs are considered sensors
  • Batch rendering of all sensors at once (at my machine this runs slower than the single-core mode)

How it works

A server listens on port 7215 for HTTP requests, runs simulations and returns the results.

Prerequisites

Usage

  1. Extract the archive AgroEcoSim-SOME_DATE.zip
  2. Run sh deployDocker (on windows you need to load the images manually) before starting the first time
  3. Then, each time you want to start the simulation server just run docker-compose up or docker compose up (depending on the engine version) in the folder where you extracted the files.

API

Once the server is up and running, navigate your browser to explore the API to http://localhost:7215/swagger/index.html

A new simulation is started by a POST request to http://localhost:7215/Simulation. Please be patient, CPU irradiance rendering is really slow. To simulate 3 plants for one month, it takes 17 seconds on a recent AMD Ryzen 9. Better keep the number of plants and time steps low. Here is an example of a configuration json sent in the POST request:

{
    "TicksPerHour": 1,
    "TotalHours": 744,
    "FieldResolution": 0.5,
    "FieldSize": { "X": 10, "D": 4, "Z": 10 },
    "Seed": 42,

    "Plants": [
        { "P": {"X": 2.5, "Y": -0.05, "Z": 5}},
        { "P": {"X": 5, "Y": -0.05, "Z": 5}},
        { "P": {"X": 7.5, "Y": -0.05, "Z": 5}}
    ],

    "Obstacles": [
        { "T": "wall", "O": 0, "L": 5, "H": 3.2, "P": {"X": 2.5, "Y": 0, "Z": 0}},
        { "T": "umbrella", "R": 1.5, "H": 2.2, "D": 0.1, "P": {"X": 2.5, "Y": 0, "Z": 2.5}}
    ],
}

For the obstacles, T denotes type, O orientation, L horizontal length or diameter and R half-length or radius, H: vertical height, D is depth or thickness, all in meters.

The result is an array of plant volumes (in m³) at simulation end. The ordering is the same as in the input:

{
  "plants": [
    { "V": 0.0017850252  },
    { "V": 0.0015580055  },
    { "V": 0.0016916988  }
  ]
}

Godot visualization

The simulation can also run as a Godot plugin. You may either start the project directly from the repository, or grab one of the attached zip files. Make sure to first start the rendering server: python3 render-server.py --port 9000.

AgroEcoSim

09 Nov 22:38
Compare
Choose a tag to compare
AgroEcoSim Pre-release
Pre-release

This is the sixth release of the simulation and rendering. It targets a new energy distribution model in the plant, extended visual debugging and several minor fixes.

Changelog

  • If the plant is short on energy, its parts divide it proportionally to their photosynthesis performance
  • 3D Visualization has been extended by further visual debugging tools, e.g. renderer overlay
  • Many fixes

How it works

  • For the headless Docker version see the description from previous releases. There have been no changes.
  • For Godot binaries, make sure to first start the rendering server: python3 render-server.py --port 9000

Please report any issues with the binaries. For sure there will be some.

AgroEcoSim + Godot

01 Nov 12:08
Compare
Choose a tag to compare
AgroEcoSim + Godot Pre-release
Pre-release

This is the fifth release of the simulation and rendering. It targets improvements in visualization and for the first time also includes the compiled Linux and Windows binaries of the Godot project.

Changelog

  • Minor fix in Dockerfile to install the time zones package
  • Many improvements in Godot visualization, greatly extended HUD
  • Top layer of cells is now correctly displayed as surface water with a possibly infinite height.

How it works

  • For headless version see the description from previous releases. There have been no changes.
  • For Godot binaries, make sure to first start the rendering server: python3 render-server.py --port 9000

Please report any issues with the binaries. For sure there will be some.

AgroEcoSim

24 Oct 18:33
Compare
Choose a tag to compare
AgroEcoSim Pre-release
Pre-release

This is the fourth release of the simulation and rendering. It targets improvements in rendering and extends the scene by obstacles. The shadowing does not affect the growth yet.

Changelog

  • Two types of obstacles can be added to the scene: walls and umbrellas
  • A new version of the interface between plants simulation and rendering (sending primitives instead of triangle meshes)

How it works

A server listens on port 7215 for HTTP requests, runs simulations and returns the results.

Prerequisites

Usage

  1. Extract the archive files
  2. Run sh deployDocker (on windows you need to load the images manually) before starting the first time
  3. Then, each time you want to start the simulation server just run docker-compose up or docker compose up (depending on the engine version) in the folder where you extracted the files.

API

Once the server is up and running, navigate your browser to explore the API to http://localhost:7215/swagger/index.html

A new simulation is started by a POST request to http://localhost:7215/Simulation. Please be patient, CPU irradiance rendering is really slow. To simulate 3 plants for one month, it takes 17 seconds on a recent AMD Ryzen 9. Better keep the number of plants and time steps low. Here is an example of a configuration json sent in the POST request:

{
    "TicksPerHour": 1,
    "TotalHours": 744,
    "FieldResolution": 0.5,
    "FieldSize": { "X": 10, "D": 4, "Z": 10 },
    "Seed": 42,

    "Plants": [
        { "P": {"X": 2.5, "Y": -0.05, "Z": 5}},
        { "P": {"X": 5, "Y": -0.05, "Z": 5}},
        { "P": {"X": 7.5, "Y": -0.05, "Z": 5}}
    ],

    "Obstacles": [
        { "T": "wall", "O": 0, "L": 5, "H": 3.2, "P": {"X": 2.5, "Y": 0, "Z": 0}},
        { "T": "umbrella", "R": 1.5, "H": 2.2, "D": 0.1, "P": {"X": 2.5, "Y": 0, "Z": 2.5}}
    ],
}

For the obstacles, T denotes type, O orientation, L horizontal length or diameter and R half-length or radius, H: vertical height, D is depth or thickness, all in meters.

The result is an array of plant volumes (in m³) at simulation end. The ordering is the same as in the input:

{
  "plants": [
    { "V": 0.0017850252  },
    { "V": 0.0015580055  },
    { "V": 0.0016916988  }
  ]
}

AgroEcoSim

10 Oct 16:59
Compare
Choose a tag to compare
AgroEcoSim Pre-release
Pre-release

This is the third release of the simulation and rendering. It targets creation and testing of the interface towards the machine learning component. Since the plants grow only small so far, there will be almost no shadowing.

Changelog

  • Transactions were replaced by supervised diffusion. It runs a bit faster and provides a more realistic distribution of resources at large timesteps.

How it works

A server listens on port 7215 for HTTP requests, runs simulations and returns the results.

Prerequisites

Usage

  1. Extract the archive files
  2. Run sh deployDocker (on windows you need to load the images manually) before starting the first time
  3. Then, each time you want to start the simulation server just run docker-compose up or docker compose up (depending on the engine version) in the folder where you extracted the files.

API

Once the server is up and running, navigate your browser to explore the API to http://localhost:7215/swagger/index.html

A new simulation is started by a POST request to http://localhost:7215/Simulation. Please be patient, CPU irradiance rendering is really slow. To simulate 3 plants for one month, it takes 50 seconds on a recent AMD Ryzen 9. Better keep the number of plants and time steps low. Here is an example of a configuration json sent in the POST request:

{
    "TicksPerHour": 1,
    "TotalHours": 744,
    "FieldResolution": 0.5,
    "FieldSize": { "X": 10, "D": 4, "Z": 10 },
    "Seed": 42,

    "Plants": [
        { "P": {"X": 2.5, "Y": -0.05, "Z": 5}},
        { "P": {"X": 5, "Y": -0.05, "Z": 5}},
        { "P": {"X": 7.5, "Y": -0.05, "Z": 5}}
    ]
}

The result is an array of plant volumes (in m³) at simulation end. The ordering is the same as in the input:

{
  "plants": [
    { "V": 0.0017850252  },
    { "V": 0.0015580055  },
    { "V": 0.0016916988  }
  ]
}

AgroEcoSim

23 Sep 11:28
Compare
Choose a tag to compare
AgroEcoSim Pre-release
Pre-release

This is the second release of the simulation and rendering. It targets creation and testing of the interface towards the machine learning component. Since the plants grow only small so far, there will be almost no shadowing.

Changelog

  • The most important change is day-only rendering. It should reduce the computation time by a half.
  • Seed is now included in the settings.
  • A few further tweaks and fixes.

How it works

A server listens on port 7215 for HTTP requests, runs simulations and returns the results.

Prerequisites

Usage

  1. Extract the archive files
  2. Run sh deployDocker (on windows you need to load the images manually) before starting the first time
  3. Then, each time you want to start the simulation server just run docker-compose up or docker compose up (depending on the engine version) in the folder where you extracted the files.

API

Once the server is up and running, navigate your browser to explore the API to http://localhost:7215/swagger/index.html

A new simulation is started by a POST request to http://localhost:7215/Simulation. Please be patient, CPU irradiance rendering is really slow. To simulate 3 plants for one month, it takes 50 seconds on a recent AMD Ryzen 9. Better keep the number of plants and time steps low. Here is an example of a configuration json sent in the POST request:

{
    "TicksPerHour": 1,
    "TotalHours": 744,
    "FieldResolution": 0.5,
    "FieldSize": { "X": 10, "D": 4, "Z": 10 },
    "Seed": 42,

    "Plants": [
        { "P": {"X": 2.5, "Y": -0.05, "Z": 5}},
        { "P": {"X": 5, "Y": -0.05, "Z": 5}},
        { "P": {"X": 7.5, "Y": -0.05, "Z": 5}}
    ]
}

The result is an array of plant volumes (in m³) at simulation end. The ordering is the same as in the input:

{
  "plants": [
    { "V": 0.0017850252  },
    { "V": 0.0015580055  },
    { "V": 0.0016916988  }
  ]
}

AgroEcoSim

26 Aug 22:46
Compare
Choose a tag to compare
AgroEcoSim Pre-release
Pre-release

This is the first release of the simulation and rendering. It targets creation and testing of the interface towards the machine learning component. Since the plants grow only small so far, there will be almost no shadowing.

How it works

A server listens on port 7215 for HTTP requests, runs simulations and returns the results.

Prerequisites

Usage

  1. Extract the archive files
  2. Run sh deployDocker (on windows you need to load the images manually) before starting the first time
  3. Then, each time you want to start the simulation server just run docker-compose up or docker compose up (depending on the engine version) in the folder where you extracted the files.

API

Once the server is up and running, navigate your browser to explore the API to http://localhost:7215/swagger/index.html

A new simulation is started by a POST request to http://localhost:7215/Simulation. Please be patient, CPU irradiance rendering is really slow. To simulate 3 plants for one month, it takes 70 seconds on a recent AMD Ryzen 9. Better keep the number of plants and time steps low. Here is an example of a configuration json sent in the POST request:

{
    "TicksPerHour": 1,
    "TotalHours": 744,
    "FieldResolution": 0.5,
    "FieldSize": { "X": 10, "D": 4, "Z": 10 },

    "Plants": [
        { "P": {"X": 2.5, "Y": -0.05, "Z": 5}},
        { "P": {"X": 5, "Y": -0.05, "Z": 5}},
        { "P": {"X": 7.5, "Y": -0.05, "Z": 5}}
    ]
}

The result is an array of plant volumes (in m³) at simulation end. The ordering is the same as in the input:

{
  "plants": [
    { "V": 0.0017850252  },
    { "V": 0.0015580055  },
    { "V": 0.0016916988  }
  ]
}