-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCameraField.py
More file actions
83 lines (65 loc) · 3.13 KB
/
CameraField.py
File metadata and controls
83 lines (65 loc) · 3.13 KB
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
import naoqi
from naoqi import ALProxy
import numpy
import DynamicField
import math_tools
class NaoCameraField(DynamicField.DynamicField):
"Camera field"
def __init__(self):
"Constructor"
DynamicField.DynamicField.__init__(self, dimension_bounds = [[40],[30],[15]])
self._vision_proxy = ALProxy("ALVideoDevice", "nao.ini.rub.de", 9559)
self._gvm_name = "nao vision"
self._gvm_name = self._vision_proxy.subscribe(self._gvm_name, 0, 12, 30)
# switch off auto white balance
self._vision_proxy.setParam(12, 0)
# select the bottom camera
self._vision_proxy.setParam(18, 1)
self._name = "nao_camera_field"
def __del__(self):
self._gvm_name = self._vision_proxy.unsubscribe(self._gvm_name)
def _step_computation(self):
naoimage = self._vision_proxy.getImageRemote(self._gvm_name)
hsv_image = numpy.fromstring(naoimage[6], dtype=numpy.uint8)
hue = hsv_image[::3].reshape(120,160)
saturation = hsv_image[1::3].reshape(120,160)
hue = numpy.rot90(hue, 3)
saturation = numpy.rot90(saturation, 3)
sizes = self.get_input_dimension_sizes()
max_activation_level = 5.0
hue = math_tools.linear_interpolation_2d_custom(hue, [sizes[0], sizes[1]])
saturation = math_tools.linear_interpolation_2d_custom(saturation, [sizes[0], sizes[1]])
hue = numpy.round(hue * ((sizes[2] - 1)/255.)).astype(numpy.int)
saturation = saturation * (2 * max_activation_level / 255.) - max_activation_level
for i in range(sizes[0]):
for j in range(sizes[1]):
color = hue[i][j]
self._activation[i][j] = -max_activation_level
self._activation[i][j][color] = saturation[i][j]
self._activation[0,:,:] = -max_activation_level
self._activation[sizes[0]-1,:,:] = -max_activation_level
self._activation[:,0,:] = -max_activation_level
self._activation[:,sizes[1]-1,:] = -max_activation_level
self._output_buffer = self.compute_thresholded_activation(self._activation)
class GaussCameraField(DynamicField.DynamicField):
"Camera field"
def __init__(self):
"Constructor"
DynamicField.DynamicField.__init__(self, dimension_bounds = [[40],[30],[15]])
self._activation += math_tools.gauss_3d([40,30,15], 9.0, [2.0,2.0,2.0], [10,20,0])
self._output_buffer = self.compute_thresholded_activation(self._activation)
def _step_computation(self):
pass
class DummyCameraField(DynamicField.DynamicField):
"Camera field"
def __init__(self):
"Constructor"
DynamicField.DynamicField.__init__(self, dimension_bounds = [[40],[30],[15]])
camera_field_file = open("snapshots/camera_field.txt", 'r')
activation = numpy.fromfile(camera_field_file, sep=', ')
camera_field_file.close()
activation = activation.reshape(160,120,50)
self._activation = math_tools.linear_interpolation_nd(activation, [40, 30, 15])
self._output_buffer = self.compute_thresholded_activation(self._activation)
def _step_computation(self):
pass