BOM

The BOM (Bearing and Orientation Module) is used to locate other robots and to figure out how far away they are.

Sample code

#include <dragonfly_lib.h>
/*
 * Turns on the BOM so that other robots can find this one
 */
void BOM_on(void)
{
  bom_init(BOM10); // must be called before using any BOM code
  bom_on(); // turns on the BOM
}

#include <dragonfly_lib.h>
/*
 * Searches for robots with their BOMs on in front of this one.
 * If a robot is detected in front of this one, turns the orbs green.
 * If there is no robot in front of this one, turns the orbs red.
 */
void find_robot(void)
{
  orb_init(); // must be called before using any orb code
  bom_init(BOM10); // must be called before using any BOM code

  while(1) // repeat the following code in brackets forever
  {
    bom_refresh(BOM_ALL); // gets the newest values from each BOM detector
    int bom = bom_get_max(); // gets the index of the BOM where the signal is strongest
    // if the strongest signal is from detectors 2-6, then the other robot is in front of this one
    if(bom >= 2 && bom <= 6)
      orb_set_color(GREEN); // other robot detected - turn the orbs green
    else // no robot in front of this one
      orb_set_color(RED); // turn the orbs red
  }
}

Header File

For a full list of functions, see the BOM code header file.

Debugging

Things to check/maintain:
  • Yellow ground wire is plugged in (picture)
  • detector on 9, 10, 11, 12 were OK; the rest of the detectors needed to be reversed (see picture)
  • wire harness

Schematics

Inputs to the BOM:

Output from the BOM:

bom.png (326 KB) Emily Hart, 09/16/2009 08:58 pm

bom_input_schematic.png (17.1 KB) Emily Hart, 09/16/2009 10:07 pm

bom_output_schematic.png (25.4 KB) Emily Hart, 09/16/2009 10:07 pm

Bom1_5_functionality_tests.xlsx - which emitters one the BOM 1.5s are working (8.38 KB) Evan Mullinix, 09/25/2009 05:19 pm