1
Ordered in approx priority, by delegation.
4
Improve execution speed
5
: Many many possible ways of doing this, some ideas
7
: General way of speeding up tight loops
9
: Look into multisets for occupiedvoxel lists, e.g.
10
: collections.Counter in python 2.7?
11
: These multisets seem like the way to go as they provide intersection
12
: and union operations. Could start by trying some benchmark code
13
: that runs under python2.7
15
: with counts to support deletions
17
http://en.wikipedia.org/wiki/MinHash
18
http://blogs.msdn.com/b/spt/archive/2008/06/10/set-similarity-and-min-hash.aspx
19
Parrallel execution - e.g. for match, ray tracing etc.
20
speed increase is only linear in number of available cores (plus some overhead)
21
multiprocessing is now in python as standard
22
Allow for pre-allocation of working memory region in calccollisions
23
: Have a output array cache, so if requests to occupiedlist are
24
: made with input arrays the same shape you can just use the already
25
: created output array?
27
: Better way might be to copy how numpy does things and have
28
: calccolision take an option argument out, which is preallocated by
29
: the user and populated. by the function.
31
: Usually the same number of points are repeatedly transformed, so
32
: an array to hold the transformed points/voxel could be
33
: preallocated and reused. However might not know in advance the
35
Add cython compile to a compile/make script
36
Accelerated nearest neighbour lookup
37
: Good for doing icp without needing flann
40
: found how to bulk load keys and values into a python dictionary
43
: Only the last of multiple values in V with the same key (K) are
46
Get a good 3D data set with the kinect, including multi-level.
47
: Data needs to be in IR sensor frame NOT RGB otherwise ray-traces remove the RH edge of discontinuities
48
replace uniformposes with better implementation
49
: e.g. from transformations.py in ROS?
50
: Apparently ros have moved from using transformations.py to
51
: https://github.com/matthew-brett/transforms3d/tree/master/transforms3d
53
: Probable problems with uniform poses. <- what are these?
54
: Implement uniform random rotations based on quaternion conversion
55
Get temporal decay mapping up and running
57
: PointCloud should probably have a saveload test, make points, save
58
: them and load them back in and check equality.
59
: Also directory loading
60
Make sure all poses are being passed around as Pose3D objects rather than 6 element arrays
61
: calccollisions should really take a pose
62
Integrate the trajectory stuff via a map maintenance interface
63
: Need a means to remove points when we realise they aren't correct.
64
: To allow for external SLAM solutions also.
65
move boxfilter to pointcloud class?
66
Implement interprocess communication with memmapped arrays?
67
: A = memmap('/tmp/test.bin', dtype=uint8, mode='w+', shape=(10,10))
68
: Although Julian is not entirely sure this is the correct way to
72
Decide on public API, PARAMOUNT
74
: API should NOT be a window into the underlying classes, e.g.
76
: The tests will only test the public API. In order to make
77
: refactoring in the future easier the public API should be ruthlessly
78
: kept to a minimum. Currently the public api is defined through
80
: Internal white box unit tests are not advised, Julian will not maintain
81
: them and they will inevitable break when Julian refactors mercilessly.
83
: The public api will drive and focus development.
84
Prodive users with option against which map update mechanism to use
85
: This is useful for comparisons without having to switch revisions and
86
: apply patches to bugs. Also, the simple mechanism may be faster and
87
: useful where speed is of prime importance.
88
: Simple additive map update
91
Add from __future__ import division to every file
92
: can still do integer division with //
93
The return_removed flag for removepoints in occupied list is a bit hacky
94
: Feel like the proper way of doing it would be to combine the point
95
: cloud, the map and the sensor model to generate the list maybe, not
96
: sure need to think about this.
97
Thorough test for the global localiser
98
: Take a map and scan, transform by random poses and check that it
99
: successfully aligns.
100
Run pylint on commited code
101
: Very long lines can be especially awkward and also are less
102
: readable. Consider using assigment to improve readability.
103
Use enumerate rather than range(len(...
104
Copyright and licensing headers
105
: before public hosting!
106
Checkout scipy.spatial
107
: classes such as scipy.spatial.KDTree etc.
108
Organise project according
109
http://infinitemonkeycorps.net/docs/pph/
110
Fix/Add profiling script
111
: profiling of mapper to guide optimization efforts
112
: Also profiling test in align_segment_test.py
113
speed test always fails on Nick's computers (k-d tree)
114
refactor the tests into components that are clearer/better
115
Relate the code to sparse ndimensional arrays
116
: https://launchpad.net/ndsparse
118
: Possibly using cython, see http://wiki.cython.org/tutorials/numpy
120
: should we use a bug tracker? Julian thinks it is unnecessary to
121
: begin with, might be useful later though.
124
Remove unused functions
125
: Either write a script to search for def and look for calls or use
126
: code coverage analysis to see which parts of code are not executed
128
: Also ack-grep them. The code base isn't too big yet.
131
: remove unused imports, sfood-checker
132
: Use a lint/style checker
133
: pylint/pychecker output