Beispiel #1
0
    def test_conditional_region_merge_2(self):
        """ Two blocks besides and below each other. Shouldn't be merged.
            xx
            xx
              xx
              xx
        """
        r = Region(1)
        r2 = Region(2)

        r.cells = [Cell() for x in xrange(4)]
        r.cell_coords.append([0, 0])
        r.cell_coords.append([0, 1])
        r.cell_coords.append([1, 0])
        r.cell_coords.append([1, 1])
        r.min_x = 0
        r.min_y = 0
        r.max_x = 1
        r.max_y = 1

        r2.cells = [Cell() for x in xrange(4)]
        r2.cell_coords.append([2, 2])
        r2.cell_coords.append([2, 3])
        r2.cell_coords.append([3, 2])
        r2.cell_coords.append([3, 3])
        r2.min_x = 2
        r2.min_y = 2
        r2.max_x = 3
        r2.max_y = 3

        self.assertFalse(r.merge_region_w_criteria(1, 1, r2))

        # Check the size of cell lists
        self.assertTrue(len(r.cells) == 4)
        self.assertTrue(len(r.cell_coords) == 4)
Beispiel #2
0
 def init_field(self):
     ce = Cell()
     ce.set_free()
     self.field = [[ce for x in xrange(self.map_width)]
                   for x in xrange(self.map_width)]
     self.segmented_field = [[
         self.SEGMENT_MAP_NOT_COLORED for x in xrange(self.map_width)
     ] for x in xrange(self.map_width)]
Beispiel #3
0
 def test2_3(self):
     c = Cell()
     c.set_obstacle()
     c.points[Cell.UNDEF_ID] = 94
     c.points[Cell.RED_ID] = 6
     self.assertTrue(c.is_red(), c.get_color_id())
     print c.get_color_hex()
     self.assertEqual(c.get_color_hex(), 'ff0000')
     self.assertFalse(c.is_undef(), c.get_color_id())
Beispiel #4
0
 def test2_2(self):
     c = Cell()
     c.set_obstacle()
     c.points[Cell.UNDEF_ID] = 95
     c.points[Cell.RED_ID] = 5
     self.assertFalse(c.is_red(), c.get_color_id())
     self.assertTrue(c.is_undef(), c.get_color_id())
Beispiel #5
0
    def test_line_fragment_to_region(self):
        lf = RegionLineFragment()
        lf.cells = [Cell(), Cell()]
        lf.cell_coords = [[0, 0], [0, 1]]
        lf.min_y = 0
        lf.max_y = 1
        lf.x = 0
        r = lf.to_region(2)
        self.assertTrue(len(r.cells) == 2)
        self.assertTrue(len(r.cell_coords) == 2)

        self.assertTrue([0, 0] in r.cell_coords)
        self.assertTrue([0, 1] in r.cell_coords)
        self.assertEquals(r.id, 2)
Beispiel #6
0
    def test_conditional_region_merge(self):
        """ Two blocks below each other. Merge should work
        xx
        xx
        xx
        xx
        """
        r = Region(1)
        r2 = Region(2)

        r.cells = [Cell() for x in xrange(4)]
        r.cell_coords.append([0, 0])
        r.cell_coords.append([0, 1])
        r.cell_coords.append([1, 0])
        r.cell_coords.append([1, 1])
        r.min_x = 0
        r.min_y = 0
        r.max_x = 1
        r.max_y = 1

        r2.cells = [Cell() for x in xrange(4)]
        r.cell_coords.append([2, 0])
        r.cell_coords.append([2, 1])
        r.cell_coords.append([3, 0])
        r.cell_coords.append([3, 1])
        r2.min_x = 2
        r2.min_y = 0
        r2.max_x = 3
        r2.max_y = 1

        self.assertTrue(r.merge_region_w_criteria(1, 1, r2))

        # Check the size of cell lists
        self.assertTrue(len(r.cells) == 8)
        self.assertTrue(len(r.cell_coords) == 8)

        self.assertTrue([0, 0] in r.cell_coords)
        self.assertTrue([0, 1] in r.cell_coords)
        self.assertTrue([1, 0] in r.cell_coords)
        self.assertTrue([1, 1] in r.cell_coords)
        self.assertTrue([2, 0] in r.cell_coords)
        self.assertTrue([2, 1] in r.cell_coords)
        self.assertTrue([3, 0] in r.cell_coords)
        self.assertTrue([3, 1] in r.cell_coords)

        self.assertEqual(r.min_x, 0)
        self.assertEqual(r.min_y, 0)
        self.assertEqual(r.max_x, 3)
        self.assertEqual(r.max_y, 1)
