Exemple #1
0
    def test1(self):
        """ Split the following form into regions:
           xxx
           x x
           x x
        """
        test_field3 = self.make_free_map()

        test_field3[0][6].set_unknown()
        test_field3[0][7].set_unknown()
        test_field3[0][8].set_unknown()

        test_field3[1][6].set_unknown()
        test_field3[2][6].set_unknown()

        test_field3[1][8].set_unknown()
        test_field3[2][8].set_unknown()
        cm = ClusterRegions()
        cm.set_field(test_field3)
        cm.print_field()

        print "Returned regions: " + str(cm.group_regions())
        print "Grouping done"
        cm.print_segmented_field()
        c = cm.get_result_map()

        regions = cm.get_result_regions()
        print "Region count: " + str(len(regions))
        for r in regions:
            print r
            print "Distance of region to (0,0): " + str(
                r.euclidean_distance_to_avg(0, 0))
        cubified_field = cm.cubify_regions()
        cm.print_2d_field(cubified_field)
        regions_not_sorted = cm.split_and_cubify_regions()

        # Check the cells of the splitted regions
        regions = sorted(regions_not_sorted)
        self.assertEquals(len(regions), 3)

        muh = [[[0, 6], [0, 7], [0, 8]], [[1, 6], [2, 6]], [[1, 8], [2, 8]]]
        self.assertTrue(regions[0].cell_coords in muh)
        self.assertTrue(regions[1].cell_coords in muh)
        self.assertTrue(regions[2].cell_coords in muh)
    def test1(self):
        """ Split the following form into regions:
           xxx
           x x
           x x
        """
        test_field3 = self.make_free_map()

        test_field3[0][6].set_unknown()
        test_field3[0][7].set_unknown()
        test_field3[0][8].set_unknown()

        test_field3[1][6].set_unknown()
        test_field3[2][6].set_unknown()

        test_field3[1][8].set_unknown()
        test_field3[2][8].set_unknown()
        cm = ClusterRegions()
        cm.set_field(test_field3)
        cm.print_field()

        print "Returned regions: " + str(cm.group_regions())
        print "Grouping done"
        cm.print_segmented_field()
        c = cm.get_result_map()

        regions = cm.get_result_regions()
        print "Region count: " + str(len(regions))
        for r in regions:
            print r
            print "Distance of region to (0,0): " + str(r.euclidean_distance_to_avg(0,0))
        cubified_field = cm.cubify_regions()
        cm.print_2d_field(cubified_field)
        regions_not_sorted = cm.split_and_cubify_regions()

        # Check the cells of the splitted regions
        regions = sorted(regions_not_sorted)
        self.assertEquals(len(regions), 3)

        muh = [[[0,6],[0,7],[0,8]], [[1,6],[2,6]], [[1,8],[2,8]]]
        self.assertTrue(regions[0].cell_coords in muh)
        self.assertTrue(regions[1].cell_coords in muh)
        self.assertTrue(regions[2].cell_coords in muh)
Exemple #3
0
    def get_obstacle_regions(self):
        """
        Searches for a list of obstacle regions with the same color. will only be calculated once.
        :return: list of obstacle regions with the same color
        :type: [Region]
        """
        if len(self.obstacle_regions) == 0:
            cm = ClusterRegions()
            cm.set_field(self.field)

            cm.set_region_type(RegionType.blue)
            cm.group_regions()

            cm.set_region_type(RegionType.green)
            cm.group_regions()

            cm.set_region_type(RegionType.red)
            cm.group_regions()

            cm.set_region_type(RegionType.cyan)
            cm.group_regions()

            cm.set_region_type(RegionType.yellow)
            cm.group_regions()

            cm.set_region_type(RegionType.magenta)
            cm.group_regions()

            cm.set_region_type(RegionType.undef)
            cm.group_regions()

            rospy.logdebug("Clustering results:")
            rospy.logdebug(cm.print_segmented_field())
            rospy.logdebug(cm.print_field())

            self.obstacle_regions = cm.get_result_regions()
        return self.obstacle_regions
Exemple #4
0
    def get_obstacle_regions(self):
        """
        Searches for a list of obstacle regions with the same color. will only be calculated once.
        :return: list of obstacle regions with the same color
        :type: [Region]
        """
        if len(self.obstacle_regions) == 0:
            cm = ClusterRegions()
            cm.set_field(self.field)

            cm.set_region_type(RegionType.blue)
            cm.group_regions()

            cm.set_region_type(RegionType.green)
            cm.group_regions()

            cm.set_region_type(RegionType.red)
            cm.group_regions()

            cm.set_region_type(RegionType.cyan)
            cm.group_regions()

            cm.set_region_type(RegionType.yellow)
            cm.group_regions()

            cm.set_region_type(RegionType.magenta)
            cm.group_regions()

            cm.set_region_type(RegionType.undef)
            cm.group_regions()

            rospy.logdebug("Clustering results:")
            rospy.logdebug(cm.print_segmented_field())
            rospy.logdebug(cm.print_field())

            self.obstacle_regions = cm.get_result_regions()
        return self.obstacle_regions
    field[0][8] = Cell()
    field[0][8].set_unknown()

    field[1][7] = Cell()
    field[1][7].set_unknown()
    field[2][6] = Cell()
    field[2][6].set_unknown()

    # field[1][8] = Cell()
    # field[1][8].set_unknown()
    # field[2][8] = Cell()
    # field[2][8].set_unknown()
    return field

cm = ClusterRegions()
cm.set_field(test_field4())
cm.print_field()

print "Returned regions: " + str(cm.group_regions())
print "Grouping done"
cm.print_segmented_field()
c = cm.get_result_map()

regions = cm.get_result_regions()
print "Region count: " + str(len(regions))
for r in regions:
    print r
    print "Distance of region to (0,0): " + str(r.euclidean_distance_to_avg(0,0))
cubified_field = cm.cubify_regions()
cm.print_2d_field(cubified_field)
cm.split_and_cubify_regions()
Exemple #6
0
    field[1][7] = Cell()
    field[1][7].set_unknown()
    field[2][6] = Cell()
    field[2][6].set_unknown()

    # field[1][8] = Cell()
    # field[1][8].set_unknown()
    # field[2][8] = Cell()
    # field[2][8].set_unknown()
    return field


cm = ClusterRegions()
cm.set_field(test_field4())
cm.print_field()

print "Returned regions: " + str(cm.group_regions())
print "Grouping done"
cm.print_segmented_field()
c = cm.get_result_map()

regions = cm.get_result_regions()
print "Region count: " + str(len(regions))
for r in regions:
    print r
    print "Distance of region to (0,0): " + str(
        r.euclidean_distance_to_avg(0, 0))
cubified_field = cm.cubify_regions()
cm.print_2d_field(cubified_field)
cm.split_and_cubify_regions()