Project Elements - TomHulme/306-Swarm-Robotics-Project GitHub Wiki

SoftEng 306: Project 1

Robotic Node

  • each node must have: -robot-id -pose (x,y,theta)eta -linear velocity (^x,^y) -angular velocity(^theta)

  • the nodes current state must be represented by

    • pose and velocity
  • robot-id: identification number

  • pose (x,y,theta): x - horizontal position in world frame y - vertical position in world frame theta - heading of robot in world frame

  • linear velocity (^x, ^y): ^x - speed of node in horizontal axis ^y - speed of node in vertical axis

  • angular velocity (^theta): change in heading

Farm: Includes at least 4 fields Needs to have an output area

Fields: A rectangular area of the farm. The farm has 4 fields.

  • each field has its own soil parameter

Soil: A single parameter defining the type of soil a field currently has.

  • can potentially range from arid to fertile. <-arid-------normal------fertile->

Water: Rain calculated farm wide. If its raining there will be less sunlight -> sunshowers Controls how much rainfall a field has in a day.

  • implemented with the use of a probability distribution.
  • gaussian with a mean rainfall per day and a variance

Grass: Instance of Robotic Node Grass instance has no need for movement

  • Creation and destruction of grass relies on Water, Soil, and Sunlight.
  • Grass grows when certain criteria is met: e.g - soil is normal or fertile - average rainfall is at least xx - average amount of light is above xx
  • Can potentially use probability, normal soil has lower chance to grow grass than fertile soil
  • Grass is destroyed when the criteria is not met:
    • grass may be able to decay when criteria is not met
    • if grass stays decayed for too long then it dies off
    • decayed grass can then lead into sheep illness
  • Grass can have 2 levels, sheep needs to eat both levels of grass to destroy node

Sheep: Instance of Robotic Node Able to utilise all apsects of the robotic node

  • When a sheep is near grass, it eats it.
  • Sheep can grow (change scale perhaps)
  • Can sense grass (perhaps moves towards it when it is near)
  • Sheep can get ill, recovers from illness over time.
  • Sheep can get ill if not eating enough, if eating decaying grass
  • Sheep excretes waste: -Excrete can be a function of Sheep, chance to do it. Higher chance if ill -Will create a small robotic node (excretion) that will dissapear over time. -Can make other sheep ill -Nearby sheep may get ill, similar to below
  • Sheep reacts to other sheep
    • danger sense
    • other sheep sense that a nearby sheep is in danger and then run with it
    • sheep may end up just running to a good bit of grass
  • Sheep can only communicate with other sheep that are close to them

Farmer: Instance of Robotic Node Able to utilise all aspects of the robotic node

  • Herds together sheep
  • Moves them to be picked up by a truck, which sells the sheep for money

Innovations: Day Night Cycle could be introduced into the simulation. Meaningful sunlight data. Counter for how much money is made from the sheep. - base price for a normal sized sheep - bigger sheep sell for more - e.g Sheep that is 10% bigger sells for 10% more Mad Sheep disease. - chance when ill for sheep to start eating other sheep - potential to extend it to eating farmer - eating sheep will make it grow much faster Sheep dog. - farmer directs sheep dog - farmer can communicate with sheep dog regardless of position

For the Alpha: - 4 set fields - Simple parameter for soil - may not effect on anything - Simple rain for farm, no effect on anything - Grass dies on being eaten, doesnt grow - Sheep just moves and eat grass - Farmer just moves around

Generating a world file for our simulation - For alpha, just a simple pre written world file - Need to generate world files before we run our simulation