-
Over the past semester, we unfortunately have not had as much progress made as we would have liked, but we are picking up momentum. Our goal this semester was to become very acquainted with Elektro and to get the ball rolling on several key components that will be needed for the finished product. The key components to the success of this project are: getting Elektro to create a route or circuit with several stop points along the way and to create a program that will contain each location of Park and be able to find the most efficient route from point A to point B.
MOVEMENT BRAIN
-
We have spent most of our efforts on making progress on the first key aspect since it deals with working with the robot which can at times prove harder than one might think. Unfortunately, when working with a robot, the desired result is not always what the actual output is as we have discovered with Elektro. To start, we chose a small portion of Park so that we would could first test the robot in a small environment and expand it when ready. We are using the Computer Science hallway (the hallway that goes by 232 and 230). Our original plan of how Elektro would execute giving a tour has changed a good deal as we have been working with Elektro. We are using Elektro’s laser sensor since it provides accuracy in a 180 degree range, opposed to sonar sensors which can be less accurate. Unfortunately, Elektro’s laser is located roughly one foot off the ground and can often miss obstructions such as tables, display cases, and people since they can be deceptive of the true obstacles.
Our approach was to split the 180 degrees into sections: left back, left front, front, right front, right back. Our brain consisted of:
-
Get the laser values and average the values of the range (ie angles 0 to angle 30).
-
check if front is clear
-
if yes:
-
if the right back is greater than the left back, move to the right
-
else if the left back is greater than right back, move left
-
if no, stop and turn until it is clear
This is a fairly simple brain where the goal was to get the robot to run in the middle of the hallway and avoid bumping into things in the front. If there was more room on one side than the other, the desired affect was to slowly correct the difference such that the amount of room on both the right and the left were about the same. We did have a threshold of about half a meter to prevent the robot from making sudden or frequent movements. While we had hoped that this brain would give us something similar to our expectations, the brain did not work as well as hoped. The result was the robot zig zagging across the hall instead of having a more fluid motion with smooth transitions in its corrections.
-
We tried several variations of this brain, but we have not yet found a brain that we are confident of and satisfied with. One of the struggles of this simple problem is that the robot can be facing a few different directions and the left and right will still be about equal. The first direction is if the robot is facing forward and the right and left are equal, this is the desired scenario. The second and third directions are if the robot is facing either the right or left, but in such a way that the right and left are similar, but the front reading is less than either of the side readings.
Because of these scenarios, it is hard to tell the robot how to respond to such situations.
-
We have also tried a brain where the robot simply gets the maximum laser reading and then checks to see where that maximum is located. It looked like the following:
-
Get maximum laser value
-
if the max falls in the front 10 degrees (85 – 95)
-
go straight
-
else if the max falls in the left side (0 – 85)
-
too far right, turn left
-
else if the max falls in right side (95 – 179)
-
too far left, turn right
The goal was to find a way to keep the robot facing forward instead of ever facing a wall unless the robot reached a dead end. The brain did a good job of this, however, it often had difficulties if an obstacle was around it. As a result, we have decided to now try behavior based brains.
-
Behavior based brains are brains that have several different “behaviors”. As the Pyro Robotics website states, a behavior is “a block of control code that is responsible for a particular kind of situation or movement.” (http://emergent.brynmawr.edu/pyrobot/?page=PyroModuleBehaviorBasedControl)
Since our final product will have several different behaviors, we have decided that this will be our best bet most likely. While we have not yet tried to implement this type of brain, we intend to pick up here when we come back for the Spring semester.
LOCATION RECOGNITION
-
One of our next obstacles was with getting Elektro to recognize landmarks/tour stops. Elektro is equipped with two video cameras which can be used with Pyro’s image analysis. Pyro can take an image and look at a number of the images characteristics. For example, the number of pixels of the same color, the number of pixels with the same hue, and detects groups of pixels with similar colors. We had hoped to be able to have the robot recognize a colored shape and track the size of each colored blob. When the colored blob would be a certain number of pixels of the image, the robot would be close to the indicator and therefore close to its destination. However, the science building’s hallways are poorly lit and the colors are not easily recognized since it looks too similar to the rest of the hallway’s characteristics. The robot would also get thrown off if a window was viewable since the natural light is much brighter than the hallway’s flourescent lights. Since there are too many inconsistancies of the hallway conditions, we have decided to forego working with the cameras to signal Elektro of its whereabouts.
We are hoping that we might be able to use some kind of timing system. For example, if you are going straight, start a counter. After 20 steps of going straight, you should be in front of Room xxx. This approach is similar to how blind people might get around from place to place. Unfortunately, we have not been able to test this since we are still having problems with getting a reliable brain for movement in place. Similarly to the movement brain, we will start this once we come back for the Spring semester. We are optimistic that this will work with the assistance of an occupancy grid.
-
Unfortunately, we have not yet started implementing an occupancy grid because we are still researching on how to implement one. We have recently been reading about Markov Localization since we need some kind of algorithm that will allow the robot to localize itself without the knowledge of its location. With an occupancy grid we are hoping that we can recognize locations without the use of any indicator created by us and that the natural environment will suffice to allow the robot to locate itself. http://www 2.cs.cmu.edu/afs/cs/project/jair/pub/volume11/fox99a html/node23.html
http://www 2.cs.cmu.edu/afs/cs/project/jair/pub/volume11/fox99a html/node2.html
DIRECTIONS
-
The second most important component is the ability to give directions to lost students, faculty, or visitors. In order to accomplish this we entered information about the rooms, intersections and other points of interest like bathrooms or entrances. The information we cared about consisted of what each location’s neighbors were so that we knew what other locations each place was connected to. We used the A* algorithm to use the data we had entered to find a path from point A to point B. A* is an algorithm that is often used in games and often performs better than other searching algorithms like depth first or breadth first. A* uses heuristics to get an estimate of how much it cost to get from point A to its current position as well as an estimate for how much it will cost to go from point A to point B. With these factors calculated, the list of nodes (the list of locations) are sorted accordingly. So far, just using the rooms that are located along the Computer Science hallway and the physics hallway, we have been able to populated a string of numbers which represent how to get from point A to point B. Our next goal in this component is to extend the coverage of the directions, meaning we have to add more rooms and points of interest so that we can possibly cover all of the science building. We also have to convert the outputted string of numbers to a string of directions. For example, if you want to go from the stairwell closest to the front door to room 230, the output would be something like: “1001 801 802 247 232 231 230" instead of “Turn right at the hallway past the restrooms, 232, and 231 to get to room 230.” The string of numbers is not very helpful for someone who already does not know where he or she is going. We also have to work with the voice recognition to ensure that Elektro can understand and interpret what directions it is being asked for.
HUMAN INTERACTION
-
In order for Elektro to interact with possible tour guide receivers and direction seekers, it has to be able to listen and speak. Luckily, Elektro has two programs that can assist us in making this possible: the Festival Server and Sphynx. The Festival Client Server allows us to make Elektro speak. At this point, we can put what we want him to say in a text file and feed the file to the Festival Client. For now, the speaking part works as well as we need it to until we have the tour part of the project completed enough to need to use the speech component. Sphynx is an application that is used for voice recognition. We have not had much time to test its capabilities in the context of our project, it seems to interpret daily human speech. Once we return for the Spring semester, we will work on integrating Sphynx with Pyro as well as our existing programs. We also have to load Sphynx onto Elektro and test its microphone range. We had originally proposed to have Elektro know if it had already asked a person if her or she wanted a tour, but since the vision module is not working as well as planned, we are unsure how realistic this will be to implement, but it is trivial at this point since there are many key components we need to take care of first.
SIMULATOR
-
Pyro’s simulators can be very useful, however, partially because Pyro is a work in progress, there are several things that we have on the real Elektro that we cannot try on the simulated Elektro. Unfortunately, the simulator has not offered too much help in creating a good movement brain since there are several things in the real hall way that we cannot add into the simulator. For example, tables where the lasers will not detect an obstacle, people walking by, the amount of noise present.
