BIRS Midterm Documentation

Assignment Overview

The goal of the midterm project was for us to create robotic implementations of a living organism. We had to choose an animal behavior and program our Kittenbots to mimic that behavior.

Animal Behavior

In my research, I looked at a variety of different insects because I was fascinated by their movement patterns, from ant farms to synchronous fireflies. I finally decided to model my project after termite behavior, specifically the termite ink experiment. I found it fascinating that termites communicate solely by smelling and secreting pheromones, which can be manipulated by drawing a line of ink on a surface.

Programming Process

My plan of action was to make my Kittenbot wiggle along a line, which is a seemingly simple task, but I did experience challenges along the way. I chose a simpler behavioral concept because my goal was to make sure that I have a working project, and also become comfortable with programming the Microbit, and Robotbit. 

During my first trials, my robot would not recognize the line correctly and spin around in circles instead. It also moved backwards. This confused me because I had downloaded the code online.

https://youtu.be/W_mZL39oZ88

However, I then took the time to tinker with the code on the MakeCode editor, and test it out with each change I made. This really helped me become more comfortable with programming, and understand how each component worked together. I also had to consider the track I was creating for the robot. I build my line track out of electrical tape. My first iterations had problems because I did not build a proper track. I had to make sure that the track was wide, with obtuse angles at the turning points. I also had to ensure that the entire track was on one surface, with an adequate contrast between the tape and the surface.

Final Product

Below is the finished project:

https://youtu.be/u5Bpz235uis

BIRS Midterm Research Proposal

I’ve decided to model my midterm project after the behavior of termites. A unique behavioral aspect about termites is how they communicate. A little-known fact about them is that they are blind, and so they only communicate through pheromones and vibrations (Traniello 1995). Pheromones are chemical signals that help termites recognize nest mates, a trail of food, or even the presence of danger. A fascinating experiment that has been done to see these communication methods in action, involves drawing an ink trail which the termites then follow and move around (Kershner 2018).

The video below demonstrates the experiment:

I will model my KittenBot after this by using Arduino and RobotBit to create a robot that follows a line too, as shown below:

Sources:

Traniello J.F.A., Robson S.K. (1995) Trail and Territorial Communication in Social Insects. In: Chemical Ecology of Insects 2. Springer, Boston, MA

Kershner, Ariel M., “Termite Trail-Following Behavior Elicited by Ballpoint Pen Ink” (2018). Faculty Curated Undergraduate Works. 49. 
https://scholarworks.arcadia.edu/undergrad_works/49

Lab 4: Physical Implementation of Braitenberg Vehicles

Part A

Step 1: Plan

The Braitenberg vehicle I would like to model my KittenBot after is Insecure, which is the wall follower. A brief description of this robot would be that it roams freely until it hits a wall or obstacle, upon which it would turn out and roam again until it encounters another obstacle and so on. I chose this implementation because I find it really interesting and it has noteworthy real-life applications, such as the Roomba automated vacuum cleaner. I guess I would need further understanding on how to implement the turtle motor system and program it in Python, but I’m excited to develop my skills and try it out. The first thing I would do is assemble to motors and wire them together. Then, I would have to do a lot of research and figure out how to code it in Python, which would require a lot of trial-and-error, and I would also have to conduct several tests and flash several programs into the KittenBot.

Step 2: Program

Our code can be found on GitHub:

https://github.com/bishchand/BIRS-Lab4/blob/master/InsecureRobot.py

In order to mimic the behavior of the “Insecure” Braitenberg vehicle as much as possible, we programmed it according the following rules. The program was in a continuous while loop, because the robot’s purpose was to keep moving and exploring the environment indefinitely. The robot would move forward in one direction, until the distance sensor detects an object 30mm ahead in its path. Once an object is detected 30mm away, two events follow. First, the motors stop for a few seconds, and the servos controlling the direction of the robot turn by 90 degrees.

https://youtu.be/dOH_EyowOqw

Step 3: Document

