Skip to content

bainjen/CARS

Repository files navigation

Combine Automation Report Simulator (CARS)

Description

This project is designed to help farmers evaluate autonomous combine [harvesting tractor] performance.

Users can specify auger length, fuel type, and a wheel size to create a combine.

Once a configuration is added, a simulation test fires every hour to measure the time that each particular combine takes to plane a 10 x 10 acre field, the percentage of the field covered, and the cost of the run.

The efficiency value of each simulation run is averaged to make an overall efficiency measure for each combine configuration.

wizard

Installation and running locally:

Load the dependencies of the application:

cd path/to/CARS
yarn #npm install

Initialize amplify back end and create a new development environment from the amplify instructions from the CLI:

amplify init

Push your API and lambda function to AWS:

amplify push

To run the application locally

To both bush your amplify resources and run the react front end, run:

amplify serve

...or just the front end with:

yarn start #npm run start

Using the app:

Combine configurations are created on the React front end and saved to the DynamoDB backend.

Simulations are run using an hourly AWS lambda function which can be mocked locally by running:

amplify mock function runSimulations

In order to view the simulation runs on the front end, be sure to run the script above and then refresh your browser. Every run, will mock one new simulation per combine configuration.

This function takes in each combine configuration from the database and runs a simulation, inputting data to the Simulation table and updating the current number of simulation runs on each configuration.

Tech Stack

  • React
  • GraphQL
  • DynamoDB
  • AWS Amplify
  • AWS Lambda

Assumptions && Limitations

Calculations:

Each simulation randomly places three rock obstacles in the field, which the combine must avoid.

The calculations made to turn the combine and to avoid rocks are simple and do not directly reflect reality.

It assumes that the combine:

  • Moves in straight lines only (no curves or diagonals were calculated).

  • Turns on a pivot at 90 degree angles, thereby not missing any field in the process of turning. I did not calculate a turn radius.

  • Does not slow down while turning

  • Can pass the rock precisely and does not take extra room to avoid obstacles.

Future Development Ideas

  • implementing batch mutations in GraphQL for more efficient updates to DynamoDB tables

  • add user authentication

  • implement comparison options on the UI to allow users to directly compare the performance of two or more combines

  • use data pulled from simulations to create graphs -- this would be especially interesting for the electric combines where cost per run decreases incrementally over time

Screenshots

Demo demo gif

Input form (left) and list of combine configurations (right)

home page

Simulation data report from a selected combine configuration

simulation data

Confirm before deleting a configuration

home page

Responsive design

On mobile

responsive responsive

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published