Beispiel #7
0
def test_field2():
    size = 50
    field = [[Cell() for x in xrange(size)] for x in xrange(size)]

    for row in field:
        for c in row:
            c.set_unknown()
    return field
Beispiel #8
0
 def test2_2(self):
     c = Cell()
     c.set_obstacle()
     c.points[Cell.UNDEF_ID] = 95
     c.points[Cell.RED_ID] = 5
     self.assertFalse(c.is_red(), c.get_color_id())
     self.assertTrue(c.is_undef(), c.get_color_id())
Beispiel #9
0
def test_field1():
    c = Cell()
    c.set_free()
    field = [[c for x in xrange(15)] for x in xrange(15)]

    field[0][6] = Cell()
    field[0][6].set_unknown()
    field[0][7] = Cell()
    field[0][7].set_unknown()
    field[0][8] = Cell()
    field[0][8].set_unknown()
    field[2][6] = Cell()
    field[2][6].set_unknown()
    field[2][7] = Cell()
    field[2][7].set_unknown()
    field[2][8] = Cell()
    field[2][8].set_unknown()
    return field
def test_field1():
    c = Cell()
    c.set_free()
    field = [[c for x in xrange(15)] for x in xrange(15)]

    field[0][6] = Cell()
    field[0][6].set_unknown()
    field[0][7] = Cell()
    field[0][7].set_unknown()
    field[0][8] = Cell()
    field[0][8].set_unknown()
    field[2][6] = Cell()
    field[2][6].set_unknown()
    field[2][7] = Cell()
    field[2][7].set_unknown()
    field[2][8] = Cell()
    field[2][8].set_unknown()
    return field
Beispiel #11
0
 def __init__(self, size):
     self.field = [[Cell() for i in range(self.num_of_cells)]
                   for j in range(self.num_of_cells)]
     self.cell_size = 1.0 * size / self.num_of_cells
     self.size = size
     self.max_coord = self.size / 2
     self.obstacle_regions = []
     self.unknown_regions = []
     self.__get_point_array = rospy.ServiceProxy('/suturo/GetPointArray',
                                                 GetPointArray)
Beispiel #12
0
    def test_conditional_region_merge4(self):
        """ Two blocks diagonal of each other. But this time, no left/right tolerance in merge is given.
         Merge should not work
        xx
         xx
        """
        r = Region(1)
        r2 = Region(2)

        r.cells = [Cell() for x in xrange(4)]
        r.cell_coords.append([0, 0])
        r.cell_coords.append([0, 1])
        r.cell_coords.append([1, 0])
        r.cell_coords.append([1, 1])
        r.min_x = 0
        r.min_y = 0
        r.max_x = 1
        r.max_y = 1

        r2.cells = [Cell() for x in xrange(4)]
        r2.cell_coords.append([2, 1])
        r2.cell_coords.append([2, 2])
        r2.cell_coords.append([3, 1])
        r2.cell_coords.append([3, 2])
        r2.min_x = 2
        r2.min_y = 1
        r2.max_x = 3
        r2.max_y = 2

        self.assertFalse(r.merge_region_w_criteria(0, 0, r2))

        # Check the size of cell lists
        self.assertEquals(len(r.cells), 4)
        self.assertEquals(len(r.cell_coords), 4)

        self.assertTrue([0, 0] in r.cell_coords)
        self.assertTrue([0, 1] in r.cell_coords)
        self.assertTrue([1, 0] in r.cell_coords)
        self.assertTrue([1, 1] in r.cell_coords)
