MCPcopy Create free account
hub / github.com/OpenDriveLab/DriveAdapter / CallBack

Class CallBack

leaderboard/leaderboard/envs/sensor_interface.py:133–203  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

131
132
133class CallBack(object):
134 def __init__(self, tag, sensor_type, sensor, data_provider):
135 self._tag = tag
136 self._data_provider = data_provider
137
138 self._data_provider.register_sensor(tag, sensor_type, sensor)
139
140 def __call__(self, data):
141 if isinstance(data, carla.libcarla.Image):
142 self._parse_image_cb(data, self._tag)
143 elif isinstance(data, carla.libcarla.LidarMeasurement):
144 self._parse_lidar_cb(data, self._tag)
145 elif isinstance(data, carla.libcarla.SemanticLidarMeasurement):
146 self._parse_semantic_lidar_cb(data, self._tag)
147 elif isinstance(data, carla.libcarla.RadarMeasurement):
148 self._parse_radar_cb(data, self._tag)
149 elif isinstance(data, carla.libcarla.GnssMeasurement):
150 self._parse_gnss_cb(data, self._tag)
151 elif isinstance(data, carla.libcarla.IMUMeasurement):
152 self._parse_imu_cb(data, self._tag)
153 elif isinstance(data, GenericMeasurement):
154 self._parse_pseudosensor(data, self._tag)
155 else:
156 logging.error('No callback method for this sensor.')
157
158 # Parsing CARLA physical Sensors
159 def _parse_image_cb(self, image, tag):
160 array = np.frombuffer(image.raw_data, dtype=np.dtype("uint8"))
161 array = copy.deepcopy(array)
162 array = np.reshape(array, (image.height, image.width, 4))
163 self._data_provider.update_sensor(tag, array, image.frame)
164
165 def _parse_lidar_cb(self, lidar_data, tag):
166 points = np.frombuffer(lidar_data.raw_data, dtype=np.dtype('f4'))
167 points = copy.deepcopy(points)
168 points = np.reshape(points, (int(points.shape[0] / 4), 4))
169 self._data_provider.update_sensor(tag, points, lidar_data.frame)
170
171 def _parse_semantic_lidar_cb(self, semantic_lidar_data, tag):
172 points = np.frombuffer(semantic_lidar_data.raw_data, dtype=np.dtype('f4'))
173 points = copy.deepcopy(points)
174 points = np.reshape(points, (int(points.shape[0] / 6), 6))
175 self._data_provider.update_sensor(tag, points, semantic_lidar_data.frame)
176
177 def _parse_radar_cb(self, radar_data, tag):
178 # [depth, azimuth, altitute, velocity]
179 points = np.frombuffer(radar_data.raw_data, dtype=np.dtype('f4'))
180 points = copy.deepcopy(points)
181 points = np.reshape(points, (int(points.shape[0] / 4), 4))
182 points = np.flip(points, 1)
183 self._data_provider.update_sensor(tag, points, radar_data.frame)
184
185 def _parse_gnss_cb(self, gnss_data, tag):
186 array = np.array([gnss_data.latitude,
187 gnss_data.longitude,
188 gnss_data.altitude], dtype=np.float64)
189 self._data_provider.update_sensor(tag, array, gnss_data.frame)
190

Callers 1

setup_sensorsMethod · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected