Logan's Hastily Thrown Together Method

From RoboJackets Wiki
Revision as of 20:51, 15 April 2006 by LoganS (talk | contribs) (just in case)
Jump to navigation Jump to search

This method will operate using a computer vision system by breaking up all incoming data into segments (perhaps 64 by 64). The idea is that we know where in the vision field that a certain segment sits. Each segment will report whether it is seeing a barrel, a line, or nothing threatening. Thus, we have a basic map of "dangers" in our field of view. The navigation will then make assumptions about each segment based on which are reporting dangers.

Arrangement of Camera

The camera should be arranged so that the horizon is not visible directly in the image. From an initial trial with the JVC Camera, it appears that tilting the camers about 30 degrees below its x axis (assuming the x axis is running through the lens and out the back of the camera). This should give the camera approximately 3 meters of depth in its forward view.

Creating the Danger Map

An algorithm will cycle through each image looking for line and barrel detections. If a barrel is reported in that segment, then that segment is flagged as containing a barrel. If a line is reported in the segment, the segment is reported as containing a line. The general method should look like this:

  1. Scan entire image for barrels.
  2. Scan entire image for lines.
  3. Scan through segments checking to see if a line or barrel was detected in that segment (this would be done by checking the line map and barrel map at those points in space).
  4. Assign values that stand for lines (0), barrels (1), or nothing of interest (2).

Priorities

Certain segment groups will have more priority than others in terms of which way the drive system should cause the robot to move. Typically, the bottom will have more priority than the top. Also, middles will have more priority than left and right. Perhaps some sort of "drive queue" with an agenda for the drive system could be created, which high priority needs being met first. And perhaps, if a high priority need arises while a low prioty is in action, it will jump into the queue and take over.

Short Term Memory

Memory should be maintained with the last few turn directives. This would be need to be viewed if we had to turn, such as the case of a line. This way we know what sort of movement set us on this path and thus how to avoid the obstacle without getting turned around on the course.

Assumptions from Danger Map

Items in Top Left

  • Line - We are on a straight course. This does not influence the drive system.
  • Barrel - We are approaching a barrel to the right. This does not influence the drive system.

Items in Top Middle

  • Line - We are driving into a line. The robot should turn until the line is no longer detected here. This has low priority.
  • Barrel - We are driving towards a barrel. We should some direction after querying the left and right segment groups. This has low priority.

Items in Top Right

  • Line - We are on a straight course. This does not influence the drive system.
  • Barrel - We are approaching a barrel to the left. This does not influence the drive system.

Items in Middle Left

  • Line - We may not be on straight course. However, this will not affect the drive system.
  • Barrel - We are approaching a barrel to the right. This does not influence the drive system.

Items in Middle

  • Line - We MUST turn. This is high priority.
  • Barrel - We MUST turn. This is high priority.

Items in Middle Right

  • Line - We may not be on straight course. However, this will not affect the drive system.
  • Barrel - We are approaching a barrel to the left. This does not influence the drive system.

Items in Bottom Left