During this lab session, we set out to complete one task. It was to program our KittenBot to mimic the behavior of the Braitenberg vehicle, Insecure. We met our objective, and the end result was a robot that could explore the environment, while accurately detecting and circumventing any obstacles in its path. 

Below is a video of our robot navigating its way around the classroom.

https://youtu.be/2CwiCZqwDBw

Part B

Step 4: Draw

Step 5: Analyze

My robot’s depth perception and its tendency to steer away from obstacles mimics a biological that is present in all animals, albeit in varying degrees. That trait is instinctive behavior, or more specifically fear of harm. The robot autonomously prevents itself from crashing into the objects in its path, which could damage it. In the same way, animals have an instinct to protect themselves from harm and you would not normally see healthy living beings intentionally crashing into obstacles or putting themselves in harm’s way.

Step 6: Remix

The first successful iteration of my robot did what it was supposed to do, but did not mimic realistic movements, like an actual biological organism. The robot would move forward towards an obstacle and then almost crash into it. As soon as it encountered an obstacle, it would first stop, evaluate its surroundings, and then make a turn. Real living beings would turn away almost automatically instead. So, we removed the delays and that’s what made its turns and movements much smoother and seemingly more intuitive.

I also have conceptual ideas that are currently not within my capacity as a programmer. It would be interesting to add a tracking element to the robot, to replicate social behaviors and a child’s instinct to follow their mother. Using infrared sensors and emitters we could set up a wireless beacon for the robot to find. The idea is that as soon as the robot detects the beacon within range, by detecting the infrared signal, it will move towards finding the beacon.

Step 7: Reflection

Both readings taught two aspects of animal behavior, and the process of implementing it towards robots. The Braitenberg Creatures reading focused more on the mechanical part, and the rules that would set determine the robot’s movements and decisions. Whereas the Experiments in Synthetic Psychology reading explored the cognitive functions and inherent motivation behind such animal behaviors, that would help us further understand what we are trying to accomplish with the rules and behaviors we want our robot to demonstrate.

Reflection #6: Braitenberg Creatures

Synopsis:

This article explained different autonomous creatures created using electronic bricks inspired by Braitenberg’s creatures.

Definitions:

Electronic bricks: specifically modified LEGO Bricks with simple electronic circuits inside

Questions:

  • These creatures were made to be more child friendly. The article explains that “Children learn important ideas about living systems not just by observing creatures but by building them” However after reading on how the creatures work, isn’t it a bit complex and subtle for children below a certain age to comprehend the nuances of the various behaviours?
  • How can vehicles mimic behaviour
    • Follow up: They are not actually imitating the emotions through feeling but rather through response and reaction therefore mimicing associated actions with the given behaviours
  • Can these behaviours also be applied to a kittenbot

Reflection:

The reading was quite comprehensive and generated much though on potential structures when building future robots. It also triggered the thoughts on what it means to live. Is to live, to be able to react? I think these actions can be easily applied to the kittenbot in concept but I’m not sure of the technicalities. 

Lab #3: Kittenbot

By: Gabrielle Branche 

 
The Kittenbot was a good start to working with robots. I really enjoyed putting it together as it reminded me of building a puzzle. The most difficult part was finishing the wiring but after quite a bit of fiddling I got it to work. My bot was able to move, turn, play music and rotate its head (although for some reason it would not turn simultaneously. Working with the code was challenging as I had to figure out what the different terms were. I attempted to make my bot do figure 8’s. While the logic of my blocks made sense, the bot started rumbling. This made me slightly unsure.
 
Code for making the kittenbot make figure 8s
Code for making the kittenbot make figure 8s
 
It is important in the future to think through the code before implementing it just to make sure that it logically makes sense before applying it to the bot. Additionally, when working with the motor it is good to have a good clear space as the bot moves quickly and can hit things or fall off the table which can break it. Finally, I admit that due to time constraints the effort and tinkering needed to fully grasp the bot was not applied to its fullest capacity but I look forward to working with the kittenbot in more detail in the future.