PRE2019 3 Group9
Group members
Name | Study | Student Number |
---|---|---|
Nick Reniers | Technische Wiskunde | 1258362 |
Jankatiri Boon | Werktuigbouwkunde | 1003254 |
Milan Hutten | Software Science | 0997241 |
Mendel van der Vleuten | Technische Wiskunde | 1262564 |
Ferenc Sterkens | Werktuigbouwkunde | 1022090 |
Introduction
A lot of research has been done into flora and fauna all over the world, but our knowledge of subterranean species remains relatively limited. This is in large part due to our inability to study these animals without destroying their burrows and scaring them away. Most current techniques require destruction of subterranean burrows or even killing the animals. This makes certain fields such as ethology, the study of animal behaviour, very difficult or impossible to practice. The field of robotics could provide a solution in the form of an autonomous robot capable of traversing subterranean burrows and recording the animals. This page describes a robotic system designed to study the behaviour of black-tailed prairie dogs within their burrows.
Problem statement
Animals have been studied for almost as long as humans exist. Whether it is to benefit from the acquired knowledge or purely out of fascination, we have continuously tried to understand the lives of different animal species and how they interact with the world we inhabit. One such species is the black-tailed prairie dogs that live in prairies of western North America. Although a lot is already known about them, there still remains a lot to discover. Mainly about their lives underground. One professor who has been studying these prairie dogs is John L. Hoogland. In his book "The Black-Tailed Prairie Dog: Social Life of a Burrowing Animal" he describes the behaviour of these animals in their natural environment and the methods he used to acquire this information. He begins his book by explicitly mentioning in the preface that the information gap between what there is to know about black-tailed prairie dogs and what he was able to learn is enormous. Throughout the book he mentioned whenever he had to make assumptions about their behaviour because he was unable to prove them such as their sleeping behaviour and what happens to individuals when they perish as a result of disease, old age and poor conditions. Most of these assumptions were made because he was unable to observe their behaviour underground within their burrows. Hoogland did not have the tools to infiltrate the burrows without disturbing the prairie dogs and keeping them in laboratories is difficult as they do not breed reliably in those environments. Moreover, the prairie dogs behaviour might be different in laboratories from that in the wild, which could explain why their reduces breeding. This makes studying the behaviour of black-tailed prairie dogs, and presumably other burrowing animal species, while in their burrows very difficult if not impossible without the right tools.
Users
Users | Society | Enterprises |
---|---|---|
Researchers | Towns closeby | Robot manufacturers |
Engineers | Universities | |
Animal caretakers | Zoo's |
Many people and institutions have some relation with subterranean species in one way or another. Examples are given in the table above, such as zoo's exhibiting and caring for these animals and farmers whose harvests can be positively or negatively influenced by the presence of these animals. The table also shows potential stakeholders of the robot such as the manufacturers that will be building these robots. However, for the analysis of the user and their needs, the focus is on the researchers as users, more specifically researchers that specialize in ethology, the study of animal behaviour under natural conditions, and hence study the behaviour of the black-tailed prairie dogs. In the problem statement it was mentioned that the behaviour of black-tailed prairie dogs can still be researched quite a lot, therefore ethology was chosen as our main focus.
Ethology research method
As mentioned before, ethology is the study of animal behaviour under natural conditions. Hence, a large part of the study is observing the animals in the wild. This can be done by observing in person or using cameras to observe remotely. One of the problems with observing in person that arises once we are talking about subterranean species is that you cannot observe them in their natural conditions as you cannot enter their burrows without disturbing the animals. An advantage that cameras have over observing in person is that you do not have to be physically at the location to observe the behaviour. This could provide a solution to the problem described in the problem statement. However, in order to place the camera's manually, the burrows still have to be entered which will inevitably disturb the animals. In theory, the advantage of a robot could be that they can enter the animals burrow without disturbing them and recording their behaviour for the researchers to analyze.
User Needs
In order to create a well-founded conclusion, the demands and preferences of ethologists, the field of ethology itself and the animal species to be studied must be taken into account. The list beneath sums up the most important needs of the users.
- Ability to observe the animals within their burrows
- This is the most important step in improving the current research method since this does not happen without disturbing the animals heavily.
- Visualisation of burrows
- Some behaviour could be explained if a link can be created to seperate specials rooms or tunnels if they are found by mapping the burrows.
- Keep track of population growth
- The animals behaviour might change based on the size of their colony, therefore it is favourable to know how big the population is.
- Minimal disturbance of the animals
- It is important that the animals get disturbed as little as possible so that the natural conditions can be preserved as much as possible. Less disturbance means more reliable results
Biological study fields
This list is composed purely based on the short descriptions of the studies.
- Ethology: the study of the behaviour of animals. Requires ability to observe individuals.
- Entomolgy, Herpetology, Ichtyology, Mammalogy and Ornithology: the studies of insects, reptiles and amphibians, fish, mammals and birds respectively. Purely based on the species we focus on.
- Biogeograph: the study of the distribution of species spatially and temporally. Requires ability to observe individuals and count populations.
- Biomechanics: the study of the mechanics of living beings. Requires ability to observe individuals. Specifically interesting for mechanics that do not or rarely occur above ground.
- Chronobiology: the study of periodic events in living systems. Requires ability to observe individuals
- Conservation biology: the study of the preservation, protection, or restoration of the natural environment, natural ecosystems, vegetation, and wildlife. Requires ability to count populations.
- Ecology: the study of the interactions of living organisms with one another and with the non-living elements of their environment. Requires ability to observe individuals.
- Sociobiology: the study of social behavior in terms of evolution. Requires ability to observe individuals.
RPC's
To find out what we can and can't do, and make sure that the project is useful and true to what we want. We will set up a RPC list which stands for Requirements, Preferences and Constraints. These guidelines will make sure that our project and results will be done fitting the needs of the user.
Requirements:
- Map the usefulness of the rooms with respect to each other to 100 percent accuracy.
The ethologist could not confirm where the prairie dogs did their eating, sleeping and defecating. but he wrote it like he was curious of it.
- The robot needs parts to be able to climb 90 degree slopes.
The burrows of the prairie dog are mostly angled downwards. After the robot drove down and collected all the essential data, it needs a way to go up. Otherwise it will be stuck and that would be a waste of either the burrow or the robot.
- It needs to be 100% electric.
Oxygen is essential to the prairie dogs, so if we were to use combustion engines, we would endanger these animals and force them out of their homes. That is why it is crucial that we use a fully electricity powered robot.
- The robot needs to be able to turn more than 2 ways.
Otherwise it wouldn't be able to discover multiple holes and find out the entire burrow.
Preferences:
- It needs to be able to be charged easily by USB.
As it is convenient and doubles as a way to transfer the information gathered by the robot.
- The robot shouldn't be seen as hostile to the prairie dogs.
As that would ruin part of the experiment and ruin their homes which is not something we are looking for.
- The robot can't be fragile.
As it might break inside the corridors because of drops from heights or possible attacks from the prairie dogs.
- The mapping should give a good enough idea of the surroundings.
We would like a nice reference system that can be used for research which is why that is important.
- The natural conditions wouldn't be disturbed by the robot.
This again would add changes or possibly ruin the homes of the animals which isn't desirable
- The tires need to have high traction.
High traction is necessary to keep slip from happening as much as possible.
- The robot needs to have a way to climb.
Going down wont be that big of a problem but it needs a way to go up again otherwise you wouldn't be able to gather the data or reuse that robot.
- Be able to trace back and return to the user after completing its tasks.
This also applies to the idea that the robot needs to be regathered to convert information for research and reuse.
- Safely and autonomously navigate the specified underground systems.
We want it to be able to discover the pathways by itself so that it can map the system accurately and more information comes to light about these animals. Constraints:
- The robot has a maximum height and width of 10 cm.
It needs to be able to fit inside the holes and pathways made by the prairie dogs.
- The robot can't use combustion as propulsion.
This would remove all the breathable air out of the system and would make the home of the prairie dogs unlivable. Combustion engines might even kill the prairie dogs due to carbon monoxide poisoning.
- It can not be longer than 20 cm.
This is also necessary because the animals might make sharp turns which the robot should be able to maneuver in.
The Requirements, are the things that the robot needs to have and are things we can measure and confirm afterwards.
The Preferences, are the things that we would like our robot to have and which we will try our best to comply to.
The Constraints, are the things that can not be crossed else the product would not work or fit for our purpose.
Approach
We approach the problem in a very practical manner, we opt to create a robot that autonomously investigates underground tunnels and maps them. We first make a selection of subterranean animals for which we can map their corresponding burrows, and then research details of these animals and underground systems as to prepare a robot that can safely navigate them
Objectives and milestones
- Make a selection of animals for which it is feasible to construct a robot that navigates their burrows
- Research the animals specified in the first milestone and their corresponding underground systems
- Make a construction plan for a robot that could navigate said tunnels adequately
- Prepare software for path finding in burrowss
- Prepare software for mapping the underground systems
- Construct the robot
- Validate the workings of the robot and summarize our findings
Interview Candidates
prof.dr.ir F (Frank) van Langevelde has only 3 publications related to soil fauna. In these studies, they mainly refer with "soil fauna" to smaller critters such as nematodes, collembola (springtails) and other small arthropods inhabiting the soil. Most of which either do not create burrows but just tunnels through moving around in the soil. Their sampling of soil fauna can be oversimplified as extracting samples from the natural environment, extracting the desired type of animal from those samples, for example extracting collembola using tullgren funnels, and doing the required measurements. Because most species do not create burrows and because of the effectiveness of the current sampling strategy, the use of robots in this scenario does not seem to be a viable option.
- van Langevelde, F., Comor, V., de Bie, S., Prins, H. H., & Thakur, M. P. (2020). Disturbance regulates the density–body‐mass relationship of soil fauna. Ecological Applications, 30(1), e02019. [1]
- Thakur, M.P., M.P. Berg, N. Eisenhauer and F. van Langevelde (2014) Disturbance–diversity relationships for soil fauna are explained by faunal community biomass in a salt marsh. Soil Biology & Biochemistry 78:30–37[2]
- Comor, V., Thakur, M. P., Berg, M. P., de Bie, S., Prins, H. H., & van Langevelde, F. (2014). Productivity affects the density–body mass relationship of soil fauna communities. Soil Biology and Biochemistry, 72, 203-211. [3]
dr.ir. AR (Anouschka) Hof has mostly done studies into the decline of the western hedgehogs pupulations in europe, and mainly in Great Britain, when it comes to soil fauna. This makes her an interesting candidate, though there are two things to consider. First, she seems to mostly get data via questionaires rather than field study. Just like with the sampling of the soil fauna done by Langevelde, the questionaire might be more effective then using robots. Secondly, a hedgehogs den is not very complex, and not even always underground, making pathfinding not a big priority. If a robot would be used, a remote controlled one would probably easily suffice.
- The impact of grassy field margins on macro-invertebrate abundance in adjacent arable fields
- A study of the current status of the hedgehog (Erinaceus europaeus), and its decline in Great Britain since 1960
- The value of green-spaces in built-up areas for western hedgehogs
- Quantifying the long-term decline of the West European hedgehog in England by subsampling citizen-science datasets
- Factors affecting hedgehog presence on farmland as assessed by a questionnaire survey
- European terrestrial gastropod distribution. How may climate change affect their diversity and current distribution
- Investigating the role of the eurasian badger (Meles meles) in the nationwide distribution of the western european hedgehog (Erinaceus europaeus) in England
- Local variations in small scale movements of hedgehogs in rural areas.
- Egels in de problemen?
Y (Yorick) Liefting BSc is not a biological scientist himself, but he experiments with new technology and develops tools to support research.
Path finding
Given that we want to map underground tunnels of a specific species of subterranean animals, we need a systematic and preferably mathematically adequate way to represent different important aspects of the tunnels. The most straightforward way to do this is by the usage of the mathematical objects that are graphs. A graph G is a tuple G=(V,E) consisting of a vertex set V and an edge set E. Here, the edge set E contains unordered pairs of vertices between which an edge is present. There is also a variant of graphs in which the vertex pairs are ordered, but for the purpose of tunnel mapping, this is inconvenient. We can also consider the concept of a multigraph, in which multiple edges are possible between the same two vertices, this may be the case for some certain species of animals, but this demands further research. For now, we will assume simple undirected graphs as representatives for the tunnels of our species of animals.
For the purpose of mapping an underground tunnel system in general, one can deploy a multitude of graph algorithms. The most obvious algorithms for this purpose are depth first search and breadth first search, which greedily traverse a graph (representing the underground system of the animal). We can also look into finding specific points of interest depending on the animals we want to investigate. For example, one may be particularly interested in finding a nest in a mole underground system. For such purposes, specialized search algorithms that take into account the known properties of such points of interest, may be optimal.
Given that we have found the graph corresponding to the subterranean structure we want to investigate, we can look at some interesting properties of the graph. Examples would be the minimum spanning tree of the graph or the (non-)existence of cycles and connectedness.
When talking about path finding in robots it is also necessary to think of ways for the robot to follow a path. Considering we will be working underground and partially above ground in places made constructed by animals, it would be a good idea to look into how these animals move or to inspire the movement of the robot on biological movement. In the paper "Biologically Inspired Locomotion Strategies: Novel Ground Mobile Robots at RoMeLa" a few designs are discussed on moving forward on land. The first robot is a concept that is closely related to tracks. This design is inspired on single celled organisms such as amoeba. An elongated torus continuously rolls such that there is a system similar to 360 degree track system. This could be very useful for our goals, but difficulties will lie in gathering and collecting data. The second design involves a robot with 3 legs, This design makes use of a swinging third legs, so it needs a lot of space. This is not something which would be useful for underground or small above ground burrows/nests. The robot MARS utilizes six axi-symmetrically arranged limbs, this robot is well adapted for crawling over uneven terrain, which is what we are interested in. But it does not perform well in tunnel systems. It also uses gecko-like dry adhesive to stick to surfaces, but as we are not dealing zero gravity this will most likely not be necessary. So depending on what our final goal is this robot may or may not be of interest. The IMPASS robot has wheels like structures to move forward, it has 6 spokes with small foot like platforms so it can roll. The thing that makes this robot stand out is that the spokes can change in length allowing for better traversing of rough terrain and more stability. Again this robot seems very adept at walking on ground, but less so underground. Finally a humanoid robot is presented but this is very impractical for our goals.
Prairie dogs
Prairie dogs are herbivorous rodents that create interesting burrows. They are native to the grasslands of North America. There are five species of prairie dogs: black-tailed, white-tailed, Gunnison's , Utah, and Mexican prairie dogs.
Black-tailed prairie dogs
current
The behaviour of prairie dogs is currently studied by observing them while they are above ground. When it comes to food foraging individuals are observed also excretion and stomach contents are analysed to determine what kind of diet prairy dogs have. Similarly for general behaviour near burrows is done by observing them from outside of the burrow. There have been a few excavations of burrows to find their general structure, but all of these were done in such a fashion that the burrow was completely destroyed.
Description
Usually, black-tailed prairie dogs have a body that is 36 to 43 centimeters tall and weighs roughly 700 to 1500 grams, where the males tend to be heavier than the females. Their bodies are also very compact, and they have black long claws that are used for digging. The black tailed prairie dogs are usually colored a pale tone of brown, with a black spots on their tail. These points of information may be useful for letting our robot recognize the animals when exploring their burrows, alternatively we may use heat sensors to detect living beings.
Social life and habits
Black-tailed prairie dogs live in prairies of western North America. An image of their geographical distribution is shown below:
The species is also very colonial, colonies of the black-tailed prairie dogs may contain thousands of members, their territory stretching out kilometers in all directions. Colonies are further subdivided in a couple of wards that are based around topographic features such as hills. These ward themselves can then be subdivided into coteries. These coteries consist of groups of one or two men with a number of women and their offspring.
Black-tailed prairie dogs are also diurnal, meaning that they are typically active during daytime. As such, their foraging tends to happen from dawn to dusk. During winter, they do not hibernate and continue to forage. At night however, they go in a state of torpor which is similar to hibernation but shorter and involuntary.
Burrows
Burrows are underground tunnels that have at least one opening at the surface. Prairie dog burrows are essential to defend the species against predators and weather circumstances. The diameter of such a burrow is usually around 10-30cm at the surface and a little bit more narrow underground. The depth of these burrows is generally around 2-3 meters with a length of 5 to 10 meters, but they can range to 33 meters long and 10 meters deep. Burrows can have one of multiple functions, spending the night, bringing up offspring or refuge from weather circumstances and predators. This may then explain the variety of width and length of different burrows. Burrows for raising the young, nursery burrows and burrows for submergence at sunset, contain one or two nest chambers that are filled with dry grass. These chambers tend to be around 30 centimeters high and 50 centimeters high, these chambers are shown to be used for raising the juvenile and are hypothesized to be used as sleeping chambers for the adults. There also exist smaller chambers that are not used for these purposes, they can usually be found around 1 meter below the surface and are thought to function as turnaround points or temporary hideout that allows for listening to threats from above the surface. The sharing of burrows is very common, not only from generation to generation but members of a coterie also have access to a multitude of burrows.
There are a couple of predators that hunt prairie dogs, these predators can either hunt on them from above the surface or below the surface. Examples of above the surface predators are coyotes, bobcats and aerial predators. Snakes, American badges and black-footed ferrets hunt on prairie dogs from below the ground. Little is known about prairie dogs that die from natural conditions, but evidence suggests that this mostly happens below the ground and that dead bodies may be pushed out of the burrows by the other prairie dogs. There are also cases where bones where found in burrow mounds, they may have been carried above the ground when excavating or renovating burrows.
Burrow mounds have some interesting functionalities. First off, burrows help the prairie dogs protect against flooding rainstorms, which can occur in the areas they tend to live in. Prairie dogs have furthermore been seen to frequently run to the mounds in times of suspected danger, this is thought to be because the mounds allow for efficient scanning for predators. Most fascinatingly, burrow mounds stimulate Bernouilli's principle, thus creating better ventilation. This may especially be important in longer burrows.
Animal needs
In this chapter, we have seen that a lot of information about the life of the black-tailed prairie dog is still unknown. Interesting examples are the lack of knowledge about the way deceased prairie dogs are handled by other prairie dogs, the areas in which prairie dogs defecate and the possible use of nest chambers as sleeping places for prairie dogs. These might seem like relatively simple issues, but the lack of ability to investigate the burrows of prairie dogs makes it so that we have to rely on intuition and suspicions rather than hard evidence. We opt to design a robot that traverses the burrows to search for evidence of certain suspicions that we have about subterranean behavior of the black-tailed prairie dogs.
Given our task of designing such a robot, there are a few things that we have to keep in mind. First off, we have to create our robot such that it does not significantly disturb the prairie dogs. We try to avoid this because it might lead to unusual behavior of the prairie dogs, while we are interested in the usual behavior. We must thus assure that the prairie dogs can keep living their everyday live without taking notice of our investigations. If we are able to construct a robot that satisfies this criterion, we must also assure that we do not damage the burrows or hurt the chances of survival of the prairie dogs in any other way. At last, our robot must of course be able to investigate the behavior in which we are interested. A way of investigating the sleeping and defecating behavior of the prairie dogs may just be to traverse the burrows while recording. The problem is that we then only find information about a slice of the everyday life of the prairie dog. For the aforementioned issues, it may be more interesting to research the life of the prairie dogs in continuity. We can achieve this by setting up cameras in certain points of interest inside the prairie dog burrows. This way, our robot has to traverse the burrows only once to set up cameras, while still allowing us to look into long-term behavior of the prairie dogs. Setting up cameras would be ideal, but very complicated. We would have to build a robot that can set up cameras and deal with the potential wiring of cameras. A good alternative would be to let the robot itself film the prairie dog chambers with for example a thermographic camera. Another idea we had was to attach some sort of camera to the prairie dog as to gain information about its daily life. It may be that this hinders the prairie dogs in significant ways but we could further investigate this.
Bronnen:
https://en.wikipedia.org/wiki/Prairie_dog (eerste deeltje)[4] https://en.wikipedia.org/wiki/Black-tailed_prairie_dog[5] https://books.google.nl/books?hl=nl&lr=&id=BJzzQXkka54C&oi=fnd&pg=PR13&dq=prairie+dog&ots=V21MgOvPXy&sig=bmR17lWn7fuCwlca53E9aXoREQY#v=onepage&q&f=false (black-tailed prairie dog)[6]
Mapping
[7] The robot needs to map out the burrows to improve their navigation. On top of that those maps could be analyzed for research purposes. Ferenc is looking into which sensor are required for mapping among other things and Mendel, Nick and Milan look into how the burrows can best be "visualized" for the robot navigation as well for analysis.
We first had a look at the slides of week 2 of the course Interaction with social robots (0LSUD0) where robot navigation is discussed. Mapping, among other topics, are brought up in the slides. According to the slides, there are three ways to represent an environment. These are using a continuous metric, a discrete metric and discrete topological. In a continuous metric, the world is described using coordinates (x and y) and angles (θ). In a discrete metric, the world is described along a grid. Exact angles are mostly lost, but relative positioning between locations and distances are mostly retained. In discrete topological only relative positioning between locations are retained.
The slides discuss two problems with map building, these are keeping track of changes in the environment and the representation and reduction of uncertainty of the robot. The latter is a general problem with robot navigation, but the first is of greater interest to us. Prairie dogs change their burrows over time, for example to accomodate more of them. This is a problem the robot is more likely to run into if it repeatedly has to explore the same burrow. On top of that, if the robot cannot tell the difference between the walls of the tunnels and the prairie dogs, then they will perceive them to be part of the burrow. Then when the prairie dogs move, which they will inevitably do, the burrow will seem to have changed from the robots perspective.
A System for Volumetric Robotic Mapping of Abandoned Mines describes two robotic systems designed for accurate volumetric maps of underground mines. The way these two designed move around is not of much interest to us as they are manually operated by humans. One of them even needs to be pushed forward by people, making the design useless for mapping out Prairie dog burrows. However, the technology used for the mapping itself is of interest to us. Both designs use laser range finders to sense the environment and create a 3-D map by firstly creating a 2-D map with a scan matching algorithm and secondly applying the same algorithm on 3-D measurements after the 2-D map has been completed.
These robotic systems are mainly designed for planar environments, but can still perform decently in non-planar environments by estimating the tilt of the sensors to reduce error in mapping. However, the authors do not discuss how much tilt the robotic systems can deal with. This is important for us to know as the tunnels dug by the prairie dog that our robot has to map out can be very steep. If there is a limit to how much the sensors can tilt before the error becomes to severe, then a better solution might be to modify, if possible, the algorithm such that it can deal with the extra dimension and angle. Depending on how exactly the robot will move through the burrows, modifying might be the prefered option as the robot could also have to deal with the possibility that it is slightly tilted along the other axis or even fully upside down. We have to better understand the actual algorithm to see if modification is even a possibility.
Probabilistic robotics. Communications of the ACM discusses the uncertainties that arises when determining the location of the robot and how to deal with them using probability distributions but does not go into detail how exactly the sensory data is processed and visualized.
Sources
- Choi, H., Ryew, S., & Cho, S. (1999). Development of articulated robot for inspection of underground pipelines.[8]
- Thrun, S. (2002). Robotic mapping: A survey. Exploring artificial intelligence in the new millennium, 1(1-35), 1.[9]
- Thrun, S., Hahnel, D., Ferguson, D., Montemerlo, M., Triebel, R., Burgard, W., ... & Whittaker, W. (2003, September). A system for volumetric robotic mapping of abandoned mines. In 2003 IEEE International Conference on Robotics and Automation (Cat. No. 03CH37422) (Vol. 3, pp. 4270-4275). IEEE.[10]
- Thrun, S. (2002). Probabilistic robotics. Communications of the ACM, 45(3), 52-57.[11]
- Stachniss, C. (2009). Robotic mapping and exploration (Vol. 55). Springer.[12]
- Thrun, S., Thayer, S., Whittaker, W., Baker, C., Burgard, W., Ferguson, D., ... & Reverte, C. (2004). Autonomous exploration and mapping of abandoned mines. IEEE Robotics & Automation Magazine, 11(4), 79-91.[13]
Robot design
To have a working robot, the mechanical parts are the most important and essential part of the robot. Without these the robot is rendered useless. The different parts also have to be chosen wisely as they need to be just right for the robot. For example the sensors need to be not only precise but also resistant to dirt and other small obstacles and the wheels need to be big enough for the terrain but small enough to maneuver. Eventually This all comes down to the RPC's.
To start off we will make a general overview of all the parts such a robot should have, and after deciding on a design, another list with the specific parts will be made. The robot should have wheels and a way to accelerate the wheels, which is possible with either multiple motors or with a central motor and a drive shaft. The robot should also have tires or spikes so that it has enough grip to move forward. The steering of the front shaft should also be possible in the robot, else we would have a problem at corners.
The different parts we will need are:
- Wheels and tires
- Suspension (This depends on the design we decide to chose)
- Steering
- The body of the car
- The motor(s)
- The battery
The Wheels
After some research on wheels there were 3 types of wheels in my mind, either very high traction wheels with small spikes or chains around it, to minimize slippage, caterpillars, or mecanum wheels. The latter are omnidirectional which means that the car would be able to move in all directions independent of the direction in which the wheels are facing. Thus using these wheels would remove the need of a steering system. This feature would be really useful in tight spaces.
Unfortunately there is one very big drawback here, the wheels aren't very resistant to dirt and little rocks, this would jam the wheels and make them nothing more than glorified normal wheels with low traction. Hence is why I am afraid that these wheels wont do well in practice, which is very unfortunate. So we 2 options left, either caterpillars or high traction wheels with some sort of steering system. The high traction wheels, will be more responsive and able to steer a lot faster. Here you can see the wheels that would be acceptable for our purpose.
Finally the caterpillars, these are easy to program and very robust, the steering works easily by slowing one side down and speeding one up. You can maneuver these kind of wheels very well, as you are able to turn around in tight spaces. The traction is also really good so it seems that these will be ideal for our case. You can see a picture that would best fit our case below.
Suspension
Suspension is a vital part of designing the model. It makes sure that the organs; the motors, sensors, battery and other electric components do not get damaged. As the robot drops down or drives over bumps there will be vibrations that can disturb the components. To prevent this from happening a suspension will convert the impact vibration in to smaller but longer lasting vibrations which will not be powerful enough to affect the parts in the robot.
Suspension for caterpillar wheels is a lot different from suspension of normal wheels. Normal wheels are all suspended to the body even the ones that are driven, caterpillar wheels are different because of the reason that the driven wheels are stationary and there are separate wheels for the suspension. This makes the design a lot easier as suspension is usually a very complicated part in normal wheels. There are 2 different ways to apply suspension to the wheels of the robot, namely angular suspension and direct suspension.
Angular suspension is usually very good for robust and heavy vehicles, as you can increase or decrease suspension by altering the distance of the springs. This is because you can create a lever by placing the spring closer or further away from the rotation point. The angular suspension can be seen in FIGURE.
Now because our robot will not be very heavy, it seems that making an angular suspension would be overkill and unnecessarily over-complicating the model. Thus we chose to go for a direct suspension over the wheels of the robot. The robot will have a mass certain mass divided over the different wheels, and the springs will therefore be chosen by dividing the spring force necessary over the different wheels. The suspension we chose can be seen in FIGURE.
Steering
The robot will need a way to steer as the tunnels made by prairie dogs will not be 2D. But because we chose for caterpillar wheels, The steering will be done by accelerating one wheel more than the other, which is the way in which steering is usually done.
3D model
To give an impression of what the robot would look like, a 3D render has been created using Siemens NX12. A full version and a skeletal version has been created. The robot needs to be sealed to prevent dirt or other rubble getting in the robot, to prevent prairie dogs getting hurt by the robot if they get stuck and to protect the inner parts of the robot. Let me show you it's features.
- Two sided catterpillar wheels
- The burrows of prairie dogs are not even and level. It will be really likely for the robot to tip over and end up on its back. Having two sets of catterpillar wheels you reduce the chance to get stuck significantly. Each set of wheels has it own electric engine and can be activated seperately from one and other.
- Gyroscope
- In order to know which side the robot is driving on, a gyroscope is added. With it being connected to the circuitry the robot will always know how it is oriented and which set of wheels to activate.
- Rope absailing mechanics
- Since the burrows also differ in vertical height, a way had to be found for the robot to safely ascend and descend the burrows. Using a rope absailing mechanism, the robot can safely descend downwards if the burrows proceeds downward. If the robot reaches a dead end at the bottom, the robot can back up and pull itself back up in order to continue exploring different burrows.
- The mechaniscm is hooked up to its own electric engine.
- The mechanism operatos autonomally in accordance with the lasers. If a dead end is detected, the robot will back up and simultaneously the rope will get rolled back on the cylinder.
- A very thin and strong rope would be used, like a fishing line. The prairie dogs won't be able to destroy the line and it will not be big enough to damage the prairie dogs. Furthermore, the robot will be able to take enough with it since it does not weigh much and take up barely any space.
- Observational lasers
- Lasers have been put on the sides and front of the robot. The function of the lasers is to scan its surroundings and map it accordingly. The robot has a slight angle of 15 degrees. You can see this with the sets of catterpillar wheels. They are not level. This angle has been created so the laser can view the ground and not get lost in the depth of the burrow if it would be straight ahead. This angle works with both orientations of the robot. A back laser is not necessary since that part of the burrow would already be explored.
Simulation
We have made multiple programs in the programming language Processing, they all have some distinct key features. One simulation focuses on the mapping of a traversed hole (either manually or automatically), another focuses on simulating the physics of the robot and the last focuses on using lasers to detect holes and tunnels inside the burrows. For the Mapping and Hole finding, we used the same burrow image for cross-compatibility.
Mapping
This robot, given a burrow, traverses the burrow (it has settings for both manual and automatic traversal) and it yields a map of the burrow. The map is made by assuming lasers leftwards, rightwards, upwards and downwards, that can detect walls. The wall detection works similarly in the simulation where it finds the closest wall and it remembers it in the mapping. This is done for all four directions and furthermore, the path of the robot is traced. This leads to a nice image of the path of the robot and the walls it found using its lasers in the end.
Physics
As the simulation is supposed to show that the robot can indeed traverse the underground burrows, it must correctly simulate the physics of the robot. Firstly, before even implementing the actual physics, we had to figure out how to display the robot and effectively change the position of the robot. One easy solution would be to use the shape() or beginShape() methods to create a robot. However, one drawback of these is that dynamically changing the shape of the robot, which might be needed to simulate springs, is rather difficult of even impossible to do. Another solution would be to create a robot of multiple shapes, this does allow us to move specific parts separately if need be, but also means we have to move each shape separately even if they all move in the same direction. Though this is not necessarily a problem, it requires a lot of processing to calculate all these translations. Luckily, using pushMatrix() and popMatrix() we can essentially perform transformations on the robot as a whole, while still preserving the ability to move specific parts independently if required.
Although this was good to know, it was not yet needed. More importantly, we had to start implementing some of the actual laws of physics. So we started with one of the easiest laws to implement, gravity. This law required very little, all we had to do was keep track of the position and velocity of the robot, increase its downward velocity by the gravitational acceleration divided by the amount of iterations in a second and add the updated velocity to the current position. And so, we had implemented gravity. Of course, there were no conditions under which the velocity downwards either had to increase or decrease. As a result, the robot would indefinitely speed up.
In the final simulation, the robot may have a downward velocity of zero when it is standing on the ground. Thus, we had to figure out how to detect collision of the robot with the ground. We first tried to simulate the easiest scenario, where the robot falls straight down and lands upon a flat horizontal surface. There was a relatively easily solution for this problem. The simulation checks whether a pixel represents solid ground by checking its color, whether it is dark brown or not. Each iteration, before updating the location of the robot, the simulation checks whether the pixels below the robot after the next update are dark brown. If they are not, then the robots position is updated as usual. If it is, then the simulation updates the position of the robot to one pixel lower until the pixel right below the robot is dark brown. Then it resets the downwards velocity, for the moment we ignore any springs the robot may have to deal with sudden landings.
This solution is sufficient for the simple scenario described above. However, the simulation is supposed to show the robots ability to traverse subterranean burrows which do not have flat surfaces. This quickly turned out to be a much more difficult problem to solve as we suddenly have to check for collisions at different points of the robot as well as implement gravity such that the robot will rotate around one wheel if it does not collide with the ground at to distinct points. Although no solution has been found for this problem yet, we have already looked into to it a bit. There is an example code for collisions between circles, but those solutions are not sufficient for our problem as the shapes we have to deal with are much more complex than a circle. We also found a document talking about representing certain shapes such as rectangles as mathematical equations. We suspect that this may help us to detect the pixels that are taken up by the robot and thus possibly detect collision with the ground.
After some more searching we found a function intersects() which based on the description given allows us to check if two shapes intersect with each other. However, we found little to no examples of how to use the function and were unable to make it work ourselves. The examples we were able to find were from older versions of processing. Hence it might be that the method did not work for the current version of processing. We also found an online article which described in detail how collision could mathematically be calculated. Here representing the shapes as mathematical equations could have been useful. However, the solutions described in the paper either could not solve our problem or required us to separate the burrow into different pieces and then calculate whether there is a collision with any of the pieces. Although this might work, we were unsure of whether we would be able to implement the solutions in time. Hence we eventually went for an easier solution. Instead of trying to figure out for all parts of the robot whether they collide with the burrow, we only do this for the wheels. We can easily check for collision with the wheels by checking for all pixels with a distance from the center of the wheel that is less then the wheels radius whether it has the color of the burrow.
Now that we have solved collision between the robot and the burrow, we started to figure out how to simulate the robots rotation due to gravity that occurs when one wheel is touching the ground and the other one is not. We figured that this would be similar to a pendulum. Hence we looked up an example of a pendulum and tried to recreate it with our robot before we would combine it with collision detection. After some trial and error, we managed to get it working.
https://www.toptal.com/game/video-game-physics-part-ii-collision-detection-for-solid-objects[14] https://youtu.be/9iaEqGOh5WM[15]
Hole finding
Effort Table
Week 1
Name | Total | Break-down | |
---|---|---|---|
Nick Reniers | 7 hours | Introduction lecture (2h), Meeting discussing subject (2h), Studying papers and editing wiki(3h) | |
Jankatiri Boon | 6 hours | Introduction lecture (2h), Meeting discussing subject (2h), Studied papers and editing wiki (2h) | |
Milan Hutten | 7.5 hours | Introduction lecture (2h), Meeting discussing subject (2h), Studied papers (3.5h) | |
Mendel van der Vleuten | 8 hours | introduction lecture (2h), small scale test code (2h), meeting discussed subject (1,5h), studying papers (2,5h) | |
Ferenc Sterkens | 6 hours | introduction lecture (2h), Meeting discussed subject (2h), reading some papers (1h), making planning (1h) |
Week 2
Name | Total | Break-down | |
---|---|---|---|
Nick Reniers | 5 hours | Tutor meeting (20m), Group meeting (40m), recapping graph theory (2h), searching suitable algorithms and writing them (2h) | |
Jankatiri Boon | 5.5 hours | Exploring and reading literature (3h), setup society and enterprise list (1h), write society and enterprise analysis (1.5h) | |
Milan Hutten | 6.25 hours | Tutor meeting (20m), Group meeting (40m), Composing biological study list (30m), Looking for Interview Candidates (4.5h), Composing list of user needs and animal needs (15m) | |
Mendel van der Vleuten | 5 hours | Tutor meeting (20m), Group meeting (40m), Exploritory literature research (2h), Studying papers of robots (2h) | |
Ferenc Sterkens | 6 hours | tutor meeting (20), Group meeting (40m), Looking for interview candidates (3h), mailing candidates (2h) |
Week 3
Name | Total | Break-down | |
---|---|---|---|
Nick Reniers | 10h | tutor meeting (20m), group meeting (10m), reading literature on prairie dogs in general (2h), decided to focus on black-tailed prairie dogs and read more in-depth literature on them (4h), filtering relevant information and compactly summarizing it (3.5h) | |
Jankatiri Boon | 6h | Tutor meeting (20m), Group meeting (10m), Research users (3h), Page lay-out brainstorming and creating tasks for next week (2.5h). | |
Milan Hutten | 9.5 hours | Tutor meeting (20m), Group meeting (10m), Research into mapping out the burrows (9h) | |
Mendel van der Vleuten | 9.5 hours | Tutor meeting (20m), group meeting (10m), Research into prairy dogs (2.5h), research into mapping (4h), researching methods of tunnel traversion (2h), research relation burrowing owls prairie dogs (30m) | |
Ferenc Sterkens | 6.5h | tutor meeting (20m), group meeting (10m), Research into mechanics of robot (4h), Thinking of ideas for design of the robot (2h). |
Week 4
Name | Total | Break-down |
---|---|---|
Nick Reniers | 7 hours 20 minutes | Tutor meeting (20m), Group meeting (2h), Meeting discussing project goal and working on simulation code (4h), Reading literature on prairie dogs and writing part on animal needs (1h) |
Jankatiri Boon | 6h5m | Tutor meeting (20m), Group meeting (2h), Meeting discussing User Needs (45m), implementing user needs 3h |
Milan Hutten | 7 hours and 50 minutes | Tutor meeting (20m), Group meeting (2h), Writing problem statement (1h), Meeting discussing User Needs (45m), Working on the User Needs section (45m), Meeting discussing project goal and working on simulation code (3h) |
Mendel van der Vleuten | 8 hours and 15 minutes | Tutor meeting (20m), group meeting (2h), researching/writing how prairy dogs are currently studied (2h), setting up digital work environment (15m), Meeting discussing project goal and working on simulation code (4h) |
Ferenc Sterkens | 7h | Meeting discussing project goal (1h), researching requirements (2h), making rpc's (2h), editing mechanics part (1.5h), discussing the design (30m) |
Week 5
Name | Total | Break-down | |
---|---|---|---|
Nick Reniers | 9 hours and 45 minutes | tutor meeting (30m), group meeting (1h), Discord meetings (5h), writing small part on results of simulation (15m), programming in processing and using tutorials and online forums independently (2h), meeting thursday(1h) | |
Jankatiri Boon | 8h 30m | tutor meeting (30m), group meetings(personal or discord) (4h30m), Working on robot design (3h30m), | |
Milan Hutten | 8 hours | tutor meeting (30m), group meeting (1h), experimenting with processing (1h), Simulating physics of robot (3h), Meeting Thursday (1h), Discord meeting (1.5h) | |
Mendel van der Vleuten | 9 hours and 30 minutes | expanding on nicks work, generalizing measurement system for 2d mapping (6h), working on wall connection and hole detection system (3.5h) | |
Ferenc Sterkens | 7.5h | tutor meeting (30m), group meeting (1h), researching and fixing the RPC's (1h), added the wheels part to the mechanics (1.5h), working on robot design (3.5h) |
Week 6
Name | Total | Break-down |
---|---|---|
Nick Reniers | 9 hours 30 minutes | Preparation + tutor meeting (1.5h), Meetings(5h), Expanding simulation + bugfixing and cleaning up code (3h) |
Jankatiri Boon | 11h | group meetings(personal or discord) (4h), Working on robot design (5h), Creating description of robot design on wiki(2h) |
Milan Hutten | 12 hours and 10 minutes | Preparing for tutor meeting (1.5h), Tutor meeting (40m), Simulating collision (1.5h), figuring out rotation (1.5h), Thursday Meeting (3h), Friday Meeting (1h), Sunday Meeting (1.5h), collision rotation (1.5h) |
11 hours and 10 minutes Mendel van der Vleuten | Tutor meeting (40m), meeting and working on mapping (1.5h), figuring out rotation (1.5h), Friday Meeting (1h), Saturday Meeting/working (4h), collision rotation (2.5h) | |
Ferenc Sterkens | 11h | Meetings (3h), working on robot design (2h), working on the model of the robot (5h), motivation of the robot choices (1h) |
Week 7
Name | Total | Break-down |
---|---|---|
Nick Reniers | 14.5h | Tutor meeting (0.5h), Monday-,Tuesday-,Wednesday-,Thursday-,Saturday-,Sunday meeting [Physics simulation] (~14h) |
Jankatiri Boon | 12h | Meetings (3h), working on the model (7h), model description (2h) |
Milan Hutten | 14.25 hours | Tutor meeting (0.5h), Monday meeting [Physics simulation] (3h), Tuesday meeting [Physics simulation] (2h), Wednesday meeting [Physics simulation] (2.5h), Cleaning code (1h), Thursday meeting [Physics simulation] (1.75h), Saturday meeting [Physics simulation] (2h), Sunday meeting [Physics simulation] (1.5h) |
Mendel van der Vleuten | 17 hours | Tutor meeting + combining rotation and gravity phsysics (4h 20m), bugfixing physics (2h 30m), collision (2.5h), bugfixing collision collision (1h 40m), driving (2h), driving (2h), driving bugfixing (2h) |
Ferenc Sterkens | 12 hours | meetings (3h), working on the model (7h), model description (1h), miscellaneous (1h) |
Week 8
Name | Total | Break-down |
---|---|---|
Nick Reniers | ||
Jankatiri Boon | ||
Milan Hutten | Tutor meeting (0.5h), Monday meeting [Task division] (20m), Setting up references (1h and 40m) | |
Mendel van der Vleuten | ||
Ferenc Sterkens |
Articles
A robotics-oriented taxonomy of how ethologists characterize the traversability of animal environments surveys 21 studies of how ethologists characterize the environments through which animals traverse and groups the found characteristics into three broad catergories: local navigational constraints, surface properties, and global layout properties. From these the article makes four recommendations to aid roboticists in selecting a suitable robot for particular environments, building testbeds for the testing and comparing of robots and the collection of data about an environment.
Burrowing rescue robot referring to a mole's shoveling motion proposes an novel inspecting robot designed to inspect survivors at landslide disaster sites. Its proposed propulsion method is inspired by the shoveling motion of a mole.
Deformable Octahedron Burrowing Robot explores the use of a deformable octahedron robot for the autonomous exploration of complex confined spaces. Unlike most other robots, it is able to adapt its shape to better traverse intricate sections of cavities.
Soft Robotic Burrowing Device with Tip-Extension and Granular Fluidization proposes a soft robotic device that burrows through dry sand, leveraging the principles of both tip-extension and granular fluidization.
A Remote Operated Multi-Tracked Vehicle for Subterranean Exploration of Gopher Tortoise Burrows discusses a topic closely related to the one discussed on this page. This article describes a remotely operated vehicle designed to survey and investigate gopher turtoise burrows for the estimation of populations.
CRABOT: A Biomimetic Burrowing Robot Designed for Underground Chemical Source Location describes a prototype burrowing robot called CRABOT developed to help find leaks in undergroud piplines transporting chemicals.
Cockroaches traverse crevices, crawl rapidly in confined spaces, and inspire a soft, legged robot explains how cockroaches way of traversing small crevices support a model of a new unexplored mode of locomotion "body-friction legged crawling" which could be applied in robotics.
Towards a Mobile Mapping Robot for Underground Mines describes a robot platform which can help construct 3D environment underground mappings.
Development of Search-and-rescue Robots for Underground Coal Mine Applications describes the design and development of a coal mine rescue robot which can be used as a reference.
Autonomous Robotic Monitoring of Underground Cable Systems investigates the possibility of autonomous robotic mobile platforms for monitoring infrastructures
PATH FINDING - Dijkstra’s and A* Algorithm’s summarizes and elaborates on famous path finding algorithms
A shortest-path algorithm for solving the fleet management problem in underground mines uses a shortest path algorithm to manage and schedule underground infrastructure
A Robotic System for Underground Coal Mining "describes a system that automates a continuous miner, enabling it to maneuver in highly constrained environments..."
An underground explorer robot based on peristaltic crawling of earthworms takes inspiration from the earthworm to develop a robot that uses peristaltic crawling which is useful for underground exploration
Evolving Sparse Direction Maps for Maze Pathfinding This paper focuses on evolving data that allows an entity to reach a point quickly from any other point in the maze. This kind of map is generated by a simple genetic algorithm. But this method did not necessarily give the shortest path.
View-Based Cognitive Mapping and Path Planning A view graph is created where views are seen as nodes and the movement between views are seen as edges. This graph retains the topological and directional structure of the maze. A neural network can learn the view graph during a random exploration which then allows it to generate expectations about which views will be encountered next.
Design and Implementation of a Path Finding Robot Using Flood Fill Algorithm This article tries to find out how effective the flood fill algorithm is for maze solving. This algorithm was implemented in a small robot with ultrasonic range sensor and wheel rotation decoders. The robot was able to map the maze and afterwards would do a second run where it tried to find a shortest route to the goal.
Portal-Based True-Distance Heuristics for Path Finding This article introduces a new true distance memory based heuristics as a way to obtain admissible heuristics for explicit stat spaces.
Micromouse : Maze solving algorithm This article is about the creation of a small scale robot which navigates a maze based on sensors, the algorithm used was based on the bellman flooding algorithm with a maze consisting of 16x16 cells.
Path finding simulator for mobile robot navigation This paper is focused on creating a path finding simulator for pioneer 3dx mobile robot. The simulator is provided with multiple algorithms, it can then use any or multiple them (with comparison) to find the shortest possible route.
Solving a Reconfigurable Maze using Hybrid Wall Follower Algorithm This paper expands on the wall follower method of solving a maze, the new algorithm combines left and right hand rules and tests them on several mazes. This hybrid algorithm improved the maze solving abilities significantly compared to just following the wall.
G. Kouros, I. Kostavelis, E. Skartados, D. Giakoumis, A. Simi, G. Manacorda, D. Tzovaras, 3D Underground Mapping with a Mobile Robot and a GPR Antenna, 2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS 2018), Madrid, Spain, October 2018
This paper focuses on scanning subsurface environments using a GPR antenna. This information is then used to create a 3D model of the system.
Kevin James Worrall, David Firstbrook, Thaleia Flessa, Euan McGookin, Douglas Thomson, Patrick Harkness, “Modelling and Control of a Biologically Inspired Trenchless Drilling Device”, in The 12th International UKACC Conference on Control, Sheffield, UK, 5-7 Sept 2018 This work presents the methods used and initial findings of the control of the model for an autonomous trenchless drilling device, with bioinspired worm-like locomotion. The model is validated using Inverse Simulation. The initial control is detailed with data from the simulation and experimental device.
G. Kouros, C. Psarras, I. Kostavelis, D. Giakoumis, D. Tzovaras, Surface/Subsurface Mapping with an Integrated Rover-GPR System, A Simulation Approach, IEEE International Conference on Simulation, Modeling and Programming for Autonomous Robots (SIMPAR 2018), Brisbane, Australia, May 2018. This paper further focuses on the GPR antenna robot, only this time it has an intregrated antenna which allows it to seamlessly integrated to build adjunct surface and subsurface maps.
A. Simi, D. Pasculli, G. Manacorda, “Badger project: GPR system design on board on a underground drilling robot”, 10th International Workshop on Advanced Ground Penetrating Radar (IWAGPR 2019), Hague, The Netherlands, Sep 2019 The present paper presents some results of EU founded project called Badger, the first underground robotic system that can drill, maneuver, localize, map and navigate in the underground space, and which will be equipped with tools for constructing complex geometry networks of stable boreholes.
- ↑ van Langevelde, F., Comor, V., de Bie, S., Prins, H. H., & Thakur, M. P. (2020). "Disturbance regulates the density–body‐mass relationship of soil fauna". Ecological Applications, 30(1), e02019.
- ↑ Thakur, M. P., Berg, M. P., Eisenhauer, N., & van Langevelde, F. (2014). "Disturbance–diversity relationships for soil fauna are explained by faunal community biomass in a salt marsh". Soil Biology and Biochemistry, 78, 30-37.
- ↑ Comor, V., Thakur, M. P., Berg, M. P., de Bie, S., Prins, H. H., & van Langevelde, F. (2014). "Productivity affects the density–body mass relationship of soil fauna communities". Soil Biology and Biochemistry, 72, 203-211.
- ↑ Prairie dog. (n.d.). In Wikipedia. Retrieved February 17, 2020, from "https://en.wikipedia.org/wiki/Prairie_dog"
- ↑ Black-tailed prairie dog. (n.d.). In Wikipedia. Retrieved February 20, 2020, from "https://en.wikipedia.org/wiki/Black-tailed_prairie_dog"
- ↑ Hoogland, J. L. (1995). "The black-tailed prairie dog: social life of a burrowing mammal". University of Chicago Press.
- ↑ Cuijpers, R. H. "Navigation for socially assistive robots"
- ↑ Choi, H., Ryew, S., & Cho, S. (1999). "Development of articulated robot for inspection of underground pipelines".
- ↑ Thrun, S. (2002). "Robotic mapping: A survey". Exploring artificial intelligence in the new millennium, 1(1-35), 1.
- ↑ Thrun, S., Hahnel, D., Ferguson, D., Montemerlo, M., Triebel, R., Burgard, W., ... & Whittaker, W. (2003, September). "A system for volumetric robotic mapping of abandoned mines". In 2003 IEEE International Conference on Robotics and Automation (Cat. No. 03CH37422) (Vol. 3, pp. 4270-4275). IEEE.
- ↑ Thrun, S. (2002). "Probabilistic robotics". Communications of the ACM, 45(3), 52-57.
- ↑ Stachniss, C. (2009). Robotic mapping and exploration (Vol. 55). Springer.
- ↑ Thrun, S., Thayer, S., Whittaker, W., Baker, C., Burgard, W., Ferguson, D., ... & Reverte, C. (2004). "Autonomous exploration and mapping of abandoned mines". IEEE Robotics & Automation Magazine, 11(4), 79-91.
- ↑ Video Game Physics Tutorial - Part II: Collision Detection for Solid Objects. (n.d.). In Developers. Retrieved February 22, 2020, from "https://www.toptal.com/game/video-game-physics-part-ii-collision-detection-for-solid-objects"
- ↑ 3.4: Pendulum Simulation - The Nature of Code. August 1, 2015. In Youtube. Retrieved February 22, 2020, from "https://youtu.be/9iaEqGOh5WM"