Beispiel #13
0
    def test_region_merge(self):
        r = Region(1)
        r2 = Region(2)
        r_c1 = Cell()
        r_c1.set_free()
        r.cells.append(r_c1)
        r.cell_coords.append([0, 0])
        r.min_x = 0
        r.min_y = 0
        r.max_x = 0
        r.max_y = 0

        r2_c1 = Cell()
        r2_c1.set_unknown()
        r2.cells.append(r2_c1)
        r2.cell_coords.append([1, 1])
        r2.min_x = 0
        r2.min_y = 0
        r2.max_x = 1
        r2.max_y = 1

        r.merge_region(r2)

        # Check the size of cell lists
        self.assertTrue(len(r.cells) == 2)
        self.assertTrue(len(r.cell_coords) == 2)

        # Check the actual cells
        self.assertTrue(r2_c1 in r.cells)
        self.assertTrue(r_c1 in r.cells)

        self.assertTrue([0, 0] in r.cell_coords)
        self.assertTrue([1, 1] in r.cell_coords)

        self.assertEqual(r.min_x, 0)
        self.assertEqual(r.min_y, 0)
        self.assertEqual(r.max_x, 1)
        self.assertEqual(r.max_y, 1)
    def test_region_merge(self):
        r = Region(1)
        r2 = Region(2)
        r_c1 = Cell()
        r_c1.set_free()
        r.cells.append(r_c1)
        r.cell_coords.append([0,0])
        r.min_x = 0
        r.min_y = 0
        r.max_x = 0
        r.max_y = 0


        r2_c1 = Cell()
        r2_c1.set_unknown()
        r2.cells.append(r2_c1)
        r2.cell_coords.append([1,1])
        r2.min_x = 0
        r2.min_y = 0
        r2.max_x = 1
        r2.max_y = 1

        r.merge_region(r2)

        # Check the size of cell lists
        self.assertTrue(len(r.cells) == 2)
        self.assertTrue(len(r.cell_coords) == 2)

        # Check the actual cells
        self.assertTrue(r2_c1 in r.cells)
        self.assertTrue(r_c1 in r.cells)

        self.assertTrue([0,0] in r.cell_coords)
        self.assertTrue([1,1] in r.cell_coords)

        self.assertEqual(r.min_x,0)
        self.assertEqual(r.min_y,0)
        self.assertEqual(r.max_x,1)
        self.assertEqual(r.max_y,1)
Beispiel #15
0
 def init_field(self):
     ce = Cell()
     ce.set_free()
     self.field = [[ce for x in xrange(self.map_width)] for x in xrange(self.map_width)]
     self.segmented_field = [[self.SEGMENT_MAP_NOT_COLORED for x in xrange(self.map_width)] for x in
                             xrange(self.map_width)]
 def make_free_map(self):
     c = Cell()
     c.set_free()
     test_field = [[deepcopy(c) for x in xrange(15)] for y in xrange(15)]
     return test_field
