Git Product home page Git Product logo

eggs_on_drones's Introduction

Eggs on Drones

This repository contains a C++ app to help guide drones for a local tech savvy chicken farmer to deliver eggs on time.

Structure of the project

The project is structured in such away that it can be simply build and tries to be modular in terms of the project layout. The project is structured as following

.
├── app                   # Main application which provides drone positions
│  ├── CMakeLists.txt
│  └── main.cpp
├── CMakeLists.txt
├── data                  # Sample data input/output
│  ├── input.example
│  └── output.example
├── include               # Include files for main implementation
│  ├── drone.h
│  ├── input.h
│  └── world.h
├── README.md             # Readme for the example
├── src                   # Main program logic/implementation
│  ├── CMakeLists.txt
│  ├── drone.cpp
│  ├── input.cpp
│  └── world.cpp
└── tests                 # Tests for main implementations
   ├── CMakeLists.txt
   ├── test_drone.cpp
   ├── test_input.cpp
   └── test_world.cpp

How to build the project

The project can be simply build using an out-of-source build by running the following commands in the terminal

mkdir build
cmake -S . -B build
cmake --build build

Pay attention that the project uses a newer CMake version. The minimum requirement for CMake cmake_minimum_required(VERSION 3.11) is 3.11. The reasoning for ths is the use of FetchContent which downloads Catch 2 and uses this for testing.

How to run it

The app can be run by piping the example stored in data/input.example:

cat data/input.example | build/app/dronenav

which should return

1 3 N
5 1 E

and that corresponds to the output stored in data/output.example.

How to run the tests

The tests are build using Catch2. They can be after the project has been build by running the following executables

build/tests/test_drone
build/tests/test_input
build/tests/test_world

Next steps

Following points might need attention in the future

  • Validate performance
  • Provide better error output, e.g. own try-block around std::atoi

eggs_on_drones's People

Contributors

ahelm avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.