File: test_octree.py

package info (click to toggle)
python-pcl 0.3.0~rc1%2Bdfsg-14
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 31,828 kB
  • sloc: python: 3,094; cpp: 283; makefile: 181; sh: 24; ansic: 12
file content (110 lines) | stat: -rw-r--r-- 3,565 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import os.path
import pickle
import shutil
import tempfile
import unittest

import pcl
import numpy as np

_data = [(i, 2 * i, 3 * i + 0.2) for i in range(5)]
_DATA = """0.0, 0.0, 0.2;
           1.0, 2.0, 3.2;
           2.0, 4.0, 6.2;
           3.0, 6.0, 9.2;
           4.0, 8.0, 12.2"""


from nose.plugins.attrib import attr


# class TestOctreePointCloud(unittest.TestCase):
#
#     def setUp(self):
#         self.p = pcl.load("tests" + os.path.sep + "table_scene_mug_stereo_textured_noplane.pcd")
#         self.octree = pcl.OctreePointCloud(0.1)
#
#     def testLoad(self):
#         self.octree.set_input_cloud(self.p)
#         self.octree.define_bounding_box()
#         self.octree.add_points_from_input_cloud()
#         good_point = [0.035296999, -0.074322999, 1.2074]
#         rs = self.octree.is_voxel_occupied_at_point(good_point)
#         self.assertTrue(rs)
#         bad_point = [0.5, 0.5, 0.5]
#         rs = self.octree.is_voxel_occupied_at_point(bad_point)
#         self.assertFalse(rs)
#         voxels_len = 44
#         self.assertEqual(len(self.octree.get_occupied_voxel_centers()), voxels_len)
#         self.octree.delete_voxel_at_point(good_point)
#         self.assertEqual(len(self.octree.get_occupied_voxel_centers()), voxels_len - 1)


class TestOctreePointCloudSearch(unittest.TestCase):

    def setUp(self):
        self.octree = pcl.OctreePointCloudSearch(0.1)
        self.p = pcl.load(
            "tests" +
            os.path.sep +
            "tutorials" +
            os.path.sep +
            "table_scene_mug_stereo_textured_noplane.pcd")
        self.octree.set_input_cloud(self.p)
        self.octree.define_bounding_box()
        self.octree.add_points_from_input_cloud()

    def testConstructor(self):
        self.assertRaises(ValueError, pcl.OctreePointCloudSearch, 0.)

    def testRadiusSearch(self):
        good_point = (0.035296999, -0.074322999, 1.2074)
        rs = self.octree.radius_search(good_point, 0.5, 1)
        self.assertEqual(len(rs[0]), 1)
        self.assertEqual(len(rs[1]), 1)
        rs = self.octree.radius_search(good_point, 0.5)
        self.assertEqual(len(rs[0]), 19730)
        self.assertEqual(len(rs[1]), 19730)


class TestOctreePointCloudChangeDetector(unittest.TestCase):

    def setUp(self):
        self.octree = pcl.OctreePointCloudSearch(0.1)
        self.p = pcl.load(
            "tests" +
            os.path.sep +
            "tutorials" +
            os.path.sep +
            "table_scene_mug_stereo_textured_noplane.pcd")
        self.octree.set_input_cloud(self.p)
        self.octree.define_bounding_box()
        self.octree.add_points_from_input_cloud()

    def testConstructor(self):
        self.assertRaises(ValueError, pcl.OctreePointCloudChangeDetector, 0.)

    def testRadiusSearch(self):
        good_point = (0.035296999, -0.074322999, 1.2074)
        rs = self.octree.radius_search(good_point, 0.5, 1)
        self.assertEqual(len(rs[0]), 1)
        self.assertEqual(len(rs[1]), 1)
        rs = self.octree.radius_search(good_point, 0.5)
        self.assertEqual(len(rs[0]), 19730)
        self.assertEqual(len(rs[1]), 19730)


def suite():
    suite = unittest.TestSuite()
    # octree
    # base class
    # suite.addTests(unittest.makeSuite(TestOctreePointCloud))
    suite.addTests(unittest.makeSuite(TestOctreePointCloudSearch))
    suite.addTests(unittest.makeSuite(TestOctreePointCloudChangeDetector))
    return suite


if __name__ == '__main__':
    # unittest.main()
    testSuite = suite()
    unittest.TextTestRunner().run(testSuite)