Beispiel #17
0
    def test1(self):
        c = Cell()
        self.assertTrue(c.is_unknown())
        self.assertFalse(c.is_object())
        self.assertFalse(c.is_obstacle())
        self.assertFalse(c.is_marked())
        self.assertFalse(c.is_free())

        c.set_obstacle()
        self.assertFalse(c.is_unknown())
        self.assertFalse(c.is_object())
        self.assertTrue(c.is_obstacle())
        self.assertFalse(c.is_marked())
        self.assertFalse(c.is_free())
        self.assertFalse(c.is_blue())
        self.assertFalse(c.is_red())
        self.assertTrue(c.is_undef(), c.get_color_id())
        self.assertTrue(c.get_color() == c.UNDEF)

        c.set_blue()
        self.assertFalse(c.is_unknown())
        self.assertFalse(c.is_object())
        self.assertTrue(c.is_obstacle())
        self.assertFalse(c.is_marked())
        self.assertFalse(c.is_free())
        self.assertTrue(c.is_blue())
        self.assertFalse(c.is_red())
        self.assertFalse(c.is_undef())

        c.set_free()
        self.assertFalse(c.is_unknown())
        self.assertFalse(c.is_object())
        self.assertFalse(c.is_obstacle())
        self.assertFalse(c.is_marked())
        self.assertTrue(c.is_free())
        self.assertFalse(c.is_blue())
        self.assertFalse(c.is_red())

        c.set_object()
        self.assertFalse(c.is_unknown())
        self.assertTrue(c.is_object())
        self.assertFalse(c.is_obstacle())
        self.assertFalse(c.is_marked())
        self.assertFalse(c.is_free())
        self.assertTrue(c.is_blue())
        self.assertFalse(c.is_red())
        self.assertFalse(c.is_undef())

        c.set_mark()
        self.assertFalse(c.is_unknown())
        self.assertTrue(c.is_object())
        self.assertFalse(c.is_obstacle())
        self.assertTrue(c.is_marked())
        self.assertFalse(c.is_free())
        self.assertTrue(c.is_blue())
        self.assertFalse(c.is_red())
Beispiel #18
0
 def test2_3(self):
     c = Cell()
     c.set_obstacle()
     c.points[Cell.UNDEF_ID] = 94
     c.points[Cell.RED_ID] = 6
     self.assertTrue(c.is_red(), c.get_color_id())
     print c.get_color_hex()
     self.assertEqual(c.get_color_hex(), 'ff0000')
     self.assertFalse(c.is_undef(), c.get_color_id())
Beispiel #19
0
    def test1(self):
        c = Cell()
        self.assertTrue(c.is_unknown())
        self.assertFalse(c.is_object())
        self.assertFalse(c.is_obstacle())
        self.assertFalse(c.is_marked())
        self.assertFalse(c.is_free())

        c.set_obstacle()
        self.assertFalse(c.is_unknown())
        self.assertFalse(c.is_object())
        self.assertTrue(c.is_obstacle())
        self.assertFalse(c.is_marked())
        self.assertFalse(c.is_free())
        self.assertFalse(c.is_blue())
        self.assertFalse(c.is_red())
        self.assertTrue(c.is_undef(), c.get_color_id())
        self.assertTrue(c.get_color() == c.UNDEF)

        c.set_blue()
        self.assertFalse(c.is_unknown())
        self.assertFalse(c.is_object())
        self.assertTrue(c.is_obstacle())
        self.assertFalse(c.is_marked())
        self.assertFalse(c.is_free())
        self.assertTrue(c.is_blue())
        self.assertFalse(c.is_red())
        self.assertFalse(c.is_undef())

        c.set_free()
        self.assertFalse(c.is_unknown())
        self.assertFalse(c.is_object())
        self.assertFalse(c.is_obstacle())
        self.assertFalse(c.is_marked())
        self.assertTrue(c.is_free())
        self.assertFalse(c.is_blue())
        self.assertFalse(c.is_red())

        c.set_object()
        self.assertFalse(c.is_unknown())
        self.assertTrue(c.is_object())
        self.assertFalse(c.is_obstacle())
        self.assertFalse(c.is_marked())
        self.assertFalse(c.is_free())
        self.assertTrue(c.is_blue())
        self.assertFalse(c.is_red())
        self.assertFalse(c.is_undef())

        c.set_mark()
        self.assertFalse(c.is_unknown())
        self.assertTrue(c.is_object())
        self.assertFalse(c.is_obstacle())
        self.assertTrue(c.is_marked())
        self.assertFalse(c.is_free())
        self.assertTrue(c.is_blue())
        self.assertFalse(c.is_red())
Beispiel #20
0
 def reset(self):
     self.field = [[Cell() for i in range(self.num_of_cells)]
                   for j in range(self.num_of_cells)]
Beispiel #21
0
 def make_free_map(self):
     c = Cell()
     c.set_free()
     test_field = [[deepcopy(c) for x in xrange(15)] for y in xrange(15)]
     return test_field